
void sig_catcher(int sig)

{
  if ((*(uint *)PTR_option_mask32_0012a334 & 4) == 0) {
    (*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10);
  }
  (*(code *)PTR_kill_myself_with_sig_0012a2a0)(sig);
  return;
}



void FUN_0006a188(int param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  undefined1 *puVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  code *pcVar10;
  undefined4 *puVar11;
  code *pcVar12;
  int iVar13;
  int iVar14;
  uint uVar15;
  int iVar16;
  undefined4 uVar17;
  undefined4 uVar18;
  int *piVar19;
  int iVar20;
  int iVar21;
  code *pcVar22;
  uint *puVar23;
  uint uVar24;
  undefined *puVar25;
  uint local_120;
  uint local_e4 [12];
  undefined4 local_b4;
  undefined1 uStack_b1;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined2 local_a4;
  undefined1 local_a2 [86];
  int local_4c;
  int local_48;
  
  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {
    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);
  }
  iVar20 = param_1;
  puVar25 = PTR_FUN_0012a2a0;
  (*(code *)PTR_FUN_0012a2a0)();
  piVar2 = *(int **)(puVar25 + 0xc0f70);
  local_e4[0] = 0;
  local_e4[1] = 0;
  local_e4[2] = 0;
  local_e4[3] = 0;
  local_e4[4] = 0;
  local_e4[5] = 0;
  local_e4[6] = 0;
  local_e4[7] = 0;
  local_e4[8] = 0;
  local_e4[9] = 0;
  local_e4[10] = 0;
  local_e4[0xb] = 0;
  local_b4 = 0;
  local_4c = *piVar2;
  pcVar22 = *(code **)(puVar25 + 0xc0208);
  local_48 = param_1;
  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);
  iVar21 = *(int *)(puVar25 + 0xbffcc);
  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {
    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);
    if (puVar5 != (undefined1 *)0x0) {
      *puVar5 = 0;
      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);
      if (-1 < iVar4) {
        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);
        local_e4[iVar4] = uVar6;
      }
    }
  }
  puVar23 = *(uint **)(puVar25 + 0xc0158);
  (**(code **)(puVar25 + 0xc0b90))(uVar3);
  uVar6 = local_e4[0];
  iVar21 = 100;
  if (param_2 < 0x65) {
    iVar21 = param_2;
  }
  (**(code **)(puVar25 + 0xc1000))
            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],
             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);
  if ((*puVar23 & 4) == 0) {
    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;
  }
  else {
    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;
  }
  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);
  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);
  uVar7 = piVar19[0x29] - piVar19[0x3d];
  if (uVar7 == 0) {
    uVar7 = 1;
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  (**(code **)(puVar25 + 0xc1000))
            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,
             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,
             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,
             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,
             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,
             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,
             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,
             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);
  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);
  iVar4 = *(int *)(puVar25 + 0xbffb0);
  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);
  local_ac = *(undefined4 *)(iVar4 + 0x6b84);
  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);
  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);
  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);
  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);
  pcVar22 = *(code **)(puVar25 + 0xc0f84);
  (&uStack_b1)[iVar21] = 0;
  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);
  pcVar22 = *(code **)(puVar25 + 0xc0dd8);
  *puVar5 = 0;
  (*pcVar22)(&local_b0);
  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;
  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;
  while( true ) {
    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);
    if (uVar6 == 0) {
      trap(7);
    }
    uVar7 = 0xc800000 / uVar6;
    if (uVar7 < 0x200) {
      uVar15 = 0x15;
      local_120 = 0x100000;
    }
    else {
      uVar15 = 0x15;
      do {
        uVar7 = uVar7 >> 2;
        uVar15 = uVar15 - 2;
      } while (0x1ff < uVar7);
      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;
    }
    uVar9 = piVar19[0x2b] - piVar19[0x3f];
    uVar8 = piVar19[0x40];
    if ((uint)piVar19[0x40] < uVar9) {
      piVar19[0x40] = uVar9;
      uVar8 = uVar9;
    }
    uVar9 = (uVar9 & 0xffff) * 0x1900;
    if (uVar9 == 0) {
      uVar9 = 1;
    }
    uVar24 = 6;
    do {
      uVar9 = uVar9 << 2;
      uVar24 = uVar24 + 2;
    } while (uVar9 < 0x40000000);
    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &
            0xffff) * uVar8;
    if (uVar8 == 0) goto LAB_0006a67c;
    if (uVar8 == 0) {
      trap(7);
    }
    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {
LAB_0006a67c:
      uVar24 = uVar24 - 2;
    }
    piVar1 = piVar19 + 0x11;
    iVar4 = piVar19[1] - *piVar1;
    iVar21 = iVar20 + -4;
    if (iVar4 <= iVar20 + -4) {
      iVar21 = iVar4;
    }
    iVar20 = iVar21 + -1;
    pcVar22 = *(code **)(puVar25 + 0xc065c);
    if (-1 < iVar20) {
      iVar14 = *piVar19;
      iVar21 = *(int *)(puVar25 + 0xbffb0);
      pcVar10 = *(code **)(puVar25 + 0xc062c);
      piVar19 = piVar19 + 0x45;
      param_2 = param_2 + 2;
      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;
      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);
      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;
      pcVar12 = *(code **)(puVar25 + 0xc0634);
      iVar4 = *(int *)(puVar25 + 0xbffb0);
      do {
        iVar13 = *(int *)(iVar14 + -0x18);
        iVar16 = *(int *)(iVar14 + -0x10);
        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);
        uVar17 = *(undefined4 *)(iVar14 + -0xc);
        uVar18 = *(undefined4 *)(iVar14 + -8);
        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));
        iVar13 = (**(code **)(puVar25 + 0xc1000))
                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,
                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),
                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));
        if (1 < param_2 - iVar13) {
          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),
                     iVar14 + 4);
        }
        iVar20 = iVar20 + -1;
        iVar14 = iVar14 + 0x2c;
        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);
      } while (iVar20 != -1);
    }
    uVar3 = 10;
    if ((*puVar23 & 4) == 0) {
      uVar3 = 0xd;
    }
    (**(code **)(puVar25 + 0xc0178))(uVar3);
    (**(code **)(puVar25 + 0xc0068))();
    if (local_4c == *piVar2) break;
    (**(code **)(puVar25 + 0xc0eec))();
LAB_0006a8b4:
    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;
  }
  return;
}


