
void ash_msg_and_raise_error(char *msg,...)

{
  undefined4 in_a1;
  undefined4 in_a2;
  undefined4 in_a3;
  undefined4 uStackX_4;
  undefined4 uStackX_8;
  undefined4 uStackX_c;
  va_list ap;
  
  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;
  uStackX_4 = in_a1;
  uStackX_8 = in_a2;
  uStackX_c = in_a3;
  ash_vmsg(msg,&uStackX_4);
  flush_stdout_stderr();
                    /* WARNING: Subroutine does not return */
  raise_exception(1);
}



int * FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  byte *pbVar6;
  undefined4 *puVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  int *piVar11;
  undefined1 *puVar12;
  undefined *puVar13;
  code *pcVar14;
  undefined4 local_res4;
  undefined4 local_res8;
  undefined4 local_resc;
  
  puVar7 = &local_res4;
  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;
  local_res4 = param_2;
  local_res8 = param_3;
  local_resc = param_4;
  FUN_0006ed24();
  FUN_0006d5c0();
  puVar13 = PTR_LAB_0012a814 + -0x2c88;
  pbVar5 = &DAT_00000001;
  FUN_0006d378();
  uVar8 = (uint)*pbVar5;
  uVar4 = uVar8 << 4;
  uVar1 = uVar8;
  pbVar6 = pbVar5;
  while ((uVar1 != 0 && (uVar1 != 0x3d))) {
    pbVar6 = pbVar6 + 1;
    uVar4 = uVar4 + uVar1;
    uVar1 = (uint)*pbVar6;
  }
  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);
  uVar9 = (byte)puVar12[0x37] & 1;
  uVar1 = uVar9 | (uint)puVar7;
  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);
  piVar11 = (int *)*piVar2;
  if (piVar11 == (int *)0x0) {
    if (((uint)puVar7 & 0x80) != 0) {
      return (int *)0x0;
    }
    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {
      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);
      *piVar11 = *piVar2;
      *piVar2 = (int)piVar11;
      pcVar14 = *(code **)(puVar13 + 0xbb3bc);
      goto joined_r0x0006f0b0;
    }
    pcVar14 = *(code **)(puVar13 + 0xbc27c);
    if (((uint)puVar7 & 0x118) != 0x100) {
      return (int *)0x0;
    }
  }
  else {
    uVar4 = piVar11[1];
    if ((uVar4 & 0x202) == 2) {
      if (((uint)puVar7 & 0x100) != 0) {
        (**(code **)(puVar13 + 0xbc27c))(pbVar5);
      }
      iVar10 = piVar11[2];
      pcVar14 = *(code **)(puVar13 + 0xbc274);
      *puVar12 = 1;
      iVar3 = (*pcVar14)(iVar10,0x3d);
                    /* WARNING: Subroutine does not return */
      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);
    }
    if (((uint)puVar7 & 0x80) != 0) {
      return piVar11;
    }
    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {
      while ((uVar8 != 0 && (uVar8 != 0x3d))) {
        uVar8 = (uint)pbVar6[1];
        pbVar6 = pbVar6 + 1;
      }
      (*(code *)piVar11[3])();
      uVar4 = piVar11[1];
    }
    if ((uVar4 & 0x18) == 0) {
      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);
      uVar4 = piVar11[1];
    }
    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {
      uVar1 = uVar1 | uVar4 & 0xfffffec7;
      pcVar14 = *(code **)(puVar13 + 0xbb3bc);
joined_r0x0006f0b0:
      if (((uint)puVar7 & 0x118) == 0) {
        pbVar5 = (byte *)(*pcVar14)(pbVar5);
      }
      piVar11[2] = (int)pbVar5;
      piVar11[1] = uVar1;
      return piVar11;
    }
    pcVar14 = *(code **)(puVar13 + 0xbc27c);
    *piVar2 = *piVar11;
    (*pcVar14)(piVar11);
    if (((uint)puVar7 & 0x118) != 0x100) {
      return piVar11;
    }
    pcVar14 = *(code **)(puVar13 + 0xbc27c);
  }
  (*pcVar14)(pbVar5);
  return piVar11;
}


