
void run_command(char **cmd,resource_t *resp)

{
  byte *pbVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  uint extraout_v1;
  uint uVar8;
  resource_t *prVar9;
  byte *pbVar10;
  undefined *puVar11;
  ulonglong uVar12;
  byte *pbStack_c4;
  char *pcStack_c0;
  resource_t rStack_bc;
  undefined4 uStack_6c;
  int iStack_68;
  
  prVar9 = resp;
  uVar12 = monotonic_ms();
  puVar11 = PTR_vfork_0012ae44;
  resp->elapsed_ms = (uint)uVar12;
  iVar2 = (*(code *)puVar11)();
  puVar11 = PTR_bb_errno_0012a214;
  if (iVar2 < 0) {
                    /* WARNING: Subroutine does not return */
    bb_perror_msg_and_die(PTR_UINT_0012a18c + -0x94c);
  }
  if (iVar2 == 0) {
    puVar11 = PTR_BB_EXECVP_or_die_0012a400;
    (*(code *)PTR_BB_EXECVP_or_die_0012a400)(cmd);
    uStack_6c = **(undefined4 **)(puVar11 + 0xf6d1c);
    iStack_68 = iVar2;
    pbStack_c4 = (byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370);
    if (pbStack_c4 == (byte *)0x0) {
      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);
    }
    uVar6 = (**(code **)(puVar11 + 0xf5edc))
                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4);
    iVar2 = **(int **)(puVar11 + 0xf6cbc);
    if ((uVar6 & 1) != 0) {
      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);
    }
    if ((uVar6 & 2) != 0) {
      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);
    }
    iVar5 = 2;
    if ((uVar6 & 8) != 0) {
      if ((uVar6 & 4) == 0) {
        iVar5 = 0x80301;
      }
      else {
        iVar5 = 0x80109;
      }
      iVar5 = xopen(pcStack_c0,iVar5);
    }
    run_command((char **)(&prVar9->waitstatus + iVar2),&rStack_bc);
    xdup2(iVar5,1);
    pbVar1 = pbStack_c4;
    if ((char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01') {
      if (((rStack_bc.waitstatus & 0x7fU) == 0) &&
         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {
        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);
      }
    }
    else {
      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);
    }
    iVar5 = *(int *)(puVar11 + 0xf5d5c);
    (**(code **)(puVar11 + 0xf6ac4))();
    uVar6 = (uint)*pbVar1;
    iVar2 = *(int *)(puVar11 + 0xf5d5c);
LAB_00034628:
    do {
      pbVar10 = pbVar1;
      if (uVar6 == 0) {
        bb_putchar(10);
        uVar6 = rStack_bc.waitstatus & 0x7f;
        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {
          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;
        }
        (**(code **)(puVar11 + 0xf5fc8))(uVar6);
        uVar8 = extraout_v1;
      }
      else {
        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);
        uVar8 = uVar6;
        if (iVar7 != 0) {
          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);
          uVar6 = (uint)pbVar10[iVar7];
          pbVar1 = pbVar10 + iVar7;
          goto LAB_00034628;
        }
      }
      uVar6 = (uint)pbVar10[1];
      pbVar1 = pbVar10 + 1;
      if (uVar8 == 0x25) {
        uVar6 = uVar6 - 0x43 & 0xff;
        if (uVar6 < 0x36) {
                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();
          return;
        }
        uVar6 = (uint)pbVar10[2];
        pbVar1 = pbVar10 + 2;
      }
    } while( true );
  }
  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);
  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);
  do {
    iVar5 = (*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru);
    if (iVar2 == iVar5) {
      uVar12 = monotonic_ms();
      resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;
      goto LAB_000343ac;
    }
  } while ((iVar5 != -1) || (**(int **)puVar11 == 4));
  bb_perror_msg(PTR_UINT_0012a18c + 0x1abc);
LAB_000343ac:
  (*(code *)PTR_signal_0012b118)(2,uVar3);
  (*(code *)PTR_signal_0012b118)(3,uVar4);
  return;
}



void FUN_000342a4(undefined4 param_1,int param_2)

{
  byte *pbVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  undefined4 extraout_v1;
  int extraout_v1_00;
  uint extraout_v1_01;
  uint uVar8;
  byte *pbVar9;
  undefined *puVar10;
  byte *local_c4;
  undefined4 local_c0;
  uint local_bc [20];
  undefined4 local_6c;
  int local_68;
  
  iVar5 = param_2;
  FUN_0001cf38();
  puVar10 = PTR_vfork_0012ae44;
  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;
  iVar2 = (*(code *)puVar10)();
  puVar10 = PTR_DAT_0012a214;
  if (iVar2 < 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);
  }
  if (iVar2 == 0) {
    puVar10 = PTR_FUN_0012a400;
    (*(code *)PTR_FUN_0012a400)(param_1);
    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);
    local_68 = iVar2;
    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);
    if (local_c4 == (byte *)0x0) {
      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);
    }
    uVar6 = (**(code **)(puVar10 + 0xf5edc))
                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);
    iVar2 = **(int **)(puVar10 + 0xf6cbc);
    if ((uVar6 & 1) != 0) {
      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);
    }
    if ((uVar6 & 2) != 0) {
      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);
    }
    uVar3 = 2;
    if ((uVar6 & 8) != 0) {
      if ((uVar6 & 4) == 0) {
        uVar3 = 0x80301;
      }
      else {
        uVar3 = 0x80109;
      }
      uVar3 = FUN_0001a4c8(local_c0,uVar3);
    }
    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);
    FUN_0001a670(uVar3,1);
    pbVar1 = local_c4;
    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {
      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {
        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);
      }
    }
    else {
      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);
    }
    iVar2 = *(int *)(puVar10 + 0xf5d5c);
    (**(code **)(puVar10 + 0xf6ac4))();
    uVar6 = (uint)*pbVar1;
    iVar5 = *(int *)(puVar10 + 0xf5d5c);
LAB_00034628:
    do {
      pbVar9 = pbVar1;
      if (uVar6 == 0) {
        FUN_0001a9a8(10);
        uVar6 = local_bc[0] & 0x7f;
        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {
          uVar6 = (local_bc[0] << 0x10) >> 0x18;
        }
        (**(code **)(puVar10 + 0xf5fc8))(uVar6);
        uVar8 = extraout_v1_01;
      }
      else {
        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);
        uVar8 = uVar6;
        if (iVar7 != 0) {
          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);
          uVar6 = (uint)pbVar9[iVar7];
          pbVar1 = pbVar9 + iVar7;
          goto LAB_00034628;
        }
      }
      uVar6 = (uint)pbVar9[1];
      pbVar1 = pbVar9 + 1;
      if (uVar8 == 0x25) {
        uVar6 = uVar6 - 0x43 & 0xff;
        if (uVar6 < 0x36) {
                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();
          return;
        }
        uVar6 = (uint)pbVar9[2];
        pbVar1 = pbVar9 + 2;
      }
    } while( true );
  }
  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);
  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);
  do {
    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);
    if (iVar2 == iVar5) {
      FUN_0001cf38();
      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);
      goto LAB_000343ac;
    }
  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));
  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);
LAB_000343ac:
  (*(code *)PTR_signal_0012b118)(2,uVar3);
  (*(code *)PTR_signal_0012b118)(3,uVar4);
  return;
}