lui gp,0xc
addiu gp,gp,0x7fc8
addu gp,gp,t9
lw v0,-0x7e1c(gp)
addiu sp,sp,-0x20
sw gp,0x10(sp)
sw s0,0x18(sp)
sw ra,0x1c(sp)
lw v0,0x0(v0)
andi v0,v0,0x4
bne v0,zero,0x0006a1d0
_or s0,a0,zero
lw v0,-0x7e4c(gp)
lw t9,-0x7e48(gp)
lw a0,0x0(v0)
jalr t9
_addiu a0,a0,0x10
lw gp,0x10(sp)
lw t9,-0x7eb0(gp)
jalr t9
_or a0,s0,zero
lui gp,0xc
addiu gp,gp,0x7f74
addu gp,gp,t9
addiu sp,sp,-0x138
lw v0,-0x7004(gp)
lw t9,-0x7db4(gp)
sw s2,0x118(sp)
or s2,a0,zero
sw gp,0x30(sp)
sw s6,0x128(sp)
sw s5,0x124(sp)
sw s4,0x120(sp)
sw s3,0x11c(sp)
or s3,a1,zero
sw s1,0x114(sp)
addiu s1,sp,0xa8
sw ra,0x134(sp)
sw s8,0x130(sp)
sw s7,0x12c(sp)
sw s0,0x110(sp)
sw v0,0x44(sp)
sw zero,0x74(sp)
sw zero,0x78(sp)
sw zero,0x7c(sp)
sw zero,0x80(sp)
sw zero,0x84(sp)
sw zero,0x88(sp)
sw zero,0x8c(sp)
sw zero,0x90(sp)
sw zero,0x94(sp)
sw zero,0x98(sp)
sw zero,0x9c(sp)
sw zero,0xa0(sp)
sw zero,0xa4(sp)
lw a0,-0x7fc4(gp)
lw v1,0x0(v0)
lw s5,-0x7d6c(gp)
addiu a0,a0,0x6af0
sw v1,0x10c(sp)
jalr t9
_nop
lw gp,0x30(sp)
or s6,v0,zero
lw s4,-0x7fa8(gp)
addiu s4,s4,0x68b9
lw t9,-0x7428(gp)
li a1,0x3c
or a2,s6,zero
jalr t9
_or a0,s1,zero
beq v0,zero,0x0006a314
_lw gp,0x30(sp)
lw t9,-0x71fc(gp)
li a1,0x3a
jalr t9
_or a0,s1,zero
lw gp,0x30(sp)
beq v0,zero,0x0006a290
_or s8,v0,zero
sb zero,0x0(v0)
or a1,s1,zero
or t9,s5,zero
jalr t9
_or a0,s4,zero
lw gp,0x30(sp)
bltz v0,0x0006a290
_or s0,v0,zero
lw t9,-0x71f8(gp)
li a2,0xa
or a1,zero,zero
addiu a0,s8,0x1
jalr t9
_sll s0,s0,0x2
addiu v1,sp,0x110
lw gp,0x30(sp)
addu s0,v1,s0
b 0x0006a290
_sw v0,-0x9c(s0)
lw t9,-0x73e4(gp)
or a0,s6,zero
lw s6,-0x7e1c(gp)
jalr t9
_slti s4,s3,0x65
li v0,0x64
lw a1,0x80(sp)
li a3,0x64
movn v0,s3,s4
li a2,0x1
or a0,s1,zero
lw gp,0x30(sp)
lw t1,0x88(sp)
or s4,v0,zero
lw v0,0x7c(sp)
lw v1,0x78(sp)
lw s5,0x74(sp)
addu v0,v0,a1
lw t9,-0x6f74(gp)
sw t1,0x24(sp)
or a1,s4,zero
sw v0,0x1c(sp)
subu t0,s5,v1
lw v0,-0x7fc4(gp)
lw t1,0x84(sp)
sw v1,0x18(sp)
addiu v0,v0,0x6af8
sw t0,0x14(sp)
sw t1,0x20(sp)
jalr t9
_sw v0,0x10(sp)
lw v0,0x0(s6)
andi v0,v0,0x4
bne v0,zero,0x0006a8c0
_lw gp,0x30(sp)
lw a1,-0x7fc4(gp)
addiu a1,a1,0x6ae4
lw t9,-0x7320(gp)
li a0,0x1
jalr t9
_or a2,s1,zero
lw gp,0x30(sp)
lw v0,-0x7e4c(gp)
lw s0,0x0(v0)
lw v1,0xa4(s0)
lw v0,0xf4(s0)
subu v0,v1,v0
bne v0,zero,0x0006a3dc
_nop
li v0,0x1
lw a0,0xe4(s0)
li t1,0x64
lw v1,0x94(s0)
li a3,0x64
lw t9,-0x6f74(gp)
li a2,0x1
or a1,s4,zero
subu v1,v1,a0
or a0,s1,zero
mul v1,v1,t1
addiu s8,sp,0xb6
teq v0,zero
divu v1,v0
mflo v1
sw v1,0x2c(sp)
lw t0,0xdc(s0)
lw v1,0x8c(s0)
subu v1,v1,t0
mul v1,v1,t1
teq v0,zero
divu v1,v0
mflo v1
sw v1,0x28(sp)
lw t0,0xd4(s0)
lw v1,0x84(s0)
subu v1,v1,t0
mul v1,v1,t1
teq v0,zero
divu v1,v0
mflo v1
sw v1,0x24(sp)
lw v1,0xcc(s0)
lw t0,0x7c(s0)
subu t0,t0,v1
mul t0,t0,t1
teq v0,zero
divu t0,v0
mflo t0
sw t0,0x20(sp)
lw v1,0xbc(s0)
lw t0,0x6c(s0)
subu t0,t0,v1
mul t0,t0,t1
teq v0,zero
divu t0,v0
mflo t0
sw t0,0x1c(sp)
lw v1,0xc4(s0)
lw t0,0x74(s0)
subu t0,t0,v1
mul t0,t0,t1
teq v0,zero
divu t0,v0
mflo t0
sw t0,0x18(sp)
lw t2,0xb4(s0)
lw v1,0x64(s0)
lw t0,-0x7fc4(gp)
subu v1,v1,t2
addiu t0,t0,0x6b38
mul v1,v1,t1
sw t0,0x10(sp)
teq v0,zero
divu v1,v0
mflo v0
jalr t9
_sw v0,0x14(sp)
lw gp,0x30(sp)
lw t9,-0x719c(gp)
jalr t9
_or a0,s1,zero
li a2,0x55
lw gp,0x30(sp)
or a1,s8,zero
lw v1,-0x7fc4(gp)
lw a0,-0x7fc4(gp)
lw t9,-0x7d7c(gp)
addiu v0,v1,0x6b80
lw t1,0x6b80(v1)
addiu a0,a0,0x6b90
lw t0,0x4(v0)
lw a3,0x8(v0)
lhu v1,0xc(v0)
lbu v0,0xe(v0)
sw t1,0xa8(sp)
sw t0,0x4(s1)
sw a3,0x8(s1)
sh v1,0xc(s1)
jalr t9
_sb v0,0xe(s1)
addiu v0,sp,0x110
lw gp,0x30(sp)
li a1,0xa
addu s4,v0,s4
or a0,s8,zero
lw t9,-0x6ff0(gp)
jalr t9
_sb zero,-0x69(s4)
or a0,s1,zero
lw gp,0x30(sp)
lw t9,-0x719c(gp)
jalr t9
_sb zero,0x0(v0)
lw v0,0x0(s6)
andi v0,v0,0x4
bne v0,zero,0x0006a8b4
_lw gp,0x30(sp)
lw a1,-0x7fc4(gp)
addiu a1,a1,0x1214
lw a3,-0x7fc4(gp)
li a0,0x1
lw t9,-0x7320(gp)
or a2,s3,zero
jalr t9
_addiu a3,a3,0x6b98
lui t1,0xc80
teq s5,zero
divu t1,s5
mflo t1
sltiu v0,t1,0x200
bne v0,zero,0x0006a5ec
_lw gp,0x30(sp)
li t2,0x15
srl t1,t1,0x2
sltiu v0,t1,0x200
beq v0,zero,0x0006a5c8
_addiu t2,t2,-0x2
li s4,0x1
sllv s4,s4,t2
srl v0,s4,0x1
b 0x0006a5f8
_sw v0,0x38(sp)
lui v0,0x10
li t2,0x15
sw v0,0x38(sp)
lw v0,0xfc(s0)
lw v1,0xac(s0)
lw a0,0x100(s0)
subu v1,v1,v0
sltu v0,a0,v1
beq v0,zero,0x0006a61c
_li v0,0x1900
sw v1,0x100(s0)
or a0,v1,zero
andi v1,v1,0xffff
mul v1,v1,v0
beq v1,zero,0x0006a8cc
_nop
li s7,0x6
lui v0,0x4000
or s4,v1,zero
sll s4,s4,0x2
sltu a1,s4,v0
bne a1,zero,0x0006a638
_addiu s7,s7,0x2
lhu v0,0xa6(s0)
lhu a1,0xf6(s0)
subu v0,v0,a1
andi v0,v0,0xffff
mul v0,v0,a0
beq v0,zero,0x0006a67c
_nop
teq v0,zero
divu s4,v0
mflo s4
sltiu v0,s4,0x400
bne v0,zero,0x0006a68c
_nop
srl s4,s4,0x2
sltiu v0,s4,0x400
beq v0,zero,0x0006a67c
_addiu s7,s7,-0x2
lw v0,0x44(s0)
addiu s2,s2,-0x4
lw a0,0x4(s0)
subu a0,a0,v0
slt a1,s2,a0
movz s2,a0,a1
addiu s2,s2,-0x1
bltz s2,0x0006a838
_lw v1,-0x7918(gp)
li a0,0x2c
li s5,0x1
lw t0,0x0(s0)
mul v0,v0,a0
lw a0,-0x7fc4(gp)
sw v1,0x40(sp)
sllv s5,s5,s7
lw v1,-0x7948(gp)
addiu s0,s0,0x114
addiu s3,s3,0x2
srl s5,s5,0x1
sw v1,0x48(sp)
lw v1,-0x7310(gp)
addiu v0,v0,0x18
sw v1,0x3c(sp)
addu s8,t0,v0
lw v1,-0x7940(gp)
sw v1,0x54(sp)
addiu v1,a0,0x6bcc
lw a0,-0x7fc4(gp)
sw v1,0x4c(sp)
addiu v1,a0,0x6960
sw v1,0x50(sp)
lw a1,-0x18(s8)
or a0,zero,zero
lw t4,-0x10(s8)
or a2,s1,zero
lw v0,0x38(sp)
mul v1,a1,t1
lw a3,0x50(sp)
lw t9,0x40(sp)
sw t1,0x6c(sp)
sw t2,0x68(sp)
addu t5,v1,v0
mul v0,s4,t4
srlv t5,t5,t2
sw t5,0x64(sp)
addu t4,v0,s5
srlv t4,t4,s7
jalr t9
_sw t4,0x60(sp)
lw t6,-0xc(s8)
lw t7,-0x8(s8)
lw a0,-0x4(s8)
lw t9,0x48(sp)
sw t6,0x5c(sp)
jalr t9
_sw t7,0x58(sp)
li a3,-0x1
lw gp,0x30(sp)
li a2,0x1
lw t4,0x60(sp)
or a1,s3,zero
lw t5,0x64(sp)
or a0,s0,zero
lw t7,0x58(sp)
lw t6,0x5c(sp)
lw t9,-0x6f74(gp)
sw v0,0x1c(sp)
sw t4,0x2c(sp)
sw t5,0x28(sp)
sw s1,0x24(sp)
sw s8,0x20(sp)
sw t7,0x18(sp)
sw t6,0x14(sp)
lw v0,0x4c(sp)
jalr t9
_sw v0,0x10(sp)
subu a1,s3,v0
lw gp,0x30(sp)
lw t2,0x68(sp)
slti a0,a1,0x2
bne a0,zero,0x0006a800
_lw t1,0x6c(sp)
lw a2,-0xc(s8)
addiu a3,s8,0x4
lw t9,0x54(sp)
addu a0,s0,v0
sw t2,0x5c(sp)
jalr t9
_sw t1,0x58(sp)
lw gp,0x30(sp)
lw t2,0x5c(sp)
lw t1,0x58(sp)
lw v0,0x3c(sp)
or a0,s0,zero
lw t9,-0x6f4c(gp)
addiu s2,s2,-0x1
sw t2,0x5c(sp)
addiu s8,s8,0x2c
sw t1,0x58(sp)
jalr t9
_lw a1,0x0(v0)
li v0,-0x1
lw gp,0x30(sp)
lw t1,0x58(sp)
bne s2,v0,0x0006a70c
_lw t2,0x5c(sp)
lw v0,0x0(s6)
li v1,0xd
li a0,0xa
lw t9,-0x7dfc(gp)
andi v0,v0,0x4
jalr t9
_movz a0,v1,v0
lw gp,0x30(sp)
lw t9,-0x7f0c(gp)
jalr t9
_nop
lw v0,0x44(sp)
lw v1,0x10c(sp)
lw gp,0x30(sp)
lw v0,0x0(v0)
bne v1,v0,0x0006a8a8
_lw ra,0x134(sp)
lw s8,0x130(sp)
lw s7,0x12c(sp)
lw s6,0x128(sp)
lw s5,0x124(sp)
lw s4,0x120(sp)
lw s3,0x11c(sp)
lw s2,0x118(sp)
lw s1,0x114(sp)
lw s0,0x110(sp)
jr ra
_addiu sp,sp,0x138
lw t9,-0x7088(gp)
jalr t9
_nop
lw a1,-0x7fc4(gp)
b 0x0006a590
_addiu a1,a1,0x12ec
lw a1,-0x7fa8(gp)
b 0x0006a3a8
_addiu a1,a1,-0x4998
b 0x0006a62c
_li v1,0x1
(translation_unit "void FUN_0006a188(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  code *pcVar10;\n  undefined4 *puVar11;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  code *pcVar22;\n  uint *puVar23;\n  uint uVar24;\n  undefined *puVar25;\n  uint local_120;\n  uint local_e4 [12];\n  undefined4 local_b4;\n  undefined1 uStack_b1;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined2 local_a4;\n  undefined1 local_a2 [86];\n  int local_4c;\n  int local_48;\n  \n  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }\n  iVar20 = param_1;\n  puVar25 = PTR_FUN_0012a2a0;\n  (*(code *)PTR_FUN_0012a2a0)();\n  piVar2 = *(int **)(puVar25 + 0xc0f70);\n  local_e4[0] = 0;\n  local_e4[1] = 0;\n  local_e4[2] = 0;\n  local_e4[3] = 0;\n  local_e4[4] = 0;\n  local_e4[5] = 0;\n  local_e4[6] = 0;\n  local_e4[7] = 0;\n  local_e4[8] = 0;\n  local_e4[9] = 0;\n  local_e4[10] = 0;\n  local_e4[0xb] = 0;\n  local_b4 = 0;\n  local_4c = *piVar2;\n  pcVar22 = *(code **)(puVar25 + 0xc0208);\n  local_48 = param_1;\n  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);\n  iVar21 = *(int *)(puVar25 + 0xbffcc);\n  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }\n  puVar23 = *(uint **)(puVar25 + 0xc0158);\n  (**(code **)(puVar25 + 0xc0b90))(uVar3);\n  uVar6 = local_e4[0];\n  iVar21 = 100;\n  if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);\n  if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }\n  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);\n  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);\n  uVar7 = piVar19[0x29] - piVar19[0x3d];\n  if (uVar7 == 0) {\n    uVar7 = 1;\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);\n  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);\n  iVar4 = *(int *)(puVar25 + 0xbffb0);\n  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);\n  local_ac = *(undefined4 *)(iVar4 + 0x6b84);\n  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);\n  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);\n  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);\n  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);\n  pcVar22 = *(code **)(puVar25 + 0xc0f84);\n  (&uStack_b1)[iVar21] = 0;\n  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);\n  pcVar22 = *(code **)(puVar25 + 0xc0dd8);\n  *puVar5 = 0;\n  (*pcVar22)(&local_b0);\n  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;\n  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;\n  while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0006a188(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  code *pcVar10;\n  undefined4 *puVar11;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  code *pcVar22;\n  uint *puVar23;\n  uint uVar24;\n  undefined *puVar25;\n  uint local_120;\n  uint local_e4 [12];\n  undefined4 local_b4;\n  undefined1 uStack_b1;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined2 local_a4;\n  undefined1 local_a2 [86];\n  int local_4c;\n  int local_48;\n  \n  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }\n  iVar20 = param_1;\n  puVar25 = PTR_FUN_0012a2a0;\n  (*(code *)PTR_FUN_0012a2a0)();\n  piVar2 = *(int **)(puVar25 + 0xc0f70);\n  local_e4[0] = 0;\n  local_e4[1] = 0;\n  local_e4[2] = 0;\n  local_e4[3] = 0;\n  local_e4[4] = 0;\n  local_e4[5] = 0;\n  local_e4[6] = 0;\n  local_e4[7] = 0;\n  local_e4[8] = 0;\n  local_e4[9] = 0;\n  local_e4[10] = 0;\n  local_e4[0xb] = 0;\n  local_b4 = 0;\n  local_4c = *piVar2;\n  pcVar22 = *(code **)(puVar25 + 0xc0208);\n  local_48 = param_1;\n  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);\n  iVar21 = *(int *)(puVar25 + 0xbffcc);\n  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }\n  puVar23 = *(uint **)(puVar25 + 0xc0158);\n  (**(code **)(puVar25 + 0xc0b90))(uVar3);\n  uVar6 = local_e4[0];\n  iVar21 = 100;\n  if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);\n  if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }\n  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);\n  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);\n  uVar7 = piVar19[0x29] - piVar19[0x3d];\n  if (uVar7 == 0) {\n    uVar7 = 1;\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);\n  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);\n  iVar4 = *(int *)(puVar25 + 0xbffb0);\n  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);\n  local_ac = *(undefined4 *)(iVar4 + 0x6b84);\n  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);\n  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);\n  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);\n  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);\n  pcVar22 = *(code **)(puVar25 + 0xc0f84);\n  (&uStack_b1)[iVar21] = 0;\n  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);\n  pcVar22 = *(code **)(puVar25 + 0xc0dd8);\n  *puVar5 = 0;\n  (*pcVar22)(&local_b0);\n  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;\n  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;\n  while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0006a188(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  code *pcVar10;\n  undefined4 *puVar11;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  code *pcVar22;\n  uint *puVar23;\n  uint uVar24;\n  undefined *puVar25;\n  uint local_120;\n  uint local_e4 [12];\n  undefined4 local_b4;\n  undefined1 uStack_b1;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined2 local_a4;\n  undefined1 local_a2 [86];\n  int local_4c;\n  int local_48;\n  \n  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }\n  iVar20 = param_1;\n  puVar25 = PTR_FUN_0012a2a0;\n  (*(code *)PTR_FUN_0012a2a0)();\n  piVar2 = *(int **)(puVar25 + 0xc0f70);\n  local_e4[0] = 0;\n  local_e4[1] = 0;\n  local_e4[2] = 0;\n  local_e4[3] = 0;\n  local_e4[4] = 0;\n  local_e4[5] = 0;\n  local_e4[6] = 0;\n  local_e4[7] = 0;\n  local_e4[8] = 0;\n  local_e4[9] = 0;\n  local_e4[10] = 0;\n  local_e4[0xb] = 0;\n  local_b4 = 0;\n  local_4c = *piVar2;\n  pcVar22 = *(code **)(puVar25 + 0xc0208);\n  local_48 = param_1;\n  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);\n  iVar21 = *(int *)(puVar25 + 0xbffcc);\n  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }\n  puVar23 = *(uint **)(puVar25 + 0xc0158);\n  (**(code **)(puVar25 + 0xc0b90))(uVar3);\n  uVar6 = local_e4[0];\n  iVar21 = 100;\n  if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);\n  if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }\n  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);\n  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);\n  uVar7 = piVar19[0x29] - piVar19[0x3d];\n  if (uVar7 == 0) {\n    uVar7 = 1;\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);\n  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);\n  iVar4 = *(int *)(puVar25 + 0xbffb0);\n  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);\n  local_ac = *(undefined4 *)(iVar4 + 0x6b84);\n  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);\n  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);\n  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);\n  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);\n  pcVar22 = *(code **)(puVar25 + 0xc0f84);\n  (&uStack_b1)[iVar21] = 0;\n  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);\n  pcVar22 = *(code **)(puVar25 + 0xc0dd8);\n  *puVar5 = 0;\n  (*pcVar22)(&local_b0);\n  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;\n  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;\n  while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "code *pcVar22;" type_identifier (pointer_declarator "*pcVar22" * identifier) ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "undefined *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint local_120;" type_identifier identifier ;) (declaration "uint local_e4 [12];" type_identifier (array_declarator "local_e4 [12]" identifier [ number_literal ]) ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined1 uStack_b1;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "undefined4 local_a8;" type_identifier identifier ;) (declaration "undefined2 local_a4;" type_identifier identifier ;) (declaration "undefined1 local_a2 [86];" type_identifier (array_declarator "local_a2 [86]" identifier [ number_literal ]) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (if_statement "if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }" if (parenthesized_expression "((*(uint *)PTR_DAT_0012a334 & 4) == 0)" ( (binary_expression "(*(uint *)PTR_DAT_0012a334 & 4) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0012a334 & 4)" ( (binary_expression "*(uint *)PTR_DAT_0012a334 & 4" (pointer_expression "*(uint *)PTR_DAT_0012a334" * (cast_expression "(uint *)PTR_DAT_0012a334" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }" { (expression_statement "(*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);" (call_expression "(*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10)" (parenthesized_expression "(*(code *)PTR_FUN_0012a308)" ( (pointer_expression "*(code *)PTR_FUN_0012a308" * (cast_expression "(code *)PTR_FUN_0012a308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)PTR_DAT_0012a304 + 0x10)" ( (binary_expression "*(int *)PTR_DAT_0012a304 + 0x10" (pointer_expression "*(int *)PTR_DAT_0012a304" * (cast_expression "(int *)PTR_DAT_0012a304" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) })) (expression_statement "iVar20 = param_1;" (assignment_expression "iVar20 = param_1" identifier = identifier) ;) (expression_statement "puVar25 = PTR_FUN_0012a2a0;" (assignment_expression "puVar25 = PTR_FUN_0012a2a0" identifier = identifier) ;) (expression_statement "(*(code *)PTR_FUN_0012a2a0)();" (call_expression "(*(code *)PTR_FUN_0012a2a0)()" (parenthesized_expression "(*(code *)PTR_FUN_0012a2a0)" ( (pointer_expression "*(code *)PTR_FUN_0012a2a0" * (cast_expression "(code *)PTR_FUN_0012a2a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar2 = *(int **)(puVar25 + 0xc0f70);" (assignment_expression "piVar2 = *(int **)(puVar25 + 0xc0f70)" identifier = (pointer_expression "*(int **)(puVar25 + 0xc0f70)" * (cast_expression "(int **)(puVar25 + 0xc0f70)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0f70)" ( (binary_expression "puVar25 + 0xc0f70" identifier + number_literal) ))))) ;) (expression_statement "local_e4[0] = 0;" (assignment_expression "local_e4[0] = 0" (subscript_expression "local_e4[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[1] = 0;" (assignment_expression "local_e4[1] = 0" (subscript_expression "local_e4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[2] = 0;" (assignment_expression "local_e4[2] = 0" (subscript_expression "local_e4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[3] = 0;" (assignment_expression "local_e4[3] = 0" (subscript_expression "local_e4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[4] = 0;" (assignment_expression "local_e4[4] = 0" (subscript_expression "local_e4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[5] = 0;" (assignment_expression "local_e4[5] = 0" (subscript_expression "local_e4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[6] = 0;" (assignment_expression "local_e4[6] = 0" (subscript_expression "local_e4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[7] = 0;" (assignment_expression "local_e4[7] = 0" (subscript_expression "local_e4[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[8] = 0;" (assignment_expression "local_e4[8] = 0" (subscript_expression "local_e4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[9] = 0;" (assignment_expression "local_e4[9] = 0" (subscript_expression "local_e4[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[10] = 0;" (assignment_expression "local_e4[10] = 0" (subscript_expression "local_e4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[0xb] = 0;" (assignment_expression "local_e4[0xb] = 0" (subscript_expression "local_e4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_4c = *piVar2;" (assignment_expression "local_4c = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0208);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0208)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc0208)" * (cast_expression "(code **)(puVar25 + 0xc0208)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0208)" ( (binary_expression "puVar25 + 0xc0208" identifier + number_literal) ))))) ;) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" identifier = identifier) ;) (expression_statement "uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);" (assignment_expression "uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" identifier = (call_expression "(**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc01c0))" ( (pointer_expression "**(code **)(puVar25 + 0xc01c0)" * (pointer_expression "*(code **)(puVar25 + 0xc01c0)" * (cast_expression "(code **)(puVar25 + 0xc01c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc01c0)" ( (binary_expression "puVar25 + 0xc01c0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" ( (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6af0" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffcc);" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffcc)" identifier = (pointer_expression "*(int *)(puVar25 + 0xbffcc)" * (cast_expression "(int *)(puVar25 + 0xbffcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffcc)" ( (binary_expression "puVar25 + 0xbffcc" identifier + number_literal) ))))) ;) (while_statement "while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }" while (parenthesized_expression "(iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0)" ( (comma_expression "iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0" (assignment_expression "iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3)" identifier = (call_expression "(**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0b4c))" ( (pointer_expression "**(code **)(puVar25 + 0xc0b4c)" * (pointer_expression "*(code **)(puVar25 + 0xc0b4c)" * (cast_expression "(code **)(puVar25 + 0xc0b4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0b4c)" ( (binary_expression "puVar25 + 0xc0b4c" identifier + number_literal) ))))) )) (argument_list "(&local_b0,0x3c,uVar3)" ( (pointer_expression "&local_b0" & identifier) , number_literal , identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) )) (compound_statement "{\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }" { (expression_statement "puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);" (assignment_expression "puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" identifier = (cast_expression "(undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0d78))" ( (pointer_expression "**(code **)(puVar25 + 0xc0d78)" * (pointer_expression "*(code **)(puVar25 + 0xc0d78)" * (cast_expression "(code **)(puVar25 + 0xc0d78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0d78)" ( (binary_expression "puVar25 + 0xc0d78" identifier + number_literal) ))))) )) (argument_list "(&local_b0,0x3a)" ( (pointer_expression "&local_b0" & identifier) , number_literal ))))) ;) (if_statement "if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }" if (parenthesized_expression "(puVar5 != (undefined1 *)0x0)" ( (binary_expression "puVar5 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);" (assignment_expression "iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0)" identifier = (call_expression "(*pcVar22)(iVar21 + 0x68b9,&local_b0)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(iVar21 + 0x68b9,&local_b0)" ( (binary_expression "iVar21 + 0x68b9" identifier + number_literal) , (pointer_expression "&local_b0" & identifier) )))) ;) (if_statement "if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }" { (expression_statement "uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);" (assignment_expression "uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10)" identifier = (call_expression "(**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0d7c))" ( (pointer_expression "**(code **)(puVar25 + 0xc0d7c)" * (pointer_expression "*(code **)(puVar25 + 0xc0d7c)" * (cast_expression "(code **)(puVar25 + 0xc0d7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0d7c)" ( (binary_expression "puVar25 + 0xc0d7c" identifier + number_literal) ))))) )) (argument_list "(puVar5 + 1,0,10)" ( (binary_expression "puVar5 + 1" identifier + number_literal) , number_literal , number_literal )))) ;) (expression_statement "local_e4[iVar4] = uVar6;" (assignment_expression "local_e4[iVar4] = uVar6" (subscript_expression "local_e4[iVar4]" identifier [ identifier ]) = identifier) ;) })) })) })) (expression_statement "puVar23 = *(uint **)(puVar25 + 0xc0158);" (assignment_expression "puVar23 = *(uint **)(puVar25 + 0xc0158)" identifier = (pointer_expression "*(uint **)(puVar25 + 0xc0158)" * (cast_expression "(uint **)(puVar25 + 0xc0158)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0158)" ( (binary_expression "puVar25 + 0xc0158" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar25 + 0xc0b90))(uVar3);" (call_expression "(**(code **)(puVar25 + 0xc0b90))(uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0b90))" ( (pointer_expression "**(code **)(puVar25 + 0xc0b90)" * (pointer_expression "*(code **)(puVar25 + 0xc0b90)" * (cast_expression "(code **)(puVar25 + 0xc0b90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0b90)" ( (binary_expression "puVar25 + 0xc0b90" identifier + number_literal) ))))) )) (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar6 = local_e4[0];" (assignment_expression "uVar6 = local_e4[0]" identifier = (subscript_expression "local_e4[0]" identifier [ number_literal ])) ;) (expression_statement "iVar21 = 100;" (assignment_expression "iVar21 = 100" identifier = number_literal) ;) (if_statement "if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }" if (parenthesized_expression "(param_2 < 0x65)" ( (binary_expression "param_2 < 0x65" identifier < number_literal) )) (compound_statement "{\n    iVar21 = param_2;\n  }" { (expression_statement "iVar21 = param_2;" (assignment_expression "iVar21 = param_2" identifier = identifier) ;) })) (expression_statement "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);" (call_expression "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5])" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" ( (pointer_expression "**(code **)(puVar25 + 0xc1000)" * (pointer_expression "*(code **)(puVar25 + 0xc1000)" * (cast_expression "(code **)(puVar25 + 0xc1000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc1000)" ( (binary_expression "puVar25 + 0xc1000" identifier + number_literal) ))))) )) (argument_list "(&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5])" ( (pointer_expression "&local_b0" & identifier) , identifier , number_literal , number_literal , (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6af8" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) , (binary_expression "local_e4[0] - local_e4[1]" (subscript_expression "local_e4[0]" identifier [ number_literal ]) - (subscript_expression "local_e4[1]" identifier [ number_literal ])) , (subscript_expression "local_e4[1]" identifier [ number_literal ]) , (binary_expression "local_e4[2] + local_e4[3]" (subscript_expression "local_e4[2]" identifier [ number_literal ]) + (subscript_expression "local_e4[3]" identifier [ number_literal ])) , (subscript_expression "local_e4[4]" identifier [ number_literal ]) , (subscript_expression "local_e4[5]" identifier [ number_literal ]) ))) ;) (if_statement "if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" if (parenthesized_expression "((*puVar23 & 4) == 0)" ( (binary_expression "(*puVar23 & 4) == 0" (parenthesized_expression "(*puVar23 & 4)" ( (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }" { (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4" identifier = (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6ae4" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" else (compound_statement "{\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" { (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998" identifier = (binary_expression "*(int *)(puVar25 + 0xbffcc) + -0x4998" (pointer_expression "*(int *)(puVar25 + 0xbffcc)" * (cast_expression "(int *)(puVar25 + 0xbffcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffcc)" ( (binary_expression "puVar25 + 0xbffcc" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "(**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);" (call_expression "(**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0c54))" ( (pointer_expression "**(code **)(puVar25 + 0xc0c54)" * (pointer_expression "*(code **)(puVar25 + 0xc0c54)" * (cast_expression "(code **)(puVar25 + 0xc0c54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0c54)" ( (binary_expression "puVar25 + 0xc0c54" identifier + number_literal) ))))) )) (argument_list "(1,iVar4,&local_b0)" ( number_literal , identifier , (pointer_expression "&local_b0" & identifier) ))) ;) (expression_statement "piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);" (assignment_expression "piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128)" identifier = (cast_expression "(int *)**(undefined4 **)(puVar25 + 0xc0128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar25 + 0xc0128)" * (pointer_expression "*(undefined4 **)(puVar25 + 0xc0128)" * (cast_expression "(undefined4 **)(puVar25 + 0xc0128)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0128)" ( (binary_expression "puVar25 + 0xc0128" identifier + number_literal) ))))))) ;) (expression_statement "uVar7 = piVar19[0x29] - piVar19[0x3d];" (assignment_expression "uVar7 = piVar19[0x29] - piVar19[0x3d]" identifier = (binary_expression "piVar19[0x29] - piVar19[0x3d]" (subscript_expression "piVar19[0x29]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x3d]" identifier [ number_literal ]))) ;) (if_statement "if (uVar7 == 0) {\n    uVar7 = 1;\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = 1;\n  }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);" (call_expression "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7)" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" ( (pointer_expression "**(code **)(puVar25 + 0xc1000)" * (pointer_expression "*(code **)(puVar25 + 0xc1000)" * (cast_expression "(code **)(puVar25 + 0xc1000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc1000)" ( (binary_expression "puVar25 + 0xc1000" identifier + number_literal) ))))) )) (argument_list "(&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7)" ( (pointer_expression "&local_b0" & identifier) , identifier , number_literal , number_literal , (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b38" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) , (binary_expression "(uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x19] - piVar19[0x2d]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x19] - piVar19[0x2d]) * 100)" ( (binary_expression "(piVar19[0x19] - piVar19[0x2d]) * 100" (parenthesized_expression "(piVar19[0x19] - piVar19[0x2d])" ( (binary_expression "piVar19[0x19] - piVar19[0x2d]" (subscript_expression "piVar19[0x19]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x2d]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1d] - piVar19[0x31]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x1d] - piVar19[0x31]) * 100)" ( (binary_expression "(piVar19[0x1d] - piVar19[0x31]) * 100" (parenthesized_expression "(piVar19[0x1d] - piVar19[0x31])" ( (binary_expression "piVar19[0x1d] - piVar19[0x31]" (subscript_expression "piVar19[0x1d]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x31]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1b] - piVar19[0x2f]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x1b] - piVar19[0x2f]) * 100)" ( (binary_expression "(piVar19[0x1b] - piVar19[0x2f]) * 100" (parenthesized_expression "(piVar19[0x1b] - piVar19[0x2f])" ( (binary_expression "piVar19[0x1b] - piVar19[0x2f]" (subscript_expression "piVar19[0x1b]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x2f]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1f] - piVar19[0x33]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x1f] - piVar19[0x33]) * 100)" ( (binary_expression "(piVar19[0x1f] - piVar19[0x33]) * 100" (parenthesized_expression "(piVar19[0x1f] - piVar19[0x33])" ( (binary_expression "piVar19[0x1f] - piVar19[0x33]" (subscript_expression "piVar19[0x1f]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x33]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x21] - piVar19[0x35]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x21] - piVar19[0x35]) * 100)" ( (binary_expression "(piVar19[0x21] - piVar19[0x35]) * 100" (parenthesized_expression "(piVar19[0x21] - piVar19[0x35])" ( (binary_expression "piVar19[0x21] - piVar19[0x35]" (subscript_expression "piVar19[0x21]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x35]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x23] - piVar19[0x37]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x23] - piVar19[0x37]) * 100)" ( (binary_expression "(piVar19[0x23] - piVar19[0x37]) * 100" (parenthesized_expression "(piVar19[0x23] - piVar19[0x37])" ( (binary_expression "piVar19[0x23] - piVar19[0x37]" (subscript_expression "piVar19[0x23]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x37]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x25] - piVar19[0x39]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x25] - piVar19[0x39]) * 100)" ( (binary_expression "(piVar19[0x25] - piVar19[0x39]) * 100" (parenthesized_expression "(piVar19[0x25] - piVar19[0x39])" ( (binary_expression "piVar19[0x25] - piVar19[0x39]" (subscript_expression "piVar19[0x25]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x39]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) ))) ;) (expression_statement "(**(code **)(puVar25 + 0xc0dd8))(&local_b0);" (call_expression "(**(code **)(puVar25 + 0xc0dd8))(&local_b0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0dd8))" ( (pointer_expression "**(code **)(puVar25 + 0xc0dd8)" * (pointer_expression "*(code **)(puVar25 + 0xc0dd8)" * (cast_expression "(code **)(puVar25 + 0xc0dd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0dd8)" ( (binary_expression "puVar25 + 0xc0dd8" identifier + number_literal) ))))) )) (argument_list "(&local_b0)" ( (pointer_expression "&local_b0" & identifier) ))) ;) (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0)" identifier = (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) ))))) ;) (expression_statement "local_b0 = *(undefined4 *)(iVar4 + 0x6b80);" (assignment_expression "local_b0 = *(undefined4 *)(iVar4 + 0x6b80)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x6b80)" * (cast_expression "(undefined4 *)(iVar4 + 0x6b80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b80)" ( (binary_expression "iVar4 + 0x6b80" identifier + number_literal) ))))) ;) (expression_statement "local_ac = *(undefined4 *)(iVar4 + 0x6b84);" (assignment_expression "local_ac = *(undefined4 *)(iVar4 + 0x6b84)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x6b84)" * (cast_expression "(undefined4 *)(iVar4 + 0x6b84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b84)" ( (binary_expression "iVar4 + 0x6b84" identifier + number_literal) ))))) ;) (expression_statement "local_a8 = *(undefined4 *)(iVar4 + 0x6b88);" (assignment_expression "local_a8 = *(undefined4 *)(iVar4 + 0x6b88)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x6b88)" * (cast_expression "(undefined4 *)(iVar4 + 0x6b88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b88)" ( (binary_expression "iVar4 + 0x6b88" identifier + number_literal) ))))) ;) (expression_statement "local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);" (assignment_expression "local_a4 = *(undefined2 *)(iVar4 + 0x6b8c)" identifier = (pointer_expression "*(undefined2 *)(iVar4 + 0x6b8c)" * (cast_expression "(undefined2 *)(iVar4 + 0x6b8c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b8c)" ( (binary_expression "iVar4 + 0x6b8c" identifier + number_literal) ))))) ;) (expression_statement "local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);" (assignment_expression "local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e)" (subscript_expression "local_a2[0]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(iVar4 + 0x6b8e)" * (cast_expression "(undefined1 *)(iVar4 + 0x6b8e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b8e)" ( (binary_expression "iVar4 + 0x6b8e" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);" (call_expression "(**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55)" (parenthesized_expression "(**(code **)(puVar25 + 0xc01f8))" ( (pointer_expression "**(code **)(puVar25 + 0xc01f8)" * (pointer_expression "*(code **)(puVar25 + 0xc01f8)" * (cast_expression "(code **)(puVar25 + 0xc01f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc01f8)" ( (binary_expression "puVar25 + 0xc01f8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55)" ( (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b90" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) , identifier , number_literal ))) ;) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0f84);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0f84)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc0f84)" * (cast_expression "(code **)(puVar25 + 0xc0f84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0f84)" ( (binary_expression "puVar25 + 0xc0f84" identifier + number_literal) ))))) ;) (expression_statement "(&uStack_b1)[iVar21] = 0;" (assignment_expression "(&uStack_b1)[iVar21] = 0" (subscript_expression "(&uStack_b1)[iVar21]" (parenthesized_expression "(&uStack_b1)" ( (pointer_expression "&uStack_b1" & identifier) )) [ identifier ]) = number_literal) ;) (expression_statement "puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);" (assignment_expression "puVar5 = (undefined1 *)(*pcVar22)(local_a2,10)" identifier = (cast_expression "(undefined1 *)(*pcVar22)(local_a2,10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar22)(local_a2,10)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(local_a2,10)" ( identifier , number_literal ))))) ;) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0dd8);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0dd8)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc0dd8)" * (cast_expression "(code **)(puVar25 + 0xc0dd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0dd8)" ( (binary_expression "puVar25 + 0xc0dd8" identifier + number_literal) ))))) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "(*pcVar22)(&local_b0);" (call_expression "(*pcVar22)(&local_b0)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(&local_b0)" ( (pointer_expression "&local_b0" & identifier) ))) ;) (if_statement "if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;" if (parenthesized_expression "((*puVar23 & 4) != 0)" ( (binary_expression "(*puVar23 & 4) != 0" (parenthesized_expression "(*puVar23 & 4)" ( (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" * identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0006a8b4;" goto statement_identifier ;)) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214" identifier = (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x1214" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal)) ;) (while_statement "while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }" { (expression_statement "(**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);" (call_expression "(**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0c54))" ( (pointer_expression "**(code **)(puVar25 + 0xc0c54)" * (pointer_expression "*(code **)(puVar25 + 0xc0c54)" * (cast_expression "(code **)(puVar25 + 0xc0c54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0c54)" ( (binary_expression "puVar25 + 0xc0c54" identifier + number_literal) ))))) )) (argument_list "(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98)" ( number_literal , identifier , identifier , (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b98" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) ))) ;) (if_statement "if (uVar6 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = 0xc800000 / uVar6;" (assignment_expression "uVar7 = 0xc800000 / uVar6" identifier = (binary_expression "0xc800000 / uVar6" number_literal / identifier)) ;) (if_statement "if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" if (parenthesized_expression "(uVar7 < 0x200)" ( (binary_expression "uVar7 < 0x200" identifier < number_literal) )) (compound_statement "{\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }" { (expression_statement "uVar15 = 0x15;" (assignment_expression "uVar15 = 0x15" identifier = number_literal) ;) (expression_statement "local_120 = 0x100000;" (assignment_expression "local_120 = 0x100000" identifier = number_literal) ;) }) (else_clause "else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" else (compound_statement "{\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" { (expression_statement "uVar15 = 0x15;" (assignment_expression "uVar15 = 0x15" identifier = number_literal) ;) (do_statement "do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);" do (compound_statement "{\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      }" { (expression_statement "uVar7 = uVar7 >> 2;" (assignment_expression "uVar7 = uVar7 >> 2" identifier = (binary_expression "uVar7 >> 2" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 2;" (assignment_expression "uVar15 = uVar15 - 2" identifier = (binary_expression "uVar15 - 2" identifier - number_literal)) ;) }) while (parenthesized_expression "(0x1ff < uVar7)" ( (binary_expression "0x1ff < uVar7" number_literal < identifier) )) ;) (expression_statement "local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;" (assignment_expression "local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1" identifier = (binary_expression "(uint)(1 << (uVar15 & 0x1f)) >> 1" (call_expression "(uint)(1 << (uVar15 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 << (uVar15 & 0x1f))" ( (binary_expression "1 << (uVar15 & 0x1f)" number_literal << (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) ))) ))) >> number_literal)) ;) }))) (expression_statement "uVar9 = piVar19[0x2b] - piVar19[0x3f];" (assignment_expression "uVar9 = piVar19[0x2b] - piVar19[0x3f]" identifier = (binary_expression "piVar19[0x2b] - piVar19[0x3f]" (subscript_expression "piVar19[0x2b]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x3f]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = piVar19[0x40];" (assignment_expression "uVar8 = piVar19[0x40]" identifier = (subscript_expression "piVar19[0x40]" identifier [ number_literal ])) ;) (if_statement "if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }" if (parenthesized_expression "((uint)piVar19[0x40] < uVar9)" ( (binary_expression "(uint)piVar19[0x40] < uVar9" (cast_expression "(uint)piVar19[0x40]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar19[0x40]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }" { (expression_statement "piVar19[0x40] = uVar9;" (assignment_expression "piVar19[0x40] = uVar9" (subscript_expression "piVar19[0x40]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar8 = uVar9;" (assignment_expression "uVar8 = uVar9" identifier = identifier) ;) })) (expression_statement "uVar9 = (uVar9 & 0xffff) * 0x1900;" (assignment_expression "uVar9 = (uVar9 & 0xffff) * 0x1900" identifier = (binary_expression "(uVar9 & 0xffff) * 0x1900" (parenthesized_expression "(uVar9 & 0xffff)" ( (binary_expression "uVar9 & 0xffff" identifier & number_literal) )) * number_literal)) ;) (if_statement "if (uVar9 == 0) {\n      uVar9 = 1;\n    }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar9 = 1;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) })) (expression_statement "uVar24 = 6;" (assignment_expression "uVar24 = 6" identifier = number_literal) ;) (do_statement "do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);" do (compound_statement "{\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    }" { (expression_statement "uVar9 = uVar9 << 2;" (assignment_expression "uVar9 = uVar9 << 2" identifier = (binary_expression "uVar9 << 2" identifier << number_literal)) ;) (expression_statement "uVar24 = uVar24 + 2;" (assignment_expression "uVar24 = uVar24 + 2" identifier = (binary_expression "uVar24 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar9 < 0x40000000)" ( (binary_expression "uVar9 < 0x40000000" identifier < number_literal) )) ;) (expression_statement "uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;" (assignment_expression "uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8" identifier = (binary_expression "((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8" (parenthesized_expression "((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff)" ( (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff" (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6)" (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((int)piVar19 + 0xa6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar19 + 0xa6)" ( (binary_expression "(int)piVar19 + 0xa6" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xf6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((int)piVar19 + 0xf6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar19 + 0xf6)" ( (binary_expression "(int)piVar19 + 0xf6" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) & number_literal) )) * identifier)) ;) (if_statement "if (uVar8 == 0) goto LAB_0006a67c;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0006a67c;" goto statement_identifier ;)) (if_statement "if (uVar8 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (for_statement "for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }" for ( (assignment_expression "uVar9 = uVar9 / uVar8" identifier = (binary_expression "uVar9 / uVar8" identifier / identifier)) ; (binary_expression "0x3ff < uVar9" number_literal < identifier) ; (assignment_expression "uVar9 = uVar9 >> 2" identifier = (binary_expression "uVar9 >> 2" identifier >> number_literal)) ) (compound_statement "{\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }" { (labeled_statement "LAB_0006a67c:\n      uVar24 = uVar24 - 2;" statement_identifier : (expression_statement "uVar24 = uVar24 - 2;" (assignment_expression "uVar24 = uVar24 - 2" identifier = (binary_expression "uVar24 - 2" identifier - number_literal)) ;)) })) (expression_statement "piVar1 = piVar19 + 0x11;" (assignment_expression "piVar1 = piVar19 + 0x11" identifier = (binary_expression "piVar19 + 0x11" identifier + number_literal)) ;) (expression_statement "iVar4 = piVar19[1] - *piVar1;" (assignment_expression "iVar4 = piVar19[1] - *piVar1" identifier = (binary_expression "piVar19[1] - *piVar1" (subscript_expression "piVar19[1]" identifier [ number_literal ]) - (pointer_expression "*piVar1" * identifier))) ;) (expression_statement "iVar21 = iVar20 + -4;" (assignment_expression "iVar21 = iVar20 + -4" identifier = (binary_expression "iVar20 + -4" identifier + number_literal)) ;) (if_statement "if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }" if (parenthesized_expression "(iVar4 <= iVar20 + -4)" ( (binary_expression "iVar4 <= iVar20 + -4" identifier <= (binary_expression "iVar20 + -4" identifier + number_literal)) )) (compound_statement "{\n      iVar21 = iVar4;\n    }" { (expression_statement "iVar21 = iVar4;" (assignment_expression "iVar21 = iVar4" identifier = identifier) ;) })) (expression_statement "iVar20 = iVar21 + -1;" (assignment_expression "iVar20 = iVar21 + -1" identifier = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc065c);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc065c)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc065c)" * (cast_expression "(code **)(puVar25 + 0xc065c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc065c)" ( (binary_expression "puVar25 + 0xc065c" identifier + number_literal) ))))) ;) (if_statement "if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }" if (parenthesized_expression "(-1 < iVar20)" ( (binary_expression "-1 < iVar20" number_literal < identifier) )) (compound_statement "{\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }" { (expression_statement "iVar14 = *piVar19;" (assignment_expression "iVar14 = *piVar19" identifier = (pointer_expression "*piVar19" * identifier)) ;) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0)" identifier = (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) ))))) ;) (expression_statement "pcVar10 = *(code **)(puVar25 + 0xc062c);" (assignment_expression "pcVar10 = *(code **)(puVar25 + 0xc062c)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc062c)" * (cast_expression "(code **)(puVar25 + 0xc062c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc062c)" ( (binary_expression "puVar25 + 0xc062c" identifier + number_literal) ))))) ;) (expression_statement "piVar19 = piVar19 + 0x45;" (assignment_expression "piVar19 = piVar19 + 0x45" identifier = (binary_expression "piVar19 + 0x45" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;" (assignment_expression "uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1" identifier = (binary_expression "(uint)(1 << (uVar24 & 0x1f)) >> 1" (call_expression "(uint)(1 << (uVar24 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 << (uVar24 & 0x1f))" ( (binary_expression "1 << (uVar24 & 0x1f)" number_literal << (parenthesized_expression "(uVar24 & 0x1f)" ( (binary_expression "uVar24 & 0x1f" identifier & number_literal) ))) ))) >> number_literal)) ;) (expression_statement "puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);" (assignment_expression "puVar11 = *(undefined4 **)(puVar25 + 0xc0c64)" identifier = (pointer_expression "*(undefined4 **)(puVar25 + 0xc0c64)" * (cast_expression "(undefined4 **)(puVar25 + 0xc0c64)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0c64)" ( (binary_expression "puVar25 + 0xc0c64" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;" (assignment_expression "iVar14 = iVar14 + *piVar1 * 0x2c + 0x18" identifier = (binary_expression "iVar14 + *piVar1 * 0x2c + 0x18" (binary_expression "iVar14 + *piVar1 * 0x2c" identifier + (binary_expression "*piVar1 * 0x2c" (pointer_expression "*piVar1" * identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar12 = *(code **)(puVar25 + 0xc0634);" (assignment_expression "pcVar12 = *(code **)(puVar25 + 0xc0634)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc0634)" * (cast_expression "(code **)(puVar25 + 0xc0634)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0634)" ( (binary_expression "puVar25 + 0xc0634" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0)" identifier = (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) ))))) ;) (do_statement "do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);" do (compound_statement "{\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      }" { (expression_statement "iVar13 = *(int *)(iVar14 + -0x18);" (assignment_expression "iVar13 = *(int *)(iVar14 + -0x18)" identifier = (pointer_expression "*(int *)(iVar14 + -0x18)" * (cast_expression "(int *)(iVar14 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0x18)" ( (binary_expression "iVar14 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(iVar14 + -0x10);" (assignment_expression "iVar16 = *(int *)(iVar14 + -0x10)" identifier = (pointer_expression "*(int *)(iVar14 + -0x10)" * (cast_expression "(int *)(iVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0x10)" ( (binary_expression "iVar14 + -0x10" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);" (call_expression "(*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(0,iVar13,&local_b0,iVar4 + 0x6960)" ( number_literal , identifier , (pointer_expression "&local_b0" & identifier) , (binary_expression "iVar4 + 0x6960" identifier + number_literal) ))) ;) (expression_statement "uVar17 = *(undefined4 *)(iVar14 + -0xc);" (assignment_expression "uVar17 = *(undefined4 *)(iVar14 + -0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar14 + -0xc)" * (cast_expression "(undefined4 *)(iVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0xc)" ( (binary_expression "iVar14 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = *(undefined4 *)(iVar14 + -8);" (assignment_expression "uVar18 = *(undefined4 *)(iVar14 + -8)" identifier = (pointer_expression "*(undefined4 *)(iVar14 + -8)" * (cast_expression "(undefined4 *)(iVar14 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -8)" ( (binary_expression "iVar14 + -8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));" (assignment_expression "uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4))" identifier = (call_expression "(*pcVar10)(*(undefined4 *)(iVar14 + -4))" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "(*(undefined4 *)(iVar14 + -4))" ( (pointer_expression "*(undefined4 *)(iVar14 + -4)" * (cast_expression "(undefined4 *)(iVar14 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -4)" ( (binary_expression "iVar14 + -4" identifier + number_literal) )))) )))) ;) (expression_statement "iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));" (assignment_expression "iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" identifier = (call_expression "(**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" ( (pointer_expression "**(code **)(puVar25 + 0xc1000)" * (pointer_expression "*(code **)(puVar25 + 0xc1000)" * (cast_expression "(code **)(puVar25 + 0xc1000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc1000)" ( (binary_expression "puVar25 + 0xc1000" identifier + number_literal) ))))) )) (argument_list "(piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" ( identifier , identifier , number_literal , number_literal , (binary_expression "iVar21 + 0x6bcc" identifier + number_literal) , identifier , identifier , identifier , identifier , (pointer_expression "&local_b0" & identifier) , (binary_expression "iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f)" (binary_expression "iVar13 * uVar7 + local_120" (binary_expression "iVar13 * uVar7" identifier * identifier) + identifier) >> (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) ))) , (binary_expression "uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f)" (binary_expression "uVar9 * iVar16 + uVar6" (binary_expression "uVar9 * iVar16" identifier * identifier) + identifier) >> (parenthesized_expression "(uVar24 & 0x1f)" ( (binary_expression "uVar24 & 0x1f" identifier & number_literal) ))) )))) ;) (if_statement "if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }" if (parenthesized_expression "(1 < param_2 - iVar13)" ( (binary_expression "1 < param_2 - iVar13" number_literal < (binary_expression "param_2 - iVar13" identifier - identifier)) )) (compound_statement "{\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }" { (expression_statement "(*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);" (call_expression "(*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4)" ( (binary_expression "(int)piVar19 + iVar13" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , (binary_expression "param_2 - iVar13" identifier - identifier) , (pointer_expression "*(undefined4 *)(iVar14 + -0xc)" * (cast_expression "(undefined4 *)(iVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0xc)" ( (binary_expression "iVar14 + -0xc" identifier + number_literal) )))) , (binary_expression "iVar14 + 4" identifier + number_literal) ))) ;) })) (expression_statement "iVar20 = iVar20 + -1;" (assignment_expression "iVar20 = iVar20 + -1" identifier = (binary_expression "iVar20 + -1" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + 0x2c;" (assignment_expression "iVar14 = iVar14 + 0x2c" identifier = (binary_expression "iVar14 + 0x2c" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);" (call_expression "(**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11)" (parenthesized_expression "(**(code **)(puVar25 + 0xc1028))" ( (pointer_expression "**(code **)(puVar25 + 0xc1028)" * (pointer_expression "*(code **)(puVar25 + 0xc1028)" * (cast_expression "(code **)(puVar25 + 0xc1028)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc1028)" ( (binary_expression "puVar25 + 0xc1028" identifier + number_literal) ))))) )) (argument_list "(piVar19,*puVar11)" ( identifier , (pointer_expression "*puVar11" * identifier) ))) ;) }) while (parenthesized_expression "(iVar20 != -1)" ( (binary_expression "iVar20 != -1" identifier != number_literal) )) ;) })) (expression_statement "uVar3 = 10;" (assignment_expression "uVar3 = 10" identifier = number_literal) ;) (if_statement "if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }" if (parenthesized_expression "((*puVar23 & 4) == 0)" ( (binary_expression "(*puVar23 & 4) == 0" (parenthesized_expression "(*puVar23 & 4)" ( (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar3 = 0xd;\n    }" { (expression_statement "uVar3 = 0xd;" (assignment_expression "uVar3 = 0xd" identifier = number_literal) ;) })) (expression_statement "(**(code **)(puVar25 + 0xc0178))(uVar3);" (call_expression "(**(code **)(puVar25 + 0xc0178))(uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0178))" ( (pointer_expression "**(code **)(puVar25 + 0xc0178)" * (pointer_expression "*(code **)(puVar25 + 0xc0178)" * (cast_expression "(code **)(puVar25 + 0xc0178)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0178)" ( (binary_expression "puVar25 + 0xc0178" identifier + number_literal) ))))) )) (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar25 + 0xc0068))();" (call_expression "(**(code **)(puVar25 + 0xc0068))()" (parenthesized_expression "(**(code **)(puVar25 + 0xc0068))" ( (pointer_expression "**(code **)(puVar25 + 0xc0068)" * (pointer_expression "*(code **)(puVar25 + 0xc0068)" * (cast_expression "(code **)(puVar25 + 0xc0068)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0068)" ( (binary_expression "puVar25 + 0xc0068" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if (local_4c == *piVar2) break;" if (parenthesized_expression "(local_4c == *piVar2)" ( (binary_expression "local_4c == *piVar2" identifier == (pointer_expression "*piVar2" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "(**(code **)(puVar25 + 0xc0eec))();" (call_expression "(**(code **)(puVar25 + 0xc0eec))()" (parenthesized_expression "(**(code **)(puVar25 + 0xc0eec))" ( (pointer_expression "**(code **)(puVar25 + 0xc0eec)" * (pointer_expression "*(code **)(puVar25 + 0xc0eec)" * (cast_expression "(code **)(puVar25 + 0xc0eec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0eec)" ( (binary_expression "puVar25 + 0xc0eec" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;" statement_identifier : (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec" identifier = (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x12ec" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal)) ;)) })) (return_statement "return;" return ;) })))
(translation_unit "void sig_catcher(int sig)\n\n{\n  if ((*(uint *)PTR_option_mask32_0012a334 & 4) == 0) {\n    (*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10);\n  }\n  (*(code *)PTR_kill_myself_with_sig_0012a2a0)(sig);\n  return;\n}\n\n" (function_definition "void sig_catcher(int sig)\n\n{\n  if ((*(uint *)PTR_option_mask32_0012a334 & 4) == 0) {\n    (*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10);\n  }\n  (*(code *)PTR_kill_myself_with_sig_0012a2a0)(sig);\n  return;\n}" primitive_type (function_declarator "sig_catcher(int sig)" identifier (parameter_list "(int sig)" ( (parameter_declaration "int sig" primitive_type identifier) ))) (compound_statement "{\n  if ((*(uint *)PTR_option_mask32_0012a334 & 4) == 0) {\n    (*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10);\n  }\n  (*(code *)PTR_kill_myself_with_sig_0012a2a0)(sig);\n  return;\n}" { (if_statement "if ((*(uint *)PTR_option_mask32_0012a334 & 4) == 0) {\n    (*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10);\n  }" if (parenthesized_expression "((*(uint *)PTR_option_mask32_0012a334 & 4) == 0)" ( (binary_expression "(*(uint *)PTR_option_mask32_0012a334 & 4) == 0" (parenthesized_expression "(*(uint *)PTR_option_mask32_0012a334 & 4)" ( (binary_expression "*(uint *)PTR_option_mask32_0012a334 & 4" (pointer_expression "*(uint *)PTR_option_mask32_0012a334" * (cast_expression "(uint *)PTR_option_mask32_0012a334" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n    (*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10);\n  }" { (expression_statement "(*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10);" (call_expression "(*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10)" (parenthesized_expression "(*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308)" ( (pointer_expression "*(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308" * (cast_expression "(code *)PTR_tcsetattr_stdin_TCSANOW_0012a308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)PTR_ptr_to_globals_0012a304 + 0x10)" ( (binary_expression "*(int *)PTR_ptr_to_globals_0012a304 + 0x10" (pointer_expression "*(int *)PTR_ptr_to_globals_0012a304" * (cast_expression "(int *)PTR_ptr_to_globals_0012a304" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) })) (expression_statement "(*(code *)PTR_kill_myself_with_sig_0012a2a0)(sig);" (call_expression "(*(code *)PTR_kill_myself_with_sig_0012a2a0)(sig)" (parenthesized_expression "(*(code *)PTR_kill_myself_with_sig_0012a2a0)" ( (pointer_expression "*(code *)PTR_kill_myself_with_sig_0012a2a0" * (cast_expression "(code *)PTR_kill_myself_with_sig_0012a2a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(sig)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0006a188(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  code *pcVar10;\n  undefined4 *puVar11;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  code *pcVar22;\n  uint *puVar23;\n  uint uVar24;\n  undefined *puVar25;\n  uint local_120;\n  uint local_e4 [12];\n  undefined4 local_b4;\n  undefined1 uStack_b1;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined2 local_a4;\n  undefined1 local_a2 [86];\n  int local_4c;\n  int local_48;\n  \n  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }\n  iVar20 = param_1;\n  puVar25 = PTR_FUN_0012a2a0;\n  (*(code *)PTR_FUN_0012a2a0)();\n  piVar2 = *(int **)(puVar25 + 0xc0f70);\n  local_e4[0] = 0;\n  local_e4[1] = 0;\n  local_e4[2] = 0;\n  local_e4[3] = 0;\n  local_e4[4] = 0;\n  local_e4[5] = 0;\n  local_e4[6] = 0;\n  local_e4[7] = 0;\n  local_e4[8] = 0;\n  local_e4[9] = 0;\n  local_e4[10] = 0;\n  local_e4[0xb] = 0;\n  local_b4 = 0;\n  local_4c = *piVar2;\n  pcVar22 = *(code **)(puVar25 + 0xc0208);\n  local_48 = param_1;\n  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);\n  iVar21 = *(int *)(puVar25 + 0xbffcc);\n  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }\n  puVar23 = *(uint **)(puVar25 + 0xc0158);\n  (**(code **)(puVar25 + 0xc0b90))(uVar3);\n  uVar6 = local_e4[0];\n  iVar21 = 100;\n  if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);\n  if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }\n  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);\n  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);\n  uVar7 = piVar19[0x29] - piVar19[0x3d];\n  if (uVar7 == 0) {\n    uVar7 = 1;\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);\n  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);\n  iVar4 = *(int *)(puVar25 + 0xbffb0);\n  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);\n  local_ac = *(undefined4 *)(iVar4 + 0x6b84);\n  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);\n  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);\n  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);\n  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);\n  pcVar22 = *(code **)(puVar25 + 0xc0f84);\n  (&uStack_b1)[iVar21] = 0;\n  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);\n  pcVar22 = *(code **)(puVar25 + 0xc0dd8);\n  *puVar5 = 0;\n  (*pcVar22)(&local_b0);\n  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;\n  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;\n  while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0006a188(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  code *pcVar10;\n  undefined4 *puVar11;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  code *pcVar22;\n  uint *puVar23;\n  uint uVar24;\n  undefined *puVar25;\n  uint local_120;\n  uint local_e4 [12];\n  undefined4 local_b4;\n  undefined1 uStack_b1;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined2 local_a4;\n  undefined1 local_a2 [86];\n  int local_4c;\n  int local_48;\n  \n  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }\n  iVar20 = param_1;\n  puVar25 = PTR_FUN_0012a2a0;\n  (*(code *)PTR_FUN_0012a2a0)();\n  piVar2 = *(int **)(puVar25 + 0xc0f70);\n  local_e4[0] = 0;\n  local_e4[1] = 0;\n  local_e4[2] = 0;\n  local_e4[3] = 0;\n  local_e4[4] = 0;\n  local_e4[5] = 0;\n  local_e4[6] = 0;\n  local_e4[7] = 0;\n  local_e4[8] = 0;\n  local_e4[9] = 0;\n  local_e4[10] = 0;\n  local_e4[0xb] = 0;\n  local_b4 = 0;\n  local_4c = *piVar2;\n  pcVar22 = *(code **)(puVar25 + 0xc0208);\n  local_48 = param_1;\n  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);\n  iVar21 = *(int *)(puVar25 + 0xbffcc);\n  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }\n  puVar23 = *(uint **)(puVar25 + 0xc0158);\n  (**(code **)(puVar25 + 0xc0b90))(uVar3);\n  uVar6 = local_e4[0];\n  iVar21 = 100;\n  if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);\n  if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }\n  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);\n  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);\n  uVar7 = piVar19[0x29] - piVar19[0x3d];\n  if (uVar7 == 0) {\n    uVar7 = 1;\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);\n  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);\n  iVar4 = *(int *)(puVar25 + 0xbffb0);\n  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);\n  local_ac = *(undefined4 *)(iVar4 + 0x6b84);\n  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);\n  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);\n  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);\n  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);\n  pcVar22 = *(code **)(puVar25 + 0xc0f84);\n  (&uStack_b1)[iVar21] = 0;\n  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);\n  pcVar22 = *(code **)(puVar25 + 0xc0dd8);\n  *puVar5 = 0;\n  (*pcVar22)(&local_b0);\n  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;\n  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;\n  while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0006a188(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  code *pcVar10;\n  undefined4 *puVar11;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  code *pcVar22;\n  uint *puVar23;\n  uint uVar24;\n  undefined *puVar25;\n  uint local_120;\n  uint local_e4 [12];\n  undefined4 local_b4;\n  undefined1 uStack_b1;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined2 local_a4;\n  undefined1 local_a2 [86];\n  int local_4c;\n  int local_48;\n  \n  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }\n  iVar20 = param_1;\n  puVar25 = PTR_FUN_0012a2a0;\n  (*(code *)PTR_FUN_0012a2a0)();\n  piVar2 = *(int **)(puVar25 + 0xc0f70);\n  local_e4[0] = 0;\n  local_e4[1] = 0;\n  local_e4[2] = 0;\n  local_e4[3] = 0;\n  local_e4[4] = 0;\n  local_e4[5] = 0;\n  local_e4[6] = 0;\n  local_e4[7] = 0;\n  local_e4[8] = 0;\n  local_e4[9] = 0;\n  local_e4[10] = 0;\n  local_e4[0xb] = 0;\n  local_b4 = 0;\n  local_4c = *piVar2;\n  pcVar22 = *(code **)(puVar25 + 0xc0208);\n  local_48 = param_1;\n  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);\n  iVar21 = *(int *)(puVar25 + 0xbffcc);\n  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }\n  puVar23 = *(uint **)(puVar25 + 0xc0158);\n  (**(code **)(puVar25 + 0xc0b90))(uVar3);\n  uVar6 = local_e4[0];\n  iVar21 = 100;\n  if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);\n  if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }\n  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);\n  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);\n  uVar7 = piVar19[0x29] - piVar19[0x3d];\n  if (uVar7 == 0) {\n    uVar7 = 1;\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);\n  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);\n  iVar4 = *(int *)(puVar25 + 0xbffb0);\n  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);\n  local_ac = *(undefined4 *)(iVar4 + 0x6b84);\n  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);\n  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);\n  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);\n  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);\n  pcVar22 = *(code **)(puVar25 + 0xc0f84);\n  (&uStack_b1)[iVar21] = 0;\n  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);\n  pcVar22 = *(code **)(puVar25 + 0xc0dd8);\n  *puVar5 = 0;\n  (*pcVar22)(&local_b0);\n  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;\n  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;\n  while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "code *pcVar12;" type_identifier (pointer_declarator "*pcVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "code *pcVar22;" type_identifier (pointer_declarator "*pcVar22" * identifier) ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "undefined *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint local_120;" type_identifier identifier ;) (declaration "uint local_e4 [12];" type_identifier (array_declarator "local_e4 [12]" identifier [ number_literal ]) ;) (declaration "undefined4 local_b4;" type_identifier identifier ;) (declaration "undefined1 uStack_b1;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "undefined4 local_a8;" type_identifier identifier ;) (declaration "undefined2 local_a4;" type_identifier identifier ;) (declaration "undefined1 local_a2 [86];" type_identifier (array_declarator "local_a2 [86]" identifier [ number_literal ]) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (if_statement "if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }" if (parenthesized_expression "((*(uint *)PTR_DAT_0012a334 & 4) == 0)" ( (binary_expression "(*(uint *)PTR_DAT_0012a334 & 4) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0012a334 & 4)" ( (binary_expression "*(uint *)PTR_DAT_0012a334 & 4" (pointer_expression "*(uint *)PTR_DAT_0012a334" * (cast_expression "(uint *)PTR_DAT_0012a334" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }" { (expression_statement "(*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);" (call_expression "(*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10)" (parenthesized_expression "(*(code *)PTR_FUN_0012a308)" ( (pointer_expression "*(code *)PTR_FUN_0012a308" * (cast_expression "(code *)PTR_FUN_0012a308" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)PTR_DAT_0012a304 + 0x10)" ( (binary_expression "*(int *)PTR_DAT_0012a304 + 0x10" (pointer_expression "*(int *)PTR_DAT_0012a304" * (cast_expression "(int *)PTR_DAT_0012a304" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) })) (expression_statement "iVar20 = param_1;" (assignment_expression "iVar20 = param_1" identifier = identifier) ;) (expression_statement "puVar25 = PTR_FUN_0012a2a0;" (assignment_expression "puVar25 = PTR_FUN_0012a2a0" identifier = identifier) ;) (expression_statement "(*(code *)PTR_FUN_0012a2a0)();" (call_expression "(*(code *)PTR_FUN_0012a2a0)()" (parenthesized_expression "(*(code *)PTR_FUN_0012a2a0)" ( (pointer_expression "*(code *)PTR_FUN_0012a2a0" * (cast_expression "(code *)PTR_FUN_0012a2a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar2 = *(int **)(puVar25 + 0xc0f70);" (assignment_expression "piVar2 = *(int **)(puVar25 + 0xc0f70)" identifier = (pointer_expression "*(int **)(puVar25 + 0xc0f70)" * (cast_expression "(int **)(puVar25 + 0xc0f70)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0f70)" ( (binary_expression "puVar25 + 0xc0f70" identifier + number_literal) ))))) ;) (expression_statement "local_e4[0] = 0;" (assignment_expression "local_e4[0] = 0" (subscript_expression "local_e4[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[1] = 0;" (assignment_expression "local_e4[1] = 0" (subscript_expression "local_e4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[2] = 0;" (assignment_expression "local_e4[2] = 0" (subscript_expression "local_e4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[3] = 0;" (assignment_expression "local_e4[3] = 0" (subscript_expression "local_e4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[4] = 0;" (assignment_expression "local_e4[4] = 0" (subscript_expression "local_e4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[5] = 0;" (assignment_expression "local_e4[5] = 0" (subscript_expression "local_e4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[6] = 0;" (assignment_expression "local_e4[6] = 0" (subscript_expression "local_e4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[7] = 0;" (assignment_expression "local_e4[7] = 0" (subscript_expression "local_e4[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[8] = 0;" (assignment_expression "local_e4[8] = 0" (subscript_expression "local_e4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[9] = 0;" (assignment_expression "local_e4[9] = 0" (subscript_expression "local_e4[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[10] = 0;" (assignment_expression "local_e4[10] = 0" (subscript_expression "local_e4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_e4[0xb] = 0;" (assignment_expression "local_e4[0xb] = 0" (subscript_expression "local_e4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;) (expression_statement "local_4c = *piVar2;" (assignment_expression "local_4c = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0208);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0208)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc0208)" * (cast_expression "(code **)(puVar25 + 0xc0208)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0208)" ( (binary_expression "puVar25 + 0xc0208" identifier + number_literal) ))))) ;) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" identifier = identifier) ;) (expression_statement "uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);" (assignment_expression "uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" identifier = (call_expression "(**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc01c0))" ( (pointer_expression "**(code **)(puVar25 + 0xc01c0)" * (pointer_expression "*(code **)(puVar25 + 0xc01c0)" * (cast_expression "(code **)(puVar25 + 0xc01c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc01c0)" ( (binary_expression "puVar25 + 0xc01c0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" ( (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6af0" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffcc);" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffcc)" identifier = (pointer_expression "*(int *)(puVar25 + 0xbffcc)" * (cast_expression "(int *)(puVar25 + 0xbffcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffcc)" ( (binary_expression "puVar25 + 0xbffcc" identifier + number_literal) ))))) ;) (while_statement "while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }" while (parenthesized_expression "(iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0)" ( (comma_expression "iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0" (assignment_expression "iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3)" identifier = (call_expression "(**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0b4c))" ( (pointer_expression "**(code **)(puVar25 + 0xc0b4c)" * (pointer_expression "*(code **)(puVar25 + 0xc0b4c)" * (cast_expression "(code **)(puVar25 + 0xc0b4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0b4c)" ( (binary_expression "puVar25 + 0xc0b4c" identifier + number_literal) ))))) )) (argument_list "(&local_b0,0x3c,uVar3)" ( (pointer_expression "&local_b0" & identifier) , number_literal , identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) )) (compound_statement "{\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }" { (expression_statement "puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);" (assignment_expression "puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" identifier = (cast_expression "(undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0d78))" ( (pointer_expression "**(code **)(puVar25 + 0xc0d78)" * (pointer_expression "*(code **)(puVar25 + 0xc0d78)" * (cast_expression "(code **)(puVar25 + 0xc0d78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0d78)" ( (binary_expression "puVar25 + 0xc0d78" identifier + number_literal) ))))) )) (argument_list "(&local_b0,0x3a)" ( (pointer_expression "&local_b0" & identifier) , number_literal ))))) ;) (if_statement "if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }" if (parenthesized_expression "(puVar5 != (undefined1 *)0x0)" ( (binary_expression "puVar5 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }" { (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);" (assignment_expression "iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0)" identifier = (call_expression "(*pcVar22)(iVar21 + 0x68b9,&local_b0)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(iVar21 + 0x68b9,&local_b0)" ( (binary_expression "iVar21 + 0x68b9" identifier + number_literal) , (pointer_expression "&local_b0" & identifier) )))) ;) (if_statement "if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }" { (expression_statement "uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);" (assignment_expression "uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10)" identifier = (call_expression "(**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0d7c))" ( (pointer_expression "**(code **)(puVar25 + 0xc0d7c)" * (pointer_expression "*(code **)(puVar25 + 0xc0d7c)" * (cast_expression "(code **)(puVar25 + 0xc0d7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0d7c)" ( (binary_expression "puVar25 + 0xc0d7c" identifier + number_literal) ))))) )) (argument_list "(puVar5 + 1,0,10)" ( (binary_expression "puVar5 + 1" identifier + number_literal) , number_literal , number_literal )))) ;) (expression_statement "local_e4[iVar4] = uVar6;" (assignment_expression "local_e4[iVar4] = uVar6" (subscript_expression "local_e4[iVar4]" identifier [ identifier ]) = identifier) ;) })) })) })) (expression_statement "puVar23 = *(uint **)(puVar25 + 0xc0158);" (assignment_expression "puVar23 = *(uint **)(puVar25 + 0xc0158)" identifier = (pointer_expression "*(uint **)(puVar25 + 0xc0158)" * (cast_expression "(uint **)(puVar25 + 0xc0158)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0158)" ( (binary_expression "puVar25 + 0xc0158" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar25 + 0xc0b90))(uVar3);" (call_expression "(**(code **)(puVar25 + 0xc0b90))(uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0b90))" ( (pointer_expression "**(code **)(puVar25 + 0xc0b90)" * (pointer_expression "*(code **)(puVar25 + 0xc0b90)" * (cast_expression "(code **)(puVar25 + 0xc0b90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0b90)" ( (binary_expression "puVar25 + 0xc0b90" identifier + number_literal) ))))) )) (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "uVar6 = local_e4[0];" (assignment_expression "uVar6 = local_e4[0]" identifier = (subscript_expression "local_e4[0]" identifier [ number_literal ])) ;) (expression_statement "iVar21 = 100;" (assignment_expression "iVar21 = 100" identifier = number_literal) ;) (if_statement "if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }" if (parenthesized_expression "(param_2 < 0x65)" ( (binary_expression "param_2 < 0x65" identifier < number_literal) )) (compound_statement "{\n    iVar21 = param_2;\n  }" { (expression_statement "iVar21 = param_2;" (assignment_expression "iVar21 = param_2" identifier = identifier) ;) })) (expression_statement "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);" (call_expression "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5])" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" ( (pointer_expression "**(code **)(puVar25 + 0xc1000)" * (pointer_expression "*(code **)(puVar25 + 0xc1000)" * (cast_expression "(code **)(puVar25 + 0xc1000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc1000)" ( (binary_expression "puVar25 + 0xc1000" identifier + number_literal) ))))) )) (argument_list "(&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5])" ( (pointer_expression "&local_b0" & identifier) , identifier , number_literal , number_literal , (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6af8" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) , (binary_expression "local_e4[0] - local_e4[1]" (subscript_expression "local_e4[0]" identifier [ number_literal ]) - (subscript_expression "local_e4[1]" identifier [ number_literal ])) , (subscript_expression "local_e4[1]" identifier [ number_literal ]) , (binary_expression "local_e4[2] + local_e4[3]" (subscript_expression "local_e4[2]" identifier [ number_literal ]) + (subscript_expression "local_e4[3]" identifier [ number_literal ])) , (subscript_expression "local_e4[4]" identifier [ number_literal ]) , (subscript_expression "local_e4[5]" identifier [ number_literal ]) ))) ;) (if_statement "if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" if (parenthesized_expression "((*puVar23 & 4) == 0)" ( (binary_expression "(*puVar23 & 4) == 0" (parenthesized_expression "(*puVar23 & 4)" ( (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }" { (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4" identifier = (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6ae4" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" else (compound_statement "{\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" { (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998" identifier = (binary_expression "*(int *)(puVar25 + 0xbffcc) + -0x4998" (pointer_expression "*(int *)(puVar25 + 0xbffcc)" * (cast_expression "(int *)(puVar25 + 0xbffcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffcc)" ( (binary_expression "puVar25 + 0xbffcc" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "(**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);" (call_expression "(**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0c54))" ( (pointer_expression "**(code **)(puVar25 + 0xc0c54)" * (pointer_expression "*(code **)(puVar25 + 0xc0c54)" * (cast_expression "(code **)(puVar25 + 0xc0c54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0c54)" ( (binary_expression "puVar25 + 0xc0c54" identifier + number_literal) ))))) )) (argument_list "(1,iVar4,&local_b0)" ( number_literal , identifier , (pointer_expression "&local_b0" & identifier) ))) ;) (expression_statement "piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);" (assignment_expression "piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128)" identifier = (cast_expression "(int *)**(undefined4 **)(puVar25 + 0xc0128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar25 + 0xc0128)" * (pointer_expression "*(undefined4 **)(puVar25 + 0xc0128)" * (cast_expression "(undefined4 **)(puVar25 + 0xc0128)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0128)" ( (binary_expression "puVar25 + 0xc0128" identifier + number_literal) ))))))) ;) (expression_statement "uVar7 = piVar19[0x29] - piVar19[0x3d];" (assignment_expression "uVar7 = piVar19[0x29] - piVar19[0x3d]" identifier = (binary_expression "piVar19[0x29] - piVar19[0x3d]" (subscript_expression "piVar19[0x29]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x3d]" identifier [ number_literal ]))) ;) (if_statement "if (uVar7 == 0) {\n    uVar7 = 1;\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = 1;\n  }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);" (call_expression "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7)" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" ( (pointer_expression "**(code **)(puVar25 + 0xc1000)" * (pointer_expression "*(code **)(puVar25 + 0xc1000)" * (cast_expression "(code **)(puVar25 + 0xc1000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc1000)" ( (binary_expression "puVar25 + 0xc1000" identifier + number_literal) ))))) )) (argument_list "(&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7)" ( (pointer_expression "&local_b0" & identifier) , identifier , number_literal , number_literal , (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b38" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) , (binary_expression "(uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x19] - piVar19[0x2d]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x19] - piVar19[0x2d]) * 100)" ( (binary_expression "(piVar19[0x19] - piVar19[0x2d]) * 100" (parenthesized_expression "(piVar19[0x19] - piVar19[0x2d])" ( (binary_expression "piVar19[0x19] - piVar19[0x2d]" (subscript_expression "piVar19[0x19]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x2d]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1d] - piVar19[0x31]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x1d] - piVar19[0x31]) * 100)" ( (binary_expression "(piVar19[0x1d] - piVar19[0x31]) * 100" (parenthesized_expression "(piVar19[0x1d] - piVar19[0x31])" ( (binary_expression "piVar19[0x1d] - piVar19[0x31]" (subscript_expression "piVar19[0x1d]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x31]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1b] - piVar19[0x2f]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x1b] - piVar19[0x2f]) * 100)" ( (binary_expression "(piVar19[0x1b] - piVar19[0x2f]) * 100" (parenthesized_expression "(piVar19[0x1b] - piVar19[0x2f])" ( (binary_expression "piVar19[0x1b] - piVar19[0x2f]" (subscript_expression "piVar19[0x1b]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x2f]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1f] - piVar19[0x33]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x1f] - piVar19[0x33]) * 100)" ( (binary_expression "(piVar19[0x1f] - piVar19[0x33]) * 100" (parenthesized_expression "(piVar19[0x1f] - piVar19[0x33])" ( (binary_expression "piVar19[0x1f] - piVar19[0x33]" (subscript_expression "piVar19[0x1f]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x33]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x21] - piVar19[0x35]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x21] - piVar19[0x35]) * 100)" ( (binary_expression "(piVar19[0x21] - piVar19[0x35]) * 100" (parenthesized_expression "(piVar19[0x21] - piVar19[0x35])" ( (binary_expression "piVar19[0x21] - piVar19[0x35]" (subscript_expression "piVar19[0x21]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x35]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x23] - piVar19[0x37]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x23] - piVar19[0x37]) * 100)" ( (binary_expression "(piVar19[0x23] - piVar19[0x37]) * 100" (parenthesized_expression "(piVar19[0x23] - piVar19[0x37])" ( (binary_expression "piVar19[0x23] - piVar19[0x37]" (subscript_expression "piVar19[0x23]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x37]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) , (binary_expression "(uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x25] - piVar19[0x39]) * 100)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar19[0x25] - piVar19[0x39]) * 100)" ( (binary_expression "(piVar19[0x25] - piVar19[0x39]) * 100" (parenthesized_expression "(piVar19[0x25] - piVar19[0x39])" ( (binary_expression "piVar19[0x25] - piVar19[0x39]" (subscript_expression "piVar19[0x25]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x39]" identifier [ number_literal ])) )) * number_literal) ))) / identifier) ))) ;) (expression_statement "(**(code **)(puVar25 + 0xc0dd8))(&local_b0);" (call_expression "(**(code **)(puVar25 + 0xc0dd8))(&local_b0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0dd8))" ( (pointer_expression "**(code **)(puVar25 + 0xc0dd8)" * (pointer_expression "*(code **)(puVar25 + 0xc0dd8)" * (cast_expression "(code **)(puVar25 + 0xc0dd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0dd8)" ( (binary_expression "puVar25 + 0xc0dd8" identifier + number_literal) ))))) )) (argument_list "(&local_b0)" ( (pointer_expression "&local_b0" & identifier) ))) ;) (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0)" identifier = (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) ))))) ;) (expression_statement "local_b0 = *(undefined4 *)(iVar4 + 0x6b80);" (assignment_expression "local_b0 = *(undefined4 *)(iVar4 + 0x6b80)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x6b80)" * (cast_expression "(undefined4 *)(iVar4 + 0x6b80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b80)" ( (binary_expression "iVar4 + 0x6b80" identifier + number_literal) ))))) ;) (expression_statement "local_ac = *(undefined4 *)(iVar4 + 0x6b84);" (assignment_expression "local_ac = *(undefined4 *)(iVar4 + 0x6b84)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x6b84)" * (cast_expression "(undefined4 *)(iVar4 + 0x6b84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b84)" ( (binary_expression "iVar4 + 0x6b84" identifier + number_literal) ))))) ;) (expression_statement "local_a8 = *(undefined4 *)(iVar4 + 0x6b88);" (assignment_expression "local_a8 = *(undefined4 *)(iVar4 + 0x6b88)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x6b88)" * (cast_expression "(undefined4 *)(iVar4 + 0x6b88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b88)" ( (binary_expression "iVar4 + 0x6b88" identifier + number_literal) ))))) ;) (expression_statement "local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);" (assignment_expression "local_a4 = *(undefined2 *)(iVar4 + 0x6b8c)" identifier = (pointer_expression "*(undefined2 *)(iVar4 + 0x6b8c)" * (cast_expression "(undefined2 *)(iVar4 + 0x6b8c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b8c)" ( (binary_expression "iVar4 + 0x6b8c" identifier + number_literal) ))))) ;) (expression_statement "local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);" (assignment_expression "local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e)" (subscript_expression "local_a2[0]" identifier [ number_literal ]) = (pointer_expression "*(undefined1 *)(iVar4 + 0x6b8e)" * (cast_expression "(undefined1 *)(iVar4 + 0x6b8e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6b8e)" ( (binary_expression "iVar4 + 0x6b8e" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);" (call_expression "(**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55)" (parenthesized_expression "(**(code **)(puVar25 + 0xc01f8))" ( (pointer_expression "**(code **)(puVar25 + 0xc01f8)" * (pointer_expression "*(code **)(puVar25 + 0xc01f8)" * (cast_expression "(code **)(puVar25 + 0xc01f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc01f8)" ( (binary_expression "puVar25 + 0xc01f8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55)" ( (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b90" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) , identifier , number_literal ))) ;) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0f84);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0f84)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc0f84)" * (cast_expression "(code **)(puVar25 + 0xc0f84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0f84)" ( (binary_expression "puVar25 + 0xc0f84" identifier + number_literal) ))))) ;) (expression_statement "(&uStack_b1)[iVar21] = 0;" (assignment_expression "(&uStack_b1)[iVar21] = 0" (subscript_expression "(&uStack_b1)[iVar21]" (parenthesized_expression "(&uStack_b1)" ( (pointer_expression "&uStack_b1" & identifier) )) [ identifier ]) = number_literal) ;) (expression_statement "puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);" (assignment_expression "puVar5 = (undefined1 *)(*pcVar22)(local_a2,10)" identifier = (cast_expression "(undefined1 *)(*pcVar22)(local_a2,10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar22)(local_a2,10)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(local_a2,10)" ( identifier , number_literal ))))) ;) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0dd8);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0dd8)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc0dd8)" * (cast_expression "(code **)(puVar25 + 0xc0dd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0dd8)" ( (binary_expression "puVar25 + 0xc0dd8" identifier + number_literal) ))))) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "(*pcVar22)(&local_b0);" (call_expression "(*pcVar22)(&local_b0)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(&local_b0)" ( (pointer_expression "&local_b0" & identifier) ))) ;) (if_statement "if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;" if (parenthesized_expression "((*puVar23 & 4) != 0)" ( (binary_expression "(*puVar23 & 4) != 0" (parenthesized_expression "(*puVar23 & 4)" ( (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" * identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0006a8b4;" goto statement_identifier ;)) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214" identifier = (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x1214" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal)) ;) (while_statement "while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }" { (expression_statement "(**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);" (call_expression "(**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0c54))" ( (pointer_expression "**(code **)(puVar25 + 0xc0c54)" * (pointer_expression "*(code **)(puVar25 + 0xc0c54)" * (cast_expression "(code **)(puVar25 + 0xc0c54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0c54)" ( (binary_expression "puVar25 + 0xc0c54" identifier + number_literal) ))))) )) (argument_list "(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98)" ( number_literal , identifier , identifier , (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b98" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal) ))) ;) (if_statement "if (uVar6 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = 0xc800000 / uVar6;" (assignment_expression "uVar7 = 0xc800000 / uVar6" identifier = (binary_expression "0xc800000 / uVar6" number_literal / identifier)) ;) (if_statement "if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" if (parenthesized_expression "(uVar7 < 0x200)" ( (binary_expression "uVar7 < 0x200" identifier < number_literal) )) (compound_statement "{\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }" { (expression_statement "uVar15 = 0x15;" (assignment_expression "uVar15 = 0x15" identifier = number_literal) ;) (expression_statement "local_120 = 0x100000;" (assignment_expression "local_120 = 0x100000" identifier = number_literal) ;) }) (else_clause "else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" else (compound_statement "{\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" { (expression_statement "uVar15 = 0x15;" (assignment_expression "uVar15 = 0x15" identifier = number_literal) ;) (do_statement "do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);" do (compound_statement "{\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      }" { (expression_statement "uVar7 = uVar7 >> 2;" (assignment_expression "uVar7 = uVar7 >> 2" identifier = (binary_expression "uVar7 >> 2" identifier >> number_literal)) ;) (expression_statement "uVar15 = uVar15 - 2;" (assignment_expression "uVar15 = uVar15 - 2" identifier = (binary_expression "uVar15 - 2" identifier - number_literal)) ;) }) while (parenthesized_expression "(0x1ff < uVar7)" ( (binary_expression "0x1ff < uVar7" number_literal < identifier) )) ;) (expression_statement "local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;" (assignment_expression "local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1" identifier = (binary_expression "(uint)(1 << (uVar15 & 0x1f)) >> 1" (call_expression "(uint)(1 << (uVar15 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 << (uVar15 & 0x1f))" ( (binary_expression "1 << (uVar15 & 0x1f)" number_literal << (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) ))) ))) >> number_literal)) ;) }))) (expression_statement "uVar9 = piVar19[0x2b] - piVar19[0x3f];" (assignment_expression "uVar9 = piVar19[0x2b] - piVar19[0x3f]" identifier = (binary_expression "piVar19[0x2b] - piVar19[0x3f]" (subscript_expression "piVar19[0x2b]" identifier [ number_literal ]) - (subscript_expression "piVar19[0x3f]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = piVar19[0x40];" (assignment_expression "uVar8 = piVar19[0x40]" identifier = (subscript_expression "piVar19[0x40]" identifier [ number_literal ])) ;) (if_statement "if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }" if (parenthesized_expression "((uint)piVar19[0x40] < uVar9)" ( (binary_expression "(uint)piVar19[0x40] < uVar9" (cast_expression "(uint)piVar19[0x40]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar19[0x40]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }" { (expression_statement "piVar19[0x40] = uVar9;" (assignment_expression "piVar19[0x40] = uVar9" (subscript_expression "piVar19[0x40]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar8 = uVar9;" (assignment_expression "uVar8 = uVar9" identifier = identifier) ;) })) (expression_statement "uVar9 = (uVar9 & 0xffff) * 0x1900;" (assignment_expression "uVar9 = (uVar9 & 0xffff) * 0x1900" identifier = (binary_expression "(uVar9 & 0xffff) * 0x1900" (parenthesized_expression "(uVar9 & 0xffff)" ( (binary_expression "uVar9 & 0xffff" identifier & number_literal) )) * number_literal)) ;) (if_statement "if (uVar9 == 0) {\n      uVar9 = 1;\n    }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar9 = 1;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) })) (expression_statement "uVar24 = 6;" (assignment_expression "uVar24 = 6" identifier = number_literal) ;) (do_statement "do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);" do (compound_statement "{\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    }" { (expression_statement "uVar9 = uVar9 << 2;" (assignment_expression "uVar9 = uVar9 << 2" identifier = (binary_expression "uVar9 << 2" identifier << number_literal)) ;) (expression_statement "uVar24 = uVar24 + 2;" (assignment_expression "uVar24 = uVar24 + 2" identifier = (binary_expression "uVar24 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar9 < 0x40000000)" ( (binary_expression "uVar9 < 0x40000000" identifier < number_literal) )) ;) (expression_statement "uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;" (assignment_expression "uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8" identifier = (binary_expression "((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8" (parenthesized_expression "((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff)" ( (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff" (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6)" (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((int)piVar19 + 0xa6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar19 + 0xa6)" ( (binary_expression "(int)piVar19 + 0xa6" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xf6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((int)piVar19 + 0xf6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar19 + 0xf6)" ( (binary_expression "(int)piVar19 + 0xf6" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) & number_literal) )) * identifier)) ;) (if_statement "if (uVar8 == 0) goto LAB_0006a67c;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0006a67c;" goto statement_identifier ;)) (if_statement "if (uVar8 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (for_statement "for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }" for ( (assignment_expression "uVar9 = uVar9 / uVar8" identifier = (binary_expression "uVar9 / uVar8" identifier / identifier)) ; (binary_expression "0x3ff < uVar9" number_literal < identifier) ; (assignment_expression "uVar9 = uVar9 >> 2" identifier = (binary_expression "uVar9 >> 2" identifier >> number_literal)) ) (compound_statement "{\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }" { (labeled_statement "LAB_0006a67c:\n      uVar24 = uVar24 - 2;" statement_identifier : (expression_statement "uVar24 = uVar24 - 2;" (assignment_expression "uVar24 = uVar24 - 2" identifier = (binary_expression "uVar24 - 2" identifier - number_literal)) ;)) })) (expression_statement "piVar1 = piVar19 + 0x11;" (assignment_expression "piVar1 = piVar19 + 0x11" identifier = (binary_expression "piVar19 + 0x11" identifier + number_literal)) ;) (expression_statement "iVar4 = piVar19[1] - *piVar1;" (assignment_expression "iVar4 = piVar19[1] - *piVar1" identifier = (binary_expression "piVar19[1] - *piVar1" (subscript_expression "piVar19[1]" identifier [ number_literal ]) - (pointer_expression "*piVar1" * identifier))) ;) (expression_statement "iVar21 = iVar20 + -4;" (assignment_expression "iVar21 = iVar20 + -4" identifier = (binary_expression "iVar20 + -4" identifier + number_literal)) ;) (if_statement "if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }" if (parenthesized_expression "(iVar4 <= iVar20 + -4)" ( (binary_expression "iVar4 <= iVar20 + -4" identifier <= (binary_expression "iVar20 + -4" identifier + number_literal)) )) (compound_statement "{\n      iVar21 = iVar4;\n    }" { (expression_statement "iVar21 = iVar4;" (assignment_expression "iVar21 = iVar4" identifier = identifier) ;) })) (expression_statement "iVar20 = iVar21 + -1;" (assignment_expression "iVar20 = iVar21 + -1" identifier = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc065c);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc065c)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc065c)" * (cast_expression "(code **)(puVar25 + 0xc065c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc065c)" ( (binary_expression "puVar25 + 0xc065c" identifier + number_literal) ))))) ;) (if_statement "if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }" if (parenthesized_expression "(-1 < iVar20)" ( (binary_expression "-1 < iVar20" number_literal < identifier) )) (compound_statement "{\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }" { (expression_statement "iVar14 = *piVar19;" (assignment_expression "iVar14 = *piVar19" identifier = (pointer_expression "*piVar19" * identifier)) ;) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0)" identifier = (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) ))))) ;) (expression_statement "pcVar10 = *(code **)(puVar25 + 0xc062c);" (assignment_expression "pcVar10 = *(code **)(puVar25 + 0xc062c)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc062c)" * (cast_expression "(code **)(puVar25 + 0xc062c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc062c)" ( (binary_expression "puVar25 + 0xc062c" identifier + number_literal) ))))) ;) (expression_statement "piVar19 = piVar19 + 0x45;" (assignment_expression "piVar19 = piVar19 + 0x45" identifier = (binary_expression "piVar19 + 0x45" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;" (assignment_expression "uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1" identifier = (binary_expression "(uint)(1 << (uVar24 & 0x1f)) >> 1" (call_expression "(uint)(1 << (uVar24 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 << (uVar24 & 0x1f))" ( (binary_expression "1 << (uVar24 & 0x1f)" number_literal << (parenthesized_expression "(uVar24 & 0x1f)" ( (binary_expression "uVar24 & 0x1f" identifier & number_literal) ))) ))) >> number_literal)) ;) (expression_statement "puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);" (assignment_expression "puVar11 = *(undefined4 **)(puVar25 + 0xc0c64)" identifier = (pointer_expression "*(undefined4 **)(puVar25 + 0xc0c64)" * (cast_expression "(undefined4 **)(puVar25 + 0xc0c64)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0c64)" ( (binary_expression "puVar25 + 0xc0c64" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;" (assignment_expression "iVar14 = iVar14 + *piVar1 * 0x2c + 0x18" identifier = (binary_expression "iVar14 + *piVar1 * 0x2c + 0x18" (binary_expression "iVar14 + *piVar1 * 0x2c" identifier + (binary_expression "*piVar1 * 0x2c" (pointer_expression "*piVar1" * identifier) * number_literal)) + number_literal)) ;) (expression_statement "pcVar12 = *(code **)(puVar25 + 0xc0634);" (assignment_expression "pcVar12 = *(code **)(puVar25 + 0xc0634)" identifier = (pointer_expression "*(code **)(puVar25 + 0xc0634)" * (cast_expression "(code **)(puVar25 + 0xc0634)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0634)" ( (binary_expression "puVar25 + 0xc0634" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0)" identifier = (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) ))))) ;) (do_statement "do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);" do (compound_statement "{\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      }" { (expression_statement "iVar13 = *(int *)(iVar14 + -0x18);" (assignment_expression "iVar13 = *(int *)(iVar14 + -0x18)" identifier = (pointer_expression "*(int *)(iVar14 + -0x18)" * (cast_expression "(int *)(iVar14 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0x18)" ( (binary_expression "iVar14 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(iVar14 + -0x10);" (assignment_expression "iVar16 = *(int *)(iVar14 + -0x10)" identifier = (pointer_expression "*(int *)(iVar14 + -0x10)" * (cast_expression "(int *)(iVar14 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0x10)" ( (binary_expression "iVar14 + -0x10" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);" (call_expression "(*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(0,iVar13,&local_b0,iVar4 + 0x6960)" ( number_literal , identifier , (pointer_expression "&local_b0" & identifier) , (binary_expression "iVar4 + 0x6960" identifier + number_literal) ))) ;) (expression_statement "uVar17 = *(undefined4 *)(iVar14 + -0xc);" (assignment_expression "uVar17 = *(undefined4 *)(iVar14 + -0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar14 + -0xc)" * (cast_expression "(undefined4 *)(iVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0xc)" ( (binary_expression "iVar14 + -0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = *(undefined4 *)(iVar14 + -8);" (assignment_expression "uVar18 = *(undefined4 *)(iVar14 + -8)" identifier = (pointer_expression "*(undefined4 *)(iVar14 + -8)" * (cast_expression "(undefined4 *)(iVar14 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -8)" ( (binary_expression "iVar14 + -8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));" (assignment_expression "uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4))" identifier = (call_expression "(*pcVar10)(*(undefined4 *)(iVar14 + -4))" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "(*(undefined4 *)(iVar14 + -4))" ( (pointer_expression "*(undefined4 *)(iVar14 + -4)" * (cast_expression "(undefined4 *)(iVar14 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -4)" ( (binary_expression "iVar14 + -4" identifier + number_literal) )))) )))) ;) (expression_statement "iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));" (assignment_expression "iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" identifier = (call_expression "(**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" ( (pointer_expression "**(code **)(puVar25 + 0xc1000)" * (pointer_expression "*(code **)(puVar25 + 0xc1000)" * (cast_expression "(code **)(puVar25 + 0xc1000)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc1000)" ( (binary_expression "puVar25 + 0xc1000" identifier + number_literal) ))))) )) (argument_list "(piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" ( identifier , identifier , number_literal , number_literal , (binary_expression "iVar21 + 0x6bcc" identifier + number_literal) , identifier , identifier , identifier , identifier , (pointer_expression "&local_b0" & identifier) , (binary_expression "iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f)" (binary_expression "iVar13 * uVar7 + local_120" (binary_expression "iVar13 * uVar7" identifier * identifier) + identifier) >> (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) ))) , (binary_expression "uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f)" (binary_expression "uVar9 * iVar16 + uVar6" (binary_expression "uVar9 * iVar16" identifier * identifier) + identifier) >> (parenthesized_expression "(uVar24 & 0x1f)" ( (binary_expression "uVar24 & 0x1f" identifier & number_literal) ))) )))) ;) (if_statement "if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }" if (parenthesized_expression "(1 < param_2 - iVar13)" ( (binary_expression "1 < param_2 - iVar13" number_literal < (binary_expression "param_2 - iVar13" identifier - identifier)) )) (compound_statement "{\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }" { (expression_statement "(*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);" (call_expression "(*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4)" (parenthesized_expression "(*pcVar12)" ( (pointer_expression "*pcVar12" * identifier) )) (argument_list "((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4)" ( (binary_expression "(int)piVar19 + iVar13" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , (binary_expression "param_2 - iVar13" identifier - identifier) , (pointer_expression "*(undefined4 *)(iVar14 + -0xc)" * (cast_expression "(undefined4 *)(iVar14 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -0xc)" ( (binary_expression "iVar14 + -0xc" identifier + number_literal) )))) , (binary_expression "iVar14 + 4" identifier + number_literal) ))) ;) })) (expression_statement "iVar20 = iVar20 + -1;" (assignment_expression "iVar20 = iVar20 + -1" identifier = (binary_expression "iVar20 + -1" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + 0x2c;" (assignment_expression "iVar14 = iVar14 + 0x2c" identifier = (binary_expression "iVar14 + 0x2c" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);" (call_expression "(**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11)" (parenthesized_expression "(**(code **)(puVar25 + 0xc1028))" ( (pointer_expression "**(code **)(puVar25 + 0xc1028)" * (pointer_expression "*(code **)(puVar25 + 0xc1028)" * (cast_expression "(code **)(puVar25 + 0xc1028)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc1028)" ( (binary_expression "puVar25 + 0xc1028" identifier + number_literal) ))))) )) (argument_list "(piVar19,*puVar11)" ( identifier , (pointer_expression "*puVar11" * identifier) ))) ;) }) while (parenthesized_expression "(iVar20 != -1)" ( (binary_expression "iVar20 != -1" identifier != number_literal) )) ;) })) (expression_statement "uVar3 = 10;" (assignment_expression "uVar3 = 10" identifier = number_literal) ;) (if_statement "if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }" if (parenthesized_expression "((*puVar23 & 4) == 0)" ( (binary_expression "(*puVar23 & 4) == 0" (parenthesized_expression "(*puVar23 & 4)" ( (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar3 = 0xd;\n    }" { (expression_statement "uVar3 = 0xd;" (assignment_expression "uVar3 = 0xd" identifier = number_literal) ;) })) (expression_statement "(**(code **)(puVar25 + 0xc0178))(uVar3);" (call_expression "(**(code **)(puVar25 + 0xc0178))(uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0178))" ( (pointer_expression "**(code **)(puVar25 + 0xc0178)" * (pointer_expression "*(code **)(puVar25 + 0xc0178)" * (cast_expression "(code **)(puVar25 + 0xc0178)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0178)" ( (binary_expression "puVar25 + 0xc0178" identifier + number_literal) ))))) )) (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar25 + 0xc0068))();" (call_expression "(**(code **)(puVar25 + 0xc0068))()" (parenthesized_expression "(**(code **)(puVar25 + 0xc0068))" ( (pointer_expression "**(code **)(puVar25 + 0xc0068)" * (pointer_expression "*(code **)(puVar25 + 0xc0068)" * (cast_expression "(code **)(puVar25 + 0xc0068)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0068)" ( (binary_expression "puVar25 + 0xc0068" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if (local_4c == *piVar2) break;" if (parenthesized_expression "(local_4c == *piVar2)" ( (binary_expression "local_4c == *piVar2" identifier == (pointer_expression "*piVar2" * identifier)) )) (break_statement "break;" break ;)) (expression_statement "(**(code **)(puVar25 + 0xc0eec))();" (call_expression "(**(code **)(puVar25 + 0xc0eec))()" (parenthesized_expression "(**(code **)(puVar25 + 0xc0eec))" ( (pointer_expression "**(code **)(puVar25 + 0xc0eec)" * (pointer_expression "*(code **)(puVar25 + 0xc0eec)" * (cast_expression "(code **)(puVar25 + 0xc0eec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0xc0eec)" ( (binary_expression "puVar25 + 0xc0eec" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;" statement_identifier : (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec" identifier = (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x12ec" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" * (cast_expression "(int *)(puVar25 + 0xbffb0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0xbffb0)" ( (binary_expression "puVar25 + 0xbffb0" identifier + number_literal) )))) + number_literal)) ;)) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = 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 (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (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) ;) (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) ;) (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) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 ( (comma_expression (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 ( (pointer_expression & IDENT) , LIT , IDENT )))) , (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 ( (pointer_expression & IDENT) , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (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 ( (binary_expression IDENT + LIT) , LIT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) })) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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 ( (pointer_expression & IDENT) , IDENT , LIT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) , (subscript_expression IDENT [ LIT ]) , (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }))) (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 ( LIT , IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (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 ( (pointer_expression & IDENT) , IDENT , LIT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) * LIT) ))) / IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) * LIT) ))) / IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) * LIT) ))) / IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) * LIT) ))) / IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) * LIT) ))) / IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) * LIT) ))) / IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) )) * LIT) ))) / IDENT) ))) ;) (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 ( (pointer_expression & 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) ))))) ;) (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) ))))) ;) (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 (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 ( LIT , IDENT , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) >> LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) & LIT) )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ; (binary_expression LIT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (pointer_expression * IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) ))))) ;) (do_statement do (compound_statement { (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) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( LIT , IDENT , (pointer_expression & IDENT) , (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) ))))) ;) (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 = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (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 , IDENT , LIT , LIT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , (pointer_expression & IDENT) , (binary_expression (binary_expression (binary_expression IDENT * IDENT) + IDENT) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) , (binary_expression (binary_expression (binary_expression IDENT * IDENT) + IDENT) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - IDENT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) , (binary_expression IDENT - IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 ( IDENT , (pointer_expression * IDENT) ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (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 ( IDENT ))) ;) (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 ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (break_statement break ;)) (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 ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;)) })) (return_statement return ;) })))
(function_definition "void FUN_0006a188(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  code *pcVar10;\n  undefined4 *puVar11;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  code *pcVar22;\n  uint *puVar23;\n  uint uVar24;\n  undefined *puVar25;\n  uint local_120;\n  uint local_e4 [12];\n  undefined4 local_b4;\n  undefined1 uStack_b1;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined2 local_a4;\n  undefined1 local_a2 [86];\n  int local_4c;\n  int local_48;\n  \n  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }\n  iVar20 = param_1;\n  puVar25 = PTR_FUN_0012a2a0;\n  (*(code *)PTR_FUN_0012a2a0)();\n  piVar2 = *(int **)(puVar25 + 0xc0f70);\n  local_e4[0] = 0;\n  local_e4[1] = 0;\n  local_e4[2] = 0;\n  local_e4[3] = 0;\n  local_e4[4] = 0;\n  local_e4[5] = 0;\n  local_e4[6] = 0;\n  local_e4[7] = 0;\n  local_e4[8] = 0;\n  local_e4[9] = 0;\n  local_e4[10] = 0;\n  local_e4[0xb] = 0;\n  local_b4 = 0;\n  local_4c = *piVar2;\n  pcVar22 = *(code **)(puVar25 + 0xc0208);\n  local_48 = param_1;\n  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);\n  iVar21 = *(int *)(puVar25 + 0xbffcc);\n  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }\n  puVar23 = *(uint **)(puVar25 + 0xc0158);\n  (**(code **)(puVar25 + 0xc0b90))(uVar3);\n  uVar6 = local_e4[0];\n  iVar21 = 100;\n  if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);\n  if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }\n  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);\n  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);\n  uVar7 = piVar19[0x29] - piVar19[0x3d];\n  if (uVar7 == 0) {\n    uVar7 = 1;\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);\n  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);\n  iVar4 = *(int *)(puVar25 + 0xbffb0);\n  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);\n  local_ac = *(undefined4 *)(iVar4 + 0x6b84);\n  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);\n  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);\n  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);\n  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);\n  pcVar22 = *(code **)(puVar25 + 0xc0f84);\n  (&uStack_b1)[iVar21] = 0;\n  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);\n  pcVar22 = *(code **)(puVar25 + 0xc0dd8);\n  *puVar5 = 0;\n  (*pcVar22)(&local_b0);\n  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;\n  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;\n  while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0006a188(int param_1,int param_2)" (identifier "FUN_0006a188") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  undefined1 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  code *pcVar10;\n  undefined4 *puVar11;\n  code *pcVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  undefined4 uVar17;\n  undefined4 uVar18;\n  int *piVar19;\n  int iVar20;\n  int iVar21;\n  code *pcVar22;\n  uint *puVar23;\n  uint uVar24;\n  undefined *puVar25;\n  uint local_120;\n  uint local_e4 [12];\n  undefined4 local_b4;\n  undefined1 uStack_b1;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined2 local_a4;\n  undefined1 local_a2 [86];\n  int local_4c;\n  int local_48;\n  \n  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }\n  iVar20 = param_1;\n  puVar25 = PTR_FUN_0012a2a0;\n  (*(code *)PTR_FUN_0012a2a0)();\n  piVar2 = *(int **)(puVar25 + 0xc0f70);\n  local_e4[0] = 0;\n  local_e4[1] = 0;\n  local_e4[2] = 0;\n  local_e4[3] = 0;\n  local_e4[4] = 0;\n  local_e4[5] = 0;\n  local_e4[6] = 0;\n  local_e4[7] = 0;\n  local_e4[8] = 0;\n  local_e4[9] = 0;\n  local_e4[10] = 0;\n  local_e4[0xb] = 0;\n  local_b4 = 0;\n  local_4c = *piVar2;\n  pcVar22 = *(code **)(puVar25 + 0xc0208);\n  local_48 = param_1;\n  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);\n  iVar21 = *(int *)(puVar25 + 0xbffcc);\n  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }\n  puVar23 = *(uint **)(puVar25 + 0xc0158);\n  (**(code **)(puVar25 + 0xc0b90))(uVar3);\n  uVar6 = local_e4[0];\n  iVar21 = 100;\n  if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);\n  if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }\n  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);\n  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);\n  uVar7 = piVar19[0x29] - piVar19[0x3d];\n  if (uVar7 == 0) {\n    uVar7 = 1;\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  if (uVar7 == 0) {\n    trap(7);\n  }\n  (**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);\n  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);\n  iVar4 = *(int *)(puVar25 + 0xbffb0);\n  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);\n  local_ac = *(undefined4 *)(iVar4 + 0x6b84);\n  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);\n  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);\n  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);\n  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);\n  pcVar22 = *(code **)(puVar25 + 0xc0f84);\n  (&uStack_b1)[iVar21] = 0;\n  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);\n  pcVar22 = *(code **)(puVar25 + 0xc0dd8);\n  *puVar5 = 0;\n  (*pcVar22)(&local_b0);\n  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;\n  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;\n  while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined1 *puVar5;" (type_identifier "undefined1") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "code *pcVar10;" (type_identifier "code") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "code *pcVar12;" (type_identifier "code") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "undefined4 uVar17;" (type_identifier "undefined4") (identifier "uVar17") (; ";")) (declaration "undefined4 uVar18;" (type_identifier "undefined4") (identifier "uVar18") (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "code *pcVar22;" (type_identifier "code") (pointer_declarator "*pcVar22" (* "*") (identifier "pcVar22")) (; ";")) (declaration "uint *puVar23;" (type_identifier "uint") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "uint uVar24;" (type_identifier "uint") (identifier "uVar24") (; ";")) (declaration "undefined *puVar25;" (type_identifier "undefined") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "uint local_120;" (type_identifier "uint") (identifier "local_120") (; ";")) (declaration "uint local_e4 [12];" (type_identifier "uint") (array_declarator "local_e4 [12]" (identifier "local_e4") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "undefined4 local_b4;" (type_identifier "undefined4") (identifier "local_b4") (; ";")) (declaration "undefined1 uStack_b1;" (type_identifier "undefined1") (identifier "uStack_b1") (; ";")) (declaration "undefined4 local_b0;" (type_identifier "undefined4") (identifier "local_b0") (; ";")) (declaration "undefined4 local_ac;" (type_identifier "undefined4") (identifier "local_ac") (; ";")) (declaration "undefined4 local_a8;" (type_identifier "undefined4") (identifier "local_a8") (; ";")) (declaration "undefined2 local_a4;" (type_identifier "undefined2") (identifier "local_a4") (; ";")) (declaration "undefined1 local_a2 [86];" (type_identifier "undefined1") (array_declarator "local_a2 [86]" (identifier "local_a2") ([ "[") (number_literal "86") (] "]")) (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (if_statement "if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }" (if "if") (parenthesized_expression "((*(uint *)PTR_DAT_0012a334 & 4) == 0)" (( "(") (binary_expression "(*(uint *)PTR_DAT_0012a334 & 4) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0012a334 & 4)" (( "(") (binary_expression "*(uint *)PTR_DAT_0012a334 & 4" (pointer_expression "*(uint *)PTR_DAT_0012a334" (* "*") (cast_expression "(uint *)PTR_DAT_0012a334" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0012a334"))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);\n  }" ({ "{") (expression_statement "(*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);" (call_expression "(*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10)" (parenthesized_expression "(*(code *)PTR_FUN_0012a308)" (( "(") (pointer_expression "*(code *)PTR_FUN_0012a308" (* "*") (cast_expression "(code *)PTR_FUN_0012a308" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0012a308"))) () ")")) (argument_list "(*(int *)PTR_DAT_0012a304 + 0x10)" (( "(") (binary_expression "*(int *)PTR_DAT_0012a304 + 0x10" (pointer_expression "*(int *)PTR_DAT_0012a304" (* "*") (cast_expression "(int *)PTR_DAT_0012a304" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0012a304"))) (+ "+") (number_literal "0x10")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar20 = param_1;" (assignment_expression "iVar20 = param_1" (identifier "iVar20") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar25 = PTR_FUN_0012a2a0;" (assignment_expression "puVar25 = PTR_FUN_0012a2a0" (identifier "puVar25") (= "=") (identifier "PTR_FUN_0012a2a0")) (; ";")) (expression_statement "(*(code *)PTR_FUN_0012a2a0)();" (call_expression "(*(code *)PTR_FUN_0012a2a0)()" (parenthesized_expression "(*(code *)PTR_FUN_0012a2a0)" (( "(") (pointer_expression "*(code *)PTR_FUN_0012a2a0" (* "*") (cast_expression "(code *)PTR_FUN_0012a2a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0012a2a0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar2 = *(int **)(puVar25 + 0xc0f70);" (assignment_expression "piVar2 = *(int **)(puVar25 + 0xc0f70)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(puVar25 + 0xc0f70)" (* "*") (cast_expression "(int **)(puVar25 + 0xc0f70)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0f70)" (( "(") (binary_expression "puVar25 + 0xc0f70" (identifier "puVar25") (+ "+") (number_literal "0xc0f70")) () ")"))))) (; ";")) (expression_statement "local_e4[0] = 0;" (assignment_expression "local_e4[0] = 0" (subscript_expression "local_e4[0]" (identifier "local_e4") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[1] = 0;" (assignment_expression "local_e4[1] = 0" (subscript_expression "local_e4[1]" (identifier "local_e4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[2] = 0;" (assignment_expression "local_e4[2] = 0" (subscript_expression "local_e4[2]" (identifier "local_e4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[3] = 0;" (assignment_expression "local_e4[3] = 0" (subscript_expression "local_e4[3]" (identifier "local_e4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[4] = 0;" (assignment_expression "local_e4[4] = 0" (subscript_expression "local_e4[4]" (identifier "local_e4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[5] = 0;" (assignment_expression "local_e4[5] = 0" (subscript_expression "local_e4[5]" (identifier "local_e4") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[6] = 0;" (assignment_expression "local_e4[6] = 0" (subscript_expression "local_e4[6]" (identifier "local_e4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[7] = 0;" (assignment_expression "local_e4[7] = 0" (subscript_expression "local_e4[7]" (identifier "local_e4") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[8] = 0;" (assignment_expression "local_e4[8] = 0" (subscript_expression "local_e4[8]" (identifier "local_e4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[9] = 0;" (assignment_expression "local_e4[9] = 0" (subscript_expression "local_e4[9]" (identifier "local_e4") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[10] = 0;" (assignment_expression "local_e4[10] = 0" (subscript_expression "local_e4[10]" (identifier "local_e4") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_e4[0xb] = 0;" (assignment_expression "local_e4[0xb] = 0" (subscript_expression "local_e4[0xb]" (identifier "local_e4") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" (identifier "local_b4") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c = *piVar2;" (assignment_expression "local_4c = *piVar2" (identifier "local_4c") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0208);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0208)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar25 + 0xc0208)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0208)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0208)" (( "(") (binary_expression "puVar25 + 0xc0208" (identifier "puVar25") (+ "+") (number_literal "0xc0208")) () ")"))))) (; ";")) (expression_statement "local_48 = param_1;" (assignment_expression "local_48 = param_1" (identifier "local_48") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);" (assignment_expression "uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc01c0))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc01c0)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc01c0)" (* "*") (cast_expression "(code **)(puVar25 + 0xc01c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc01c0)" (( "(") (binary_expression "puVar25 + 0xc01c0" (identifier "puVar25") (+ "+") (number_literal "0xc01c0")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar25 + 0xbffb0) + 0x6af0)" (( "(") (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6af0" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")")))) (+ "+") (number_literal "0x6af0")) () ")")))) (; ";")) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffcc);" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffcc)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)(puVar25 + 0xbffcc)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffcc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffcc)" (( "(") (binary_expression "puVar25 + 0xbffcc" (identifier "puVar25") (+ "+") (number_literal "0xbffcc")) () ")"))))) (; ";")) (while_statement "while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }" (while "while") (parenthesized_expression "(iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0)" (( "(") (comma_expression "iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0" (assignment_expression "iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3)" (identifier "iVar4") (= "=") (call_expression "(**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0b4c))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0b4c)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0b4c)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0b4c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0b4c)" (( "(") (binary_expression "puVar25 + 0xc0b4c" (identifier "puVar25") (+ "+") (number_literal "0xc0b4c")) () ")"))))) () ")")) (argument_list "(&local_b0,0x3c,uVar3)" (( "(") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (number_literal "0x3c") (, ",") (identifier "uVar3") () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);\n    if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }\n  }" ({ "{") (expression_statement "puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);" (assignment_expression "puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0d78))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0d78)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0d78)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0d78)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0d78)" (( "(") (binary_expression "puVar25 + 0xc0d78" (identifier "puVar25") (+ "+") (number_literal "0xc0d78")) () ")"))))) () ")")) (argument_list "(&local_b0,0x3a)" (( "(") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (number_literal "0x3a") () ")"))))) (; ";")) (if_statement "if (puVar5 != (undefined1 *)0x0) {\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }" (if "if") (parenthesized_expression "(puVar5 != (undefined1 *)0x0)" (( "(") (binary_expression "puVar5 != (undefined1 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *puVar5 = 0;\n      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);\n      if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }\n    }" ({ "{") (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);" (assignment_expression "iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0)" (identifier "iVar4") (= "=") (call_expression "(*pcVar22)(iVar21 + 0x68b9,&local_b0)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(iVar21 + 0x68b9,&local_b0)" (( "(") (binary_expression "iVar21 + 0x68b9" (identifier "iVar21") (+ "+") (number_literal "0x68b9")) (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) () ")")))) (; ";")) (if_statement "if (-1 < iVar4) {\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }" (if "if") (parenthesized_expression "(-1 < iVar4)" (( "(") (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);\n        local_e4[iVar4] = uVar6;\n      }" ({ "{") (expression_statement "uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);" (assignment_expression "uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10)" (identifier "uVar6") (= "=") (call_expression "(**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0d7c))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0d7c)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0d7c)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0d7c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0d7c)" (( "(") (binary_expression "puVar25 + 0xc0d7c" (identifier "puVar25") (+ "+") (number_literal "0xc0d7c")) () ")"))))) () ")")) (argument_list "(puVar5 + 1,0,10)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) (, ",") (number_literal "0") (, ",") (number_literal "10") () ")")))) (; ";")) (expression_statement "local_e4[iVar4] = uVar6;" (assignment_expression "local_e4[iVar4] = uVar6" (subscript_expression "local_e4[iVar4]" (identifier "local_e4") ([ "[") (identifier "iVar4") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "puVar23 = *(uint **)(puVar25 + 0xc0158);" (assignment_expression "puVar23 = *(uint **)(puVar25 + 0xc0158)" (identifier "puVar23") (= "=") (pointer_expression "*(uint **)(puVar25 + 0xc0158)" (* "*") (cast_expression "(uint **)(puVar25 + 0xc0158)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0158)" (( "(") (binary_expression "puVar25 + 0xc0158" (identifier "puVar25") (+ "+") (number_literal "0xc0158")) () ")"))))) (; ";")) (expression_statement "(**(code **)(puVar25 + 0xc0b90))(uVar3);" (call_expression "(**(code **)(puVar25 + 0xc0b90))(uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0b90))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0b90)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0b90)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0b90)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0b90)" (( "(") (binary_expression "puVar25 + 0xc0b90" (identifier "puVar25") (+ "+") (number_literal "0xc0b90")) () ")"))))) () ")")) (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "uVar6 = local_e4[0];" (assignment_expression "uVar6 = local_e4[0]" (identifier "uVar6") (= "=") (subscript_expression "local_e4[0]" (identifier "local_e4") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "iVar21 = 100;" (assignment_expression "iVar21 = 100" (identifier "iVar21") (= "=") (number_literal "100")) (; ";")) (if_statement "if (param_2 < 0x65) {\n    iVar21 = param_2;\n  }" (if "if") (parenthesized_expression "(param_2 < 0x65)" (( "(") (binary_expression "param_2 < 0x65" (identifier "param_2") (< "<") (number_literal "0x65")) () ")")) (compound_statement "{\n    iVar21 = param_2;\n  }" ({ "{") (expression_statement "iVar21 = param_2;" (assignment_expression "iVar21 = param_2" (identifier "iVar21") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);" (call_expression "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5])" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc1000)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc1000)" (* "*") (cast_expression "(code **)(puVar25 + 0xc1000)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc1000)" (( "(") (binary_expression "puVar25 + 0xc1000" (identifier "puVar25") (+ "+") (number_literal "0xc1000")) () ")"))))) () ")")) (argument_list "(&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],\n             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5])" (( "(") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (identifier "iVar21") (, ",") (number_literal "1") (, ",") (number_literal "100") (, ",") (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6af8" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")")))) (+ "+") (number_literal "0x6af8")) (, ",") (binary_expression "local_e4[0] - local_e4[1]" (subscript_expression "local_e4[0]" (identifier "local_e4") ([ "[") (number_literal "0") (] "]")) (- "-") (subscript_expression "local_e4[1]" (identifier "local_e4") ([ "[") (number_literal "1") (] "]"))) (, ",") (subscript_expression "local_e4[1]" (identifier "local_e4") ([ "[") (number_literal "1") (] "]")) (, ",") (binary_expression "local_e4[2] + local_e4[3]" (subscript_expression "local_e4[2]" (identifier "local_e4") ([ "[") (number_literal "2") (] "]")) (+ "+") (subscript_expression "local_e4[3]" (identifier "local_e4") ([ "[") (number_literal "3") (] "]"))) (, ",") (subscript_expression "local_e4[4]" (identifier "local_e4") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "local_e4[5]" (identifier "local_e4") ([ "[") (number_literal "5") (] "]")) () ")"))) (; ";")) (if_statement "if ((*puVar23 & 4) == 0) {\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }\n  else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" (if "if") (parenthesized_expression "((*puVar23 & 4) == 0)" (( "(") (binary_expression "(*puVar23 & 4) == 0" (parenthesized_expression "(*puVar23 & 4)" (( "(") (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;\n  }" ({ "{") (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4" (identifier "iVar4") (= "=") (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6ae4" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")")))) (+ "+") (number_literal "0x6ae4"))) (; ";")) (} "}")) (else_clause "else {\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" (else "else") (compound_statement "{\n    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;\n  }" ({ "{") (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998" (identifier "iVar4") (= "=") (binary_expression "*(int *)(puVar25 + 0xbffcc) + -0x4998" (pointer_expression "*(int *)(puVar25 + 0xbffcc)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffcc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffcc)" (( "(") (binary_expression "puVar25 + 0xbffcc" (identifier "puVar25") (+ "+") (number_literal "0xbffcc")) () ")")))) (+ "+") (number_literal "-0x4998"))) (; ";")) (} "}")))) (expression_statement "(**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);" (call_expression "(**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0c54))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0c54)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0c54)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0c54)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0c54)" (( "(") (binary_expression "puVar25 + 0xc0c54" (identifier "puVar25") (+ "+") (number_literal "0xc0c54")) () ")"))))) () ")")) (argument_list "(1,iVar4,&local_b0)" (( "(") (number_literal "1") (, ",") (identifier "iVar4") (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) () ")"))) (; ";")) (expression_statement "piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);" (assignment_expression "piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128)" (identifier "piVar19") (= "=") (cast_expression "(int *)**(undefined4 **)(puVar25 + 0xc0128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(puVar25 + 0xc0128)" (* "*") (pointer_expression "*(undefined4 **)(puVar25 + 0xc0128)" (* "*") (cast_expression "(undefined4 **)(puVar25 + 0xc0128)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0128)" (( "(") (binary_expression "puVar25 + 0xc0128" (identifier "puVar25") (+ "+") (number_literal "0xc0128")) () ")"))))))) (; ";")) (expression_statement "uVar7 = piVar19[0x29] - piVar19[0x3d];" (assignment_expression "uVar7 = piVar19[0x29] - piVar19[0x3d]" (identifier "uVar7") (= "=") (binary_expression "piVar19[0x29] - piVar19[0x3d]" (subscript_expression "piVar19[0x29]" (identifier "piVar19") ([ "[") (number_literal "0x29") (] "]")) (- "-") (subscript_expression "piVar19[0x3d]" (identifier "piVar19") ([ "[") (number_literal "0x3d") (] "]")))) (; ";")) (if_statement "if (uVar7 == 0) {\n    uVar7 = 1;\n  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = 1;\n  }" ({ "{") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar7 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);" (call_expression "(**(code **)(puVar25 + 0xc1000))\n            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7)" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc1000)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc1000)" (* "*") (cast_expression "(code **)(puVar25 + 0xc1000)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc1000)" (( "(") (binary_expression "puVar25 + 0xc1000" (identifier "puVar25") (+ "+") (number_literal "0xc1000")) () ")"))))) () ")")) (argument_list "(&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,\n             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,\n             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,\n             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,\n             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,\n             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,\n             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,\n             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7)" (( "(") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (identifier "iVar21") (, ",") (number_literal "1") (, ",") (number_literal "100") (, ",") (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b38" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")")))) (+ "+") (number_literal "0x6b38")) (, ",") (binary_expression "(uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x19] - piVar19[0x2d]) * 100)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar19[0x19] - piVar19[0x2d]) * 100)" (( "(") (binary_expression "(piVar19[0x19] - piVar19[0x2d]) * 100" (parenthesized_expression "(piVar19[0x19] - piVar19[0x2d])" (( "(") (binary_expression "piVar19[0x19] - piVar19[0x2d]" (subscript_expression "piVar19[0x19]" (identifier "piVar19") ([ "[") (number_literal "0x19") (] "]")) (- "-") (subscript_expression "piVar19[0x2d]" (identifier "piVar19") ([ "[") (number_literal "0x2d") (] "]"))) () ")")) (* "*") (number_literal "100")) () ")"))) (/ "/") (identifier "uVar7")) (, ",") (binary_expression "(uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1d] - piVar19[0x31]) * 100)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar19[0x1d] - piVar19[0x31]) * 100)" (( "(") (binary_expression "(piVar19[0x1d] - piVar19[0x31]) * 100" (parenthesized_expression "(piVar19[0x1d] - piVar19[0x31])" (( "(") (binary_expression "piVar19[0x1d] - piVar19[0x31]" (subscript_expression "piVar19[0x1d]" (identifier "piVar19") ([ "[") (number_literal "0x1d") (] "]")) (- "-") (subscript_expression "piVar19[0x31]" (identifier "piVar19") ([ "[") (number_literal "0x31") (] "]"))) () ")")) (* "*") (number_literal "100")) () ")"))) (/ "/") (identifier "uVar7")) (, ",") (binary_expression "(uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1b] - piVar19[0x2f]) * 100)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar19[0x1b] - piVar19[0x2f]) * 100)" (( "(") (binary_expression "(piVar19[0x1b] - piVar19[0x2f]) * 100" (parenthesized_expression "(piVar19[0x1b] - piVar19[0x2f])" (( "(") (binary_expression "piVar19[0x1b] - piVar19[0x2f]" (subscript_expression "piVar19[0x1b]" (identifier "piVar19") ([ "[") (number_literal "0x1b") (] "]")) (- "-") (subscript_expression "piVar19[0x2f]" (identifier "piVar19") ([ "[") (number_literal "0x2f") (] "]"))) () ")")) (* "*") (number_literal "100")) () ")"))) (/ "/") (identifier "uVar7")) (, ",") (binary_expression "(uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x1f] - piVar19[0x33]) * 100)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar19[0x1f] - piVar19[0x33]) * 100)" (( "(") (binary_expression "(piVar19[0x1f] - piVar19[0x33]) * 100" (parenthesized_expression "(piVar19[0x1f] - piVar19[0x33])" (( "(") (binary_expression "piVar19[0x1f] - piVar19[0x33]" (subscript_expression "piVar19[0x1f]" (identifier "piVar19") ([ "[") (number_literal "0x1f") (] "]")) (- "-") (subscript_expression "piVar19[0x33]" (identifier "piVar19") ([ "[") (number_literal "0x33") (] "]"))) () ")")) (* "*") (number_literal "100")) () ")"))) (/ "/") (identifier "uVar7")) (, ",") (binary_expression "(uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x21] - piVar19[0x35]) * 100)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar19[0x21] - piVar19[0x35]) * 100)" (( "(") (binary_expression "(piVar19[0x21] - piVar19[0x35]) * 100" (parenthesized_expression "(piVar19[0x21] - piVar19[0x35])" (( "(") (binary_expression "piVar19[0x21] - piVar19[0x35]" (subscript_expression "piVar19[0x21]" (identifier "piVar19") ([ "[") (number_literal "0x21") (] "]")) (- "-") (subscript_expression "piVar19[0x35]" (identifier "piVar19") ([ "[") (number_literal "0x35") (] "]"))) () ")")) (* "*") (number_literal "100")) () ")"))) (/ "/") (identifier "uVar7")) (, ",") (binary_expression "(uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x23] - piVar19[0x37]) * 100)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar19[0x23] - piVar19[0x37]) * 100)" (( "(") (binary_expression "(piVar19[0x23] - piVar19[0x37]) * 100" (parenthesized_expression "(piVar19[0x23] - piVar19[0x37])" (( "(") (binary_expression "piVar19[0x23] - piVar19[0x37]" (subscript_expression "piVar19[0x23]" (identifier "piVar19") ([ "[") (number_literal "0x23") (] "]")) (- "-") (subscript_expression "piVar19[0x37]" (identifier "piVar19") ([ "[") (number_literal "0x37") (] "]"))) () ")")) (* "*") (number_literal "100")) () ")"))) (/ "/") (identifier "uVar7")) (, ",") (binary_expression "(uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7" (call_expression "(uint)((piVar19[0x25] - piVar19[0x39]) * 100)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((piVar19[0x25] - piVar19[0x39]) * 100)" (( "(") (binary_expression "(piVar19[0x25] - piVar19[0x39]) * 100" (parenthesized_expression "(piVar19[0x25] - piVar19[0x39])" (( "(") (binary_expression "piVar19[0x25] - piVar19[0x39]" (subscript_expression "piVar19[0x25]" (identifier "piVar19") ([ "[") (number_literal "0x25") (] "]")) (- "-") (subscript_expression "piVar19[0x39]" (identifier "piVar19") ([ "[") (number_literal "0x39") (] "]"))) () ")")) (* "*") (number_literal "100")) () ")"))) (/ "/") (identifier "uVar7")) () ")"))) (; ";")) (expression_statement "(**(code **)(puVar25 + 0xc0dd8))(&local_b0);" (call_expression "(**(code **)(puVar25 + 0xc0dd8))(&local_b0)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0dd8))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0dd8)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0dd8)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0dd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0dd8)" (( "(") (binary_expression "puVar25 + 0xc0dd8" (identifier "puVar25") (+ "+") (number_literal "0xc0dd8")) () ")"))))) () ")")) (argument_list "(&local_b0)" (( "(") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")"))))) (; ";")) (expression_statement "local_b0 = *(undefined4 *)(iVar4 + 0x6b80);" (assignment_expression "local_b0 = *(undefined4 *)(iVar4 + 0x6b80)" (identifier "local_b0") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x6b80)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x6b80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6b80)" (( "(") (binary_expression "iVar4 + 0x6b80" (identifier "iVar4") (+ "+") (number_literal "0x6b80")) () ")"))))) (; ";")) (expression_statement "local_ac = *(undefined4 *)(iVar4 + 0x6b84);" (assignment_expression "local_ac = *(undefined4 *)(iVar4 + 0x6b84)" (identifier "local_ac") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x6b84)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x6b84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6b84)" (( "(") (binary_expression "iVar4 + 0x6b84" (identifier "iVar4") (+ "+") (number_literal "0x6b84")) () ")"))))) (; ";")) (expression_statement "local_a8 = *(undefined4 *)(iVar4 + 0x6b88);" (assignment_expression "local_a8 = *(undefined4 *)(iVar4 + 0x6b88)" (identifier "local_a8") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x6b88)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x6b88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6b88)" (( "(") (binary_expression "iVar4 + 0x6b88" (identifier "iVar4") (+ "+") (number_literal "0x6b88")) () ")"))))) (; ";")) (expression_statement "local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);" (assignment_expression "local_a4 = *(undefined2 *)(iVar4 + 0x6b8c)" (identifier "local_a4") (= "=") (pointer_expression "*(undefined2 *)(iVar4 + 0x6b8c)" (* "*") (cast_expression "(undefined2 *)(iVar4 + 0x6b8c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6b8c)" (( "(") (binary_expression "iVar4 + 0x6b8c" (identifier "iVar4") (+ "+") (number_literal "0x6b8c")) () ")"))))) (; ";")) (expression_statement "local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);" (assignment_expression "local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e)" (subscript_expression "local_a2[0]" (identifier "local_a2") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*(undefined1 *)(iVar4 + 0x6b8e)" (* "*") (cast_expression "(undefined1 *)(iVar4 + 0x6b8e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6b8e)" (( "(") (binary_expression "iVar4 + 0x6b8e" (identifier "iVar4") (+ "+") (number_literal "0x6b8e")) () ")"))))) (; ";")) (expression_statement "(**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);" (call_expression "(**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55)" (parenthesized_expression "(**(code **)(puVar25 + 0xc01f8))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc01f8)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc01f8)" (* "*") (cast_expression "(code **)(puVar25 + 0xc01f8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc01f8)" (( "(") (binary_expression "puVar25 + 0xc01f8" (identifier "puVar25") (+ "+") (number_literal "0xc01f8")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55)" (( "(") (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b90" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")")))) (+ "+") (number_literal "0x6b90")) (, ",") (identifier "local_a2") (, ",") (number_literal "0x55") () ")"))) (; ";")) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0f84);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0f84)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar25 + 0xc0f84)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0f84)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0f84)" (( "(") (binary_expression "puVar25 + 0xc0f84" (identifier "puVar25") (+ "+") (number_literal "0xc0f84")) () ")"))))) (; ";")) (expression_statement "(&uStack_b1)[iVar21] = 0;" (assignment_expression "(&uStack_b1)[iVar21] = 0" (subscript_expression "(&uStack_b1)[iVar21]" (parenthesized_expression "(&uStack_b1)" (( "(") (pointer_expression "&uStack_b1" (& "&") (identifier "uStack_b1")) () ")")) ([ "[") (identifier "iVar21") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);" (assignment_expression "puVar5 = (undefined1 *)(*pcVar22)(local_a2,10)" (identifier "puVar5") (= "=") (cast_expression "(undefined1 *)(*pcVar22)(local_a2,10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar22)(local_a2,10)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(local_a2,10)" (( "(") (identifier "local_a2") (, ",") (number_literal "10") () ")"))))) (; ";")) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc0dd8);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc0dd8)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar25 + 0xc0dd8)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0dd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0dd8)" (( "(") (binary_expression "puVar25 + 0xc0dd8" (identifier "puVar25") (+ "+") (number_literal "0xc0dd8")) () ")"))))) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*pcVar22)(&local_b0);" (call_expression "(*pcVar22)(&local_b0)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(&local_b0)" (( "(") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) () ")"))) (; ";")) (if_statement "if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;" (if "if") (parenthesized_expression "((*puVar23 & 4) != 0)" (( "(") (binary_expression "(*puVar23 & 4) != 0" (parenthesized_expression "(*puVar23 & 4)" (( "(") (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0006a8b4;" (goto "goto") (statement_identifier "LAB_0006a8b4") (; ";"))) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214" (identifier "iVar21") (= "=") (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x1214" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")")))) (+ "+") (number_literal "0x1214"))) (; ";")) (while_statement "while( true ) {\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar7 = 0xc800000 / uVar6;\n    if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }\n    uVar9 = piVar19[0x2b] - piVar19[0x3f];\n    uVar8 = piVar19[0x40];\n    if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }\n    uVar9 = (uVar9 & 0xffff) * 0x1900;\n    if (uVar9 == 0) {\n      uVar9 = 1;\n    }\n    uVar24 = 6;\n    do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);\n    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;\n    if (uVar8 == 0) goto LAB_0006a67c;\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }\n    piVar1 = piVar19 + 0x11;\n    iVar4 = piVar19[1] - *piVar1;\n    iVar21 = iVar20 + -4;\n    if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }\n    iVar20 = iVar21 + -1;\n    pcVar22 = *(code **)(puVar25 + 0xc065c);\n    if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }\n    uVar3 = 10;\n    if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }\n    (**(code **)(puVar25 + 0xc0178))(uVar3);\n    (**(code **)(puVar25 + 0xc0068))();\n    if (local_4c == *piVar2) break;\n    (**(code **)(puVar25 + 0xc0eec))();\nLAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;\n  }" ({ "{") (expression_statement "(**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);" (call_expression "(**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0c54))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0c54)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0c54)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0c54)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0c54)" (( "(") (binary_expression "puVar25 + 0xc0c54" (identifier "puVar25") (+ "+") (number_literal "0xc0c54")) () ")"))))) () ")")) (argument_list "(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98)" (( "(") (number_literal "1") (, ",") (identifier "iVar21") (, ",") (identifier "param_2") (, ",") (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x6b98" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")")))) (+ "+") (number_literal "0x6b98")) () ")"))) (; ";")) (if_statement "if (uVar6 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = 0xc800000 / uVar6;" (assignment_expression "uVar7 = 0xc800000 / uVar6" (identifier "uVar7") (= "=") (binary_expression "0xc800000 / uVar6" (number_literal "0xc800000") (/ "/") (identifier "uVar6"))) (; ";")) (if_statement "if (uVar7 < 0x200) {\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }\n    else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" (if "if") (parenthesized_expression "(uVar7 < 0x200)" (( "(") (binary_expression "uVar7 < 0x200" (identifier "uVar7") (< "<") (number_literal "0x200")) () ")")) (compound_statement "{\n      uVar15 = 0x15;\n      local_120 = 0x100000;\n    }" ({ "{") (expression_statement "uVar15 = 0x15;" (assignment_expression "uVar15 = 0x15" (identifier "uVar15") (= "=") (number_literal "0x15")) (; ";")) (expression_statement "local_120 = 0x100000;" (assignment_expression "local_120 = 0x100000" (identifier "local_120") (= "=") (number_literal "0x100000")) (; ";")) (} "}")) (else_clause "else {\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" (else "else") (compound_statement "{\n      uVar15 = 0x15;\n      do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);\n      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;\n    }" ({ "{") (expression_statement "uVar15 = 0x15;" (assignment_expression "uVar15 = 0x15" (identifier "uVar15") (= "=") (number_literal "0x15")) (; ";")) (do_statement "do {\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      } while (0x1ff < uVar7);" (do "do") (compound_statement "{\n        uVar7 = uVar7 >> 2;\n        uVar15 = uVar15 - 2;\n      }" ({ "{") (expression_statement "uVar7 = uVar7 >> 2;" (assignment_expression "uVar7 = uVar7 >> 2" (identifier "uVar7") (= "=") (binary_expression "uVar7 >> 2" (identifier "uVar7") (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "uVar15 = uVar15 - 2;" (assignment_expression "uVar15 = uVar15 - 2" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 2" (identifier "uVar15") (- "-") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0x1ff < uVar7)" (( "(") (binary_expression "0x1ff < uVar7" (number_literal "0x1ff") (< "<") (identifier "uVar7")) () ")")) (; ";")) (expression_statement "local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;" (assignment_expression "local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1" (identifier "local_120") (= "=") (binary_expression "(uint)(1 << (uVar15 & 0x1f)) >> 1" (call_expression "(uint)(1 << (uVar15 & 0x1f))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(1 << (uVar15 & 0x1f))" (( "(") (binary_expression "1 << (uVar15 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar15 & 0x1f)" (( "(") (binary_expression "uVar15 & 0x1f" (identifier "uVar15") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (>> ">>") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "uVar9 = piVar19[0x2b] - piVar19[0x3f];" (assignment_expression "uVar9 = piVar19[0x2b] - piVar19[0x3f]" (identifier "uVar9") (= "=") (binary_expression "piVar19[0x2b] - piVar19[0x3f]" (subscript_expression "piVar19[0x2b]" (identifier "piVar19") ([ "[") (number_literal "0x2b") (] "]")) (- "-") (subscript_expression "piVar19[0x3f]" (identifier "piVar19") ([ "[") (number_literal "0x3f") (] "]")))) (; ";")) (expression_statement "uVar8 = piVar19[0x40];" (assignment_expression "uVar8 = piVar19[0x40]" (identifier "uVar8") (= "=") (subscript_expression "piVar19[0x40]" (identifier "piVar19") ([ "[") (number_literal "0x40") (] "]"))) (; ";")) (if_statement "if ((uint)piVar19[0x40] < uVar9) {\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }" (if "if") (parenthesized_expression "((uint)piVar19[0x40] < uVar9)" (( "(") (binary_expression "(uint)piVar19[0x40] < uVar9" (cast_expression "(uint)piVar19[0x40]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar19[0x40]" (identifier "piVar19") ([ "[") (number_literal "0x40") (] "]"))) (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n      piVar19[0x40] = uVar9;\n      uVar8 = uVar9;\n    }" ({ "{") (expression_statement "piVar19[0x40] = uVar9;" (assignment_expression "piVar19[0x40] = uVar9" (subscript_expression "piVar19[0x40]" (identifier "piVar19") ([ "[") (number_literal "0x40") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "uVar8 = uVar9;" (assignment_expression "uVar8 = uVar9" (identifier "uVar8") (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "uVar9 = (uVar9 & 0xffff) * 0x1900;" (assignment_expression "uVar9 = (uVar9 & 0xffff) * 0x1900" (identifier "uVar9") (= "=") (binary_expression "(uVar9 & 0xffff) * 0x1900" (parenthesized_expression "(uVar9 & 0xffff)" (( "(") (binary_expression "uVar9 & 0xffff" (identifier "uVar9") (& "&") (number_literal "0xffff")) () ")")) (* "*") (number_literal "0x1900"))) (; ";")) (if_statement "if (uVar9 == 0) {\n      uVar9 = 1;\n    }" (if "if") (parenthesized_expression "(uVar9 == 0)" (( "(") (binary_expression "uVar9 == 0" (identifier "uVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar9 = 1;\n    }" ({ "{") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar24 = 6;" (assignment_expression "uVar24 = 6" (identifier "uVar24") (= "=") (number_literal "6")) (; ";")) (do_statement "do {\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    } while (uVar9 < 0x40000000);" (do "do") (compound_statement "{\n      uVar9 = uVar9 << 2;\n      uVar24 = uVar24 + 2;\n    }" ({ "{") (expression_statement "uVar9 = uVar9 << 2;" (assignment_expression "uVar9 = uVar9 << 2" (identifier "uVar9") (= "=") (binary_expression "uVar9 << 2" (identifier "uVar9") (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "uVar24 = uVar24 + 2;" (assignment_expression "uVar24 = uVar24 + 2" (identifier "uVar24") (= "=") (binary_expression "uVar24 + 2" (identifier "uVar24") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar9 < 0x40000000)" (( "(") (binary_expression "uVar9 < 0x40000000" (identifier "uVar9") (< "<") (number_literal "0x40000000")) () ")")) (; ";")) (expression_statement "uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8;" (assignment_expression "uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8" (identifier "uVar8") (= "=") (binary_expression "((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff) * uVar8" (parenthesized_expression "((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff)" (( "(") (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &\n            0xffff" (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6)" (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xa6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)((int)piVar19 + 0xa6)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar19 + 0xa6)" (( "(") (binary_expression "(int)piVar19 + 0xa6" (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19")) (+ "+") (number_literal "0xa6")) () ")")))) (- "-") (binary_expression "(uint)*(ushort *)((int)piVar19 + 0xf6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)((int)piVar19 + 0xf6)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar19 + 0xf6)" (( "(") (binary_expression "(int)piVar19 + 0xf6" (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19")) (+ "+") (number_literal "0xf6")) () ")"))))) (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar8"))) (; ";")) (if_statement "if (uVar8 == 0) goto LAB_0006a67c;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0006a67c;" (goto "goto") (statement_identifier "LAB_0006a67c") (; ";"))) (if_statement "if (uVar8 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (for_statement "for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }" (for "for") (( "(") (assignment_expression "uVar9 = uVar9 / uVar8" (identifier "uVar9") (= "=") (binary_expression "uVar9 / uVar8" (identifier "uVar9") (/ "/") (identifier "uVar8"))) (; ";") (binary_expression "0x3ff < uVar9" (number_literal "0x3ff") (< "<") (identifier "uVar9")) (; ";") (assignment_expression "uVar9 = uVar9 >> 2" (identifier "uVar9") (= "=") (binary_expression "uVar9 >> 2" (identifier "uVar9") (>> ">>") (number_literal "2"))) () ")") (compound_statement "{\nLAB_0006a67c:\n      uVar24 = uVar24 - 2;\n    }" ({ "{") (labeled_statement "LAB_0006a67c:\n      uVar24 = uVar24 - 2;" (statement_identifier "LAB_0006a67c") (: ":") (expression_statement "uVar24 = uVar24 - 2;" (assignment_expression "uVar24 = uVar24 - 2" (identifier "uVar24") (= "=") (binary_expression "uVar24 - 2" (identifier "uVar24") (- "-") (number_literal "2"))) (; ";"))) (} "}"))) (expression_statement "piVar1 = piVar19 + 0x11;" (assignment_expression "piVar1 = piVar19 + 0x11" (identifier "piVar1") (= "=") (binary_expression "piVar19 + 0x11" (identifier "piVar19") (+ "+") (number_literal "0x11"))) (; ";")) (expression_statement "iVar4 = piVar19[1] - *piVar1;" (assignment_expression "iVar4 = piVar19[1] - *piVar1" (identifier "iVar4") (= "=") (binary_expression "piVar19[1] - *piVar1" (subscript_expression "piVar19[1]" (identifier "piVar19") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")))) (; ";")) (expression_statement "iVar21 = iVar20 + -4;" (assignment_expression "iVar21 = iVar20 + -4" (identifier "iVar21") (= "=") (binary_expression "iVar20 + -4" (identifier "iVar20") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (iVar4 <= iVar20 + -4) {\n      iVar21 = iVar4;\n    }" (if "if") (parenthesized_expression "(iVar4 <= iVar20 + -4)" (( "(") (binary_expression "iVar4 <= iVar20 + -4" (identifier "iVar4") (<= "<=") (binary_expression "iVar20 + -4" (identifier "iVar20") (+ "+") (number_literal "-4"))) () ")")) (compound_statement "{\n      iVar21 = iVar4;\n    }" ({ "{") (expression_statement "iVar21 = iVar4;" (assignment_expression "iVar21 = iVar4" (identifier "iVar21") (= "=") (identifier "iVar4")) (; ";")) (} "}"))) (expression_statement "iVar20 = iVar21 + -1;" (assignment_expression "iVar20 = iVar21 + -1" (identifier "iVar20") (= "=") (binary_expression "iVar21 + -1" (identifier "iVar21") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pcVar22 = *(code **)(puVar25 + 0xc065c);" (assignment_expression "pcVar22 = *(code **)(puVar25 + 0xc065c)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar25 + 0xc065c)" (* "*") (cast_expression "(code **)(puVar25 + 0xc065c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc065c)" (( "(") (binary_expression "puVar25 + 0xc065c" (identifier "puVar25") (+ "+") (number_literal "0xc065c")) () ")"))))) (; ";")) (if_statement "if (-1 < iVar20) {\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }" (if "if") (parenthesized_expression "(-1 < iVar20)" (( "(") (binary_expression "-1 < iVar20" (number_literal "-1") (< "<") (identifier "iVar20")) () ")")) (compound_statement "{\n      iVar14 = *piVar19;\n      iVar21 = *(int *)(puVar25 + 0xbffb0);\n      pcVar10 = *(code **)(puVar25 + 0xc062c);\n      piVar19 = piVar19 + 0x45;\n      param_2 = param_2 + 2;\n      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;\n      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);\n      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;\n      pcVar12 = *(code **)(puVar25 + 0xc0634);\n      iVar4 = *(int *)(puVar25 + 0xbffb0);\n      do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);\n    }" ({ "{") (expression_statement "iVar14 = *piVar19;" (assignment_expression "iVar14 = *piVar19" (identifier "iVar14") (= "=") (pointer_expression "*piVar19" (* "*") (identifier "piVar19"))) (; ";")) (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")"))))) (; ";")) (expression_statement "pcVar10 = *(code **)(puVar25 + 0xc062c);" (assignment_expression "pcVar10 = *(code **)(puVar25 + 0xc062c)" (identifier "pcVar10") (= "=") (pointer_expression "*(code **)(puVar25 + 0xc062c)" (* "*") (cast_expression "(code **)(puVar25 + 0xc062c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc062c)" (( "(") (binary_expression "puVar25 + 0xc062c" (identifier "puVar25") (+ "+") (number_literal "0xc062c")) () ")"))))) (; ";")) (expression_statement "piVar19 = piVar19 + 0x45;" (assignment_expression "piVar19 = piVar19 + 0x45" (identifier "piVar19") (= "=") (binary_expression "piVar19 + 0x45" (identifier "piVar19") (+ "+") (number_literal "0x45"))) (; ";")) (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" (identifier "param_2") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;" (assignment_expression "uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1" (identifier "uVar6") (= "=") (binary_expression "(uint)(1 << (uVar24 & 0x1f)) >> 1" (call_expression "(uint)(1 << (uVar24 & 0x1f))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(1 << (uVar24 & 0x1f))" (( "(") (binary_expression "1 << (uVar24 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar24 & 0x1f)" (( "(") (binary_expression "uVar24 & 0x1f" (identifier "uVar24") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);" (assignment_expression "puVar11 = *(undefined4 **)(puVar25 + 0xc0c64)" (identifier "puVar11") (= "=") (pointer_expression "*(undefined4 **)(puVar25 + 0xc0c64)" (* "*") (cast_expression "(undefined4 **)(puVar25 + 0xc0c64)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0c64)" (( "(") (binary_expression "puVar25 + 0xc0c64" (identifier "puVar25") (+ "+") (number_literal "0xc0c64")) () ")"))))) (; ";")) (expression_statement "iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;" (assignment_expression "iVar14 = iVar14 + *piVar1 * 0x2c + 0x18" (identifier "iVar14") (= "=") (binary_expression "iVar14 + *piVar1 * 0x2c + 0x18" (binary_expression "iVar14 + *piVar1 * 0x2c" (identifier "iVar14") (+ "+") (binary_expression "*piVar1 * 0x2c" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (* "*") (number_literal "0x2c"))) (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "pcVar12 = *(code **)(puVar25 + 0xc0634);" (assignment_expression "pcVar12 = *(code **)(puVar25 + 0xc0634)" (identifier "pcVar12") (= "=") (pointer_expression "*(code **)(puVar25 + 0xc0634)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0634)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0634)" (( "(") (binary_expression "puVar25 + 0xc0634" (identifier "puVar25") (+ "+") (number_literal "0xc0634")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar25 + 0xbffb0);" (assignment_expression "iVar4 = *(int *)(puVar25 + 0xbffb0)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")"))))) (; ";")) (do_statement "do {\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      } while (iVar20 != -1);" (do "do") (compound_statement "{\n        iVar13 = *(int *)(iVar14 + -0x18);\n        iVar16 = *(int *)(iVar14 + -0x10);\n        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);\n        uVar17 = *(undefined4 *)(iVar14 + -0xc);\n        uVar18 = *(undefined4 *)(iVar14 + -8);\n        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));\n        iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));\n        if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }\n        iVar20 = iVar20 + -1;\n        iVar14 = iVar14 + 0x2c;\n        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);\n      }" ({ "{") (expression_statement "iVar13 = *(int *)(iVar14 + -0x18);" (assignment_expression "iVar13 = *(int *)(iVar14 + -0x18)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(iVar14 + -0x18)" (* "*") (cast_expression "(int *)(iVar14 + -0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -0x18)" (( "(") (binary_expression "iVar14 + -0x18" (identifier "iVar14") (+ "+") (number_literal "-0x18")) () ")"))))) (; ";")) (expression_statement "iVar16 = *(int *)(iVar14 + -0x10);" (assignment_expression "iVar16 = *(int *)(iVar14 + -0x10)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar14 + -0x10)" (* "*") (cast_expression "(int *)(iVar14 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -0x10)" (( "(") (binary_expression "iVar14 + -0x10" (identifier "iVar14") (+ "+") (number_literal "-0x10")) () ")"))))) (; ";")) (expression_statement "(*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);" (call_expression "(*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(0,iVar13,&local_b0,iVar4 + 0x6960)" (( "(") (number_literal "0") (, ",") (identifier "iVar13") (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (binary_expression "iVar4 + 0x6960" (identifier "iVar4") (+ "+") (number_literal "0x6960")) () ")"))) (; ";")) (expression_statement "uVar17 = *(undefined4 *)(iVar14 + -0xc);" (assignment_expression "uVar17 = *(undefined4 *)(iVar14 + -0xc)" (identifier "uVar17") (= "=") (pointer_expression "*(undefined4 *)(iVar14 + -0xc)" (* "*") (cast_expression "(undefined4 *)(iVar14 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -0xc)" (( "(") (binary_expression "iVar14 + -0xc" (identifier "iVar14") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (expression_statement "uVar18 = *(undefined4 *)(iVar14 + -8);" (assignment_expression "uVar18 = *(undefined4 *)(iVar14 + -8)" (identifier "uVar18") (= "=") (pointer_expression "*(undefined4 *)(iVar14 + -8)" (* "*") (cast_expression "(undefined4 *)(iVar14 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -8)" (( "(") (binary_expression "iVar14 + -8" (identifier "iVar14") (+ "+") (number_literal "-8")) () ")"))))) (; ";")) (expression_statement "uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));" (assignment_expression "uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4))" (identifier "uVar3") (= "=") (call_expression "(*pcVar10)(*(undefined4 *)(iVar14 + -4))" (parenthesized_expression "(*pcVar10)" (( "(") (pointer_expression "*pcVar10" (* "*") (identifier "pcVar10")) () ")")) (argument_list "(*(undefined4 *)(iVar14 + -4))" (( "(") (pointer_expression "*(undefined4 *)(iVar14 + -4)" (* "*") (cast_expression "(undefined4 *)(iVar14 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -4)" (( "(") (binary_expression "iVar14 + -4" (identifier "iVar14") (+ "+") (number_literal "-4")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));" (assignment_expression "iVar13 = (**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" (identifier "iVar13") (= "=") (call_expression "(**(code **)(puVar25 + 0xc1000))\n                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" (parenthesized_expression "(**(code **)(puVar25 + 0xc1000))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc1000)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc1000)" (* "*") (cast_expression "(code **)(puVar25 + 0xc1000)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc1000)" (( "(") (binary_expression "puVar25 + 0xc1000" (identifier "puVar25") (+ "+") (number_literal "0xc1000")) () ")"))))) () ")")) (argument_list "(piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,\n                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),\n                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f))" (( "(") (identifier "piVar19") (, ",") (identifier "param_2") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (binary_expression "iVar21 + 0x6bcc" (identifier "iVar21") (+ "+") (number_literal "0x6bcc")) (, ",") (identifier "uVar17") (, ",") (identifier "uVar18") (, ",") (identifier "uVar3") (, ",") (identifier "iVar14") (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (binary_expression "iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f)" (binary_expression "iVar13 * uVar7 + local_120" (binary_expression "iVar13 * uVar7" (identifier "iVar13") (* "*") (identifier "uVar7")) (+ "+") (identifier "local_120")) (>> ">>") (parenthesized_expression "(uVar15 & 0x1f)" (( "(") (binary_expression "uVar15 & 0x1f" (identifier "uVar15") (& "&") (number_literal "0x1f")) () ")"))) (, ",") (binary_expression "uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f)" (binary_expression "uVar9 * iVar16 + uVar6" (binary_expression "uVar9 * iVar16" (identifier "uVar9") (* "*") (identifier "iVar16")) (+ "+") (identifier "uVar6")) (>> ">>") (parenthesized_expression "(uVar24 & 0x1f)" (( "(") (binary_expression "uVar24 & 0x1f" (identifier "uVar24") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if (1 < param_2 - iVar13) {\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }" (if "if") (parenthesized_expression "(1 < param_2 - iVar13)" (( "(") (binary_expression "1 < param_2 - iVar13" (number_literal "1") (< "<") (binary_expression "param_2 - iVar13" (identifier "param_2") (- "-") (identifier "iVar13"))) () ")")) (compound_statement "{\n          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);\n        }" ({ "{") (expression_statement "(*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4);" (call_expression "(*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4)" (parenthesized_expression "(*pcVar12)" (( "(") (pointer_expression "*pcVar12" (* "*") (identifier "pcVar12")) () ")")) (argument_list "((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),\n                     iVar14 + 4)" (( "(") (binary_expression "(int)piVar19 + iVar13" (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19")) (+ "+") (identifier "iVar13")) (, ",") (binary_expression "param_2 - iVar13" (identifier "param_2") (- "-") (identifier "iVar13")) (, ",") (pointer_expression "*(undefined4 *)(iVar14 + -0xc)" (* "*") (cast_expression "(undefined4 *)(iVar14 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -0xc)" (( "(") (binary_expression "iVar14 + -0xc" (identifier "iVar14") (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (binary_expression "iVar14 + 4" (identifier "iVar14") (+ "+") (number_literal "4")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar20 = iVar20 + -1;" (assignment_expression "iVar20 = iVar20 + -1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + -1" (identifier "iVar20") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar14 = iVar14 + 0x2c;" (assignment_expression "iVar14 = iVar14 + 0x2c" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 0x2c" (identifier "iVar14") (+ "+") (number_literal "0x2c"))) (; ";")) (expression_statement "(**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);" (call_expression "(**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11)" (parenthesized_expression "(**(code **)(puVar25 + 0xc1028))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc1028)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc1028)" (* "*") (cast_expression "(code **)(puVar25 + 0xc1028)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc1028)" (( "(") (binary_expression "puVar25 + 0xc1028" (identifier "puVar25") (+ "+") (number_literal "0xc1028")) () ")"))))) () ")")) (argument_list "(piVar19,*puVar11)" (( "(") (identifier "piVar19") (, ",") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 != -1)" (( "(") (binary_expression "iVar20 != -1" (identifier "iVar20") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar3 = 10;" (assignment_expression "uVar3 = 10" (identifier "uVar3") (= "=") (number_literal "10")) (; ";")) (if_statement "if ((*puVar23 & 4) == 0) {\n      uVar3 = 0xd;\n    }" (if "if") (parenthesized_expression "((*puVar23 & 4) == 0)" (( "(") (binary_expression "(*puVar23 & 4) == 0" (parenthesized_expression "(*puVar23 & 4)" (( "(") (binary_expression "*puVar23 & 4" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = 0xd;\n    }" ({ "{") (expression_statement "uVar3 = 0xd;" (assignment_expression "uVar3 = 0xd" (identifier "uVar3") (= "=") (number_literal "0xd")) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar25 + 0xc0178))(uVar3);" (call_expression "(**(code **)(puVar25 + 0xc0178))(uVar3)" (parenthesized_expression "(**(code **)(puVar25 + 0xc0178))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0178)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0178)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0178)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0178)" (( "(") (binary_expression "puVar25 + 0xc0178" (identifier "puVar25") (+ "+") (number_literal "0xc0178")) () ")"))))) () ")")) (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar25 + 0xc0068))();" (call_expression "(**(code **)(puVar25 + 0xc0068))()" (parenthesized_expression "(**(code **)(puVar25 + 0xc0068))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0068)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0068)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0068)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0068)" (( "(") (binary_expression "puVar25 + 0xc0068" (identifier "puVar25") (+ "+") (number_literal "0xc0068")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_4c == *piVar2) break;" (if "if") (parenthesized_expression "(local_4c == *piVar2)" (( "(") (binary_expression "local_4c == *piVar2" (identifier "local_4c") (== "==") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "(**(code **)(puVar25 + 0xc0eec))();" (call_expression "(**(code **)(puVar25 + 0xc0eec))()" (parenthesized_expression "(**(code **)(puVar25 + 0xc0eec))" (( "(") (pointer_expression "**(code **)(puVar25 + 0xc0eec)" (* "*") (pointer_expression "*(code **)(puVar25 + 0xc0eec)" (* "*") (cast_expression "(code **)(puVar25 + 0xc0eec)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0xc0eec)" (( "(") (binary_expression "puVar25 + 0xc0eec" (identifier "puVar25") (+ "+") (number_literal "0xc0eec")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0006a8b4:\n    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;" (statement_identifier "LAB_0006a8b4") (: ":") (expression_statement "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;" (assignment_expression "iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec" (identifier "iVar21") (= "=") (binary_expression "*(int *)(puVar25 + 0xbffb0) + 0x12ec" (pointer_expression "*(int *)(puVar25 + 0xbffb0)" (* "*") (cast_expression "(int *)(puVar25 + 0xbffb0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + 0xbffb0)" (( "(") (binary_expression "puVar25 + 0xbffb0" (identifier "puVar25") (+ "+") (number_literal "0xbffb0")) () ")")))) (+ "+") (number_literal "0x12ec"))) (; ";"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(int sig)

{
  if ((*(type_1 *)PTR_option_mask32_0012a334 & 4) == 0) {
    (*(type_2 *)PTR_tcsetattr_stdin_TCSANOW_0012a308)(*(int *)PTR_ptr_to_globals_0012a304 + 0x10);
  }
  (*(type_2 *)PTR_kill_myself_with_sig_0012a2a0)(sig);
  return;
}


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

void MASKED(int param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  undefined1 *puVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  code *pcVar10;
  undefined4 *puVar11;
  code *pcVar12;
  int iVar13;
  int iVar14;
  uint uVar15;
  int iVar16;
  undefined4 uVar17;
  undefined4 uVar18;
  int *piVar19;
  int iVar20;
  int iVar21;
  code *pcVar22;
  uint *puVar23;
  uint uVar24;
  undefined *puVar25;
  uint local_120;
  uint local_e4 [12];
  undefined4 local_b4;
  undefined1 uStack_b1;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined2 local_a4;
  undefined1 local_a2 [86];
  int local_4c;
  int local_48;
  
  if ((*(uint *)PTR_DAT_0012a334 & 4) == 0) {
    (*(code *)PTR_FUN_0012a308)(*(int *)PTR_DAT_0012a304 + 0x10);
  }
  iVar20 = param_1;
  puVar25 = PTR_FUN_0012a2a0;
  (*(code *)PTR_FUN_0012a2a0)();
  piVar2 = *(int **)(puVar25 + 0xc0f70);
  local_e4[0] = 0;
  local_e4[1] = 0;
  local_e4[2] = 0;
  local_e4[3] = 0;
  local_e4[4] = 0;
  local_e4[5] = 0;
  local_e4[6] = 0;
  local_e4[7] = 0;
  local_e4[8] = 0;
  local_e4[9] = 0;
  local_e4[10] = 0;
  local_e4[0xb] = 0;
  local_b4 = 0;
  local_4c = *piVar2;
  pcVar22 = *(code **)(puVar25 + 0xc0208);
  local_48 = param_1;
  uVar3 = (**(code **)(puVar25 + 0xc01c0))(*(int *)(puVar25 + 0xbffb0) + 0x6af0);
  iVar21 = *(int *)(puVar25 + 0xbffcc);
  while (iVar4 = (**(code **)(puVar25 + 0xc0b4c))(&local_b0,0x3c,uVar3), iVar4 != 0) {
    puVar5 = (undefined1 *)(**(code **)(puVar25 + 0xc0d78))(&local_b0,0x3a);
    if (puVar5 != (undefined1 *)0x0) {
      *puVar5 = 0;
      iVar4 = (*pcVar22)(iVar21 + 0x68b9,&local_b0);
      if (-1 < iVar4) {
        uVar6 = (**(code **)(puVar25 + 0xc0d7c))(puVar5 + 1,0,10);
        local_e4[iVar4] = uVar6;
      }
    }
  }
  puVar23 = *(uint **)(puVar25 + 0xc0158);
  (**(code **)(puVar25 + 0xc0b90))(uVar3);
  uVar6 = local_e4[0];
  iVar21 = 100;
  if (param_2 < 0x65) {
    iVar21 = param_2;
  }
  (**(code **)(puVar25 + 0xc1000))
            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6af8,local_e4[0] - local_e4[1],
             local_e4[1],local_e4[2] + local_e4[3],local_e4[4],local_e4[5]);
  if ((*puVar23 & 4) == 0) {
    iVar4 = *(int *)(puVar25 + 0xbffb0) + 0x6ae4;
  }
  else {
    iVar4 = *(int *)(puVar25 + 0xbffcc) + -0x4998;
  }
  (**(code **)(puVar25 + 0xc0c54))(1,iVar4,&local_b0);
  piVar19 = (int *)**(undefined4 **)(puVar25 + 0xc0128);
  uVar7 = piVar19[0x29] - piVar19[0x3d];
  if (uVar7 == 0) {
    uVar7 = 1;
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  if (uVar7 == 0) {
    trap(7);
  }
  (**(code **)(puVar25 + 0xc1000))
            (&local_b0,iVar21,1,100,*(int *)(puVar25 + 0xbffb0) + 0x6b38,
             (uint)((piVar19[0x19] - piVar19[0x2d]) * 100) / uVar7,
             (uint)((piVar19[0x1d] - piVar19[0x31]) * 100) / uVar7,
             (uint)((piVar19[0x1b] - piVar19[0x2f]) * 100) / uVar7,
             (uint)((piVar19[0x1f] - piVar19[0x33]) * 100) / uVar7,
             (uint)((piVar19[0x21] - piVar19[0x35]) * 100) / uVar7,
             (uint)((piVar19[0x23] - piVar19[0x37]) * 100) / uVar7,
             (uint)((piVar19[0x25] - piVar19[0x39]) * 100) / uVar7);
  (**(code **)(puVar25 + 0xc0dd8))(&local_b0);
  iVar4 = *(int *)(puVar25 + 0xbffb0);
  local_b0 = *(undefined4 *)(iVar4 + 0x6b80);
  local_ac = *(undefined4 *)(iVar4 + 0x6b84);
  local_a8 = *(undefined4 *)(iVar4 + 0x6b88);
  local_a4 = *(undefined2 *)(iVar4 + 0x6b8c);
  local_a2[0] = *(undefined1 *)(iVar4 + 0x6b8e);
  (**(code **)(puVar25 + 0xc01f8))(*(int *)(puVar25 + 0xbffb0) + 0x6b90,local_a2,0x55);
  pcVar22 = *(code **)(puVar25 + 0xc0f84);
  (&uStack_b1)[iVar21] = 0;
  puVar5 = (undefined1 *)(*pcVar22)(local_a2,10);
  pcVar22 = *(code **)(puVar25 + 0xc0dd8);
  *puVar5 = 0;
  (*pcVar22)(&local_b0);
  if ((*puVar23 & 4) != 0) goto LAB_0006a8b4;
  iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x1214;
  while( true ) {
    (**(code **)(puVar25 + 0xc0c54))(1,iVar21,param_2,*(int *)(puVar25 + 0xbffb0) + 0x6b98);
    if (uVar6 == 0) {
      trap(7);
    }
    uVar7 = 0xc800000 / uVar6;
    if (uVar7 < 0x200) {
      uVar15 = 0x15;
      local_120 = 0x100000;
    }
    else {
      uVar15 = 0x15;
      do {
        uVar7 = uVar7 >> 2;
        uVar15 = uVar15 - 2;
      } while (0x1ff < uVar7);
      local_120 = (uint)(1 << (uVar15 & 0x1f)) >> 1;
    }
    uVar9 = piVar19[0x2b] - piVar19[0x3f];
    uVar8 = piVar19[0x40];
    if ((uint)piVar19[0x40] < uVar9) {
      piVar19[0x40] = uVar9;
      uVar8 = uVar9;
    }
    uVar9 = (uVar9 & 0xffff) * 0x1900;
    if (uVar9 == 0) {
      uVar9 = 1;
    }
    uVar24 = 6;
    do {
      uVar9 = uVar9 << 2;
      uVar24 = uVar24 + 2;
    } while (uVar9 < 0x40000000);
    uVar8 = ((uint)*(ushort *)((int)piVar19 + 0xa6) - (uint)*(ushort *)((int)piVar19 + 0xf6) &
            0xffff) * uVar8;
    if (uVar8 == 0) goto LAB_0006a67c;
    if (uVar8 == 0) {
      trap(7);
    }
    for (uVar9 = uVar9 / uVar8; 0x3ff < uVar9; uVar9 = uVar9 >> 2) {
LAB_0006a67c:
      uVar24 = uVar24 - 2;
    }
    piVar1 = piVar19 + 0x11;
    iVar4 = piVar19[1] - *piVar1;
    iVar21 = iVar20 + -4;
    if (iVar4 <= iVar20 + -4) {
      iVar21 = iVar4;
    }
    iVar20 = iVar21 + -1;
    pcVar22 = *(code **)(puVar25 + 0xc065c);
    if (-1 < iVar20) {
      iVar14 = *piVar19;
      iVar21 = *(int *)(puVar25 + 0xbffb0);
      pcVar10 = *(code **)(puVar25 + 0xc062c);
      piVar19 = piVar19 + 0x45;
      param_2 = param_2 + 2;
      uVar6 = (uint)(1 << (uVar24 & 0x1f)) >> 1;
      puVar11 = *(undefined4 **)(puVar25 + 0xc0c64);
      iVar14 = iVar14 + *piVar1 * 0x2c + 0x18;
      pcVar12 = *(code **)(puVar25 + 0xc0634);
      iVar4 = *(int *)(puVar25 + 0xbffb0);
      do {
        iVar13 = *(int *)(iVar14 + -0x18);
        iVar16 = *(int *)(iVar14 + -0x10);
        (*pcVar22)(0,iVar13,&local_b0,iVar4 + 0x6960);
        uVar17 = *(undefined4 *)(iVar14 + -0xc);
        uVar18 = *(undefined4 *)(iVar14 + -8);
        uVar3 = (*pcVar10)(*(undefined4 *)(iVar14 + -4));
        iVar13 = (**(code **)(puVar25 + 0xc1000))
                           (piVar19,param_2,1,0xffffffff,iVar21 + 0x6bcc,uVar17,uVar18,uVar3,iVar14,
                            &local_b0,iVar13 * uVar7 + local_120 >> (uVar15 & 0x1f),
                            uVar9 * iVar16 + uVar6 >> (uVar24 & 0x1f));
        if (1 < param_2 - iVar13) {
          (*pcVar12)((int)piVar19 + iVar13,param_2 - iVar13,*(undefined4 *)(iVar14 + -0xc),
                     iVar14 + 4);
        }
        iVar20 = iVar20 + -1;
        iVar14 = iVar14 + 0x2c;
        (**(code **)(puVar25 + 0xc1028))(piVar19,*puVar11);
      } while (iVar20 != -1);
    }
    uVar3 = 10;
    if ((*puVar23 & 4) == 0) {
      uVar3 = 0xd;
    }
    (**(code **)(puVar25 + 0xc0178))(uVar3);
    (**(code **)(puVar25 + 0xc0068))();
    if (local_4c == *piVar2) break;
    (**(code **)(puVar25 + 0xc0eec))();
LAB_0006a8b4:
    iVar21 = *(int *)(puVar25 + 0xbffb0) + 0x12ec;
  }
  return;
}