lui gp,0xc
addiu gp,gp,0x32e8
addu gp,gp,t9
lw v1,-0x7904(gp)
addiu sp,sp,-0x28
lw t9,-0x793c(gp)
addiu v0,sp,0x2c
sw a2,0x30(sp)
sw a1,0x2c(sp)
or a1,v0,zero
sw a3,0x34(sp)
addiu t9,t9,-0x12dc
lw a2,0x0(v1)
lw v1,-0x7004(gp)
sw v0,0x18(sp)
li v0,0x2
sw gp,0x10(sp)
sw ra,0x24(sp)
lw v1,0x0(v1)
sb v0,0x0(a2)
sw v1,0x1c(sp)
bal 0x0006ed24
_nop
lw gp,0x10(sp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x2a40
bal 0x0006d5c0
_nop
lw gp,0x10(sp)
lw t9,-0x793c(gp)
addiu t9,t9,-0x2c88
bal 0x0006d378
_li a0,0x1
(translation_unit "int * FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  int *piVar11;\n  undefined1 *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  \n  puVar7 = &local_res4;\n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  local_res4 = param_2;\n  local_res8 = param_3;\n  local_resc = param_4;\n  FUN_0006ed24();\n  FUN_0006d5c0();\n  puVar13 = PTR_LAB_0012a814 + -0x2c88;\n  pbVar5 = &DAT_00000001;\n  FUN_0006d378();\n  uVar8 = (uint)*pbVar5;\n  uVar4 = uVar8 << 4;\n  uVar1 = uVar8;\n  pbVar6 = pbVar5;\n  while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }\n  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);\n  uVar9 = (byte)puVar12[0x37] & 1;\n  uVar1 = uVar9 | (uint)puVar7;\n  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);\n  piVar11 = (int *)*piVar2;\n  if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    /* WARNING: Subroutine does not return */\n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }\n  (*pcVar14)(pbVar5);\n  return piVar11;\n}\n\n" (function_definition "int * FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  int *piVar11;\n  undefined1 *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  \n  puVar7 = &local_res4;\n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  local_res4 = param_2;\n  local_res8 = param_3;\n  local_resc = param_4;\n  FUN_0006ed24();\n  FUN_0006d5c0();\n  puVar13 = PTR_LAB_0012a814 + -0x2c88;\n  pbVar5 = &DAT_00000001;\n  FUN_0006d378();\n  uVar8 = (uint)*pbVar5;\n  uVar4 = uVar8 << 4;\n  uVar1 = uVar8;\n  pbVar6 = pbVar5;\n  while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }\n  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);\n  uVar9 = (byte)puVar12[0x37] & 1;\n  uVar1 = uVar9 | (uint)puVar7;\n  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);\n  piVar11 = (int *)*piVar2;\n  if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    /* WARNING: Subroutine does not return */\n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }\n  (*pcVar14)(pbVar5);\n  return piVar11;\n}" primitive_type (pointer_declarator "* FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" * (function_declarator "FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) )))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  int *piVar11;\n  undefined1 *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  \n  puVar7 = &local_res4;\n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  local_res4 = param_2;\n  local_res8 = param_3;\n  local_resc = param_4;\n  FUN_0006ed24();\n  FUN_0006d5c0();\n  puVar13 = PTR_LAB_0012a814 + -0x2c88;\n  pbVar5 = &DAT_00000001;\n  FUN_0006d378();\n  uVar8 = (uint)*pbVar5;\n  uVar4 = uVar8 << 4;\n  uVar1 = uVar8;\n  pbVar6 = pbVar5;\n  while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }\n  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);\n  uVar9 = (byte)puVar12[0x37] & 1;\n  uVar1 = uVar9 | (uint)puVar7;\n  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);\n  piVar11 = (int *)*piVar2;\n  if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    /* WARNING: Subroutine does not return */\n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }\n  (*pcVar14)(pbVar5);\n  return piVar11;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "undefined4 local_res4;" type_identifier identifier ;) (declaration "undefined4 local_res8;" type_identifier identifier ;) (declaration "undefined4 local_resc;" type_identifier identifier ;) (expression_statement "puVar7 = &local_res4;" (assignment_expression "puVar7 = &local_res4" identifier = (pointer_expression "&local_res4" & identifier)) ;) (expression_statement "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;" (assignment_expression "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2" (pointer_expression "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" * (pointer_expression "*(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" * (cast_expression "(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = number_literal) ;) (expression_statement "local_res4 = param_2;" (assignment_expression "local_res4 = param_2" identifier = identifier) ;) (expression_statement "local_res8 = param_3;" (assignment_expression "local_res8 = param_3" identifier = identifier) ;) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) (expression_statement "FUN_0006ed24();" (call_expression "FUN_0006ed24()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0006d5c0();" (call_expression "FUN_0006d5c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar13 = PTR_LAB_0012a814 + -0x2c88;" (assignment_expression "puVar13 = PTR_LAB_0012a814 + -0x2c88" identifier = (binary_expression "PTR_LAB_0012a814 + -0x2c88" identifier + number_literal)) ;) (expression_statement "pbVar5 = &DAT_00000001;" (assignment_expression "pbVar5 = &DAT_00000001" identifier = (pointer_expression "&DAT_00000001" & identifier)) ;) (expression_statement "FUN_0006d378();" (call_expression "FUN_0006d378()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar8 = (uint)*pbVar5;" (assignment_expression "uVar8 = (uint)*pbVar5" identifier = (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar4 = uVar8 << 4;" (assignment_expression "uVar4 = uVar8 << 4" identifier = (binary_expression "uVar8 << 4" identifier << number_literal)) ;) (expression_statement "uVar1 = uVar8;" (assignment_expression "uVar1 = uVar8" identifier = identifier) ;) (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;) (while_statement "while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }" while (parenthesized_expression "((uVar1 != 0 && (uVar1 != 0x3d)))" ( (parenthesized_expression "(uVar1 != 0 && (uVar1 != 0x3d))" ( (binary_expression "uVar1 != 0 && (uVar1 != 0x3d)" (binary_expression "uVar1 != 0" identifier != number_literal) && (parenthesized_expression "(uVar1 != 0x3d)" ( (binary_expression "uVar1 != 0x3d" identifier != number_literal) ))) )) )) (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 + uVar1;" (assignment_expression "uVar4 = uVar4 + uVar1" identifier = (binary_expression "uVar4 + uVar1" identifier + identifier)) ;) (expression_statement "uVar1 = (uint)*pbVar6;" (assignment_expression "uVar1 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) })) (expression_statement "puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);" (assignment_expression "puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960)" identifier = (cast_expression "(undefined1 *)**(undefined4 **)(puVar13 + 0xbb960)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar13 + 0xbb960)" * (pointer_expression "*(undefined4 **)(puVar13 + 0xbb960)" * (cast_expression "(undefined4 **)(puVar13 + 0xbb960)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb960)" ( (binary_expression "puVar13 + 0xbb960" identifier + number_literal) ))))))) ;) (expression_statement "uVar9 = (byte)puVar12[0x37] & 1;" (assignment_expression "uVar9 = (byte)puVar12[0x37] & 1" identifier = (binary_expression "(byte)puVar12[0x37] & 1" (cast_expression "(byte)puVar12[0x37]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar12[0x37]" identifier [ number_literal ])) & number_literal)) ;) (expression_statement "uVar1 = uVar9 | (uint)puVar7;" (assignment_expression "uVar1 = uVar9 | (uint)puVar7" identifier = (binary_expression "uVar9 | (uint)puVar7" identifier | (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);" (assignment_expression "piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" identifier = (cast_expression "(int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" identifier (argument_list "(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" ( (binary_expression "**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4" (pointer_expression "**(int **)(puVar13 + 0xbb964)" * (pointer_expression "*(int **)(puVar13 + 0xbb964)" * (cast_expression "(int **)(puVar13 + 0xbb964)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb964)" ( (binary_expression "puVar13 + 0xbb964" identifier + number_literal) ))))) + (binary_expression "(uVar4 % 0x27 + 7) * 4" (parenthesized_expression "(uVar4 % 0x27 + 7)" ( (binary_expression "uVar4 % 0x27 + 7" (binary_expression "uVar4 % 0x27" identifier % number_literal) + number_literal) )) * number_literal)) , identifier ))))) ;) (expression_statement "piVar11 = (int *)*piVar2;" (assignment_expression "piVar11 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    /* WARNING: Subroutine does not return */\n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }" { (if_statement "if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }" if (parenthesized_expression "(((uint)puVar7 & 0x80) != 0)" ( (binary_expression "((uint)puVar7 & 0x80) != 0" (parenthesized_expression "((uint)puVar7 & 0x80)" ( (binary_expression "(uint)puVar7 & 0x80" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return (int *)0x0;\n    }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }" if (parenthesized_expression "((uVar9 | (uint)puVar7 & 0x27) != 0x20)" ( (binary_expression "(uVar9 | (uint)puVar7 & 0x27) != 0x20" (parenthesized_expression "(uVar9 | (uint)puVar7 & 0x27)" ( (binary_expression "uVar9 | (uint)puVar7 & 0x27" identifier | (binary_expression "(uint)puVar7 & 0x27" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) )) != number_literal) )) (compound_statement "{\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }" { (expression_statement "piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);" (assignment_expression "piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10)" identifier = (cast_expression "(int *)(**(code **)(puVar13 + 0xbb2e4))(0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar13 + 0xbb2e4))(0x10)" (parenthesized_expression "(**(code **)(puVar13 + 0xbb2e4))" ( (pointer_expression "**(code **)(puVar13 + 0xbb2e4)" * (pointer_expression "*(code **)(puVar13 + 0xbb2e4)" * (cast_expression "(code **)(puVar13 + 0xbb2e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb2e4)" ( (binary_expression "puVar13 + 0xbb2e4" identifier + number_literal) ))))) )) (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*piVar11 = *piVar2;" (assignment_expression "*piVar11 = *piVar2" (pointer_expression "*piVar11" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = (int)piVar11;" (assignment_expression "*piVar2 = (int)piVar11" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbb3bc);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbb3bc)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbb3bc)" * (cast_expression "(code **)(puVar13 + 0xbb3bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb3bc)" ( (binary_expression "puVar13 + 0xbb3bc" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0006f0b0;" goto statement_identifier ;) })) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) ;) (if_statement "if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }" if (parenthesized_expression "(((uint)puVar7 & 0x118) != 0x100)" ( (binary_expression "((uint)puVar7 & 0x118) != 0x100" (parenthesized_expression "((uint)puVar7 & 0x118)" ( (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return (int *)0x0;\n    }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    /* WARNING: Subroutine does not return */\n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" else (compound_statement "{\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    /* WARNING: Subroutine does not return */\n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" { (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    /* WARNING: Subroutine does not return */\n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }" if (parenthesized_expression "((uVar4 & 0x202) == 2)" ( (binary_expression "(uVar4 & 0x202) == 2" (parenthesized_expression "(uVar4 & 0x202)" ( (binary_expression "uVar4 & 0x202" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    /* WARNING: Subroutine does not return */\n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }" { (if_statement "if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }" if (parenthesized_expression "(((uint)puVar7 & 0x100) != 0)" ( (binary_expression "((uint)puVar7 & 0x100) != 0" (parenthesized_expression "((uint)puVar7 & 0x100)" ( (binary_expression "(uint)puVar7 & 0x100" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }" { (expression_statement "(**(code **)(puVar13 + 0xbc27c))(pbVar5);" (call_expression "(**(code **)(puVar13 + 0xbc27c))(pbVar5)" (parenthesized_expression "(**(code **)(puVar13 + 0xbc27c))" ( (pointer_expression "**(code **)(puVar13 + 0xbc27c)" * (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) )) (argument_list "(pbVar5)" ( identifier ))) ;) })) (expression_statement "iVar10 = piVar11[2];" (assignment_expression "iVar10 = piVar11[2]" identifier = (subscript_expression "piVar11[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc274);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc274)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbc274)" * (cast_expression "(code **)(puVar13 + 0xbc274)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc274)" ( (binary_expression "puVar13 + 0xbc274" identifier + number_literal) ))))) ;) (expression_statement "*puVar12 = 1;" (assignment_expression "*puVar12 = 1" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "iVar3 = (*pcVar14)(iVar10,0x3d);" (assignment_expression "iVar3 = (*pcVar14)(iVar10,0x3d)" identifier = (call_expression "(*pcVar14)(iVar10,0x3d)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(iVar10,0x3d)" ( identifier , number_literal )))) ;) comment (expression_statement "FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);" (call_expression "FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10)" identifier (argument_list "(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10)" ( (binary_expression "*(int *)(puVar13 + 0xbb2a0) + 0x7300" (pointer_expression "*(int *)(puVar13 + 0xbb2a0)" * (cast_expression "(int *)(puVar13 + 0xbb2a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0xbb2a0)" ( (binary_expression "puVar13 + 0xbb2a0" identifier + number_literal) )))) + number_literal) , (binary_expression "iVar3 - iVar10" identifier - identifier) , identifier ))) ;) })) (if_statement "if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }" if (parenthesized_expression "(((uint)puVar7 & 0x80) != 0)" ( (binary_expression "((uint)puVar7 & 0x80) != 0" (parenthesized_expression "((uint)puVar7 & 0x80)" ( (binary_expression "(uint)puVar7 & 0x80" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return piVar11;\n    }" { (return_statement "return piVar11;" return identifier ;) })) (if_statement "if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }" if (parenthesized_expression "(((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0))" ( (binary_expression "((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)" (parenthesized_expression "((code *)piVar11[3] != (code *)0x0)" ( (binary_expression "(code *)piVar11[3] != (code *)0x0" (cast_expression "(code *)piVar11[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[3]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)" ( (comma_expression "pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) , (binary_expression "((uint)puVar7 & 0x40) == 0" (parenthesized_expression "((uint)puVar7 & 0x40)" ( (binary_expression "(uint)puVar7 & 0x40" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }" { (while_statement "while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }" while (parenthesized_expression "((uVar8 != 0 && (uVar8 != 0x3d)))" ( (parenthesized_expression "(uVar8 != 0 && (uVar8 != 0x3d))" ( (binary_expression "uVar8 != 0 && (uVar8 != 0x3d)" (binary_expression "uVar8 != 0" identifier != number_literal) && (parenthesized_expression "(uVar8 != 0x3d)" ( (binary_expression "uVar8 != 0x3d" identifier != number_literal) ))) )) )) (compound_statement "{\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }" { (expression_statement "uVar8 = (uint)pbVar6[1];" (assignment_expression "uVar8 = (uint)pbVar6[1]" identifier = (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) })) (expression_statement "(*(code *)piVar11[3])();" (call_expression "(*(code *)piVar11[3])()" (parenthesized_expression "(*(code *)piVar11[3])" ( (pointer_expression "*(code *)piVar11[3]" * (cast_expression "(code *)piVar11[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[3]" identifier [ number_literal ]))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) })) (if_statement "if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }" if (parenthesized_expression "((uVar4 & 0x18) == 0)" ( (binary_expression "(uVar4 & 0x18) == 0" (parenthesized_expression "(uVar4 & 0x18)" ( (binary_expression "uVar4 & 0x18" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }" { (expression_statement "(**(code **)(puVar13 + 0xbc27c))(piVar11[2]);" (call_expression "(**(code **)(puVar13 + 0xbc27c))(piVar11[2])" (parenthesized_expression "(**(code **)(puVar13 + 0xbc27c))" ( (pointer_expression "**(code **)(puVar13 + 0xbc27c)" * (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) )) (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) })) (if_statement "if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }" if (parenthesized_expression "((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20)" ( (binary_expression "(uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20" (parenthesized_expression "(uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4)" ( (binary_expression "uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4" (binary_expression "uVar9 | (uint)puVar7 & 0x27" identifier | (binary_expression "(uint)puVar7 & 0x27" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) | (binary_expression "uVar4 & 4" identifier & number_literal)) )) != number_literal) )) (compound_statement "{\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }" { (expression_statement "uVar1 = uVar1 | uVar4 & 0xfffffec7;" (assignment_expression "uVar1 = uVar1 | uVar4 & 0xfffffec7" identifier = (binary_expression "uVar1 | uVar4 & 0xfffffec7" identifier | (binary_expression "uVar4 & 0xfffffec7" identifier & number_literal))) ;) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbb3bc);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbb3bc)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbb3bc)" * (cast_expression "(code **)(puVar13 + 0xbb3bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb3bc)" ( (binary_expression "puVar13 + 0xbb3bc" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" statement_identifier : (if_statement "if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" if (parenthesized_expression "(((uint)puVar7 & 0x118) == 0)" ( (binary_expression "((uint)puVar7 & 0x118) == 0" (parenthesized_expression "((uint)puVar7 & 0x118)" ( (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" { (expression_statement "pbVar5 = (byte *)(*pcVar14)(pbVar5);" (assignment_expression "pbVar5 = (byte *)(*pcVar14)(pbVar5)" identifier = (cast_expression "(byte *)(*pcVar14)(pbVar5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar14)(pbVar5)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pbVar5)" ( identifier ))))) ;) }))) (expression_statement "piVar11[2] = (int)pbVar5;" (assignment_expression "piVar11[2] = (int)pbVar5" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar11[1] = uVar1;" (assignment_expression "piVar11[1] = uVar1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return piVar11;" return identifier ;) })) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) ;) (expression_statement "*piVar2 = *piVar11;" (assignment_expression "*piVar2 = *piVar11" (pointer_expression "*piVar2" * identifier) = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "(*pcVar14)(piVar11);" (call_expression "(*pcVar14)(piVar11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(piVar11)" ( identifier ))) ;) (if_statement "if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }" if (parenthesized_expression "(((uint)puVar7 & 0x118) != 0x100)" ( (binary_expression "((uint)puVar7 & 0x118) != 0x100" (parenthesized_expression "((uint)puVar7 & 0x118)" ( (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return piVar11;\n    }" { (return_statement "return piVar11;" return identifier ;) })) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar14)(pbVar5);" (call_expression "(*pcVar14)(pbVar5)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pbVar5)" ( identifier ))) ;) (return_statement "return piVar11;" return identifier ;) })))
(translation_unit "void ash_msg_and_raise_error(char *msg,...)\n\n{\n  undefined4 in_a1;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  undefined4 uStackX_4;\n  undefined4 uStackX_8;\n  undefined4 uStackX_c;\n  va_list ap;\n  \n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  uStackX_4 = in_a1;\n  uStackX_8 = in_a2;\n  uStackX_c = in_a3;\n  ash_vmsg(msg,&uStackX_4);\n  flush_stdout_stderr();\n                    /* WARNING: Subroutine does not return */\n  raise_exception(1);\n}\n\n" (function_definition "void ash_msg_and_raise_error(char *msg,...)\n\n{\n  undefined4 in_a1;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  undefined4 uStackX_4;\n  undefined4 uStackX_8;\n  undefined4 uStackX_c;\n  va_list ap;\n  \n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  uStackX_4 = in_a1;\n  uStackX_8 = in_a2;\n  uStackX_c = in_a3;\n  ash_vmsg(msg,&uStackX_4);\n  flush_stdout_stderr();\n                    /* WARNING: Subroutine does not return */\n  raise_exception(1);\n}" primitive_type (function_declarator "ash_msg_and_raise_error(char *msg,...)" identifier (parameter_list "(char *msg,...)" ( (parameter_declaration "char *msg" primitive_type (pointer_declarator "*msg" * identifier)) , (variadic_parameter "..." ...) ))) (compound_statement "{\n  undefined4 in_a1;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  undefined4 uStackX_4;\n  undefined4 uStackX_8;\n  undefined4 uStackX_c;\n  va_list ap;\n  \n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  uStackX_4 = in_a1;\n  uStackX_8 = in_a2;\n  uStackX_c = in_a3;\n  ash_vmsg(msg,&uStackX_4);\n  flush_stdout_stderr();\n                    /* WARNING: Subroutine does not return */\n  raise_exception(1);\n}" { (declaration "undefined4 in_a1;" type_identifier identifier ;) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "undefined4 uStackX_4;" type_identifier identifier ;) (declaration "undefined4 uStackX_8;" type_identifier identifier ;) (declaration "undefined4 uStackX_c;" type_identifier identifier ;) (declaration "va_list ap;" type_identifier identifier ;) (expression_statement "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;" (assignment_expression "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2" (pointer_expression "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" * (pointer_expression "*(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" * (cast_expression "(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = number_literal) ;) (expression_statement "uStackX_4 = in_a1;" (assignment_expression "uStackX_4 = in_a1" identifier = identifier) ;) (expression_statement "uStackX_8 = in_a2;" (assignment_expression "uStackX_8 = in_a2" identifier = identifier) ;) (expression_statement "uStackX_c = in_a3;" (assignment_expression "uStackX_c = in_a3" identifier = identifier) ;) (expression_statement "ash_vmsg(msg,&uStackX_4);" (call_expression "ash_vmsg(msg,&uStackX_4)" identifier (argument_list "(msg,&uStackX_4)" ( identifier , (pointer_expression "&uStackX_4" & identifier) ))) ;) (expression_statement "flush_stdout_stderr();" (call_expression "flush_stdout_stderr()" identifier (argument_list "()" ( ))) ;) comment (expression_statement "raise_exception(1);" (call_expression "raise_exception(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })))
(translation_unit "int * FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  int *piVar11;\n  undefined1 *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  \n  puVar7 = &local_res4;\n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  local_res4 = param_2;\n  local_res8 = param_3;\n  local_resc = param_4;\n  FUN_0006ed24();\n  FUN_0006d5c0();\n  puVar13 = PTR_LAB_0012a814 + -0x2c88;\n  pbVar5 = &DAT_00000001;\n  FUN_0006d378();\n  uVar8 = (uint)*pbVar5;\n  uVar4 = uVar8 << 4;\n  uVar1 = uVar8;\n  pbVar6 = pbVar5;\n  while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }\n  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);\n  uVar9 = (byte)puVar12[0x37] & 1;\n  uVar1 = uVar9 | (uint)puVar7;\n  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);\n  piVar11 = (int *)*piVar2;\n  if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }\n  (*pcVar14)(pbVar5);\n  return piVar11;\n}\n\n" (function_definition "int * FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  int *piVar11;\n  undefined1 *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  \n  puVar7 = &local_res4;\n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  local_res4 = param_2;\n  local_res8 = param_3;\n  local_resc = param_4;\n  FUN_0006ed24();\n  FUN_0006d5c0();\n  puVar13 = PTR_LAB_0012a814 + -0x2c88;\n  pbVar5 = &DAT_00000001;\n  FUN_0006d378();\n  uVar8 = (uint)*pbVar5;\n  uVar4 = uVar8 << 4;\n  uVar1 = uVar8;\n  pbVar6 = pbVar5;\n  while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }\n  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);\n  uVar9 = (byte)puVar12[0x37] & 1;\n  uVar1 = uVar9 | (uint)puVar7;\n  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);\n  piVar11 = (int *)*piVar2;\n  if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }\n  (*pcVar14)(pbVar5);\n  return piVar11;\n}" primitive_type (pointer_declarator "* FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" * (function_declarator "FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) )))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  int *piVar11;\n  undefined1 *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  \n  puVar7 = &local_res4;\n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  local_res4 = param_2;\n  local_res8 = param_3;\n  local_resc = param_4;\n  FUN_0006ed24();\n  FUN_0006d5c0();\n  puVar13 = PTR_LAB_0012a814 + -0x2c88;\n  pbVar5 = &DAT_00000001;\n  FUN_0006d378();\n  uVar8 = (uint)*pbVar5;\n  uVar4 = uVar8 << 4;\n  uVar1 = uVar8;\n  pbVar6 = pbVar5;\n  while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }\n  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);\n  uVar9 = (byte)puVar12[0x37] & 1;\n  uVar1 = uVar9 | (uint)puVar7;\n  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);\n  piVar11 = (int *)*piVar2;\n  if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }\n  (*pcVar14)(pbVar5);\n  return piVar11;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "undefined4 local_res4;" type_identifier identifier ;) (declaration "undefined4 local_res8;" type_identifier identifier ;) (declaration "undefined4 local_resc;" type_identifier identifier ;) (expression_statement "puVar7 = &local_res4;" (assignment_expression "puVar7 = &local_res4" identifier = (pointer_expression "&local_res4" & identifier)) ;) (expression_statement "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;" (assignment_expression "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2" (pointer_expression "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" * (pointer_expression "*(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" * (cast_expression "(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) = number_literal) ;) (expression_statement "local_res4 = param_2;" (assignment_expression "local_res4 = param_2" identifier = identifier) ;) (expression_statement "local_res8 = param_3;" (assignment_expression "local_res8 = param_3" identifier = identifier) ;) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) (expression_statement "FUN_0006ed24();" (call_expression "FUN_0006ed24()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0006d5c0();" (call_expression "FUN_0006d5c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar13 = PTR_LAB_0012a814 + -0x2c88;" (assignment_expression "puVar13 = PTR_LAB_0012a814 + -0x2c88" identifier = (binary_expression "PTR_LAB_0012a814 + -0x2c88" identifier + number_literal)) ;) (expression_statement "pbVar5 = &DAT_00000001;" (assignment_expression "pbVar5 = &DAT_00000001" identifier = (pointer_expression "&DAT_00000001" & identifier)) ;) (expression_statement "FUN_0006d378();" (call_expression "FUN_0006d378()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar8 = (uint)*pbVar5;" (assignment_expression "uVar8 = (uint)*pbVar5" identifier = (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar4 = uVar8 << 4;" (assignment_expression "uVar4 = uVar8 << 4" identifier = (binary_expression "uVar8 << 4" identifier << number_literal)) ;) (expression_statement "uVar1 = uVar8;" (assignment_expression "uVar1 = uVar8" identifier = identifier) ;) (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) ;) (while_statement "while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }" while (parenthesized_expression "((uVar1 != 0 && (uVar1 != 0x3d)))" ( (parenthesized_expression "(uVar1 != 0 && (uVar1 != 0x3d))" ( (binary_expression "uVar1 != 0 && (uVar1 != 0x3d)" (binary_expression "uVar1 != 0" identifier != number_literal) && (parenthesized_expression "(uVar1 != 0x3d)" ( (binary_expression "uVar1 != 0x3d" identifier != number_literal) ))) )) )) (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 + uVar1;" (assignment_expression "uVar4 = uVar4 + uVar1" identifier = (binary_expression "uVar4 + uVar1" identifier + identifier)) ;) (expression_statement "uVar1 = (uint)*pbVar6;" (assignment_expression "uVar1 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) })) (expression_statement "puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);" (assignment_expression "puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960)" identifier = (cast_expression "(undefined1 *)**(undefined4 **)(puVar13 + 0xbb960)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar13 + 0xbb960)" * (pointer_expression "*(undefined4 **)(puVar13 + 0xbb960)" * (cast_expression "(undefined4 **)(puVar13 + 0xbb960)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb960)" ( (binary_expression "puVar13 + 0xbb960" identifier + number_literal) ))))))) ;) (expression_statement "uVar9 = (byte)puVar12[0x37] & 1;" (assignment_expression "uVar9 = (byte)puVar12[0x37] & 1" identifier = (binary_expression "(byte)puVar12[0x37] & 1" (cast_expression "(byte)puVar12[0x37]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar12[0x37]" identifier [ number_literal ])) & number_literal)) ;) (expression_statement "uVar1 = uVar9 | (uint)puVar7;" (assignment_expression "uVar1 = uVar9 | (uint)puVar7" identifier = (binary_expression "uVar9 | (uint)puVar7" identifier | (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);" (assignment_expression "piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" identifier = (cast_expression "(int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" identifier (argument_list "(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" ( (binary_expression "**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4" (pointer_expression "**(int **)(puVar13 + 0xbb964)" * (pointer_expression "*(int **)(puVar13 + 0xbb964)" * (cast_expression "(int **)(puVar13 + 0xbb964)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb964)" ( (binary_expression "puVar13 + 0xbb964" identifier + number_literal) ))))) + (binary_expression "(uVar4 % 0x27 + 7) * 4" (parenthesized_expression "(uVar4 % 0x27 + 7)" ( (binary_expression "uVar4 % 0x27 + 7" (binary_expression "uVar4 % 0x27" identifier % number_literal) + number_literal) )) * number_literal)) , identifier ))))) ;) (expression_statement "piVar11 = (int *)*piVar2;" (assignment_expression "piVar11 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }" { (if_statement "if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }" if (parenthesized_expression "(((uint)puVar7 & 0x80) != 0)" ( (binary_expression "((uint)puVar7 & 0x80) != 0" (parenthesized_expression "((uint)puVar7 & 0x80)" ( (binary_expression "(uint)puVar7 & 0x80" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return (int *)0x0;\n    }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }" if (parenthesized_expression "((uVar9 | (uint)puVar7 & 0x27) != 0x20)" ( (binary_expression "(uVar9 | (uint)puVar7 & 0x27) != 0x20" (parenthesized_expression "(uVar9 | (uint)puVar7 & 0x27)" ( (binary_expression "uVar9 | (uint)puVar7 & 0x27" identifier | (binary_expression "(uint)puVar7 & 0x27" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) )) != number_literal) )) (compound_statement "{\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }" { (expression_statement "piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);" (assignment_expression "piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10)" identifier = (cast_expression "(int *)(**(code **)(puVar13 + 0xbb2e4))(0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar13 + 0xbb2e4))(0x10)" (parenthesized_expression "(**(code **)(puVar13 + 0xbb2e4))" ( (pointer_expression "**(code **)(puVar13 + 0xbb2e4)" * (pointer_expression "*(code **)(puVar13 + 0xbb2e4)" * (cast_expression "(code **)(puVar13 + 0xbb2e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb2e4)" ( (binary_expression "puVar13 + 0xbb2e4" identifier + number_literal) ))))) )) (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "*piVar11 = *piVar2;" (assignment_expression "*piVar11 = *piVar2" (pointer_expression "*piVar11" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "*piVar2 = (int)piVar11;" (assignment_expression "*piVar2 = (int)piVar11" (pointer_expression "*piVar2" * identifier) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbb3bc);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbb3bc)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbb3bc)" * (cast_expression "(code **)(puVar13 + 0xbb3bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb3bc)" ( (binary_expression "puVar13 + 0xbb3bc" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0006f0b0;" goto statement_identifier ;) })) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) ;) (if_statement "if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }" if (parenthesized_expression "(((uint)puVar7 & 0x118) != 0x100)" ( (binary_expression "((uint)puVar7 & 0x118) != 0x100" (parenthesized_expression "((uint)puVar7 & 0x118)" ( (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return (int *)0x0;\n    }" { (return_statement "return (int *)0x0;" return (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" else (compound_statement "{\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" { (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }" if (parenthesized_expression "((uVar4 & 0x202) == 2)" ( (binary_expression "(uVar4 & 0x202) == 2" (parenthesized_expression "(uVar4 & 0x202)" ( (binary_expression "uVar4 & 0x202" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }" { (if_statement "if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }" if (parenthesized_expression "(((uint)puVar7 & 0x100) != 0)" ( (binary_expression "((uint)puVar7 & 0x100) != 0" (parenthesized_expression "((uint)puVar7 & 0x100)" ( (binary_expression "(uint)puVar7 & 0x100" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }" { (expression_statement "(**(code **)(puVar13 + 0xbc27c))(pbVar5);" (call_expression "(**(code **)(puVar13 + 0xbc27c))(pbVar5)" (parenthesized_expression "(**(code **)(puVar13 + 0xbc27c))" ( (pointer_expression "**(code **)(puVar13 + 0xbc27c)" * (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) )) (argument_list "(pbVar5)" ( identifier ))) ;) })) (expression_statement "iVar10 = piVar11[2];" (assignment_expression "iVar10 = piVar11[2]" identifier = (subscript_expression "piVar11[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc274);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc274)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbc274)" * (cast_expression "(code **)(puVar13 + 0xbc274)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc274)" ( (binary_expression "puVar13 + 0xbc274" identifier + number_literal) ))))) ;) (expression_statement "*puVar12 = 1;" (assignment_expression "*puVar12 = 1" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "iVar3 = (*pcVar14)(iVar10,0x3d);" (assignment_expression "iVar3 = (*pcVar14)(iVar10,0x3d)" identifier = (call_expression "(*pcVar14)(iVar10,0x3d)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(iVar10,0x3d)" ( identifier , number_literal )))) ;) (expression_statement "FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);" (call_expression "FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10)" identifier (argument_list "(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10)" ( (binary_expression "*(int *)(puVar13 + 0xbb2a0) + 0x7300" (pointer_expression "*(int *)(puVar13 + 0xbb2a0)" * (cast_expression "(int *)(puVar13 + 0xbb2a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0xbb2a0)" ( (binary_expression "puVar13 + 0xbb2a0" identifier + number_literal) )))) + number_literal) , (binary_expression "iVar3 - iVar10" identifier - identifier) , identifier ))) ;) })) (if_statement "if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }" if (parenthesized_expression "(((uint)puVar7 & 0x80) != 0)" ( (binary_expression "((uint)puVar7 & 0x80) != 0" (parenthesized_expression "((uint)puVar7 & 0x80)" ( (binary_expression "(uint)puVar7 & 0x80" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return piVar11;\n    }" { (return_statement "return piVar11;" return identifier ;) })) (if_statement "if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }" if (parenthesized_expression "(((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0))" ( (binary_expression "((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)" (parenthesized_expression "((code *)piVar11[3] != (code *)0x0)" ( (binary_expression "(code *)piVar11[3] != (code *)0x0" (cast_expression "(code *)piVar11[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[3]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)" ( (comma_expression "pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0" (assignment_expression "pbVar6 = pbVar5" identifier = identifier) , (binary_expression "((uint)puVar7 & 0x40) == 0" (parenthesized_expression "((uint)puVar7 & 0x40)" ( (binary_expression "(uint)puVar7 & 0x40" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }" { (while_statement "while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }" while (parenthesized_expression "((uVar8 != 0 && (uVar8 != 0x3d)))" ( (parenthesized_expression "(uVar8 != 0 && (uVar8 != 0x3d))" ( (binary_expression "uVar8 != 0 && (uVar8 != 0x3d)" (binary_expression "uVar8 != 0" identifier != number_literal) && (parenthesized_expression "(uVar8 != 0x3d)" ( (binary_expression "uVar8 != 0x3d" identifier != number_literal) ))) )) )) (compound_statement "{\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }" { (expression_statement "uVar8 = (uint)pbVar6[1];" (assignment_expression "uVar8 = (uint)pbVar6[1]" identifier = (cast_expression "(uint)pbVar6[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) })) (expression_statement "(*(code *)piVar11[3])();" (call_expression "(*(code *)piVar11[3])()" (parenthesized_expression "(*(code *)piVar11[3])" ( (pointer_expression "*(code *)piVar11[3]" * (cast_expression "(code *)piVar11[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[3]" identifier [ number_literal ]))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) })) (if_statement "if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }" if (parenthesized_expression "((uVar4 & 0x18) == 0)" ( (binary_expression "(uVar4 & 0x18) == 0" (parenthesized_expression "(uVar4 & 0x18)" ( (binary_expression "uVar4 & 0x18" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }" { (expression_statement "(**(code **)(puVar13 + 0xbc27c))(piVar11[2]);" (call_expression "(**(code **)(puVar13 + 0xbc27c))(piVar11[2])" (parenthesized_expression "(**(code **)(puVar13 + 0xbc27c))" ( (pointer_expression "**(code **)(puVar13 + 0xbc27c)" * (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) )) (argument_list "(piVar11[2])" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) })) (if_statement "if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }" if (parenthesized_expression "((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20)" ( (binary_expression "(uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20" (parenthesized_expression "(uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4)" ( (binary_expression "uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4" (binary_expression "uVar9 | (uint)puVar7 & 0x27" identifier | (binary_expression "(uint)puVar7 & 0x27" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) | (binary_expression "uVar4 & 4" identifier & number_literal)) )) != number_literal) )) (compound_statement "{\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }" { (expression_statement "uVar1 = uVar1 | uVar4 & 0xfffffec7;" (assignment_expression "uVar1 = uVar1 | uVar4 & 0xfffffec7" identifier = (binary_expression "uVar1 | uVar4 & 0xfffffec7" identifier | (binary_expression "uVar4 & 0xfffffec7" identifier & number_literal))) ;) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbb3bc);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbb3bc)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbb3bc)" * (cast_expression "(code **)(puVar13 + 0xbb3bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbb3bc)" ( (binary_expression "puVar13 + 0xbb3bc" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" statement_identifier : (if_statement "if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" if (parenthesized_expression "(((uint)puVar7 & 0x118) == 0)" ( (binary_expression "((uint)puVar7 & 0x118) == 0" (parenthesized_expression "((uint)puVar7 & 0x118)" ( (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" { (expression_statement "pbVar5 = (byte *)(*pcVar14)(pbVar5);" (assignment_expression "pbVar5 = (byte *)(*pcVar14)(pbVar5)" identifier = (cast_expression "(byte *)(*pcVar14)(pbVar5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar14)(pbVar5)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pbVar5)" ( identifier ))))) ;) }))) (expression_statement "piVar11[2] = (int)pbVar5;" (assignment_expression "piVar11[2] = (int)pbVar5" (subscript_expression "piVar11[2]" identifier [ number_literal ]) = (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar11[1] = uVar1;" (assignment_expression "piVar11[1] = uVar1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return piVar11;" return identifier ;) })) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) ;) (expression_statement "*piVar2 = *piVar11;" (assignment_expression "*piVar2 = *piVar11" (pointer_expression "*piVar2" * identifier) = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "(*pcVar14)(piVar11);" (call_expression "(*pcVar14)(piVar11)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(piVar11)" ( identifier ))) ;) (if_statement "if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }" if (parenthesized_expression "(((uint)puVar7 & 0x118) != 0x100)" ( (binary_expression "((uint)puVar7 & 0x118) != 0x100" (parenthesized_expression "((uint)puVar7 & 0x118)" ( (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return piVar11;\n    }" { (return_statement "return piVar11;" return identifier ;) })) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" identifier = (pointer_expression "*(code **)(puVar13 + 0xbc27c)" * (cast_expression "(code **)(puVar13 + 0xbc27c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0xbc27c)" ( (binary_expression "puVar13 + 0xbc27c" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar14)(pbVar5);" (call_expression "(*pcVar14)(pbVar5)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(pbVar5)" ( identifier ))) ;) (return_statement "return piVar11;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT % LIT) + LIT) )) * LIT)) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) & 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 ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression IDENT - IDENT) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT)) ))) )) (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & 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 ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) | (binary_expression IDENT & LIT)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "int * FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  int *piVar11;\n  undefined1 *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  \n  puVar7 = &local_res4;\n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  local_res4 = param_2;\n  local_res8 = param_3;\n  local_resc = param_4;\n  FUN_0006ed24();\n  FUN_0006d5c0();\n  puVar13 = PTR_LAB_0012a814 + -0x2c88;\n  pbVar5 = &DAT_00000001;\n  FUN_0006d378();\n  uVar8 = (uint)*pbVar5;\n  uVar4 = uVar8 << 4;\n  uVar1 = uVar8;\n  pbVar6 = pbVar5;\n  while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }\n  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);\n  uVar9 = (byte)puVar12[0x37] & 1;\n  uVar1 = uVar9 | (uint)puVar7;\n  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);\n  piVar11 = (int *)*piVar2;\n  if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }\n  (*pcVar14)(pbVar5);\n  return piVar11;\n}" (primitive_type "int") (pointer_declarator "* FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (* "*") (function_declarator "FUN_0006ee68(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (identifier "FUN_0006ee68") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")")))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  int iVar10;\n  int *piVar11;\n  undefined1 *puVar12;\n  undefined *puVar13;\n  code *pcVar14;\n  undefined4 local_res4;\n  undefined4 local_res8;\n  undefined4 local_resc;\n  \n  puVar7 = &local_res4;\n  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;\n  local_res4 = param_2;\n  local_res8 = param_3;\n  local_resc = param_4;\n  FUN_0006ed24();\n  FUN_0006d5c0();\n  puVar13 = PTR_LAB_0012a814 + -0x2c88;\n  pbVar5 = &DAT_00000001;\n  FUN_0006d378();\n  uVar8 = (uint)*pbVar5;\n  uVar4 = uVar8 << 4;\n  uVar1 = uVar8;\n  pbVar6 = pbVar5;\n  while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }\n  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);\n  uVar9 = (byte)puVar12[0x37] & 1;\n  uVar1 = uVar9 | (uint)puVar7;\n  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);\n  piVar11 = (int *)*piVar2;\n  if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }\n  (*pcVar14)(pbVar5);\n  return piVar11;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "undefined1 *puVar12;" (type_identifier "undefined1") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined *puVar13;" (type_identifier "undefined") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "code *pcVar14;" (type_identifier "code") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "undefined4 local_res4;" (type_identifier "undefined4") (identifier "local_res4") (; ";")) (declaration "undefined4 local_res8;" (type_identifier "undefined4") (identifier "local_res8") (; ";")) (declaration "undefined4 local_resc;" (type_identifier "undefined4") (identifier "local_resc") (; ";")) (expression_statement "puVar7 = &local_res4;" (assignment_expression "puVar7 = &local_res4" (identifier "puVar7") (= "=") (pointer_expression "&local_res4" (& "&") (identifier "local_res4"))) (; ";")) (expression_statement "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;" (assignment_expression "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2" (pointer_expression "**(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" (* "*") (pointer_expression "*(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" (* "*") (cast_expression "(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_ash_ptr_to_globals_misc_0012a84c")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "local_res4 = param_2;" (assignment_expression "local_res4 = param_2" (identifier "local_res4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_res8 = param_3;" (assignment_expression "local_res8 = param_3" (identifier "local_res8") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" (identifier "local_resc") (= "=") (identifier "param_4")) (; ";")) (expression_statement "FUN_0006ed24();" (call_expression "FUN_0006ed24()" (identifier "FUN_0006ed24") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0006d5c0();" (call_expression "FUN_0006d5c0()" (identifier "FUN_0006d5c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar13 = PTR_LAB_0012a814 + -0x2c88;" (assignment_expression "puVar13 = PTR_LAB_0012a814 + -0x2c88" (identifier "puVar13") (= "=") (binary_expression "PTR_LAB_0012a814 + -0x2c88" (identifier "PTR_LAB_0012a814") (+ "+") (number_literal "-0x2c88"))) (; ";")) (expression_statement "pbVar5 = &DAT_00000001;" (assignment_expression "pbVar5 = &DAT_00000001" (identifier "pbVar5") (= "=") (pointer_expression "&DAT_00000001" (& "&") (identifier "DAT_00000001"))) (; ";")) (expression_statement "FUN_0006d378();" (call_expression "FUN_0006d378()" (identifier "FUN_0006d378") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar8 = (uint)*pbVar5;" (assignment_expression "uVar8 = (uint)*pbVar5" (identifier "uVar8") (= "=") (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar5"))) (; ";")) (expression_statement "uVar4 = uVar8 << 4;" (assignment_expression "uVar4 = uVar8 << 4" (identifier "uVar4") (= "=") (binary_expression "uVar8 << 4" (identifier "uVar8") (<< "<<") (number_literal "4"))) (; ";")) (expression_statement "uVar1 = uVar8;" (assignment_expression "uVar1 = uVar8" (identifier "uVar1") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "pbVar6 = pbVar5;" (assignment_expression "pbVar6 = pbVar5" (identifier "pbVar6") (= "=") (identifier "pbVar5")) (; ";")) (while_statement "while ((uVar1 != 0 && (uVar1 != 0x3d))) {\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }" (while "while") (parenthesized_expression "((uVar1 != 0 && (uVar1 != 0x3d)))" (( "(") (parenthesized_expression "(uVar1 != 0 && (uVar1 != 0x3d))" (( "(") (binary_expression "uVar1 != 0 && (uVar1 != 0x3d)" (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(uVar1 != 0x3d)" (( "(") (binary_expression "uVar1 != 0x3d" (identifier "uVar1") (!= "!=") (number_literal "0x3d")) () ")"))) () ")")) () ")")) (compound_statement "{\n    pbVar6 = pbVar6 + 1;\n    uVar4 = uVar4 + uVar1;\n    uVar1 = (uint)*pbVar6;\n  }" ({ "{") (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = uVar4 + uVar1;" (assignment_expression "uVar4 = uVar4 + uVar1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + uVar1" (identifier "uVar4") (+ "+") (identifier "uVar1"))) (; ";")) (expression_statement "uVar1 = (uint)*pbVar6;" (assignment_expression "uVar1 = (uint)*pbVar6" (identifier "uVar1") (= "=") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6"))) (; ";")) (} "}"))) (expression_statement "puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);" (assignment_expression "puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960)" (identifier "puVar12") (= "=") (cast_expression "(undefined1 *)**(undefined4 **)(puVar13 + 0xbb960)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(puVar13 + 0xbb960)" (* "*") (pointer_expression "*(undefined4 **)(puVar13 + 0xbb960)" (* "*") (cast_expression "(undefined4 **)(puVar13 + 0xbb960)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbb960)" (( "(") (binary_expression "puVar13 + 0xbb960" (identifier "puVar13") (+ "+") (number_literal "0xbb960")) () ")"))))))) (; ";")) (expression_statement "uVar9 = (byte)puVar12[0x37] & 1;" (assignment_expression "uVar9 = (byte)puVar12[0x37] & 1" (identifier "uVar9") (= "=") (binary_expression "(byte)puVar12[0x37] & 1" (cast_expression "(byte)puVar12[0x37]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar12[0x37]" (identifier "puVar12") ([ "[") (number_literal "0x37") (] "]"))) (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar1 = uVar9 | (uint)puVar7;" (assignment_expression "uVar1 = uVar9 | (uint)puVar7" (identifier "uVar1") (= "=") (binary_expression "uVar9 | (uint)puVar7" (identifier "uVar9") (| "|") (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")))) (; ";")) (expression_statement "piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);" (assignment_expression "piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" (identifier "piVar2") (= "=") (cast_expression "(int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" (identifier "FUN_0006cc4c") (argument_list "(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5)" (( "(") (binary_expression "**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4" (pointer_expression "**(int **)(puVar13 + 0xbb964)" (* "*") (pointer_expression "*(int **)(puVar13 + 0xbb964)" (* "*") (cast_expression "(int **)(puVar13 + 0xbb964)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbb964)" (( "(") (binary_expression "puVar13 + 0xbb964" (identifier "puVar13") (+ "+") (number_literal "0xbb964")) () ")"))))) (+ "+") (binary_expression "(uVar4 % 0x27 + 7) * 4" (parenthesized_expression "(uVar4 % 0x27 + 7)" (( "(") (binary_expression "uVar4 % 0x27 + 7" (binary_expression "uVar4 % 0x27" (identifier "uVar4") (% "%") (number_literal "0x27")) (+ "+") (number_literal "7")) () ")")) (* "*") (number_literal "4"))) (, ",") (identifier "pbVar5") () ")"))))) (; ";")) (expression_statement "piVar11 = (int *)*piVar2;" (assignment_expression "piVar11 = (int *)*piVar2" (identifier "piVar11") (= "=") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (if_statement "if (piVar11 == (int *)0x0) {\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }\n  else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" (if "if") (parenthesized_expression "(piVar11 == (int *)0x0)" (( "(") (binary_expression "piVar11 == (int *)0x0" (identifier "piVar11") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }\n  }" ({ "{") (if_statement "if (((uint)puVar7 & 0x80) != 0) {\n      return (int *)0x0;\n    }" (if "if") (parenthesized_expression "(((uint)puVar7 & 0x80) != 0)" (( "(") (binary_expression "((uint)puVar7 & 0x80) != 0" (parenthesized_expression "((uint)puVar7 & 0x80)" (( "(") (binary_expression "(uint)puVar7 & 0x80" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return (int *)0x0;\n    }" ({ "{") (return_statement "return (int *)0x0;" (return "return") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }" (if "if") (parenthesized_expression "((uVar9 | (uint)puVar7 & 0x27) != 0x20)" (( "(") (binary_expression "(uVar9 | (uint)puVar7 & 0x27) != 0x20" (parenthesized_expression "(uVar9 | (uint)puVar7 & 0x27)" (( "(") (binary_expression "uVar9 | (uint)puVar7 & 0x27" (identifier "uVar9") (| "|") (binary_expression "(uint)puVar7 & 0x27" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x27"))) () ")")) (!= "!=") (number_literal "0x20")) () ")")) (compound_statement "{\n      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);\n      *piVar11 = *piVar2;\n      *piVar2 = (int)piVar11;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\n      goto joined_r0x0006f0b0;\n    }" ({ "{") (expression_statement "piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);" (assignment_expression "piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10)" (identifier "piVar11") (= "=") (cast_expression "(int *)(**(code **)(puVar13 + 0xbb2e4))(0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar13 + 0xbb2e4))(0x10)" (parenthesized_expression "(**(code **)(puVar13 + 0xbb2e4))" (( "(") (pointer_expression "**(code **)(puVar13 + 0xbb2e4)" (* "*") (pointer_expression "*(code **)(puVar13 + 0xbb2e4)" (* "*") (cast_expression "(code **)(puVar13 + 0xbb2e4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbb2e4)" (( "(") (binary_expression "puVar13 + 0xbb2e4" (identifier "puVar13") (+ "+") (number_literal "0xbb2e4")) () ")"))))) () ")")) (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "*piVar11 = *piVar2;" (assignment_expression "*piVar11 = *piVar2" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "*piVar2 = (int)piVar11;" (assignment_expression "*piVar2 = (int)piVar11" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) (; ";")) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbb3bc);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbb3bc)" (identifier "pcVar14") (= "=") (pointer_expression "*(code **)(puVar13 + 0xbb3bc)" (* "*") (cast_expression "(code **)(puVar13 + 0xbb3bc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbb3bc)" (( "(") (binary_expression "puVar13 + 0xbb3bc" (identifier "puVar13") (+ "+") (number_literal "0xbb3bc")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0006f0b0;" (goto "goto") (statement_identifier "joined_r0x0006f0b0") (; ";")) (} "}"))) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" (identifier "pcVar14") (= "=") (pointer_expression "*(code **)(puVar13 + 0xbc27c)" (* "*") (cast_expression "(code **)(puVar13 + 0xbc27c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbc27c)" (( "(") (binary_expression "puVar13 + 0xbc27c" (identifier "puVar13") (+ "+") (number_literal "0xbc27c")) () ")"))))) (; ";")) (if_statement "if (((uint)puVar7 & 0x118) != 0x100) {\n      return (int *)0x0;\n    }" (if "if") (parenthesized_expression "(((uint)puVar7 & 0x118) != 0x100)" (( "(") (binary_expression "((uint)puVar7 & 0x118) != 0x100" (parenthesized_expression "((uint)puVar7 & 0x118)" (( "(") (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x118")) () ")")) (!= "!=") (number_literal "0x100")) () ")")) (compound_statement "{\n      return (int *)0x0;\n    }" ({ "{") (return_statement "return (int *)0x0;" (return "return") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" (else "else") (compound_statement "{\n    uVar4 = piVar11[1];\n    if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }\n    if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }\n    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }\n    if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }\n    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n    *piVar2 = *piVar11;\n    (*pcVar14)(piVar11);\n    if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }\n    pcVar14 = *(code **)(puVar13 + 0xbc27c);\n  }" ({ "{") (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" (identifier "uVar4") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((uVar4 & 0x202) == 2) {\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }" (if "if") (parenthesized_expression "((uVar4 & 0x202) == 2)" (( "(") (binary_expression "(uVar4 & 0x202) == 2" (parenthesized_expression "(uVar4 & 0x202)" (( "(") (binary_expression "uVar4 & 0x202" (identifier "uVar4") (& "&") (number_literal "0x202")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }\n      iVar10 = piVar11[2];\n      pcVar14 = *(code **)(puVar13 + 0xbc274);\n      *puVar12 = 1;\n      iVar3 = (*pcVar14)(iVar10,0x3d);\n                    \n      FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);\n    }" ({ "{") (if_statement "if (((uint)puVar7 & 0x100) != 0) {\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }" (if "if") (parenthesized_expression "(((uint)puVar7 & 0x100) != 0)" (( "(") (binary_expression "((uint)puVar7 & 0x100) != 0" (parenthesized_expression "((uint)puVar7 & 0x100)" (( "(") (binary_expression "(uint)puVar7 & 0x100" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        (**(code **)(puVar13 + 0xbc27c))(pbVar5);\n      }" ({ "{") (expression_statement "(**(code **)(puVar13 + 0xbc27c))(pbVar5);" (call_expression "(**(code **)(puVar13 + 0xbc27c))(pbVar5)" (parenthesized_expression "(**(code **)(puVar13 + 0xbc27c))" (( "(") (pointer_expression "**(code **)(puVar13 + 0xbc27c)" (* "*") (pointer_expression "*(code **)(puVar13 + 0xbc27c)" (* "*") (cast_expression "(code **)(puVar13 + 0xbc27c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbc27c)" (( "(") (binary_expression "puVar13 + 0xbc27c" (identifier "puVar13") (+ "+") (number_literal "0xbc27c")) () ")"))))) () ")")) (argument_list "(pbVar5)" (( "(") (identifier "pbVar5") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar10 = piVar11[2];" (assignment_expression "iVar10 = piVar11[2]" (identifier "iVar10") (= "=") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc274);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc274)" (identifier "pcVar14") (= "=") (pointer_expression "*(code **)(puVar13 + 0xbc274)" (* "*") (cast_expression "(code **)(puVar13 + 0xbc274)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbc274)" (( "(") (binary_expression "puVar13 + 0xbc274" (identifier "puVar13") (+ "+") (number_literal "0xbc274")) () ")"))))) (; ";")) (expression_statement "*puVar12 = 1;" (assignment_expression "*puVar12 = 1" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = (*pcVar14)(iVar10,0x3d);" (assignment_expression "iVar3 = (*pcVar14)(iVar10,0x3d)" (identifier "iVar3") (= "=") (call_expression "(*pcVar14)(iVar10,0x3d)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(iVar10,0x3d)" (( "(") (identifier "iVar10") (, ",") (number_literal "0x3d") () ")")))) (; ";")) (expression_statement "FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);" (call_expression "FUN_0006ee68(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10)" (identifier "FUN_0006ee68") (argument_list "(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10)" (( "(") (binary_expression "*(int *)(puVar13 + 0xbb2a0) + 0x7300" (pointer_expression "*(int *)(puVar13 + 0xbb2a0)" (* "*") (cast_expression "(int *)(puVar13 + 0xbb2a0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0xbb2a0)" (( "(") (binary_expression "puVar13 + 0xbb2a0" (identifier "puVar13") (+ "+") (number_literal "0xbb2a0")) () ")")))) (+ "+") (number_literal "0x7300")) (, ",") (binary_expression "iVar3 - iVar10" (identifier "iVar3") (- "-") (identifier "iVar10")) (, ",") (identifier "iVar10") () ")"))) (; ";")) (} "}"))) (if_statement "if (((uint)puVar7 & 0x80) != 0) {\n      return piVar11;\n    }" (if "if") (parenthesized_expression "(((uint)puVar7 & 0x80) != 0)" (( "(") (binary_expression "((uint)puVar7 & 0x80) != 0" (parenthesized_expression "((uint)puVar7 & 0x80)" (( "(") (binary_expression "(uint)puVar7 & 0x80" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return piVar11;\n    }" ({ "{") (return_statement "return piVar11;" (return "return") (identifier "piVar11") (; ";")) (} "}"))) (if_statement "if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }" (if "if") (parenthesized_expression "(((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0))" (( "(") (binary_expression "((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)" (parenthesized_expression "((code *)piVar11[3] != (code *)0x0)" (( "(") (binary_expression "(code *)piVar11[3] != (code *)0x0" (cast_expression "(code *)piVar11[3]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)" (( "(") (comma_expression "pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0" (assignment_expression "pbVar6 = pbVar5" (identifier "pbVar6") (= "=") (identifier "pbVar5")) (, ",") (binary_expression "((uint)puVar7 & 0x40) == 0" (parenthesized_expression "((uint)puVar7 & 0x40)" (( "(") (binary_expression "(uint)puVar7 & 0x40" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }\n      (*(code *)piVar11[3])();\n      uVar4 = piVar11[1];\n    }" ({ "{") (while_statement "while ((uVar8 != 0 && (uVar8 != 0x3d))) {\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }" (while "while") (parenthesized_expression "((uVar8 != 0 && (uVar8 != 0x3d)))" (( "(") (parenthesized_expression "(uVar8 != 0 && (uVar8 != 0x3d))" (( "(") (binary_expression "uVar8 != 0 && (uVar8 != 0x3d)" (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(uVar8 != 0x3d)" (( "(") (binary_expression "uVar8 != 0x3d" (identifier "uVar8") (!= "!=") (number_literal "0x3d")) () ")"))) () ")")) () ")")) (compound_statement "{\n        uVar8 = (uint)pbVar6[1];\n        pbVar6 = pbVar6 + 1;\n      }" ({ "{") (expression_statement "uVar8 = (uint)pbVar6[1];" (assignment_expression "uVar8 = (uint)pbVar6[1]" (identifier "uVar8") (= "=") (cast_expression "(uint)pbVar6[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "(*(code *)piVar11[3])();" (call_expression "(*(code *)piVar11[3])()" (parenthesized_expression "(*(code *)piVar11[3])" (( "(") (pointer_expression "*(code *)piVar11[3]" (* "*") (cast_expression "(code *)piVar11[3]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" (identifier "uVar4") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0x18) == 0) {\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }" (if "if") (parenthesized_expression "((uVar4 & 0x18) == 0)" (( "(") (binary_expression "(uVar4 & 0x18) == 0" (parenthesized_expression "(uVar4 & 0x18)" (( "(") (binary_expression "uVar4 & 0x18" (identifier "uVar4") (& "&") (number_literal "0x18")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);\n      uVar4 = piVar11[1];\n    }" ({ "{") (expression_statement "(**(code **)(puVar13 + 0xbc27c))(piVar11[2]);" (call_expression "(**(code **)(puVar13 + 0xbc27c))(piVar11[2])" (parenthesized_expression "(**(code **)(puVar13 + 0xbc27c))" (( "(") (pointer_expression "**(code **)(puVar13 + 0xbc27c)" (* "*") (pointer_expression "*(code **)(puVar13 + 0xbc27c)" (* "*") (cast_expression "(code **)(puVar13 + 0xbc27c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbc27c)" (( "(") (binary_expression "puVar13 + 0xbc27c" (identifier "puVar13") (+ "+") (number_literal "0xbc27c")) () ")"))))) () ")")) (argument_list "(piVar11[2])" (( "(") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "uVar4 = piVar11[1];" (assignment_expression "uVar4 = piVar11[1]" (identifier "uVar4") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }" (if "if") (parenthesized_expression "((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20)" (( "(") (binary_expression "(uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20" (parenthesized_expression "(uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4)" (( "(") (binary_expression "uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4" (binary_expression "uVar9 | (uint)puVar7 & 0x27" (identifier "uVar9") (| "|") (binary_expression "(uint)puVar7 & 0x27" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x27"))) (| "|") (binary_expression "uVar4 & 4" (identifier "uVar4") (& "&") (number_literal "4"))) () ")")) (!= "!=") (number_literal "0x20")) () ")")) (compound_statement "{\n      uVar1 = uVar1 | uVar4 & 0xfffffec7;\n      pcVar14 = *(code **)(puVar13 + 0xbb3bc);\njoined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }\n      piVar11[2] = (int)pbVar5;\n      piVar11[1] = uVar1;\n      return piVar11;\n    }" ({ "{") (expression_statement "uVar1 = uVar1 | uVar4 & 0xfffffec7;" (assignment_expression "uVar1 = uVar1 | uVar4 & 0xfffffec7" (identifier "uVar1") (= "=") (binary_expression "uVar1 | uVar4 & 0xfffffec7" (identifier "uVar1") (| "|") (binary_expression "uVar4 & 0xfffffec7" (identifier "uVar4") (& "&") (number_literal "0xfffffec7")))) (; ";")) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbb3bc);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbb3bc)" (identifier "pcVar14") (= "=") (pointer_expression "*(code **)(puVar13 + 0xbb3bc)" (* "*") (cast_expression "(code **)(puVar13 + 0xbb3bc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbb3bc)" (( "(") (binary_expression "puVar13 + 0xbb3bc" (identifier "puVar13") (+ "+") (number_literal "0xbb3bc")) () ")"))))) (; ";")) (labeled_statement "joined_r0x0006f0b0:\n      if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" (statement_identifier "joined_r0x0006f0b0") (: ":") (if_statement "if (((uint)puVar7 & 0x118) == 0) {\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" (if "if") (parenthesized_expression "(((uint)puVar7 & 0x118) == 0)" (( "(") (binary_expression "((uint)puVar7 & 0x118) == 0" (parenthesized_expression "((uint)puVar7 & 0x118)" (( "(") (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x118")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pbVar5 = (byte *)(*pcVar14)(pbVar5);\n      }" ({ "{") (expression_statement "pbVar5 = (byte *)(*pcVar14)(pbVar5);" (assignment_expression "pbVar5 = (byte *)(*pcVar14)(pbVar5)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)(*pcVar14)(pbVar5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar14)(pbVar5)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(pbVar5)" (( "(") (identifier "pbVar5") () ")"))))) (; ";")) (} "}")))) (expression_statement "piVar11[2] = (int)pbVar5;" (assignment_expression "piVar11[2] = (int)pbVar5" (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)pbVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar5"))) (; ";")) (expression_statement "piVar11[1] = uVar1;" (assignment_expression "piVar11[1] = uVar1" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return piVar11;" (return "return") (identifier "piVar11") (; ";")) (} "}"))) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" (identifier "pcVar14") (= "=") (pointer_expression "*(code **)(puVar13 + 0xbc27c)" (* "*") (cast_expression "(code **)(puVar13 + 0xbc27c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbc27c)" (( "(") (binary_expression "puVar13 + 0xbc27c" (identifier "puVar13") (+ "+") (number_literal "0xbc27c")) () ")"))))) (; ";")) (expression_statement "*piVar2 = *piVar11;" (assignment_expression "*piVar2 = *piVar11" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "(*pcVar14)(piVar11);" (call_expression "(*pcVar14)(piVar11)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(piVar11)" (( "(") (identifier "piVar11") () ")"))) (; ";")) (if_statement "if (((uint)puVar7 & 0x118) != 0x100) {\n      return piVar11;\n    }" (if "if") (parenthesized_expression "(((uint)puVar7 & 0x118) != 0x100)" (( "(") (binary_expression "((uint)puVar7 & 0x118) != 0x100" (parenthesized_expression "((uint)puVar7 & 0x118)" (( "(") (binary_expression "(uint)puVar7 & 0x118" (cast_expression "(uint)puVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar7")) (& "&") (number_literal "0x118")) () ")")) (!= "!=") (number_literal "0x100")) () ")")) (compound_statement "{\n      return piVar11;\n    }" ({ "{") (return_statement "return piVar11;" (return "return") (identifier "piVar11") (; ";")) (} "}"))) (expression_statement "pcVar14 = *(code **)(puVar13 + 0xbc27c);" (assignment_expression "pcVar14 = *(code **)(puVar13 + 0xbc27c)" (identifier "pcVar14") (= "=") (pointer_expression "*(code **)(puVar13 + 0xbc27c)" (* "*") (cast_expression "(code **)(puVar13 + 0xbc27c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0xbc27c)" (( "(") (binary_expression "puVar13 + 0xbc27c" (identifier "puVar13") (+ "+") (number_literal "0xbc27c")) () ")"))))) (; ";")) (} "}")))) (expression_statement "(*pcVar14)(pbVar5);" (call_expression "(*pcVar14)(pbVar5)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(pbVar5)" (( "(") (identifier "pbVar5") () ")"))) (; ";")) (return_statement "return piVar11;" (return "return") (identifier "piVar11") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (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)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) 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 (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (call_expression function: (identifier) 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)) (binary_expression left: (identifier) right: (identifier)) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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 (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 (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (return_statement (identifier)))))

int * MASKED(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  byte *pbVar6;
  undefined4 *puVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  int *piVar11;
  undefined1 *puVar12;
  undefined *puVar13;
  code *pcVar14;
  undefined4 local_res4;
  undefined4 local_res8;
  undefined4 local_resc;
  
  puVar7 = &local_res4;
  **(undefined1 **)PTR_ash_ptr_to_globals_misc_0012a84c = 2;
  local_res4 = param_2;
  local_res8 = param_3;
  local_resc = param_4;
  FUN_0006ed24();
  FUN_0006d5c0();
  puVar13 = PTR_LAB_0012a814 + -0x2c88;
  pbVar5 = &DAT_00000001;
  FUN_0006d378();
  uVar8 = (uint)*pbVar5;
  uVar4 = uVar8 << 4;
  uVar1 = uVar8;
  pbVar6 = pbVar5;
  while ((uVar1 != 0 && (uVar1 != 0x3d))) {
    pbVar6 = pbVar6 + 1;
    uVar4 = uVar4 + uVar1;
    uVar1 = (uint)*pbVar6;
  }
  puVar12 = (undefined1 *)**(undefined4 **)(puVar13 + 0xbb960);
  uVar9 = (byte)puVar12[0x37] & 1;
  uVar1 = uVar9 | (uint)puVar7;
  piVar2 = (int *)FUN_0006cc4c(**(int **)(puVar13 + 0xbb964) + (uVar4 % 0x27 + 7) * 4,pbVar5);
  piVar11 = (int *)*piVar2;
  if (piVar11 == (int *)0x0) {
    if (((uint)puVar7 & 0x80) != 0) {
      return (int *)0x0;
    }
    if ((uVar9 | (uint)puVar7 & 0x27) != 0x20) {
      piVar11 = (int *)(**(code **)(puVar13 + 0xbb2e4))(0x10);
      *piVar11 = *piVar2;
      *piVar2 = (int)piVar11;
      pcVar14 = *(code **)(puVar13 + 0xbb3bc);
      goto joined_r0x0006f0b0;
    }
    pcVar14 = *(code **)(puVar13 + 0xbc27c);
    if (((uint)puVar7 & 0x118) != 0x100) {
      return (int *)0x0;
    }
  }
  else {
    uVar4 = piVar11[1];
    if ((uVar4 & 0x202) == 2) {
      if (((uint)puVar7 & 0x100) != 0) {
        (**(code **)(puVar13 + 0xbc27c))(pbVar5);
      }
      iVar10 = piVar11[2];
      pcVar14 = *(code **)(puVar13 + 0xbc274);
      *puVar12 = 1;
      iVar3 = (*pcVar14)(iVar10,0x3d);
                    /* WARNING: Subroutine does not return */
      MASKED(*(int *)(puVar13 + 0xbb2a0) + 0x7300,iVar3 - iVar10,iVar10);
    }
    if (((uint)puVar7 & 0x80) != 0) {
      return piVar11;
    }
    if (((code *)piVar11[3] != (code *)0x0) && (pbVar6 = pbVar5, ((uint)puVar7 & 0x40) == 0)) {
      while ((uVar8 != 0 && (uVar8 != 0x3d))) {
        uVar8 = (uint)pbVar6[1];
        pbVar6 = pbVar6 + 1;
      }
      (*(code *)piVar11[3])();
      uVar4 = piVar11[1];
    }
    if ((uVar4 & 0x18) == 0) {
      (**(code **)(puVar13 + 0xbc27c))(piVar11[2]);
      uVar4 = piVar11[1];
    }
    if ((uVar9 | (uint)puVar7 & 0x27 | uVar4 & 4) != 0x20) {
      uVar1 = uVar1 | uVar4 & 0xfffffec7;
      pcVar14 = *(code **)(puVar13 + 0xbb3bc);
joined_r0x0006f0b0:
      if (((uint)puVar7 & 0x118) == 0) {
        pbVar5 = (byte *)(*pcVar14)(pbVar5);
      }
      piVar11[2] = (int)pbVar5;
      piVar11[1] = uVar1;
      return piVar11;
    }
    pcVar14 = *(code **)(puVar13 + 0xbc27c);
    *piVar2 = *piVar11;
    (*pcVar14)(piVar11);
    if (((uint)puVar7 & 0x118) != 0x100) {
      return piVar11;
    }
    pcVar14 = *(code **)(puVar13 + 0xbc27c);
  }
  (*pcVar14)(pbVar5);
  return piVar11;
}