lui gp,0x10
addiu gp,gp,-0x2154
addu gp,gp,t9
addiu sp,sp,-0x40
lw t9,-0x7d54(gp)
sw gp,0x10(sp)
sw ra,0x3c(sp)
sw s7,0x38(sp)
sw s6,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw a1,0x44(sp)
bal 0x0001cf38
_sw a0,0x40(sp)
lw gp,0x10(sp)
lw v0,0x44(sp)
lw t9,-0x730c(gp)
jalr t9
_sw v1,0x4c(v0)
bgez v0,0x00034318
_lw gp,0x10(sp)
lw a0,-0x7fc4(gp)
lw t9,-0x7f64(gp)
bal 0x00018d6c
_addiu a0,a0,-0x94c
beq v0,zero,0x00034424
_or s0,v0,zero
lw t9,-0x7038(gp)
li a1,0x1
lw v0,0x44(sp)
li a0,0x2
lw s7,-0x7f3c(gp)
li s4,-0x1
li s3,0x4
jalr t9
_addiu s6,v0,0x4
lw gp,0x10(sp)
li a1,0x1
li a0,0x3
lw t9,-0x7038(gp)
jalr t9
_or s2,v0,zero
lw gp,0x10(sp)
or s1,v0,zero
lw s5,0x44(sp)
lw t9,-0x72c8(gp)
or a1,zero,zero
or a2,s6,zero
jalr t9
_or a0,s5,zero
beq s0,v0,0x000343fc
_lw gp,0x10(sp)
bne v0,s4,0x0003436c
_lw t9,-0x72c8(gp)
lw v0,0x0(s7)
lw v0,0x0(v0)
beq v0,s3,0x0003436c
_lw a0,-0x7fc4(gp)
lw t9,-0x7f18(gp)
bal 0x00018cb8
_addiu a0,a0,0x1abc
lw gp,0x10(sp)
lw t9,-0x7038(gp)
li a0,0x2
jalr t9
_or a1,s2,zero
li a0,0x3
lw gp,0x10(sp)
lw t9,-0x7038(gp)
jalr t9
_or a1,s1,zero
lw ra,0x3c(sp)
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x7d54(gp)
bal 0x0001cf38
_nop
lw v0,0x44(sp)
lw gp,0x10(sp)
lw v0,0x4c(v0)
subu v1,v1,v0
lw v0,0x44(sp)
b 0x000343ac
_sw v1,0x4c(v0)
lw t9,-0x7d50(gp)
jalr t9
_lw a0,0x40(sp)
lui gp,0x10
addiu gp,gp,-0x22e0
addu gp,gp,t9
lw v0,-0x7004(gp)
addiu sp,sp,-0xb8
lw a0,-0x7fa8(gp)
lw t9,-0x7184(gp)
sw gp,0x18(sp)
sw s4,0xa0(sp)
addiu a0,a0,-0x7370
sw ra,0xb4(sp)
or s4,a1,zero
sw s8,0xb0(sp)
sw s7,0xac(sp)
sw s6,0xa8(sp)
sw s5,0xa4(sp)
sw s3,0x9c(sp)
sw s2,0x98(sp)
sw s1,0x94(sp)
sw s0,0x90(sp)
lw v0,0x0(v0)
sw v0,0x8c(sp)
jalr t9
_nop
bne v0,zero,0x000344a0
_lw gp,0x18(sp)
lw v0,-0x7fa8(gp)
addiu v0,v0,0x5af0
lw a1,-0x7fc4(gp)
addiu a3,sp,0x34
lw t9,-0x7e44(gp)
addiu a2,sp,0x38
or a0,s4,zero
sw v0,0x34(sp)
jalr t9
_addiu a1,a1,-0x1ea0
lw gp,0x18(sp)
andi v1,v0,0x1
lw a0,-0x7064(gp)
beq v1,zero,0x000344e0
_lw s0,0x0(a0)
lw v1,-0x7fa8(gp)
addiu v1,v1,0x580e
sw v1,0x34(sp)
andi v1,v0,0x2
beq v1,zero,0x000344f4
_lw v1,-0x7fa8(gp)
addiu v1,v1,0x5ad9
sw v1,0x34(sp)
andi v1,v0,0x8
beq v1,zero,0x00034524
_li s1,0x2
andi v0,v0,0x4
bne v0,zero,0x00034e20
_lui a1,0x8
addiu a1,a1,0x301
lw t9,-0x7e38(gp)
bal 0x0001a4c8
_lw a0,0x38(sp)
lw gp,0x18(sp)
or s1,v0,zero
lw t9,-0x7db8(gp)
sll s0,s0,0x2
addiu a1,sp,0x3c
addu s4,s4,s0
addiu t9,t9,0x42a4
bal 0x000342a4
_or a0,s4,zero
li a1,0x1
lw gp,0x18(sp)
lw t9,-0x7ed4(gp)
bal 0x0001a670
_or a0,s1,zero
lw v0,0x3c(sp)
lw gp,0x18(sp)
andi a2,v0,0x7f
addiu v1,a2,0x1
seb v1,v1
sra v1,v1,0x1
blez v1,0x00034680
_lw s0,0x34(sp)
lw a1,-0x7fc4(gp)
li a0,0x1
lw t9,-0x7320(gp)
jalr t9
_addiu a1,a1,0x1ac4
lw gp,0x18(sp)
lw v0,0x4c(sp)
lw s3,0x44(sp)
lw a0,0x48(sp)
addu s3,s3,v0
lui v0,0x1062
sra v1,s3,0x1f
addiu v0,v0,0x4dd3
mult s3,v0
lw s3,0x40(sp)
addu s3,s3,a0
mfhi v0
sra v0,v0,0x6
subu v0,v0,v1
li v1,0x3e8
mul a0,s3,v1
addu s3,a0,v0
sltiu v0,s3,0xa
bne v0,zero,0x000345ec
_li s2,0x1
lui s2,0xcccc
ori s2,s2,0xcccd
multu s3,s2
mfhi s2
srl s2,s2,0x3
lw t9,-0x725c(gp)
lw s8,-0x7fc4(gp)
lw s7,-0x7fa8(gp)
jalr t9
_nop
lw gp,0x18(sp)
or s1,v0,zero
li v0,0x64
lbu v1,0x0(s0)
mul s3,s3,v0
lw v0,-0x7fa8(gp)
lw s6,-0x7fc4(gp)
addiu v0,v0,-0x2d18
addiu s6,s6,0x1b4c
sw v0,0x24(sp)
beq v1,zero,0x000346a8
_lw t9,-0x6fb8(gp)
addiu a1,s8,0x1b10
sw v1,0x28(sp)
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
beq v0,zero,0x000346e0
_lw v1,0x28(sp)
lw a1,-0x7fc4(gp)
addu s5,s0,v0
lw t9,-0x7320(gp)
li a0,0x1
or a3,s0,zero
addiu a1,a1,0x12ec
jalr t9
_or a2,v0,zero
lw gp,0x18(sp)
lbu v0,0x0(s5)
or v1,v0,zero
b 0x00034628
_or s0,s5,zero
bne a2,zero,0x0003458c
_ext a2,v0,0x8,0x8
beq a2,zero,0x0003458c
_lw a1,-0x7fc4(gp)
li a0,0x1
lw t9,-0x7320(gp)
jalr t9
_addiu a1,a1,0x1ae8
b 0x0003458c
_lw gp,0x18(sp)
lw t9,-0x7dfc(gp)
bal 0x0001a9a8
_li a0,0xa
lw v1,0x3c(sp)
andi a0,v1,0x7f
addiu v0,a0,0x1
seb v0,v0
sra v0,v0,0x1
bgtz v0,0x000346d4
_lw gp,0x18(sp)
ext a0,v1,0x8,0x8
lw t9,-0x7d58(gp)
jalr t9
_nop
li a0,0x25
lbu v0,0x1(s0)
bne v1,a0,0x00034674
_addiu s5,s0,0x1
addiu v0,v0,-0x43
andi v0,v0,0xff
sltiu v1,v0,0x36
bne v1,zero,0x00034714
_addiu s5,s0,0x2
lbu v0,0x2(s0)
or v1,v0,zero
b 0x00034628
_or s0,s5,zero
sll v0,v0,0x2
addu v0,s6,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
b 0x00034510
_addiu a1,a1,0x109
(translation_unit "void FUN_000342a4(undefined4 param_1,int param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 extraout_v1;\n  int extraout_v1_00;\n  uint extraout_v1_01;\n  uint uVar8;\n  byte *pbVar9;\n  undefined *puVar10;\n  byte *local_c4;\n  undefined4 local_c0;\n  uint local_bc [20];\n  undefined4 local_6c;\n  int local_68;\n  \n  iVar5 = param_2;\n  FUN_0001cf38();\n  puVar10 = PTR_vfork_0012ae44;\n  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;\n  iVar2 = (*(code *)puVar10)();\n  puVar10 = PTR_DAT_0012a214;\n  if (iVar2 < 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));\n  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}\n\n" (function_definition "void FUN_000342a4(undefined4 param_1,int param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 extraout_v1;\n  int extraout_v1_00;\n  uint extraout_v1_01;\n  uint uVar8;\n  byte *pbVar9;\n  undefined *puVar10;\n  byte *local_c4;\n  undefined4 local_c0;\n  uint local_bc [20];\n  undefined4 local_6c;\n  int local_68;\n  \n  iVar5 = param_2;\n  FUN_0001cf38();\n  puVar10 = PTR_vfork_0012ae44;\n  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;\n  iVar2 = (*(code *)puVar10)();\n  puVar10 = PTR_DAT_0012a214;\n  if (iVar2 < 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));\n  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}" primitive_type (function_declarator "FUN_000342a4(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 extraout_v1;\n  int extraout_v1_00;\n  uint extraout_v1_01;\n  uint uVar8;\n  byte *pbVar9;\n  undefined *puVar10;\n  byte *local_c4;\n  undefined4 local_c0;\n  uint local_bc [20];\n  undefined4 local_6c;\n  int local_68;\n  \n  iVar5 = param_2;\n  FUN_0001cf38();\n  puVar10 = PTR_vfork_0012ae44;\n  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;\n  iVar2 = (*(code *)puVar10)();\n  puVar10 = PTR_DAT_0012a214;\n  if (iVar2 < 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));\n  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 extraout_v1;" type_identifier identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "uint extraout_v1_01;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *local_c4;" type_identifier (pointer_declarator "*local_c4" * identifier) ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "uint local_bc [20];" type_identifier (array_declarator "local_bc [20]" identifier [ number_literal ]) ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (expression_statement "iVar5 = param_2;" (assignment_expression "iVar5 = param_2" identifier = identifier) ;) (expression_statement "FUN_0001cf38();" (call_expression "FUN_0001cf38()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = PTR_vfork_0012ae44;" (assignment_expression "puVar10 = PTR_vfork_0012ae44" identifier = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 0x4c) = extraout_v1;" (assignment_expression "*(undefined4 *)(param_2 + 0x4c) = extraout_v1" (pointer_expression "*(undefined4 *)(param_2 + 0x4c)" * (cast_expression "(undefined4 *)(param_2 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (*(code *)puVar10)();" (assignment_expression "iVar2 = (*(code *)puVar10)()" identifier = (call_expression "(*(code *)puVar10)()" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "puVar10 = PTR_DAT_0012a214;" (assignment_expression "puVar10 = PTR_DAT_0012a214" identifier = identifier) ;) (if_statement "if (iVar2 < 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }" { comment (expression_statement "FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);" (call_expression "FUN_00018d6c(PTR_UINT_0012a18c + -0x94c)" identifier (argument_list "(PTR_UINT_0012a18c + -0x94c)" ( (binary_expression "PTR_UINT_0012a18c + -0x94c" identifier + number_literal) ))) ;) })) (if_statement "if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }" { (expression_statement "puVar10 = PTR_FUN_0012a400;" (assignment_expression "puVar10 = PTR_FUN_0012a400" identifier = identifier) ;) (expression_statement "(*(code *)PTR_FUN_0012a400)(param_1);" (call_expression "(*(code *)PTR_FUN_0012a400)(param_1)" (parenthesized_expression "(*(code *)PTR_FUN_0012a400)" ( (pointer_expression "*(code *)PTR_FUN_0012a400" * (cast_expression "(code *)PTR_FUN_0012a400" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);" (assignment_expression "local_6c = **(undefined4 **)(puVar10 + 0xf6d1c)" identifier = (pointer_expression "**(undefined4 **)(puVar10 + 0xf6d1c)" * (pointer_expression "*(undefined4 **)(puVar10 + 0xf6d1c)" * (cast_expression "(undefined4 **)(puVar10 + 0xf6d1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6d1c)" ( (binary_expression "puVar10 + 0xf6d1c" identifier + number_literal) )))))) ;) (expression_statement "local_68 = iVar2;" (assignment_expression "local_68 = iVar2" identifier = identifier) ;) (expression_statement "local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);" (assignment_expression "local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" identifier = (cast_expression "(byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6b9c))" ( (pointer_expression "**(code **)(puVar10 + 0xf6b9c)" * (pointer_expression "*(code **)(puVar10 + 0xf6b9c)" * (cast_expression "(code **)(puVar10 + 0xf6b9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6b9c)" ( (binary_expression "puVar10 + 0xf6b9c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar10 + 0xf5d78) + -0x7370)" ( (binary_expression "*(int *)(puVar10 + 0xf5d78) + -0x7370" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" * (cast_expression "(int *)(puVar10 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d78)" ( (binary_expression "puVar10 + 0xf5d78" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }" if (parenthesized_expression "(local_c4 == (byte *)0x0)" ( (binary_expression "local_c4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }" { (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" ( (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x5af0" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" * (cast_expression "(int *)(puVar10 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d78)" ( (binary_expression "puVar10 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);" (assignment_expression "uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" identifier = (call_expression "(**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" (parenthesized_expression "(**(code **)(puVar10 + 0xf5edc))" ( (pointer_expression "**(code **)(puVar10 + 0xf5edc)" * (pointer_expression "*(code **)(puVar10 + 0xf5edc)" * (cast_expression "(code **)(puVar10 + 0xf5edc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf5edc)" ( (binary_expression "puVar10 + 0xf5edc" identifier + number_literal) ))))) )) (argument_list "(iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" ( identifier , (binary_expression "*(int *)(puVar10 + 0xf5d5c) + -0x1ea0" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) )))) + number_literal) , (pointer_expression "&local_c0" & identifier) , (pointer_expression "&local_c4" & identifier) )))) ;) (expression_statement "iVar2 = **(int **)(puVar10 + 0xf6cbc);" (assignment_expression "iVar2 = **(int **)(puVar10 + 0xf6cbc)" identifier = (pointer_expression "**(int **)(puVar10 + 0xf6cbc)" * (pointer_expression "*(int **)(puVar10 + 0xf6cbc)" * (cast_expression "(int **)(puVar10 + 0xf6cbc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6cbc)" ( (binary_expression "puVar10 + 0xf6cbc" identifier + number_literal) )))))) ;) (if_statement "if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }" if (parenthesized_expression "((uVar6 & 1) != 0)" ( (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }" { (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x580e)" ( (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x580e" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" * (cast_expression "(int *)(puVar10 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d78)" ( (binary_expression "puVar10 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (if_statement "if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }" if (parenthesized_expression "((uVar6 & 2) != 0)" ( (binary_expression "(uVar6 & 2) != 0" (parenthesized_expression "(uVar6 & 2)" ( (binary_expression "uVar6 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }" { (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" ( (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x5ad9" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" * (cast_expression "(int *)(puVar10 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d78)" ( (binary_expression "puVar10 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" identifier = number_literal) ;) (if_statement "if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }" if (parenthesized_expression "((uVar6 & 8) != 0)" ( (binary_expression "(uVar6 & 8) != 0" (parenthesized_expression "(uVar6 & 8)" ( (binary_expression "uVar6 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }" { (if_statement "if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }" if (parenthesized_expression "((uVar6 & 4) == 0)" ( (binary_expression "(uVar6 & 4) == 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar3 = 0x80301;\n      }" { (expression_statement "uVar3 = 0x80301;" (assignment_expression "uVar3 = 0x80301" identifier = number_literal) ;) }) (else_clause "else {\n        uVar3 = 0x80109;\n      }" else (compound_statement "{\n        uVar3 = 0x80109;\n      }" { (expression_statement "uVar3 = 0x80109;" (assignment_expression "uVar3 = 0x80109" identifier = number_literal) ;) }))) (expression_statement "uVar3 = FUN_0001a4c8(local_c0,uVar3);" (assignment_expression "uVar3 = FUN_0001a4c8(local_c0,uVar3)" identifier = (call_expression "FUN_0001a4c8(local_c0,uVar3)" identifier (argument_list "(local_c0,uVar3)" ( identifier , identifier )))) ;) })) (expression_statement "FUN_000342a4(iVar5 + iVar2 * 4,local_bc);" (call_expression "FUN_000342a4(iVar5 + iVar2 * 4,local_bc)" identifier (argument_list "(iVar5 + iVar2 * 4,local_bc)" ( (binary_expression "iVar5 + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) , identifier ))) ;) (expression_statement "FUN_0001a670(uVar3,1);" (call_expression "FUN_0001a670(uVar3,1)" identifier (argument_list "(uVar3,1)" ( identifier , number_literal ))) ;) (expression_statement "pbVar1 = local_c4;" (assignment_expression "pbVar1 = local_c4" identifier = identifier) ;) (if_statement "if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" if (parenthesized_expression "((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1" (cast_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)(local_bc[0] & 0x7f) + '\x01')" ( (binary_expression "(char)(local_bc[0] & 0x7f) + '\x01'" (cast_expression "(char)(local_bc[0] & 0x7f)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(local_bc[0] & 0x7f)" ( (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" identifier [ number_literal ]) & number_literal) ))) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }" { (if_statement "if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }" if (parenthesized_expression "(((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0))" ( (binary_expression "((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)" (parenthesized_expression "((local_bc[0] & 0x7f) == 0)" ( (binary_expression "(local_bc[0] & 0x7f) == 0" (parenthesized_expression "(local_bc[0] & 0x7f)" ( (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "((local_bc[0] << 0x10) >> 0x18 != 0)" ( (binary_expression "(local_bc[0] << 0x10) >> 0x18 != 0" (binary_expression "(local_bc[0] << 0x10) >> 0x18" (parenthesized_expression "(local_bc[0] << 0x10)" ( (binary_expression "local_bc[0] << 0x10" (subscript_expression "local_bc[0]" identifier [ number_literal ]) << number_literal) )) >> number_literal) != number_literal) ))) )) (compound_statement "{\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }" { (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar10 + 0xf6a00)" * (pointer_expression "*(code **)(puVar10 + 0xf6a00)" * (cast_expression "(code **)(puVar10 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6a00)" ( (binary_expression "puVar10 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8)" ( number_literal , (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x1ae8" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) )))) + number_literal) ))) ;) })) }) (else_clause "else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" else (compound_statement "{\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" { (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar10 + 0xf6a00)" * (pointer_expression "*(code **)(puVar10 + 0xf6a00)" * (cast_expression "(code **)(puVar10 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6a00)" ( (binary_expression "puVar10 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4)" ( number_literal , (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x1ac4" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) )))) + number_literal) ))) ;) }))) (expression_statement "iVar2 = *(int *)(puVar10 + 0xf5d5c);" (assignment_expression "iVar2 = *(int *)(puVar10 + 0xf5d5c)" identifier = (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar10 + 0xf6ac4))();" (call_expression "(**(code **)(puVar10 + 0xf6ac4))()" (parenthesized_expression "(**(code **)(puVar10 + 0xf6ac4))" ( (pointer_expression "**(code **)(puVar10 + 0xf6ac4)" * (pointer_expression "*(code **)(puVar10 + 0xf6ac4)" * (cast_expression "(code **)(puVar10 + 0xf6ac4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6ac4)" ( (binary_expression "puVar10 + 0xf6ac4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar6 = (uint)*pbVar1;" (assignment_expression "uVar6 = (uint)*pbVar1" identifier = (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "iVar5 = *(int *)(puVar10 + 0xf5d5c);" (assignment_expression "iVar5 = *(int *)(puVar10 + 0xf5d5c)" identifier = (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );" statement_identifier : (do_statement "do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );" do (compound_statement "{\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    }" { (expression_statement "pbVar9 = pbVar1;" (assignment_expression "pbVar9 = pbVar1" identifier = identifier) ;) (if_statement "if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }" { (expression_statement "FUN_0001a9a8(10);" (call_expression "FUN_0001a9a8(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (expression_statement "uVar6 = local_bc[0] & 0x7f;" (assignment_expression "uVar6 = local_bc[0] & 0x7f" identifier = (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" identifier [ number_literal ]) & number_literal)) ;) (if_statement "if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }" if (parenthesized_expression "((char)((char)uVar6 + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)uVar6 + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)uVar6 + '\x01') >> 1" (cast_expression "(char)((char)uVar6 + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)uVar6 + '\x01')" ( (binary_expression "(char)uVar6 + '\x01'" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }" { (expression_statement "uVar6 = (local_bc[0] << 0x10) >> 0x18;" (assignment_expression "uVar6 = (local_bc[0] << 0x10) >> 0x18" identifier = (binary_expression "(local_bc[0] << 0x10) >> 0x18" (parenthesized_expression "(local_bc[0] << 0x10)" ( (binary_expression "local_bc[0] << 0x10" (subscript_expression "local_bc[0]" identifier [ number_literal ]) << number_literal) )) >> number_literal)) ;) })) (expression_statement "(**(code **)(puVar10 + 0xf5fc8))(uVar6);" (call_expression "(**(code **)(puVar10 + 0xf5fc8))(uVar6)" (parenthesized_expression "(**(code **)(puVar10 + 0xf5fc8))" ( (pointer_expression "**(code **)(puVar10 + 0xf5fc8)" * (pointer_expression "*(code **)(puVar10 + 0xf5fc8)" * (cast_expression "(code **)(puVar10 + 0xf5fc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf5fc8)" ( (binary_expression "puVar10 + 0xf5fc8" identifier + number_literal) ))))) )) (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "uVar8 = extraout_v1_01;" (assignment_expression "uVar8 = extraout_v1_01" identifier = identifier) ;) }) (else_clause "else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" else (compound_statement "{\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" { (expression_statement "iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);" (assignment_expression "iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10)" identifier = (call_expression "(**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6d68))" ( (pointer_expression "**(code **)(puVar10 + 0xf6d68)" * (pointer_expression "*(code **)(puVar10 + 0xf6d68)" * (cast_expression "(code **)(puVar10 + 0xf6d68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6d68)" ( (binary_expression "puVar10 + 0xf6d68" identifier + number_literal) ))))) )) (argument_list "(pbVar9,iVar2 + 0x1b10)" ( identifier , (binary_expression "iVar2 + 0x1b10" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }" { (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar10 + 0xf6a00)" * (pointer_expression "*(code **)(puVar10 + 0xf6a00)" * (cast_expression "(code **)(puVar10 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6a00)" ( (binary_expression "puVar10 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9)" ( number_literal , (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x12ec" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) )))) + number_literal) , identifier , identifier ))) ;) (expression_statement "uVar6 = (uint)pbVar9[iVar7];" (assignment_expression "uVar6 = (uint)pbVar9[iVar7]" identifier = (cast_expression "(uint)pbVar9[iVar7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[iVar7]" identifier [ identifier ]))) ;) (expression_statement "pbVar1 = pbVar9 + iVar7;" (assignment_expression "pbVar1 = pbVar9 + iVar7" identifier = (binary_expression "pbVar9 + iVar7" identifier + identifier)) ;) (goto_statement "goto LAB_00034628;" goto statement_identifier ;) })) }))) (expression_statement "uVar6 = (uint)pbVar9[1];" (assignment_expression "uVar6 = (uint)pbVar9[1]" identifier = (cast_expression "(uint)pbVar9[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar9 + 1;" (assignment_expression "pbVar1 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }" if (parenthesized_expression "(uVar8 == 0x25)" ( (binary_expression "uVar8 == 0x25" identifier == number_literal) )) (compound_statement "{\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }" { (expression_statement "uVar6 = uVar6 - 0x43 & 0xff;" (assignment_expression "uVar6 = uVar6 - 0x43 & 0xff" identifier = (binary_expression "uVar6 - 0x43 & 0xff" (binary_expression "uVar6 - 0x43" identifier - number_literal) & number_literal)) ;) (if_statement "if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }" if (parenthesized_expression "(uVar6 < 0x36)" ( (binary_expression "uVar6 < 0x36" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }" { comment comment (expression_statement "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();" (call_expression "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))()" (parenthesized_expression "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))" ( (pointer_expression "*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" * (cast_expression "(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" ( (binary_expression "puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20" (binary_expression "puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4)" identifier + (pointer_expression "*(int *)(iVar5 + 0x1b4c + uVar6 * 4)" * (cast_expression "(int *)(iVar5 + 0x1b4c + uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1b4c + uVar6 * 4)" ( (binary_expression "iVar5 + 0x1b4c + uVar6 * 4" (binary_expression "iVar5 + 0x1b4c" identifier + number_literal) + (binary_expression "uVar6 * 4" identifier * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar6 = (uint)pbVar9[2];" (assignment_expression "uVar6 = (uint)pbVar9[2]" identifier = (cast_expression "(uint)pbVar9[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar9 + 2;" (assignment_expression "pbVar1 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "uVar3 = (*(code *)PTR_signal_0012b118)(2,1);" (assignment_expression "uVar3 = (*(code *)PTR_signal_0012b118)(2,1)" identifier = (call_expression "(*(code *)PTR_signal_0012b118)(2,1)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(2,1)" ( number_literal , number_literal )))) ;) (expression_statement "uVar4 = (*(code *)PTR_signal_0012b118)(3,1);" (assignment_expression "uVar4 = (*(code *)PTR_signal_0012b118)(3,1)" identifier = (call_expression "(*(code *)PTR_signal_0012b118)(3,1)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(3,1)" ( number_literal , number_literal )))) ;) (do_statement "do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));" do (compound_statement "{\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  }" { (expression_statement "iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);" (assignment_expression "iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4)" identifier = (call_expression "(*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4)" (parenthesized_expression "(*(code *)PTR_wait3_0012ae88)" ( (pointer_expression "*(code *)PTR_wait3_0012ae88" * (cast_expression "(code *)PTR_wait3_0012ae88" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,0,param_2 + 4)" ( identifier , number_literal , (binary_expression "param_2 + 4" identifier + number_literal) )))) ;) (if_statement "if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }" if (parenthesized_expression "(iVar2 == iVar5)" ( (binary_expression "iVar2 == iVar5" identifier == identifier) )) (compound_statement "{\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }" { (expression_statement "FUN_0001cf38();" (call_expression "FUN_0001cf38()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);" (assignment_expression "*(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c)" (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) = (binary_expression "extraout_v1_00 - *(int *)(param_2 + 0x4c)" identifier - (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))))) ;) (goto_statement "goto LAB_000343ac;" goto statement_identifier ;) })) }) while (parenthesized_expression "((iVar5 != -1) || (**(int **)puVar10 == 4))" ( (binary_expression "(iVar5 != -1) || (**(int **)puVar10 == 4)" (parenthesized_expression "(iVar5 != -1)" ( (binary_expression "iVar5 != -1" identifier != number_literal) )) || (parenthesized_expression "(**(int **)puVar10 == 4)" ( (binary_expression "**(int **)puVar10 == 4" (pointer_expression "**(int **)puVar10" * (pointer_expression "*(int **)puVar10" * (cast_expression "(int **)puVar10" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) == number_literal) ))) )) ;) (expression_statement "FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);" (call_expression "FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc)" identifier (argument_list "(PTR_UINT_0012a18c + 0x1abc)" ( (binary_expression "PTR_UINT_0012a18c + 0x1abc" identifier + number_literal) ))) ;) (labeled_statement "LAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);" statement_identifier : (expression_statement "(*(code *)PTR_signal_0012b118)(2,uVar3);" (call_expression "(*(code *)PTR_signal_0012b118)(2,uVar3)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(2,uVar3)" ( number_literal , identifier ))) ;)) (expression_statement "(*(code *)PTR_signal_0012b118)(3,uVar4);" (call_expression "(*(code *)PTR_signal_0012b118)(3,uVar4)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(3,uVar4)" ( number_literal , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void run_command(char **cmd,resource_t *resp)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  uint extraout_v1;\n  uint uVar8;\n  resource_t *prVar9;\n  byte *pbVar10;\n  undefined *puVar11;\n  ulonglong uVar12;\n  byte *pbStack_c4;\n  char *pcStack_c0;\n  resource_t rStack_bc;\n  undefined4 uStack_6c;\n  int iStack_68;\n  \n  prVar9 = resp;\n  uVar12 = monotonic_ms();\n  puVar11 = PTR_vfork_0012ae44;\n  resp->elapsed_ms = (uint)uVar12;\n  iVar2 = (*(code *)puVar11)();\n  puVar11 = PTR_bb_errno_0012a214;\n  if (iVar2 < 0) {\n                    /* WARNING: Subroutine does not return */\n    bb_perror_msg_and_die(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar11 = PTR_BB_EXECVP_or_die_0012a400;\n    (*(code *)PTR_BB_EXECVP_or_die_0012a400)(cmd);\n    uStack_6c = **(undefined4 **)(puVar11 + 0xf6d1c);\n    iStack_68 = iVar2;\n    pbStack_c4 = (byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370);\n    if (pbStack_c4 == (byte *)0x0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar11 + 0xf5edc))\n                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4);\n    iVar2 = **(int **)(puVar11 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);\n    }\n    iVar5 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        iVar5 = 0x80301;\n      }\n      else {\n        iVar5 = 0x80109;\n      }\n      iVar5 = xopen(pcStack_c0,iVar5);\n    }\n    run_command((char **)(&prVar9->waitstatus + iVar2),&rStack_bc);\n    xdup2(iVar5,1);\n    pbVar1 = pbStack_c4;\n    if ((char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01') {\n      if (((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar5 = *(int *)(puVar11 + 0xf5d5c);\n    (**(code **)(puVar11 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar2 = *(int *)(puVar11 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar10 = pbVar1;\n      if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar10[1];\n      pbVar1 = pbVar10 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru);\n    if (iVar2 == iVar5) {\n      uVar12 = monotonic_ms();\n      resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar11 == 4));\n  bb_perror_msg(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}\n\n" (function_definition "void run_command(char **cmd,resource_t *resp)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  uint extraout_v1;\n  uint uVar8;\n  resource_t *prVar9;\n  byte *pbVar10;\n  undefined *puVar11;\n  ulonglong uVar12;\n  byte *pbStack_c4;\n  char *pcStack_c0;\n  resource_t rStack_bc;\n  undefined4 uStack_6c;\n  int iStack_68;\n  \n  prVar9 = resp;\n  uVar12 = monotonic_ms();\n  puVar11 = PTR_vfork_0012ae44;\n  resp->elapsed_ms = (uint)uVar12;\n  iVar2 = (*(code *)puVar11)();\n  puVar11 = PTR_bb_errno_0012a214;\n  if (iVar2 < 0) {\n                    /* WARNING: Subroutine does not return */\n    bb_perror_msg_and_die(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar11 = PTR_BB_EXECVP_or_die_0012a400;\n    (*(code *)PTR_BB_EXECVP_or_die_0012a400)(cmd);\n    uStack_6c = **(undefined4 **)(puVar11 + 0xf6d1c);\n    iStack_68 = iVar2;\n    pbStack_c4 = (byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370);\n    if (pbStack_c4 == (byte *)0x0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar11 + 0xf5edc))\n                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4);\n    iVar2 = **(int **)(puVar11 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);\n    }\n    iVar5 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        iVar5 = 0x80301;\n      }\n      else {\n        iVar5 = 0x80109;\n      }\n      iVar5 = xopen(pcStack_c0,iVar5);\n    }\n    run_command((char **)(&prVar9->waitstatus + iVar2),&rStack_bc);\n    xdup2(iVar5,1);\n    pbVar1 = pbStack_c4;\n    if ((char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01') {\n      if (((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar5 = *(int *)(puVar11 + 0xf5d5c);\n    (**(code **)(puVar11 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar2 = *(int *)(puVar11 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar10 = pbVar1;\n      if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar10[1];\n      pbVar1 = pbVar10 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru);\n    if (iVar2 == iVar5) {\n      uVar12 = monotonic_ms();\n      resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar11 == 4));\n  bb_perror_msg(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}" primitive_type (function_declarator "run_command(char **cmd,resource_t *resp)" identifier (parameter_list "(char **cmd,resource_t *resp)" ( (parameter_declaration "char **cmd" primitive_type (pointer_declarator "**cmd" * (pointer_declarator "*cmd" * identifier))) , (parameter_declaration "resource_t *resp" type_identifier (pointer_declarator "*resp" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  uint extraout_v1;\n  uint uVar8;\n  resource_t *prVar9;\n  byte *pbVar10;\n  undefined *puVar11;\n  ulonglong uVar12;\n  byte *pbStack_c4;\n  char *pcStack_c0;\n  resource_t rStack_bc;\n  undefined4 uStack_6c;\n  int iStack_68;\n  \n  prVar9 = resp;\n  uVar12 = monotonic_ms();\n  puVar11 = PTR_vfork_0012ae44;\n  resp->elapsed_ms = (uint)uVar12;\n  iVar2 = (*(code *)puVar11)();\n  puVar11 = PTR_bb_errno_0012a214;\n  if (iVar2 < 0) {\n                    /* WARNING: Subroutine does not return */\n    bb_perror_msg_and_die(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar11 = PTR_BB_EXECVP_or_die_0012a400;\n    (*(code *)PTR_BB_EXECVP_or_die_0012a400)(cmd);\n    uStack_6c = **(undefined4 **)(puVar11 + 0xf6d1c);\n    iStack_68 = iVar2;\n    pbStack_c4 = (byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370);\n    if (pbStack_c4 == (byte *)0x0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar11 + 0xf5edc))\n                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4);\n    iVar2 = **(int **)(puVar11 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);\n    }\n    iVar5 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        iVar5 = 0x80301;\n      }\n      else {\n        iVar5 = 0x80109;\n      }\n      iVar5 = xopen(pcStack_c0,iVar5);\n    }\n    run_command((char **)(&prVar9->waitstatus + iVar2),&rStack_bc);\n    xdup2(iVar5,1);\n    pbVar1 = pbStack_c4;\n    if ((char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01') {\n      if (((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar5 = *(int *)(puVar11 + 0xf5d5c);\n    (**(code **)(puVar11 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar2 = *(int *)(puVar11 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar10 = pbVar1;\n      if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar10[1];\n      pbVar1 = pbVar10 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru);\n    if (iVar2 == iVar5) {\n      uVar12 = monotonic_ms();\n      resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar11 == 4));\n  bb_perror_msg(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "resource_t *prVar9;" type_identifier (pointer_declarator "*prVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "ulonglong uVar12;" type_identifier identifier ;) (declaration "byte *pbStack_c4;" type_identifier (pointer_declarator "*pbStack_c4" * identifier) ;) (declaration "char *pcStack_c0;" primitive_type (pointer_declarator "*pcStack_c0" * identifier) ;) (declaration "resource_t rStack_bc;" type_identifier identifier ;) (declaration "undefined4 uStack_6c;" type_identifier identifier ;) (declaration "int iStack_68;" primitive_type identifier ;) (expression_statement "prVar9 = resp;" (assignment_expression "prVar9 = resp" identifier = identifier) ;) (expression_statement "uVar12 = monotonic_ms();" (assignment_expression "uVar12 = monotonic_ms()" identifier = (call_expression "monotonic_ms()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar11 = PTR_vfork_0012ae44;" (assignment_expression "puVar11 = PTR_vfork_0012ae44" identifier = identifier) ;) (expression_statement "resp->elapsed_ms = (uint)uVar12;" (assignment_expression "resp->elapsed_ms = (uint)uVar12" (field_expression "resp->elapsed_ms" identifier -> field_identifier) = (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar2 = (*(code *)puVar11)();" (assignment_expression "iVar2 = (*(code *)puVar11)()" identifier = (call_expression "(*(code *)puVar11)()" (parenthesized_expression "(*(code *)puVar11)" ( (pointer_expression "*(code *)puVar11" * (cast_expression "(code *)puVar11" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "puVar11 = PTR_bb_errno_0012a214;" (assignment_expression "puVar11 = PTR_bb_errno_0012a214" identifier = identifier) ;) (if_statement "if (iVar2 < 0) {\n                    /* WARNING: Subroutine does not return */\n    bb_perror_msg_and_die(PTR_UINT_0012a18c + -0x94c);\n  }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    bb_perror_msg_and_die(PTR_UINT_0012a18c + -0x94c);\n  }" { comment (expression_statement "bb_perror_msg_and_die(PTR_UINT_0012a18c + -0x94c);" (call_expression "bb_perror_msg_and_die(PTR_UINT_0012a18c + -0x94c)" identifier (argument_list "(PTR_UINT_0012a18c + -0x94c)" ( (binary_expression "PTR_UINT_0012a18c + -0x94c" identifier + number_literal) ))) ;) })) (if_statement "if (iVar2 == 0) {\n    puVar11 = PTR_BB_EXECVP_or_die_0012a400;\n    (*(code *)PTR_BB_EXECVP_or_die_0012a400)(cmd);\n    uStack_6c = **(undefined4 **)(puVar11 + 0xf6d1c);\n    iStack_68 = iVar2;\n    pbStack_c4 = (byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370);\n    if (pbStack_c4 == (byte *)0x0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar11 + 0xf5edc))\n                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4);\n    iVar2 = **(int **)(puVar11 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);\n    }\n    iVar5 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        iVar5 = 0x80301;\n      }\n      else {\n        iVar5 = 0x80109;\n      }\n      iVar5 = xopen(pcStack_c0,iVar5);\n    }\n    run_command((char **)(&prVar9->waitstatus + iVar2),&rStack_bc);\n    xdup2(iVar5,1);\n    pbVar1 = pbStack_c4;\n    if ((char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01') {\n      if (((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar5 = *(int *)(puVar11 + 0xf5d5c);\n    (**(code **)(puVar11 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar2 = *(int *)(puVar11 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar10 = pbVar1;\n      if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar10[1];\n      pbVar1 = pbVar10 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }\n    } while( true );\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar11 = PTR_BB_EXECVP_or_die_0012a400;\n    (*(code *)PTR_BB_EXECVP_or_die_0012a400)(cmd);\n    uStack_6c = **(undefined4 **)(puVar11 + 0xf6d1c);\n    iStack_68 = iVar2;\n    pbStack_c4 = (byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370);\n    if (pbStack_c4 == (byte *)0x0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar11 + 0xf5edc))\n                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4);\n    iVar2 = **(int **)(puVar11 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);\n    }\n    iVar5 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        iVar5 = 0x80301;\n      }\n      else {\n        iVar5 = 0x80109;\n      }\n      iVar5 = xopen(pcStack_c0,iVar5);\n    }\n    run_command((char **)(&prVar9->waitstatus + iVar2),&rStack_bc);\n    xdup2(iVar5,1);\n    pbVar1 = pbStack_c4;\n    if ((char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01') {\n      if (((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar5 = *(int *)(puVar11 + 0xf5d5c);\n    (**(code **)(puVar11 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar2 = *(int *)(puVar11 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar10 = pbVar1;\n      if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar10[1];\n      pbVar1 = pbVar10 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }\n    } while( true );\n  }" { (expression_statement "puVar11 = PTR_BB_EXECVP_or_die_0012a400;" (assignment_expression "puVar11 = PTR_BB_EXECVP_or_die_0012a400" identifier = identifier) ;) (expression_statement "(*(code *)PTR_BB_EXECVP_or_die_0012a400)(cmd);" (call_expression "(*(code *)PTR_BB_EXECVP_or_die_0012a400)(cmd)" (parenthesized_expression "(*(code *)PTR_BB_EXECVP_or_die_0012a400)" ( (pointer_expression "*(code *)PTR_BB_EXECVP_or_die_0012a400" * (cast_expression "(code *)PTR_BB_EXECVP_or_die_0012a400" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(cmd)" ( identifier ))) ;) (expression_statement "uStack_6c = **(undefined4 **)(puVar11 + 0xf6d1c);" (assignment_expression "uStack_6c = **(undefined4 **)(puVar11 + 0xf6d1c)" identifier = (pointer_expression "**(undefined4 **)(puVar11 + 0xf6d1c)" * (pointer_expression "*(undefined4 **)(puVar11 + 0xf6d1c)" * (cast_expression "(undefined4 **)(puVar11 + 0xf6d1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf6d1c)" ( (binary_expression "puVar11 + 0xf6d1c" identifier + number_literal) )))))) ;) (expression_statement "iStack_68 = iVar2;" (assignment_expression "iStack_68 = iVar2" identifier = identifier) ;) (expression_statement "pbStack_c4 = (byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370);" (assignment_expression "pbStack_c4 = (byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370)" identifier = (cast_expression "(byte *)(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar11 + 0xf6b9c))(*(int *)(puVar11 + 0xf5d78) + -0x7370)" (parenthesized_expression "(**(code **)(puVar11 + 0xf6b9c))" ( (pointer_expression "**(code **)(puVar11 + 0xf6b9c)" * (pointer_expression "*(code **)(puVar11 + 0xf6b9c)" * (cast_expression "(code **)(puVar11 + 0xf6b9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf6b9c)" ( (binary_expression "puVar11 + 0xf6b9c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar11 + 0xf5d78) + -0x7370)" ( (binary_expression "*(int *)(puVar11 + 0xf5d78) + -0x7370" (pointer_expression "*(int *)(puVar11 + 0xf5d78)" * (cast_expression "(int *)(puVar11 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d78)" ( (binary_expression "puVar11 + 0xf5d78" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (pbStack_c4 == (byte *)0x0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);\n    }" if (parenthesized_expression "(pbStack_c4 == (byte *)0x0)" ( (binary_expression "pbStack_c4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);\n    }" { (expression_statement "pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0);" (assignment_expression "pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0)" identifier = (cast_expression "(byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5af0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar11 + 0xf5d78) + 0x5af0)" ( (binary_expression "*(int *)(puVar11 + 0xf5d78) + 0x5af0" (pointer_expression "*(int *)(puVar11 + 0xf5d78)" * (cast_expression "(int *)(puVar11 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d78)" ( (binary_expression "puVar11 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "uVar6 = (**(code **)(puVar11 + 0xf5edc))\n                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4);" (assignment_expression "uVar6 = (**(code **)(puVar11 + 0xf5edc))\n                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4)" identifier = (call_expression "(**(code **)(puVar11 + 0xf5edc))\n                      (prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4)" (parenthesized_expression "(**(code **)(puVar11 + 0xf5edc))" ( (pointer_expression "**(code **)(puVar11 + 0xf5edc)" * (pointer_expression "*(code **)(puVar11 + 0xf5edc)" * (cast_expression "(code **)(puVar11 + 0xf5edc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf5edc)" ( (binary_expression "puVar11 + 0xf5edc" identifier + number_literal) ))))) )) (argument_list "(prVar9,*(int *)(puVar11 + 0xf5d5c) + -0x1ea0,&pcStack_c0,&pbStack_c4)" ( identifier , (binary_expression "*(int *)(puVar11 + 0xf5d5c) + -0x1ea0" (pointer_expression "*(int *)(puVar11 + 0xf5d5c)" * (cast_expression "(int *)(puVar11 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d5c)" ( (binary_expression "puVar11 + 0xf5d5c" identifier + number_literal) )))) + number_literal) , (pointer_expression "&pcStack_c0" & identifier) , (pointer_expression "&pbStack_c4" & identifier) )))) ;) (expression_statement "iVar2 = **(int **)(puVar11 + 0xf6cbc);" (assignment_expression "iVar2 = **(int **)(puVar11 + 0xf6cbc)" identifier = (pointer_expression "**(int **)(puVar11 + 0xf6cbc)" * (pointer_expression "*(int **)(puVar11 + 0xf6cbc)" * (cast_expression "(int **)(puVar11 + 0xf6cbc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf6cbc)" ( (binary_expression "puVar11 + 0xf6cbc" identifier + number_literal) )))))) ;) (if_statement "if ((uVar6 & 1) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);\n    }" if (parenthesized_expression "((uVar6 & 1) != 0)" ( (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);\n    }" { (expression_statement "pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e);" (assignment_expression "pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e)" identifier = (cast_expression "(byte *)(*(int *)(puVar11 + 0xf5d78) + 0x580e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar11 + 0xf5d78) + 0x580e)" ( (binary_expression "*(int *)(puVar11 + 0xf5d78) + 0x580e" (pointer_expression "*(int *)(puVar11 + 0xf5d78)" * (cast_expression "(int *)(puVar11 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d78)" ( (binary_expression "puVar11 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (if_statement "if ((uVar6 & 2) != 0) {\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);\n    }" if (parenthesized_expression "((uVar6 & 2) != 0)" ( (binary_expression "(uVar6 & 2) != 0" (parenthesized_expression "(uVar6 & 2)" ( (binary_expression "uVar6 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);\n    }" { (expression_statement "pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9);" (assignment_expression "pbStack_c4 = (byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9)" identifier = (cast_expression "(byte *)(*(int *)(puVar11 + 0xf5d78) + 0x5ad9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar11 + 0xf5d78) + 0x5ad9)" ( (binary_expression "*(int *)(puVar11 + 0xf5d78) + 0x5ad9" (pointer_expression "*(int *)(puVar11 + 0xf5d78)" * (cast_expression "(int *)(puVar11 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d78)" ( (binary_expression "puVar11 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (if_statement "if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        iVar5 = 0x80301;\n      }\n      else {\n        iVar5 = 0x80109;\n      }\n      iVar5 = xopen(pcStack_c0,iVar5);\n    }" if (parenthesized_expression "((uVar6 & 8) != 0)" ( (binary_expression "(uVar6 & 8) != 0" (parenthesized_expression "(uVar6 & 8)" ( (binary_expression "uVar6 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar6 & 4) == 0) {\n        iVar5 = 0x80301;\n      }\n      else {\n        iVar5 = 0x80109;\n      }\n      iVar5 = xopen(pcStack_c0,iVar5);\n    }" { (if_statement "if ((uVar6 & 4) == 0) {\n        iVar5 = 0x80301;\n      }\n      else {\n        iVar5 = 0x80109;\n      }" if (parenthesized_expression "((uVar6 & 4) == 0)" ( (binary_expression "(uVar6 & 4) == 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        iVar5 = 0x80301;\n      }" { (expression_statement "iVar5 = 0x80301;" (assignment_expression "iVar5 = 0x80301" identifier = number_literal) ;) }) (else_clause "else {\n        iVar5 = 0x80109;\n      }" else (compound_statement "{\n        iVar5 = 0x80109;\n      }" { (expression_statement "iVar5 = 0x80109;" (assignment_expression "iVar5 = 0x80109" identifier = number_literal) ;) }))) (expression_statement "iVar5 = xopen(pcStack_c0,iVar5);" (assignment_expression "iVar5 = xopen(pcStack_c0,iVar5)" identifier = (call_expression "xopen(pcStack_c0,iVar5)" identifier (argument_list "(pcStack_c0,iVar5)" ( identifier , identifier )))) ;) })) (expression_statement "run_command((char **)(&prVar9->waitstatus + iVar2),&rStack_bc);" (call_expression "run_command((char **)(&prVar9->waitstatus + iVar2),&rStack_bc)" identifier (argument_list "((char **)(&prVar9->waitstatus + iVar2),&rStack_bc)" ( (cast_expression "(char **)(&prVar9->waitstatus + iVar2)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&prVar9->waitstatus + iVar2)" ( (binary_expression "&prVar9->waitstatus + iVar2" (pointer_expression "&prVar9->waitstatus" & (field_expression "prVar9->waitstatus" identifier -> field_identifier)) + identifier) ))) , (pointer_expression "&rStack_bc" & identifier) ))) ;) (expression_statement "xdup2(iVar5,1);" (call_expression "xdup2(iVar5,1)" identifier (argument_list "(iVar5,1)" ( identifier , number_literal ))) ;) (expression_statement "pbVar1 = pbStack_c4;" (assignment_expression "pbVar1 = pbStack_c4" identifier = identifier) ;) (if_statement "if ((char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01') {\n      if (((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);\n    }" if (parenthesized_expression "((char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01') >> 1" (cast_expression "(char)((char)(rStack_bc.waitstatus & 0x7fU) + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)(rStack_bc.waitstatus & 0x7fU) + '\x01')" ( (binary_expression "(char)(rStack_bc.waitstatus & 0x7fU) + '\x01'" (cast_expression "(char)(rStack_bc.waitstatus & 0x7fU)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(rStack_bc.waitstatus & 0x7fU)" ( (binary_expression "rStack_bc.waitstatus & 0x7fU" (field_expression "rStack_bc.waitstatus" identifier . field_identifier) & number_literal) ))) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      if (((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }\n    }" { (if_statement "if (((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }" if (parenthesized_expression "(((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0))" ( (binary_expression "((rStack_bc.waitstatus & 0x7fU) == 0) &&\n         ((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)" (parenthesized_expression "((rStack_bc.waitstatus & 0x7fU) == 0)" ( (binary_expression "(rStack_bc.waitstatus & 0x7fU) == 0" (parenthesized_expression "(rStack_bc.waitstatus & 0x7fU)" ( (binary_expression "rStack_bc.waitstatus & 0x7fU" (field_expression "rStack_bc.waitstatus" identifier . field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0)" ( (binary_expression "(uint)(rStack_bc.waitstatus << 0x10) >> 0x18 != 0" (binary_expression "(uint)(rStack_bc.waitstatus << 0x10) >> 0x18" (call_expression "(uint)(rStack_bc.waitstatus << 0x10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(rStack_bc.waitstatus << 0x10)" ( (binary_expression "rStack_bc.waitstatus << 0x10" (field_expression "rStack_bc.waitstatus" identifier . field_identifier) << number_literal) ))) >> number_literal) != number_literal) ))) )) (compound_statement "{\n        (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);\n      }" { (expression_statement "(**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8);" (call_expression "(**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8)" (parenthesized_expression "(**(code **)(puVar11 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar11 + 0xf6a00)" * (pointer_expression "*(code **)(puVar11 + 0xf6a00)" * (cast_expression "(code **)(puVar11 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf6a00)" ( (binary_expression "puVar11 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ae8)" ( number_literal , (binary_expression "*(int *)(puVar11 + 0xf5d5c) + 0x1ae8" (pointer_expression "*(int *)(puVar11 + 0xf5d5c)" * (cast_expression "(int *)(puVar11 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d5c)" ( (binary_expression "puVar11 + 0xf5d5c" identifier + number_literal) )))) + number_literal) ))) ;) })) }) (else_clause "else {\n      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);\n    }" else (compound_statement "{\n      (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);\n    }" { (expression_statement "(**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4);" (call_expression "(**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4)" (parenthesized_expression "(**(code **)(puVar11 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar11 + 0xf6a00)" * (pointer_expression "*(code **)(puVar11 + 0xf6a00)" * (cast_expression "(code **)(puVar11 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf6a00)" ( (binary_expression "puVar11 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar11 + 0xf5d5c) + 0x1ac4)" ( number_literal , (binary_expression "*(int *)(puVar11 + 0xf5d5c) + 0x1ac4" (pointer_expression "*(int *)(puVar11 + 0xf5d5c)" * (cast_expression "(int *)(puVar11 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d5c)" ( (binary_expression "puVar11 + 0xf5d5c" identifier + number_literal) )))) + number_literal) ))) ;) }))) (expression_statement "iVar5 = *(int *)(puVar11 + 0xf5d5c);" (assignment_expression "iVar5 = *(int *)(puVar11 + 0xf5d5c)" identifier = (pointer_expression "*(int *)(puVar11 + 0xf5d5c)" * (cast_expression "(int *)(puVar11 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d5c)" ( (binary_expression "puVar11 + 0xf5d5c" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar11 + 0xf6ac4))();" (call_expression "(**(code **)(puVar11 + 0xf6ac4))()" (parenthesized_expression "(**(code **)(puVar11 + 0xf6ac4))" ( (pointer_expression "**(code **)(puVar11 + 0xf6ac4)" * (pointer_expression "*(code **)(puVar11 + 0xf6ac4)" * (cast_expression "(code **)(puVar11 + 0xf6ac4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf6ac4)" ( (binary_expression "puVar11 + 0xf6ac4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar6 = (uint)*pbVar1;" (assignment_expression "uVar6 = (uint)*pbVar1" identifier = (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "iVar2 = *(int *)(puVar11 + 0xf5d5c);" (assignment_expression "iVar2 = *(int *)(puVar11 + 0xf5d5c)" identifier = (pointer_expression "*(int *)(puVar11 + 0xf5d5c)" * (cast_expression "(int *)(puVar11 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d5c)" ( (binary_expression "puVar11 + 0xf5d5c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00034628:\n    do {\n      pbVar10 = pbVar1;\n      if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar10[1];\n      pbVar1 = pbVar10 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }\n    } while( true );" statement_identifier : (do_statement "do {\n      pbVar10 = pbVar1;\n      if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar10[1];\n      pbVar1 = pbVar10 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }\n    } while( true );" do (compound_statement "{\n      pbVar10 = pbVar1;\n      if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar10[1];\n      pbVar1 = pbVar10 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }\n    }" { (expression_statement "pbVar10 = pbVar1;" (assignment_expression "pbVar10 = pbVar1" identifier = identifier) ;) (if_statement "if (uVar6 == 0) {\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }\n      else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        bb_putchar(10);\n        uVar6 = rStack_bc.waitstatus & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar11 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1;\n      }" { (expression_statement "bb_putchar(10);" (call_expression "bb_putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (expression_statement "uVar6 = rStack_bc.waitstatus & 0x7f;" (assignment_expression "uVar6 = rStack_bc.waitstatus & 0x7f" identifier = (binary_expression "rStack_bc.waitstatus & 0x7f" (field_expression "rStack_bc.waitstatus" identifier . field_identifier) & number_literal)) ;) (if_statement "if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }" if (parenthesized_expression "((char)((char)uVar6 + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)uVar6 + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)uVar6 + '\x01') >> 1" (cast_expression "(char)((char)uVar6 + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)uVar6 + '\x01')" ( (binary_expression "(char)uVar6 + '\x01'" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;\n        }" { (expression_statement "uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18;" (assignment_expression "uVar6 = (uint)(rStack_bc.waitstatus << 0x10) >> 0x18" identifier = (binary_expression "(uint)(rStack_bc.waitstatus << 0x10) >> 0x18" (call_expression "(uint)(rStack_bc.waitstatus << 0x10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(rStack_bc.waitstatus << 0x10)" ( (binary_expression "rStack_bc.waitstatus << 0x10" (field_expression "rStack_bc.waitstatus" identifier . field_identifier) << number_literal) ))) >> number_literal)) ;) })) (expression_statement "(**(code **)(puVar11 + 0xf5fc8))(uVar6);" (call_expression "(**(code **)(puVar11 + 0xf5fc8))(uVar6)" (parenthesized_expression "(**(code **)(puVar11 + 0xf5fc8))" ( (pointer_expression "**(code **)(puVar11 + 0xf5fc8)" * (pointer_expression "*(code **)(puVar11 + 0xf5fc8)" * (cast_expression "(code **)(puVar11 + 0xf5fc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf5fc8)" ( (binary_expression "puVar11 + 0xf5fc8" identifier + number_literal) ))))) )) (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "uVar8 = extraout_v1;" (assignment_expression "uVar8 = extraout_v1" identifier = identifier) ;) }) (else_clause "else {\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }" else (compound_statement "{\n        iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }\n      }" { (expression_statement "iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10);" (assignment_expression "iVar7 = (**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10)" identifier = (call_expression "(**(code **)(puVar11 + 0xf6d68))(pbVar10,iVar5 + 0x1b10)" (parenthesized_expression "(**(code **)(puVar11 + 0xf6d68))" ( (pointer_expression "**(code **)(puVar11 + 0xf6d68)" * (pointer_expression "*(code **)(puVar11 + 0xf6d68)" * (cast_expression "(code **)(puVar11 + 0xf6d68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf6d68)" ( (binary_expression "puVar11 + 0xf6d68" identifier + number_literal) ))))) )) (argument_list "(pbVar10,iVar5 + 0x1b10)" ( identifier , (binary_expression "iVar5 + 0x1b10" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          (**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);\n          uVar6 = (uint)pbVar10[iVar7];\n          pbVar1 = pbVar10 + iVar7;\n          goto LAB_00034628;\n        }" { (expression_statement "(**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10);" (call_expression "(**(code **)(puVar11 + 0xf6a00))(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10)" (parenthesized_expression "(**(code **)(puVar11 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar11 + 0xf6a00)" * (pointer_expression "*(code **)(puVar11 + 0xf6a00)" * (cast_expression "(code **)(puVar11 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0xf6a00)" ( (binary_expression "puVar11 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar11 + 0xf5d5c) + 0x12ec,iVar7,pbVar10)" ( number_literal , (binary_expression "*(int *)(puVar11 + 0xf5d5c) + 0x12ec" (pointer_expression "*(int *)(puVar11 + 0xf5d5c)" * (cast_expression "(int *)(puVar11 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xf5d5c)" ( (binary_expression "puVar11 + 0xf5d5c" identifier + number_literal) )))) + number_literal) , identifier , identifier ))) ;) (expression_statement "uVar6 = (uint)pbVar10[iVar7];" (assignment_expression "uVar6 = (uint)pbVar10[iVar7]" identifier = (cast_expression "(uint)pbVar10[iVar7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar10[iVar7]" identifier [ identifier ]))) ;) (expression_statement "pbVar1 = pbVar10 + iVar7;" (assignment_expression "pbVar1 = pbVar10 + iVar7" identifier = (binary_expression "pbVar10 + iVar7" identifier + identifier)) ;) (goto_statement "goto LAB_00034628;" goto statement_identifier ;) })) }))) (expression_statement "uVar6 = (uint)pbVar10[1];" (assignment_expression "uVar6 = (uint)pbVar10[1]" identifier = (cast_expression "(uint)pbVar10[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar10 + 1;" (assignment_expression "pbVar1 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (if_statement "if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }" if (parenthesized_expression "(uVar8 == 0x25)" ( (binary_expression "uVar8 == 0x25" identifier == number_literal) )) (compound_statement "{\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar10[2];\n        pbVar1 = pbVar10 + 2;\n      }" { (expression_statement "uVar6 = uVar6 - 0x43 & 0xff;" (assignment_expression "uVar6 = uVar6 - 0x43 & 0xff" identifier = (binary_expression "uVar6 - 0x43 & 0xff" (binary_expression "uVar6 - 0x43" identifier - number_literal) & number_literal)) ;) (if_statement "if (uVar6 < 0x36) {\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }" if (parenthesized_expression "(uVar6 < 0x36)" ( (binary_expression "uVar6 < 0x36" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }" { comment comment (expression_statement "(*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))();" (call_expression "(*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))()" (parenthesized_expression "(*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20))" ( (pointer_expression "*(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20)" * (cast_expression "(code *)(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20)" ( (binary_expression "puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4) + 0xfdd20" (binary_expression "puVar11 + *(int *)(iVar2 + 0x1b4c + uVar6 * 4)" identifier + (pointer_expression "*(int *)(iVar2 + 0x1b4c + uVar6 * 4)" * (cast_expression "(int *)(iVar2 + 0x1b4c + uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1b4c + uVar6 * 4)" ( (binary_expression "iVar2 + 0x1b4c + uVar6 * 4" (binary_expression "iVar2 + 0x1b4c" identifier + number_literal) + (binary_expression "uVar6 * 4" identifier * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar6 = (uint)pbVar10[2];" (assignment_expression "uVar6 = (uint)pbVar10[2]" identifier = (cast_expression "(uint)pbVar10[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar10 + 2;" (assignment_expression "pbVar1 = pbVar10 + 2" identifier = (binary_expression "pbVar10 + 2" identifier + number_literal)) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "uVar3 = (*(code *)PTR_signal_0012b118)(2,1);" (assignment_expression "uVar3 = (*(code *)PTR_signal_0012b118)(2,1)" identifier = (call_expression "(*(code *)PTR_signal_0012b118)(2,1)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(2,1)" ( number_literal , number_literal )))) ;) (expression_statement "uVar4 = (*(code *)PTR_signal_0012b118)(3,1);" (assignment_expression "uVar4 = (*(code *)PTR_signal_0012b118)(3,1)" identifier = (call_expression "(*(code *)PTR_signal_0012b118)(3,1)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(3,1)" ( number_literal , number_literal )))) ;) (do_statement "do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru);\n    if (iVar2 == iVar5) {\n      uVar12 = monotonic_ms();\n      resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar11 == 4));" do (compound_statement "{\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru);\n    if (iVar2 == iVar5) {\n      uVar12 = monotonic_ms();\n      resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;\n      goto LAB_000343ac;\n    }\n  }" { (expression_statement "iVar5 = (*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru);" (assignment_expression "iVar5 = (*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru)" identifier = (call_expression "(*(code *)PTR_wait3_0012ae88)(resp,0,&resp->ru)" (parenthesized_expression "(*(code *)PTR_wait3_0012ae88)" ( (pointer_expression "*(code *)PTR_wait3_0012ae88" * (cast_expression "(code *)PTR_wait3_0012ae88" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(resp,0,&resp->ru)" ( identifier , number_literal , (pointer_expression "&resp->ru" & (field_expression "resp->ru" identifier -> field_identifier)) )))) ;) (if_statement "if (iVar2 == iVar5) {\n      uVar12 = monotonic_ms();\n      resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;\n      goto LAB_000343ac;\n    }" if (parenthesized_expression "(iVar2 == iVar5)" ( (binary_expression "iVar2 == iVar5" identifier == identifier) )) (compound_statement "{\n      uVar12 = monotonic_ms();\n      resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;\n      goto LAB_000343ac;\n    }" { (expression_statement "uVar12 = monotonic_ms();" (assignment_expression "uVar12 = monotonic_ms()" identifier = (call_expression "monotonic_ms()" identifier (argument_list "()" ( )))) ;) (expression_statement "resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms;" (assignment_expression "resp->elapsed_ms = (int)uVar12 - resp->elapsed_ms" (field_expression "resp->elapsed_ms" identifier -> field_identifier) = (binary_expression "(int)uVar12 - resp->elapsed_ms" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (field_expression "resp->elapsed_ms" identifier -> field_identifier))) ;) (goto_statement "goto LAB_000343ac;" goto statement_identifier ;) })) }) while (parenthesized_expression "((iVar5 != -1) || (**(int **)puVar11 == 4))" ( (binary_expression "(iVar5 != -1) || (**(int **)puVar11 == 4)" (parenthesized_expression "(iVar5 != -1)" ( (binary_expression "iVar5 != -1" identifier != number_literal) )) || (parenthesized_expression "(**(int **)puVar11 == 4)" ( (binary_expression "**(int **)puVar11 == 4" (pointer_expression "**(int **)puVar11" * (pointer_expression "*(int **)puVar11" * (cast_expression "(int **)puVar11" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) == number_literal) ))) )) ;) (expression_statement "bb_perror_msg(PTR_UINT_0012a18c + 0x1abc);" (call_expression "bb_perror_msg(PTR_UINT_0012a18c + 0x1abc)" identifier (argument_list "(PTR_UINT_0012a18c + 0x1abc)" ( (binary_expression "PTR_UINT_0012a18c + 0x1abc" identifier + number_literal) ))) ;) (labeled_statement "LAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);" statement_identifier : (expression_statement "(*(code *)PTR_signal_0012b118)(2,uVar3);" (call_expression "(*(code *)PTR_signal_0012b118)(2,uVar3)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(2,uVar3)" ( number_literal , identifier ))) ;)) (expression_statement "(*(code *)PTR_signal_0012b118)(3,uVar4);" (call_expression "(*(code *)PTR_signal_0012b118)(3,uVar4)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(3,uVar4)" ( number_literal , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000342a4(undefined4 param_1,int param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 extraout_v1;\n  int extraout_v1_00;\n  uint extraout_v1_01;\n  uint uVar8;\n  byte *pbVar9;\n  undefined *puVar10;\n  byte *local_c4;\n  undefined4 local_c0;\n  uint local_bc [20];\n  undefined4 local_6c;\n  int local_68;\n  \n  iVar5 = param_2;\n  FUN_0001cf38();\n  puVar10 = PTR_vfork_0012ae44;\n  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;\n  iVar2 = (*(code *)puVar10)();\n  puVar10 = PTR_DAT_0012a214;\n  if (iVar2 < 0) {\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));\n  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}\n\n" (function_definition "void FUN_000342a4(undefined4 param_1,int param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 extraout_v1;\n  int extraout_v1_00;\n  uint extraout_v1_01;\n  uint uVar8;\n  byte *pbVar9;\n  undefined *puVar10;\n  byte *local_c4;\n  undefined4 local_c0;\n  uint local_bc [20];\n  undefined4 local_6c;\n  int local_68;\n  \n  iVar5 = param_2;\n  FUN_0001cf38();\n  puVar10 = PTR_vfork_0012ae44;\n  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;\n  iVar2 = (*(code *)puVar10)();\n  puVar10 = PTR_DAT_0012a214;\n  if (iVar2 < 0) {\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));\n  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}" primitive_type (function_declarator "FUN_000342a4(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 extraout_v1;\n  int extraout_v1_00;\n  uint extraout_v1_01;\n  uint uVar8;\n  byte *pbVar9;\n  undefined *puVar10;\n  byte *local_c4;\n  undefined4 local_c0;\n  uint local_bc [20];\n  undefined4 local_6c;\n  int local_68;\n  \n  iVar5 = param_2;\n  FUN_0001cf38();\n  puVar10 = PTR_vfork_0012ae44;\n  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;\n  iVar2 = (*(code *)puVar10)();\n  puVar10 = PTR_DAT_0012a214;\n  if (iVar2 < 0) {\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));\n  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 extraout_v1;" type_identifier identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "uint extraout_v1_01;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *local_c4;" type_identifier (pointer_declarator "*local_c4" * identifier) ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "uint local_bc [20];" type_identifier (array_declarator "local_bc [20]" identifier [ number_literal ]) ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (expression_statement "iVar5 = param_2;" (assignment_expression "iVar5 = param_2" identifier = identifier) ;) (expression_statement "FUN_0001cf38();" (call_expression "FUN_0001cf38()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = PTR_vfork_0012ae44;" (assignment_expression "puVar10 = PTR_vfork_0012ae44" identifier = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 0x4c) = extraout_v1;" (assignment_expression "*(undefined4 *)(param_2 + 0x4c) = extraout_v1" (pointer_expression "*(undefined4 *)(param_2 + 0x4c)" * (cast_expression "(undefined4 *)(param_2 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (*(code *)puVar10)();" (assignment_expression "iVar2 = (*(code *)puVar10)()" identifier = (call_expression "(*(code *)puVar10)()" (parenthesized_expression "(*(code *)puVar10)" ( (pointer_expression "*(code *)puVar10" * (cast_expression "(code *)puVar10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "puVar10 = PTR_DAT_0012a214;" (assignment_expression "puVar10 = PTR_DAT_0012a214" identifier = identifier) ;) (if_statement "if (iVar2 < 0) {\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }" { (expression_statement "FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);" (call_expression "FUN_00018d6c(PTR_UINT_0012a18c + -0x94c)" identifier (argument_list "(PTR_UINT_0012a18c + -0x94c)" ( (binary_expression "PTR_UINT_0012a18c + -0x94c" identifier + number_literal) ))) ;) })) (if_statement "if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }" { (expression_statement "puVar10 = PTR_FUN_0012a400;" (assignment_expression "puVar10 = PTR_FUN_0012a400" identifier = identifier) ;) (expression_statement "(*(code *)PTR_FUN_0012a400)(param_1);" (call_expression "(*(code *)PTR_FUN_0012a400)(param_1)" (parenthesized_expression "(*(code *)PTR_FUN_0012a400)" ( (pointer_expression "*(code *)PTR_FUN_0012a400" * (cast_expression "(code *)PTR_FUN_0012a400" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);" (assignment_expression "local_6c = **(undefined4 **)(puVar10 + 0xf6d1c)" identifier = (pointer_expression "**(undefined4 **)(puVar10 + 0xf6d1c)" * (pointer_expression "*(undefined4 **)(puVar10 + 0xf6d1c)" * (cast_expression "(undefined4 **)(puVar10 + 0xf6d1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6d1c)" ( (binary_expression "puVar10 + 0xf6d1c" identifier + number_literal) )))))) ;) (expression_statement "local_68 = iVar2;" (assignment_expression "local_68 = iVar2" identifier = identifier) ;) (expression_statement "local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);" (assignment_expression "local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" identifier = (cast_expression "(byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6b9c))" ( (pointer_expression "**(code **)(puVar10 + 0xf6b9c)" * (pointer_expression "*(code **)(puVar10 + 0xf6b9c)" * (cast_expression "(code **)(puVar10 + 0xf6b9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6b9c)" ( (binary_expression "puVar10 + 0xf6b9c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar10 + 0xf5d78) + -0x7370)" ( (binary_expression "*(int *)(puVar10 + 0xf5d78) + -0x7370" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" * (cast_expression "(int *)(puVar10 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d78)" ( (binary_expression "puVar10 + 0xf5d78" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }" if (parenthesized_expression "(local_c4 == (byte *)0x0)" ( (binary_expression "local_c4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }" { (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" ( (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x5af0" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" * (cast_expression "(int *)(puVar10 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d78)" ( (binary_expression "puVar10 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);" (assignment_expression "uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" identifier = (call_expression "(**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" (parenthesized_expression "(**(code **)(puVar10 + 0xf5edc))" ( (pointer_expression "**(code **)(puVar10 + 0xf5edc)" * (pointer_expression "*(code **)(puVar10 + 0xf5edc)" * (cast_expression "(code **)(puVar10 + 0xf5edc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf5edc)" ( (binary_expression "puVar10 + 0xf5edc" identifier + number_literal) ))))) )) (argument_list "(iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" ( identifier , (binary_expression "*(int *)(puVar10 + 0xf5d5c) + -0x1ea0" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) )))) + number_literal) , (pointer_expression "&local_c0" & identifier) , (pointer_expression "&local_c4" & identifier) )))) ;) (expression_statement "iVar2 = **(int **)(puVar10 + 0xf6cbc);" (assignment_expression "iVar2 = **(int **)(puVar10 + 0xf6cbc)" identifier = (pointer_expression "**(int **)(puVar10 + 0xf6cbc)" * (pointer_expression "*(int **)(puVar10 + 0xf6cbc)" * (cast_expression "(int **)(puVar10 + 0xf6cbc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6cbc)" ( (binary_expression "puVar10 + 0xf6cbc" identifier + number_literal) )))))) ;) (if_statement "if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }" if (parenthesized_expression "((uVar6 & 1) != 0)" ( (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }" { (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x580e)" ( (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x580e" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" * (cast_expression "(int *)(puVar10 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d78)" ( (binary_expression "puVar10 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (if_statement "if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }" if (parenthesized_expression "((uVar6 & 2) != 0)" ( (binary_expression "(uVar6 & 2) != 0" (parenthesized_expression "(uVar6 & 2)" ( (binary_expression "uVar6 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }" { (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" identifier = (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" ( (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x5ad9" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" * (cast_expression "(int *)(puVar10 + 0xf5d78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d78)" ( (binary_expression "puVar10 + 0xf5d78" identifier + number_literal) )))) + number_literal) )))) ;) })) (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" identifier = number_literal) ;) (if_statement "if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }" if (parenthesized_expression "((uVar6 & 8) != 0)" ( (binary_expression "(uVar6 & 8) != 0" (parenthesized_expression "(uVar6 & 8)" ( (binary_expression "uVar6 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }" { (if_statement "if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }" if (parenthesized_expression "((uVar6 & 4) == 0)" ( (binary_expression "(uVar6 & 4) == 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar3 = 0x80301;\n      }" { (expression_statement "uVar3 = 0x80301;" (assignment_expression "uVar3 = 0x80301" identifier = number_literal) ;) }) (else_clause "else {\n        uVar3 = 0x80109;\n      }" else (compound_statement "{\n        uVar3 = 0x80109;\n      }" { (expression_statement "uVar3 = 0x80109;" (assignment_expression "uVar3 = 0x80109" identifier = number_literal) ;) }))) (expression_statement "uVar3 = FUN_0001a4c8(local_c0,uVar3);" (assignment_expression "uVar3 = FUN_0001a4c8(local_c0,uVar3)" identifier = (call_expression "FUN_0001a4c8(local_c0,uVar3)" identifier (argument_list "(local_c0,uVar3)" ( identifier , identifier )))) ;) })) (expression_statement "FUN_000342a4(iVar5 + iVar2 * 4,local_bc);" (call_expression "FUN_000342a4(iVar5 + iVar2 * 4,local_bc)" identifier (argument_list "(iVar5 + iVar2 * 4,local_bc)" ( (binary_expression "iVar5 + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal)) , identifier ))) ;) (expression_statement "FUN_0001a670(uVar3,1);" (call_expression "FUN_0001a670(uVar3,1)" identifier (argument_list "(uVar3,1)" ( identifier , number_literal ))) ;) (expression_statement "pbVar1 = local_c4;" (assignment_expression "pbVar1 = local_c4" identifier = identifier) ;) (if_statement "if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" if (parenthesized_expression "((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1" (cast_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)(local_bc[0] & 0x7f) + '\x01')" ( (binary_expression "(char)(local_bc[0] & 0x7f) + '\x01'" (cast_expression "(char)(local_bc[0] & 0x7f)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(local_bc[0] & 0x7f)" ( (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" identifier [ number_literal ]) & number_literal) ))) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }" { (if_statement "if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }" if (parenthesized_expression "(((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0))" ( (binary_expression "((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)" (parenthesized_expression "((local_bc[0] & 0x7f) == 0)" ( (binary_expression "(local_bc[0] & 0x7f) == 0" (parenthesized_expression "(local_bc[0] & 0x7f)" ( (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "((local_bc[0] << 0x10) >> 0x18 != 0)" ( (binary_expression "(local_bc[0] << 0x10) >> 0x18 != 0" (binary_expression "(local_bc[0] << 0x10) >> 0x18" (parenthesized_expression "(local_bc[0] << 0x10)" ( (binary_expression "local_bc[0] << 0x10" (subscript_expression "local_bc[0]" identifier [ number_literal ]) << number_literal) )) >> number_literal) != number_literal) ))) )) (compound_statement "{\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }" { (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar10 + 0xf6a00)" * (pointer_expression "*(code **)(puVar10 + 0xf6a00)" * (cast_expression "(code **)(puVar10 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6a00)" ( (binary_expression "puVar10 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8)" ( number_literal , (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x1ae8" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) )))) + number_literal) ))) ;) })) }) (else_clause "else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" else (compound_statement "{\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" { (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar10 + 0xf6a00)" * (pointer_expression "*(code **)(puVar10 + 0xf6a00)" * (cast_expression "(code **)(puVar10 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6a00)" ( (binary_expression "puVar10 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4)" ( number_literal , (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x1ac4" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) )))) + number_literal) ))) ;) }))) (expression_statement "iVar2 = *(int *)(puVar10 + 0xf5d5c);" (assignment_expression "iVar2 = *(int *)(puVar10 + 0xf5d5c)" identifier = (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar10 + 0xf6ac4))();" (call_expression "(**(code **)(puVar10 + 0xf6ac4))()" (parenthesized_expression "(**(code **)(puVar10 + 0xf6ac4))" ( (pointer_expression "**(code **)(puVar10 + 0xf6ac4)" * (pointer_expression "*(code **)(puVar10 + 0xf6ac4)" * (cast_expression "(code **)(puVar10 + 0xf6ac4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6ac4)" ( (binary_expression "puVar10 + 0xf6ac4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar6 = (uint)*pbVar1;" (assignment_expression "uVar6 = (uint)*pbVar1" identifier = (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "iVar5 = *(int *)(puVar10 + 0xf5d5c);" (assignment_expression "iVar5 = *(int *)(puVar10 + 0xf5d5c)" identifier = (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );" statement_identifier : (do_statement "do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );" do (compound_statement "{\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    }" { (expression_statement "pbVar9 = pbVar1;" (assignment_expression "pbVar9 = pbVar1" identifier = identifier) ;) (if_statement "if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }" { (expression_statement "FUN_0001a9a8(10);" (call_expression "FUN_0001a9a8(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (expression_statement "uVar6 = local_bc[0] & 0x7f;" (assignment_expression "uVar6 = local_bc[0] & 0x7f" identifier = (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" identifier [ number_literal ]) & number_literal)) ;) (if_statement "if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }" if (parenthesized_expression "((char)((char)uVar6 + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)uVar6 + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)uVar6 + '\x01') >> 1" (cast_expression "(char)((char)uVar6 + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)uVar6 + '\x01')" ( (binary_expression "(char)uVar6 + '\x01'" (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }" { (expression_statement "uVar6 = (local_bc[0] << 0x10) >> 0x18;" (assignment_expression "uVar6 = (local_bc[0] << 0x10) >> 0x18" identifier = (binary_expression "(local_bc[0] << 0x10) >> 0x18" (parenthesized_expression "(local_bc[0] << 0x10)" ( (binary_expression "local_bc[0] << 0x10" (subscript_expression "local_bc[0]" identifier [ number_literal ]) << number_literal) )) >> number_literal)) ;) })) (expression_statement "(**(code **)(puVar10 + 0xf5fc8))(uVar6);" (call_expression "(**(code **)(puVar10 + 0xf5fc8))(uVar6)" (parenthesized_expression "(**(code **)(puVar10 + 0xf5fc8))" ( (pointer_expression "**(code **)(puVar10 + 0xf5fc8)" * (pointer_expression "*(code **)(puVar10 + 0xf5fc8)" * (cast_expression "(code **)(puVar10 + 0xf5fc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf5fc8)" ( (binary_expression "puVar10 + 0xf5fc8" identifier + number_literal) ))))) )) (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "uVar8 = extraout_v1_01;" (assignment_expression "uVar8 = extraout_v1_01" identifier = identifier) ;) }) (else_clause "else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" else (compound_statement "{\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" { (expression_statement "iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);" (assignment_expression "iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10)" identifier = (call_expression "(**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6d68))" ( (pointer_expression "**(code **)(puVar10 + 0xf6d68)" * (pointer_expression "*(code **)(puVar10 + 0xf6d68)" * (cast_expression "(code **)(puVar10 + 0xf6d68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6d68)" ( (binary_expression "puVar10 + 0xf6d68" identifier + number_literal) ))))) )) (argument_list "(pbVar9,iVar2 + 0x1b10)" ( identifier , (binary_expression "iVar2 + 0x1b10" identifier + number_literal) )))) ;) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }" { (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" ( (pointer_expression "**(code **)(puVar10 + 0xf6a00)" * (pointer_expression "*(code **)(puVar10 + 0xf6a00)" * (cast_expression "(code **)(puVar10 + 0xf6a00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xf6a00)" ( (binary_expression "puVar10 + 0xf6a00" identifier + number_literal) ))))) )) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9)" ( number_literal , (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x12ec" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" * (cast_expression "(int *)(puVar10 + 0xf5d5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xf5d5c)" ( (binary_expression "puVar10 + 0xf5d5c" identifier + number_literal) )))) + number_literal) , identifier , identifier ))) ;) (expression_statement "uVar6 = (uint)pbVar9[iVar7];" (assignment_expression "uVar6 = (uint)pbVar9[iVar7]" identifier = (cast_expression "(uint)pbVar9[iVar7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[iVar7]" identifier [ identifier ]))) ;) (expression_statement "pbVar1 = pbVar9 + iVar7;" (assignment_expression "pbVar1 = pbVar9 + iVar7" identifier = (binary_expression "pbVar9 + iVar7" identifier + identifier)) ;) (goto_statement "goto LAB_00034628;" goto statement_identifier ;) })) }))) (expression_statement "uVar6 = (uint)pbVar9[1];" (assignment_expression "uVar6 = (uint)pbVar9[1]" identifier = (cast_expression "(uint)pbVar9[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar9 + 1;" (assignment_expression "pbVar1 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }" if (parenthesized_expression "(uVar8 == 0x25)" ( (binary_expression "uVar8 == 0x25" identifier == number_literal) )) (compound_statement "{\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }" { (expression_statement "uVar6 = uVar6 - 0x43 & 0xff;" (assignment_expression "uVar6 = uVar6 - 0x43 & 0xff" identifier = (binary_expression "uVar6 - 0x43 & 0xff" (binary_expression "uVar6 - 0x43" identifier - number_literal) & number_literal)) ;) (if_statement "if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }" if (parenthesized_expression "(uVar6 < 0x36)" ( (binary_expression "uVar6 < 0x36" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }" { (expression_statement "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();" (call_expression "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))()" (parenthesized_expression "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))" ( (pointer_expression "*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" * (cast_expression "(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" ( (binary_expression "puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20" (binary_expression "puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4)" identifier + (pointer_expression "*(int *)(iVar5 + 0x1b4c + uVar6 * 4)" * (cast_expression "(int *)(iVar5 + 0x1b4c + uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1b4c + uVar6 * 4)" ( (binary_expression "iVar5 + 0x1b4c + uVar6 * 4" (binary_expression "iVar5 + 0x1b4c" identifier + number_literal) + (binary_expression "uVar6 * 4" identifier * number_literal)) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar6 = (uint)pbVar9[2];" (assignment_expression "uVar6 = (uint)pbVar9[2]" identifier = (cast_expression "(uint)pbVar9[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar1 = pbVar9 + 2;" (assignment_expression "pbVar1 = pbVar9 + 2" identifier = (binary_expression "pbVar9 + 2" identifier + number_literal)) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "uVar3 = (*(code *)PTR_signal_0012b118)(2,1);" (assignment_expression "uVar3 = (*(code *)PTR_signal_0012b118)(2,1)" identifier = (call_expression "(*(code *)PTR_signal_0012b118)(2,1)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(2,1)" ( number_literal , number_literal )))) ;) (expression_statement "uVar4 = (*(code *)PTR_signal_0012b118)(3,1);" (assignment_expression "uVar4 = (*(code *)PTR_signal_0012b118)(3,1)" identifier = (call_expression "(*(code *)PTR_signal_0012b118)(3,1)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(3,1)" ( number_literal , number_literal )))) ;) (do_statement "do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));" do (compound_statement "{\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  }" { (expression_statement "iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);" (assignment_expression "iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4)" identifier = (call_expression "(*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4)" (parenthesized_expression "(*(code *)PTR_wait3_0012ae88)" ( (pointer_expression "*(code *)PTR_wait3_0012ae88" * (cast_expression "(code *)PTR_wait3_0012ae88" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,0,param_2 + 4)" ( identifier , number_literal , (binary_expression "param_2 + 4" identifier + number_literal) )))) ;) (if_statement "if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }" if (parenthesized_expression "(iVar2 == iVar5)" ( (binary_expression "iVar2 == iVar5" identifier == identifier) )) (compound_statement "{\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }" { (expression_statement "FUN_0001cf38();" (call_expression "FUN_0001cf38()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);" (assignment_expression "*(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c)" (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))) = (binary_expression "extraout_v1_00 - *(int *)(param_2 + 0x4c)" identifier - (pointer_expression "*(int *)(param_2 + 0x4c)" * (cast_expression "(int *)(param_2 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x4c)" ( (binary_expression "param_2 + 0x4c" identifier + number_literal) )))))) ;) (goto_statement "goto LAB_000343ac;" goto statement_identifier ;) })) }) while (parenthesized_expression "((iVar5 != -1) || (**(int **)puVar10 == 4))" ( (binary_expression "(iVar5 != -1) || (**(int **)puVar10 == 4)" (parenthesized_expression "(iVar5 != -1)" ( (binary_expression "iVar5 != -1" identifier != number_literal) )) || (parenthesized_expression "(**(int **)puVar10 == 4)" ( (binary_expression "**(int **)puVar10 == 4" (pointer_expression "**(int **)puVar10" * (pointer_expression "*(int **)puVar10" * (cast_expression "(int **)puVar10" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) == number_literal) ))) )) ;) (expression_statement "FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);" (call_expression "FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc)" identifier (argument_list "(PTR_UINT_0012a18c + 0x1abc)" ( (binary_expression "PTR_UINT_0012a18c + 0x1abc" identifier + number_literal) ))) ;) (labeled_statement "LAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);" statement_identifier : (expression_statement "(*(code *)PTR_signal_0012b118)(2,uVar3);" (call_expression "(*(code *)PTR_signal_0012b118)(2,uVar3)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(2,uVar3)" ( number_literal , identifier ))) ;)) (expression_statement "(*(code *)PTR_signal_0012b118)(3,uVar4);" (call_expression "(*(code *)PTR_signal_0012b118)(3,uVar4)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" ( (pointer_expression "*(code *)PTR_signal_0012b118" * (cast_expression "(code *)PTR_signal_0012b118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(3,uVar4)" ( number_literal , identifier ))) ;) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (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 = IDENT) ;) (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 ( (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (binary_expression IDENT * LIT)) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) ))) + (char_literal ' escape_sequence ')) ))) >> LIT) < (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) )) >> LIT) != LIT) ))) )) (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 , (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 (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 , (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) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (char_literal ' escape_sequence ')) ))) >> LIT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) << 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 ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (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 ( IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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 , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) + LIT) )))) )) (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }) while (parenthesized_expression ( BOOL )) ;)) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) == LIT) ))) )) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , IDENT ))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_000342a4(undefined4 param_1,int param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 extraout_v1;\n  int extraout_v1_00;\n  uint extraout_v1_01;\n  uint uVar8;\n  byte *pbVar9;\n  undefined *puVar10;\n  byte *local_c4;\n  undefined4 local_c0;\n  uint local_bc [20];\n  undefined4 local_6c;\n  int local_68;\n  \n  iVar5 = param_2;\n  FUN_0001cf38();\n  puVar10 = PTR_vfork_0012ae44;\n  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;\n  iVar2 = (*(code *)puVar10)();\n  puVar10 = PTR_DAT_0012a214;\n  if (iVar2 < 0) {\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));\n  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000342a4(undefined4 param_1,int param_2)" (identifier "FUN_000342a4") (parameter_list "(undefined4 param_1,int param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 extraout_v1;\n  int extraout_v1_00;\n  uint extraout_v1_01;\n  uint uVar8;\n  byte *pbVar9;\n  undefined *puVar10;\n  byte *local_c4;\n  undefined4 local_c0;\n  uint local_bc [20];\n  undefined4 local_6c;\n  int local_68;\n  \n  iVar5 = param_2;\n  FUN_0001cf38();\n  puVar10 = PTR_vfork_0012ae44;\n  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;\n  iVar2 = (*(code *)puVar10)();\n  puVar10 = PTR_DAT_0012a214;\n  if (iVar2 < 0) {\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }\n  if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }\n  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);\n  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);\n  do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));\n  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);\nLAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);\n  (*(code *)PTR_signal_0012b118)(3,uVar4);\n  return;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 extraout_v1;" (type_identifier "undefined4") (identifier "extraout_v1") (; ";")) (declaration "int extraout_v1_00;" (primitive_type "int") (identifier "extraout_v1_00") (; ";")) (declaration "uint extraout_v1_01;" (type_identifier "uint") (identifier "extraout_v1_01") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "byte *local_c4;" (type_identifier "byte") (pointer_declarator "*local_c4" (* "*") (identifier "local_c4")) (; ";")) (declaration "undefined4 local_c0;" (type_identifier "undefined4") (identifier "local_c0") (; ";")) (declaration "uint local_bc [20];" (type_identifier "uint") (array_declarator "local_bc [20]" (identifier "local_bc") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "undefined4 local_6c;" (type_identifier "undefined4") (identifier "local_6c") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (expression_statement "iVar5 = param_2;" (assignment_expression "iVar5 = param_2" (identifier "iVar5") (= "=") (identifier "param_2")) (; ";")) (expression_statement "FUN_0001cf38();" (call_expression "FUN_0001cf38()" (identifier "FUN_0001cf38") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar10 = PTR_vfork_0012ae44;" (assignment_expression "puVar10 = PTR_vfork_0012ae44" (identifier "puVar10") (= "=") (identifier "PTR_vfork_0012ae44")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x4c) = extraout_v1;" (assignment_expression "*(undefined4 *)(param_2 + 0x4c) = extraout_v1" (pointer_expression "*(undefined4 *)(param_2 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x4c)" (( "(") (binary_expression "param_2 + 0x4c" (identifier "param_2") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "extraout_v1")) (; ";")) (expression_statement "iVar2 = (*(code *)puVar10)();" (assignment_expression "iVar2 = (*(code *)puVar10)()" (identifier "iVar2") (= "=") (call_expression "(*(code *)puVar10)()" (parenthesized_expression "(*(code *)puVar10)" (( "(") (pointer_expression "*(code *)puVar10" (* "*") (cast_expression "(code *)puVar10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar10 = PTR_DAT_0012a214;" (assignment_expression "puVar10 = PTR_DAT_0012a214" (identifier "puVar10") (= "=") (identifier "PTR_DAT_0012a214")) (; ";")) (if_statement "if (iVar2 < 0) {\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }" (if "if") (parenthesized_expression "(iVar2 < 0)" (( "(") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);\n  }" ({ "{") (expression_statement "FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);" (call_expression "FUN_00018d6c(PTR_UINT_0012a18c + -0x94c)" (identifier "FUN_00018d6c") (argument_list "(PTR_UINT_0012a18c + -0x94c)" (( "(") (binary_expression "PTR_UINT_0012a18c + -0x94c" (identifier "PTR_UINT_0012a18c") (+ "+") (number_literal "-0x94c")) () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar2 == 0) {\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puVar10 = PTR_FUN_0012a400;\n    (*(code *)PTR_FUN_0012a400)(param_1);\n    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);\n    local_68 = iVar2;\n    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);\n    if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }\n    uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);\n    iVar2 = **(int **)(puVar10 + 0xf6cbc);\n    if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }\n    if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }\n    uVar3 = 2;\n    if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }\n    FUN_000342a4(iVar5 + iVar2 * 4,local_bc);\n    FUN_0001a670(uVar3,1);\n    pbVar1 = local_c4;\n    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }\n    iVar2 = *(int *)(puVar10 + 0xf5d5c);\n    (**(code **)(puVar10 + 0xf6ac4))();\n    uVar6 = (uint)*pbVar1;\n    iVar5 = *(int *)(puVar10 + 0xf5d5c);\nLAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );\n  }" ({ "{") (expression_statement "puVar10 = PTR_FUN_0012a400;" (assignment_expression "puVar10 = PTR_FUN_0012a400" (identifier "puVar10") (= "=") (identifier "PTR_FUN_0012a400")) (; ";")) (expression_statement "(*(code *)PTR_FUN_0012a400)(param_1);" (call_expression "(*(code *)PTR_FUN_0012a400)(param_1)" (parenthesized_expression "(*(code *)PTR_FUN_0012a400)" (( "(") (pointer_expression "*(code *)PTR_FUN_0012a400" (* "*") (cast_expression "(code *)PTR_FUN_0012a400" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0012a400"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);" (assignment_expression "local_6c = **(undefined4 **)(puVar10 + 0xf6d1c)" (identifier "local_6c") (= "=") (pointer_expression "**(undefined4 **)(puVar10 + 0xf6d1c)" (* "*") (pointer_expression "*(undefined4 **)(puVar10 + 0xf6d1c)" (* "*") (cast_expression "(undefined4 **)(puVar10 + 0xf6d1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf6d1c)" (( "(") (binary_expression "puVar10 + 0xf6d1c" (identifier "puVar10") (+ "+") (number_literal "0xf6d1c")) () ")")))))) (; ";")) (expression_statement "local_68 = iVar2;" (assignment_expression "local_68 = iVar2" (identifier "local_68") (= "=") (identifier "iVar2")) (; ";")) (expression_statement "local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);" (assignment_expression "local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" (identifier "local_c4") (= "=") (cast_expression "(byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6b9c))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xf6b9c)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xf6b9c)" (* "*") (cast_expression "(code **)(puVar10 + 0xf6b9c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf6b9c)" (( "(") (binary_expression "puVar10 + 0xf6b9c" (identifier "puVar10") (+ "+") (number_literal "0xf6b9c")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar10 + 0xf5d78) + -0x7370)" (( "(") (binary_expression "*(int *)(puVar10 + 0xf5d78) + -0x7370" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d78)" (( "(") (binary_expression "puVar10 + 0xf5d78" (identifier "puVar10") (+ "+") (number_literal "0xf5d78")) () ")")))) (+ "+") (number_literal "-0x7370")) () ")"))))) (; ";")) (if_statement "if (local_c4 == (byte *)0x0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }" (if "if") (parenthesized_expression "(local_c4 == (byte *)0x0)" (( "(") (binary_expression "local_c4 == (byte *)0x0" (identifier "local_c4") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);\n    }" ({ "{") (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" (identifier "local_c4") (= "=") (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x5af0)" (( "(") (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x5af0" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d78)" (( "(") (binary_expression "puVar10 + 0xf5d78" (identifier "puVar10") (+ "+") (number_literal "0xf5d78")) () ")")))) (+ "+") (number_literal "0x5af0")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);" (assignment_expression "uVar6 = (**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" (identifier "uVar6") (= "=") (call_expression "(**(code **)(puVar10 + 0xf5edc))\n                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" (parenthesized_expression "(**(code **)(puVar10 + 0xf5edc))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xf5edc)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xf5edc)" (* "*") (cast_expression "(code **)(puVar10 + 0xf5edc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf5edc)" (( "(") (binary_expression "puVar10 + 0xf5edc" (identifier "puVar10") (+ "+") (number_literal "0xf5edc")) () ")"))))) () ")")) (argument_list "(iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4)" (( "(") (identifier "iVar5") (, ",") (binary_expression "*(int *)(puVar10 + 0xf5d5c) + -0x1ea0" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d5c)" (( "(") (binary_expression "puVar10 + 0xf5d5c" (identifier "puVar10") (+ "+") (number_literal "0xf5d5c")) () ")")))) (+ "+") (number_literal "-0x1ea0")) (, ",") (pointer_expression "&local_c0" (& "&") (identifier "local_c0")) (, ",") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (expression_statement "iVar2 = **(int **)(puVar10 + 0xf6cbc);" (assignment_expression "iVar2 = **(int **)(puVar10 + 0xf6cbc)" (identifier "iVar2") (= "=") (pointer_expression "**(int **)(puVar10 + 0xf6cbc)" (* "*") (pointer_expression "*(int **)(puVar10 + 0xf6cbc)" (* "*") (cast_expression "(int **)(puVar10 + 0xf6cbc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf6cbc)" (( "(") (binary_expression "puVar10 + 0xf6cbc" (identifier "puVar10") (+ "+") (number_literal "0xf6cbc")) () ")")))))) (; ";")) (if_statement "if ((uVar6 & 1) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }" (if "if") (parenthesized_expression "((uVar6 & 1) != 0)" (( "(") (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" (( "(") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);\n    }" ({ "{") (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e)" (identifier "local_c4") (= "=") (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x580e)" (( "(") (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x580e" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d78)" (( "(") (binary_expression "puVar10 + 0xf5d78" (identifier "puVar10") (+ "+") (number_literal "0xf5d78")) () ")")))) (+ "+") (number_literal "0x580e")) () ")")))) (; ";")) (} "}"))) (if_statement "if ((uVar6 & 2) != 0) {\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }" (if "if") (parenthesized_expression "((uVar6 & 2) != 0)" (( "(") (binary_expression "(uVar6 & 2) != 0" (parenthesized_expression "(uVar6 & 2)" (( "(") (binary_expression "uVar6 & 2" (identifier "uVar6") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);\n    }" ({ "{") (expression_statement "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);" (assignment_expression "local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" (identifier "local_c4") (= "=") (cast_expression "(byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0xf5d78) + 0x5ad9)" (( "(") (binary_expression "*(int *)(puVar10 + 0xf5d78) + 0x5ad9" (pointer_expression "*(int *)(puVar10 + 0xf5d78)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d78)" (( "(") (binary_expression "puVar10 + 0xf5d78" (identifier "puVar10") (+ "+") (number_literal "0xf5d78")) () ")")))) (+ "+") (number_literal "0x5ad9")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" (identifier "uVar3") (= "=") (number_literal "2")) (; ";")) (if_statement "if ((uVar6 & 8) != 0) {\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }" (if "if") (parenthesized_expression "((uVar6 & 8) != 0)" (( "(") (binary_expression "(uVar6 & 8) != 0" (parenthesized_expression "(uVar6 & 8)" (( "(") (binary_expression "uVar6 & 8" (identifier "uVar6") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }\n      uVar3 = FUN_0001a4c8(local_c0,uVar3);\n    }" ({ "{") (if_statement "if ((uVar6 & 4) == 0) {\n        uVar3 = 0x80301;\n      }\n      else {\n        uVar3 = 0x80109;\n      }" (if "if") (parenthesized_expression "((uVar6 & 4) == 0)" (( "(") (binary_expression "(uVar6 & 4) == 0" (parenthesized_expression "(uVar6 & 4)" (( "(") (binary_expression "uVar6 & 4" (identifier "uVar6") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar3 = 0x80301;\n      }" ({ "{") (expression_statement "uVar3 = 0x80301;" (assignment_expression "uVar3 = 0x80301" (identifier "uVar3") (= "=") (number_literal "0x80301")) (; ";")) (} "}")) (else_clause "else {\n        uVar3 = 0x80109;\n      }" (else "else") (compound_statement "{\n        uVar3 = 0x80109;\n      }" ({ "{") (expression_statement "uVar3 = 0x80109;" (assignment_expression "uVar3 = 0x80109" (identifier "uVar3") (= "=") (number_literal "0x80109")) (; ";")) (} "}")))) (expression_statement "uVar3 = FUN_0001a4c8(local_c0,uVar3);" (assignment_expression "uVar3 = FUN_0001a4c8(local_c0,uVar3)" (identifier "uVar3") (= "=") (call_expression "FUN_0001a4c8(local_c0,uVar3)" (identifier "FUN_0001a4c8") (argument_list "(local_c0,uVar3)" (( "(") (identifier "local_c0") (, ",") (identifier "uVar3") () ")")))) (; ";")) (} "}"))) (expression_statement "FUN_000342a4(iVar5 + iVar2 * 4,local_bc);" (call_expression "FUN_000342a4(iVar5 + iVar2 * 4,local_bc)" (identifier "FUN_000342a4") (argument_list "(iVar5 + iVar2 * 4,local_bc)" (( "(") (binary_expression "iVar5 + iVar2 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar2 * 4" (identifier "iVar2") (* "*") (number_literal "4"))) (, ",") (identifier "local_bc") () ")"))) (; ";")) (expression_statement "FUN_0001a670(uVar3,1);" (call_expression "FUN_0001a670(uVar3,1)" (identifier "FUN_0001a670") (argument_list "(uVar3,1)" (( "(") (identifier "uVar3") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "pbVar1 = local_c4;" (assignment_expression "pbVar1 = local_c4" (identifier "pbVar1") (= "=") (identifier "local_c4")) (; ";")) (if_statement "if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }\n    else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" (if "if") (parenthesized_expression "((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01')" (( "(") (binary_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1" (cast_expression "(char)((char)(local_bc[0] & 0x7f) + '\x01')" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((char)(local_bc[0] & 0x7f) + '\x01')" (( "(") (binary_expression "(char)(local_bc[0] & 0x7f) + '\x01'" (cast_expression "(char)(local_bc[0] & 0x7f)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(local_bc[0] & 0x7f)" (( "(") (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" (identifier "local_bc") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0x7f")) () ")"))) (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) (>> ">>") (number_literal "1")) (< "<") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }\n    }" ({ "{") (if_statement "if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }" (if "if") (parenthesized_expression "(((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0))" (( "(") (binary_expression "((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)" (parenthesized_expression "((local_bc[0] & 0x7f) == 0)" (( "(") (binary_expression "(local_bc[0] & 0x7f) == 0" (parenthesized_expression "(local_bc[0] & 0x7f)" (( "(") (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" (identifier "local_bc") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0x7f")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((local_bc[0] << 0x10) >> 0x18 != 0)" (( "(") (binary_expression "(local_bc[0] << 0x10) >> 0x18 != 0" (binary_expression "(local_bc[0] << 0x10) >> 0x18" (parenthesized_expression "(local_bc[0] << 0x10)" (( "(") (binary_expression "local_bc[0] << 0x10" (subscript_expression "local_bc[0]" (identifier "local_bc") ([ "[") (number_literal "0") (] "]")) (<< "<<") (number_literal "0x10")) () ")")) (>> ">>") (number_literal "0x18")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);\n      }" ({ "{") (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xf6a00)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xf6a00)" (* "*") (cast_expression "(code **)(puVar10 + 0xf6a00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf6a00)" (( "(") (binary_expression "puVar10 + 0xf6a00" (identifier "puVar10") (+ "+") (number_literal "0xf6a00")) () ")"))))) () ")")) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8)" (( "(") (number_literal "1") (, ",") (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x1ae8" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d5c)" (( "(") (binary_expression "puVar10 + 0xf5d5c" (identifier "puVar10") (+ "+") (number_literal "0xf5d5c")) () ")")))) (+ "+") (number_literal "0x1ae8")) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" (else "else") (compound_statement "{\n      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);\n    }" ({ "{") (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xf6a00)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xf6a00)" (* "*") (cast_expression "(code **)(puVar10 + 0xf6a00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf6a00)" (( "(") (binary_expression "puVar10 + 0xf6a00" (identifier "puVar10") (+ "+") (number_literal "0xf6a00")) () ")"))))) () ")")) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4)" (( "(") (number_literal "1") (, ",") (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x1ac4" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d5c)" (( "(") (binary_expression "puVar10 + 0xf5d5c" (identifier "puVar10") (+ "+") (number_literal "0xf5d5c")) () ")")))) (+ "+") (number_literal "0x1ac4")) () ")"))) (; ";")) (} "}")))) (expression_statement "iVar2 = *(int *)(puVar10 + 0xf5d5c);" (assignment_expression "iVar2 = *(int *)(puVar10 + 0xf5d5c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d5c)" (( "(") (binary_expression "puVar10 + 0xf5d5c" (identifier "puVar10") (+ "+") (number_literal "0xf5d5c")) () ")"))))) (; ";")) (expression_statement "(**(code **)(puVar10 + 0xf6ac4))();" (call_expression "(**(code **)(puVar10 + 0xf6ac4))()" (parenthesized_expression "(**(code **)(puVar10 + 0xf6ac4))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xf6ac4)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xf6ac4)" (* "*") (cast_expression "(code **)(puVar10 + 0xf6ac4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf6ac4)" (( "(") (binary_expression "puVar10 + 0xf6ac4" (identifier "puVar10") (+ "+") (number_literal "0xf6ac4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar6 = (uint)*pbVar1;" (assignment_expression "uVar6 = (uint)*pbVar1" (identifier "uVar6") (= "=") (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar1"))) (; ";")) (expression_statement "iVar5 = *(int *)(puVar10 + 0xf5d5c);" (assignment_expression "iVar5 = *(int *)(puVar10 + 0xf5d5c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d5c)" (( "(") (binary_expression "puVar10 + 0xf5d5c" (identifier "puVar10") (+ "+") (number_literal "0xf5d5c")) () ")"))))) (; ";")) (labeled_statement "LAB_00034628:\n    do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );" (statement_identifier "LAB_00034628") (: ":") (do_statement "do {\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    } while( true );" (do "do") (compound_statement "{\n      pbVar9 = pbVar1;\n      if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }\n      uVar6 = (uint)pbVar9[1];\n      pbVar1 = pbVar9 + 1;\n      if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }\n    }" ({ "{") (expression_statement "pbVar9 = pbVar1;" (assignment_expression "pbVar9 = pbVar1" (identifier "pbVar9") (= "=") (identifier "pbVar1")) (; ";")) (if_statement "if (uVar6 == 0) {\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }\n      else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0001a9a8(10);\n        uVar6 = local_bc[0] & 0x7f;\n        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }\n        (**(code **)(puVar10 + 0xf5fc8))(uVar6);\n        uVar8 = extraout_v1_01;\n      }" ({ "{") (expression_statement "FUN_0001a9a8(10);" (call_expression "FUN_0001a9a8(10)" (identifier "FUN_0001a9a8") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (expression_statement "uVar6 = local_bc[0] & 0x7f;" (assignment_expression "uVar6 = local_bc[0] & 0x7f" (identifier "uVar6") (= "=") (binary_expression "local_bc[0] & 0x7f" (subscript_expression "local_bc[0]" (identifier "local_bc") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0x7f"))) (; ";")) (if_statement "if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }" (if "if") (parenthesized_expression "((char)((char)uVar6 + '\x01') >> 1 < '\x01')" (( "(") (binary_expression "(char)((char)uVar6 + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)uVar6 + '\x01') >> 1" (cast_expression "(char)((char)uVar6 + '\x01')" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((char)uVar6 + '\x01')" (( "(") (binary_expression "(char)uVar6 + '\x01'" (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6")) (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) (>> ">>") (number_literal "1")) (< "<") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n          uVar6 = (local_bc[0] << 0x10) >> 0x18;\n        }" ({ "{") (expression_statement "uVar6 = (local_bc[0] << 0x10) >> 0x18;" (assignment_expression "uVar6 = (local_bc[0] << 0x10) >> 0x18" (identifier "uVar6") (= "=") (binary_expression "(local_bc[0] << 0x10) >> 0x18" (parenthesized_expression "(local_bc[0] << 0x10)" (( "(") (binary_expression "local_bc[0] << 0x10" (subscript_expression "local_bc[0]" (identifier "local_bc") ([ "[") (number_literal "0") (] "]")) (<< "<<") (number_literal "0x10")) () ")")) (>> ">>") (number_literal "0x18"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar10 + 0xf5fc8))(uVar6);" (call_expression "(**(code **)(puVar10 + 0xf5fc8))(uVar6)" (parenthesized_expression "(**(code **)(puVar10 + 0xf5fc8))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xf5fc8)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xf5fc8)" (* "*") (cast_expression "(code **)(puVar10 + 0xf5fc8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf5fc8)" (( "(") (binary_expression "puVar10 + 0xf5fc8" (identifier "puVar10") (+ "+") (number_literal "0xf5fc8")) () ")"))))) () ")")) (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "uVar8 = extraout_v1_01;" (assignment_expression "uVar8 = extraout_v1_01" (identifier "uVar8") (= "=") (identifier "extraout_v1_01")) (; ";")) (} "}")) (else_clause "else {\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" (else "else") (compound_statement "{\n        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);\n        uVar8 = uVar6;\n        if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }\n      }" ({ "{") (expression_statement "iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);" (assignment_expression "iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6d68))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xf6d68)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xf6d68)" (* "*") (cast_expression "(code **)(puVar10 + 0xf6d68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf6d68)" (( "(") (binary_expression "puVar10 + 0xf6d68" (identifier "puVar10") (+ "+") (number_literal "0xf6d68")) () ")"))))) () ")")) (argument_list "(pbVar9,iVar2 + 0x1b10)" (( "(") (identifier "pbVar9") (, ",") (binary_expression "iVar2 + 0x1b10" (identifier "iVar2") (+ "+") (number_literal "0x1b10")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar6;" (assignment_expression "uVar8 = uVar6" (identifier "uVar8") (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (iVar7 != 0) {\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);\n          uVar6 = (uint)pbVar9[iVar7];\n          pbVar1 = pbVar9 + iVar7;\n          goto LAB_00034628;\n        }" ({ "{") (expression_statement "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);" (call_expression "(**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9)" (parenthesized_expression "(**(code **)(puVar10 + 0xf6a00))" (( "(") (pointer_expression "**(code **)(puVar10 + 0xf6a00)" (* "*") (pointer_expression "*(code **)(puVar10 + 0xf6a00)" (* "*") (cast_expression "(code **)(puVar10 + 0xf6a00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0xf6a00)" (( "(") (binary_expression "puVar10 + 0xf6a00" (identifier "puVar10") (+ "+") (number_literal "0xf6a00")) () ")"))))) () ")")) (argument_list "(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9)" (( "(") (number_literal "1") (, ",") (binary_expression "*(int *)(puVar10 + 0xf5d5c) + 0x12ec" (pointer_expression "*(int *)(puVar10 + 0xf5d5c)" (* "*") (cast_expression "(int *)(puVar10 + 0xf5d5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xf5d5c)" (( "(") (binary_expression "puVar10 + 0xf5d5c" (identifier "puVar10") (+ "+") (number_literal "0xf5d5c")) () ")")))) (+ "+") (number_literal "0x12ec")) (, ",") (identifier "iVar7") (, ",") (identifier "pbVar9") () ")"))) (; ";")) (expression_statement "uVar6 = (uint)pbVar9[iVar7];" (assignment_expression "uVar6 = (uint)pbVar9[iVar7]" (identifier "uVar6") (= "=") (cast_expression "(uint)pbVar9[iVar7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar9[iVar7]" (identifier "pbVar9") ([ "[") (identifier "iVar7") (] "]")))) (; ";")) (expression_statement "pbVar1 = pbVar9 + iVar7;" (assignment_expression "pbVar1 = pbVar9 + iVar7" (identifier "pbVar1") (= "=") (binary_expression "pbVar9 + iVar7" (identifier "pbVar9") (+ "+") (identifier "iVar7"))) (; ";")) (goto_statement "goto LAB_00034628;" (goto "goto") (statement_identifier "LAB_00034628") (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar6 = (uint)pbVar9[1];" (assignment_expression "uVar6 = (uint)pbVar9[1]" (identifier "uVar6") (= "=") (cast_expression "(uint)pbVar9[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pbVar1 = pbVar9 + 1;" (assignment_expression "pbVar1 = pbVar9 + 1" (identifier "pbVar1") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar8 == 0x25) {\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }" (if "if") (parenthesized_expression "(uVar8 == 0x25)" (( "(") (binary_expression "uVar8 == 0x25" (identifier "uVar8") (== "==") (number_literal "0x25")) () ")")) (compound_statement "{\n        uVar6 = uVar6 - 0x43 & 0xff;\n        if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }\n        uVar6 = (uint)pbVar9[2];\n        pbVar1 = pbVar9 + 2;\n      }" ({ "{") (expression_statement "uVar6 = uVar6 - 0x43 & 0xff;" (assignment_expression "uVar6 = uVar6 - 0x43 & 0xff" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 0x43 & 0xff" (binary_expression "uVar6 - 0x43" (identifier "uVar6") (- "-") (number_literal "0x43")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (uVar6 < 0x36) {\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }" (if "if") (parenthesized_expression "(uVar6 < 0x36)" (( "(") (binary_expression "uVar6 < 0x36" (identifier "uVar6") (< "<") (number_literal "0x36")) () ")")) (compound_statement "{\n                    \n                    \n          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();\n          return;\n        }" ({ "{") (expression_statement "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();" (call_expression "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))()" (parenthesized_expression "(*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))" (( "(") (pointer_expression "*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" (* "*") (cast_expression "(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20)" (( "(") (binary_expression "puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20" (binary_expression "puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4)" (identifier "puVar10") (+ "+") (pointer_expression "*(int *)(iVar5 + 0x1b4c + uVar6 * 4)" (* "*") (cast_expression "(int *)(iVar5 + 0x1b4c + uVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x1b4c + uVar6 * 4)" (( "(") (binary_expression "iVar5 + 0x1b4c + uVar6 * 4" (binary_expression "iVar5 + 0x1b4c" (identifier "iVar5") (+ "+") (number_literal "0x1b4c")) (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4"))) () ")"))))) (+ "+") (number_literal "0xfdd20")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar6 = (uint)pbVar9[2];" (assignment_expression "uVar6 = (uint)pbVar9[2]" (identifier "uVar6") (= "=") (cast_expression "(uint)pbVar9[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar9[2]" (identifier "pbVar9") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "pbVar1 = pbVar9 + 2;" (assignment_expression "pbVar1 = pbVar9 + 2" (identifier "pbVar1") (= "=") (binary_expression "pbVar9 + 2" (identifier "pbVar9") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (expression_statement "uVar3 = (*(code *)PTR_signal_0012b118)(2,1);" (assignment_expression "uVar3 = (*(code *)PTR_signal_0012b118)(2,1)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR_signal_0012b118)(2,1)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" (( "(") (pointer_expression "*(code *)PTR_signal_0012b118" (* "*") (cast_expression "(code *)PTR_signal_0012b118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_signal_0012b118"))) () ")")) (argument_list "(2,1)" (( "(") (number_literal "2") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "uVar4 = (*(code *)PTR_signal_0012b118)(3,1);" (assignment_expression "uVar4 = (*(code *)PTR_signal_0012b118)(3,1)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR_signal_0012b118)(3,1)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" (( "(") (pointer_expression "*(code *)PTR_signal_0012b118" (* "*") (cast_expression "(code *)PTR_signal_0012b118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_signal_0012b118"))) () ")")) (argument_list "(3,1)" (( "(") (number_literal "3") (, ",") (number_literal "1") () ")")))) (; ";")) (do_statement "do {\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));" (do "do") (compound_statement "{\n    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);\n    if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }\n  }" ({ "{") (expression_statement "iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);" (assignment_expression "iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4)" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4)" (parenthesized_expression "(*(code *)PTR_wait3_0012ae88)" (( "(") (pointer_expression "*(code *)PTR_wait3_0012ae88" (* "*") (cast_expression "(code *)PTR_wait3_0012ae88" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wait3_0012ae88"))) () ")")) (argument_list "(param_2,0,param_2 + 4)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (iVar2 == iVar5) {\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }" (if "if") (parenthesized_expression "(iVar2 == iVar5)" (( "(") (binary_expression "iVar2 == iVar5" (identifier "iVar2") (== "==") (identifier "iVar5")) () ")")) (compound_statement "{\n      FUN_0001cf38();\n      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);\n      goto LAB_000343ac;\n    }" ({ "{") (expression_statement "FUN_0001cf38();" (call_expression "FUN_0001cf38()" (identifier "FUN_0001cf38") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);" (assignment_expression "*(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c)" (pointer_expression "*(int *)(param_2 + 0x4c)" (* "*") (cast_expression "(int *)(param_2 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x4c)" (( "(") (binary_expression "param_2 + 0x4c" (identifier "param_2") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (binary_expression "extraout_v1_00 - *(int *)(param_2 + 0x4c)" (identifier "extraout_v1_00") (- "-") (pointer_expression "*(int *)(param_2 + 0x4c)" (* "*") (cast_expression "(int *)(param_2 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x4c)" (( "(") (binary_expression "param_2 + 0x4c" (identifier "param_2") (+ "+") (number_literal "0x4c")) () ")")))))) (; ";")) (goto_statement "goto LAB_000343ac;" (goto "goto") (statement_identifier "LAB_000343ac") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((iVar5 != -1) || (**(int **)puVar10 == 4))" (( "(") (binary_expression "(iVar5 != -1) || (**(int **)puVar10 == 4)" (parenthesized_expression "(iVar5 != -1)" (( "(") (binary_expression "iVar5 != -1" (identifier "iVar5") (!= "!=") (number_literal "-1")) () ")")) (|| "||") (parenthesized_expression "(**(int **)puVar10 == 4)" (( "(") (binary_expression "**(int **)puVar10 == 4" (pointer_expression "**(int **)puVar10" (* "*") (pointer_expression "*(int **)puVar10" (* "*") (cast_expression "(int **)puVar10" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar10")))) (== "==") (number_literal "4")) () ")"))) () ")")) (; ";")) (expression_statement "FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);" (call_expression "FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc)" (identifier "FUN_00018cb8") (argument_list "(PTR_UINT_0012a18c + 0x1abc)" (( "(") (binary_expression "PTR_UINT_0012a18c + 0x1abc" (identifier "PTR_UINT_0012a18c") (+ "+") (number_literal "0x1abc")) () ")"))) (; ";")) (labeled_statement "LAB_000343ac:\n  (*(code *)PTR_signal_0012b118)(2,uVar3);" (statement_identifier "LAB_000343ac") (: ":") (expression_statement "(*(code *)PTR_signal_0012b118)(2,uVar3);" (call_expression "(*(code *)PTR_signal_0012b118)(2,uVar3)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" (( "(") (pointer_expression "*(code *)PTR_signal_0012b118" (* "*") (cast_expression "(code *)PTR_signal_0012b118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_signal_0012b118"))) () ")")) (argument_list "(2,uVar3)" (( "(") (number_literal "2") (, ",") (identifier "uVar3") () ")"))) (; ";"))) (expression_statement "(*(code *)PTR_signal_0012b118)(3,uVar4);" (call_expression "(*(code *)PTR_signal_0012b118)(3,uVar4)" (parenthesized_expression "(*(code *)PTR_signal_0012b118)" (( "(") (pointer_expression "*(code *)PTR_signal_0012b118" (* "*") (cast_expression "(code *)PTR_signal_0012b118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_signal_0012b118"))) () ")")) (argument_list "(3,uVar4)" (( "(") (number_literal "3") (, ",") (identifier "uVar4") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (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) (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)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (char_literal (escape_sequence))))) right: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal)) right: (number_literal))))) consequence: (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) (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 (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) (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))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (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))))))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence))))) right: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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 (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (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 (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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) (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) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_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: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))) right: (number_literal)))))) arguments: (argument_list))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (true)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (number_literal))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_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: (binary_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)))))))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_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 (number_literal) (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 (number_literal) (identifier)))) (return_statement))))

void MASKED(undefined4 param_1,int param_2)

{
  byte *pbVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  undefined4 extraout_v1;
  int extraout_v1_00;
  uint extraout_v1_01;
  uint uVar8;
  byte *pbVar9;
  undefined *puVar10;
  byte *local_c4;
  undefined4 local_c0;
  uint local_bc [20];
  undefined4 local_6c;
  int local_68;
  
  iVar5 = param_2;
  FUN_0001cf38();
  puVar10 = PTR_vfork_0012ae44;
  *(undefined4 *)(param_2 + 0x4c) = extraout_v1;
  iVar2 = (*(code *)puVar10)();
  puVar10 = PTR_DAT_0012a214;
  if (iVar2 < 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00018d6c(PTR_UINT_0012a18c + -0x94c);
  }
  if (iVar2 == 0) {
    puVar10 = PTR_FUN_0012a400;
    (*(code *)PTR_FUN_0012a400)(param_1);
    local_6c = **(undefined4 **)(puVar10 + 0xf6d1c);
    local_68 = iVar2;
    local_c4 = (byte *)(**(code **)(puVar10 + 0xf6b9c))(*(int *)(puVar10 + 0xf5d78) + -0x7370);
    if (local_c4 == (byte *)0x0) {
      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5af0);
    }
    uVar6 = (**(code **)(puVar10 + 0xf5edc))
                      (iVar5,*(int *)(puVar10 + 0xf5d5c) + -0x1ea0,&local_c0,&local_c4);
    iVar2 = **(int **)(puVar10 + 0xf6cbc);
    if ((uVar6 & 1) != 0) {
      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x580e);
    }
    if ((uVar6 & 2) != 0) {
      local_c4 = (byte *)(*(int *)(puVar10 + 0xf5d78) + 0x5ad9);
    }
    uVar3 = 2;
    if ((uVar6 & 8) != 0) {
      if ((uVar6 & 4) == 0) {
        uVar3 = 0x80301;
      }
      else {
        uVar3 = 0x80109;
      }
      uVar3 = FUN_0001a4c8(local_c0,uVar3);
    }
    MASKED(iVar5 + iVar2 * 4,local_bc);
    FUN_0001a670(uVar3,1);
    pbVar1 = local_c4;
    if ((char)((char)(local_bc[0] & 0x7f) + '\x01') >> 1 < '\x01') {
      if (((local_bc[0] & 0x7f) == 0) && ((local_bc[0] << 0x10) >> 0x18 != 0)) {
        (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ae8);
      }
    }
    else {
      (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x1ac4);
    }
    iVar2 = *(int *)(puVar10 + 0xf5d5c);
    (**(code **)(puVar10 + 0xf6ac4))();
    uVar6 = (uint)*pbVar1;
    iVar5 = *(int *)(puVar10 + 0xf5d5c);
LAB_00034628:
    do {
      pbVar9 = pbVar1;
      if (uVar6 == 0) {
        FUN_0001a9a8(10);
        uVar6 = local_bc[0] & 0x7f;
        if ((char)((char)uVar6 + '\x01') >> 1 < '\x01') {
          uVar6 = (local_bc[0] << 0x10) >> 0x18;
        }
        (**(code **)(puVar10 + 0xf5fc8))(uVar6);
        uVar8 = extraout_v1_01;
      }
      else {
        iVar7 = (**(code **)(puVar10 + 0xf6d68))(pbVar9,iVar2 + 0x1b10);
        uVar8 = uVar6;
        if (iVar7 != 0) {
          (**(code **)(puVar10 + 0xf6a00))(1,*(int *)(puVar10 + 0xf5d5c) + 0x12ec,iVar7,pbVar9);
          uVar6 = (uint)pbVar9[iVar7];
          pbVar1 = pbVar9 + iVar7;
          goto LAB_00034628;
        }
      }
      uVar6 = (uint)pbVar9[1];
      pbVar1 = pbVar9 + 1;
      if (uVar8 == 0x25) {
        uVar6 = uVar6 - 0x43 & 0xff;
        if (uVar6 < 0x36) {
                    /* WARNING: Could not recover jumptable at 0x00034724. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          (*(code *)(puVar10 + *(int *)(iVar5 + 0x1b4c + uVar6 * 4) + 0xfdd20))();
          return;
        }
        uVar6 = (uint)pbVar9[2];
        pbVar1 = pbVar9 + 2;
      }
    } while( true );
  }
  uVar3 = (*(code *)PTR_signal_0012b118)(2,1);
  uVar4 = (*(code *)PTR_signal_0012b118)(3,1);
  do {
    iVar5 = (*(code *)PTR_wait3_0012ae88)(param_2,0,param_2 + 4);
    if (iVar2 == iVar5) {
      FUN_0001cf38();
      *(int *)(param_2 + 0x4c) = extraout_v1_00 - *(int *)(param_2 + 0x4c);
      goto LAB_000343ac;
    }
  } while ((iVar5 != -1) || (**(int **)puVar10 == 4));
  FUN_00018cb8(PTR_UINT_0012a18c + 0x1abc);
LAB_000343ac:
  (*(code *)PTR_signal_0012b118)(2,uVar3);
  (*(code *)PTR_signal_0012b118)(3,uVar4);
  return;
}

