
/* WARNING: Unknown calling convention */

BcStatus zxc_vm_exec(void)

{
  undefined *puVar1;
  FILE *fp;
  BcStatus BVar2;
  char *path;
  undefined4 *puVar3;
  int iVar4;
  uint uVar5;
  
  puVar1 = PTR_option_mask32_0012a334;
  if ((*(uint *)PTR_option_mask32_0012a334 & 0x10) != 0) {
    zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + 0x500a);
  }
  iVar4 = *(int *)PTR_ptr_to_globals_0012a304;
  BVar2 = *(BcStatus *)(iVar4 + 0x1ac);
  if (BVar2 != BC_STATUS_SUCCESS) {
    uVar5 = 0;
    puVar3 = *(undefined4 **)(iVar4 + 0x1a8);
    do {
      path = (char *)*puVar3;
      uVar5 = uVar5 + 1;
      fp = xfopen_for_read(path);
      BVar2 = zxc_vm_execute_FILE(fp,path);
      (*(code *)PTR_fclose_0012ad6c)(fp);
      puVar3 = puVar3 + 1;
    } while (uVar5 < *(uint *)(iVar4 + 0x1ac));
  }
  if ((**(char **)PTR_applet_name_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {
    return BVar2;
  }
  BVar2 = zxc_vm_execute_FILE(*(FILE **)PTR_stdin_0012aee0,(char *)0x0);
  return BVar2;
}



int FUN_0002cf40(void)

{
  undefined *puVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  uint uVar7;
  
  puVar1 = PTR_DAT_0012a334;
  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {
    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);
  }
  iVar6 = *(int *)PTR_DAT_0012a304;
  iVar3 = *(int *)(iVar6 + 0x1ac);
  if (iVar3 != 0) {
    uVar7 = 0;
    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);
    do {
      uVar4 = *puVar5;
      uVar7 = uVar7 + 1;
      uVar2 = FUN_000193cc(uVar4);
      iVar3 = FUN_0002ceb0(uVar2,uVar4);
      (*(code *)PTR_fclose_0012ad6c)(uVar2);
      puVar5 = puVar5 + 1;
    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));
  }
  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {
    return iVar3;
  }
  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);
  return iVar3;
}


lui gp,0x10
addiu gp,gp,0x5210
addu gp,gp,t9
addiu sp,sp,-0x38
sw s5,0x2c(sp)
lw s5,-0x7e1c(gp)
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s6,0x30(sp)
sw s4,0x28(sp)
sw s3,0x24(sp)
sw s2,0x20(sp)
sw s1,0x1c(sp)
sw s0,0x18(sp)
lw v0,0x0(s5)
andi v0,v0,0x10
beq v0,zero,0x0002cf9c
_lw t9,-0x7db8(gp)
lw a0,-0x7fa8(gp)
addiu t9,t9,-0x6394
bal 0x00029c6c
_addiu a0,a0,0x500a
lw gp,0x10(sp)
lw v0,-0x7e4c(gp)
lw s3,0x0(v0)
lw s0,0x1ac(s3)
beq s0,zero,0x0002d018
_lw v1,-0x7fa4(gp)
lw s1,-0x7db8(gp)
or s4,zero,zero
lw s2,0x1a8(s3)
lw s6,-0x7db4(gp)
addiu s1,s1,-0x3150
addiu s2,s2,0x4
lw s0,-0x4(s2)
or t9,s6,zero
addiu s4,s4,0x1
bal 0x000193cc
_or a0,s0,zero
or a1,s0,zero
or a0,v0,zero
or t9,s1,zero
bal 0x0002ceb0
_or s0,v0,zero
lw gp,0x10(sp)
or a0,s0,zero
lw t9,-0x73e4(gp)
jalr t9
_or s0,v0,zero
lw v0,0x1ac(s3)
sltu v0,s4,v0
bne v0,zero,0x0002cfc4
_lw gp,0x10(sp)
lw v1,-0x7fa4(gp)
li v0,0x62
lw v1,0x0(v1)
lbu v1,0x0(v1)
bne v1,v0,0x0002d068
_nop
lw v0,-0x7270(gp)
or a1,zero,zero
lw t9,-0x7db8(gp)
lw ra,0x34(sp)
lw s6,0x30(sp)
lw s5,0x2c(sp)
addiu t9,t9,-0x3150
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
lw a0,0x0(v0)
b 0x0002ceb0
_addiu sp,sp,0x38
lw v0,0x0(s5)
andi v0,v0,0x20
bne v0,zero,0x0002d02c
_lw ra,0x34(sp)
or v0,s0,zero
lw s6,0x30(sp)
lw s5,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x38
(translation_unit "int FUN_0002cf40(void)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  \n  puVar1 = PTR_DAT_0012a334;\n  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }\n  iVar6 = *(int *)PTR_DAT_0012a304;\n  iVar3 = *(int *)(iVar6 + 0x1ac);\n  if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }\n  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }\n  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);\n  return iVar3;\n}\n\n" (function_definition "int FUN_0002cf40(void)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  \n  puVar1 = PTR_DAT_0012a334;\n  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }\n  iVar6 = *(int *)PTR_DAT_0012a304;\n  iVar3 = *(int *)(iVar6 + 0x1ac);\n  if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }\n  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }\n  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);\n  return iVar3;\n}" primitive_type (function_declarator "FUN_0002cf40(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  \n  puVar1 = PTR_DAT_0012a334;\n  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }\n  iVar6 = *(int *)PTR_DAT_0012a304;\n  iVar3 = *(int *)(iVar6 + 0x1ac);\n  if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }\n  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }\n  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_DAT_0012a334;" (assignment_expression "puVar1 = PTR_DAT_0012a334" identifier = identifier) ;) (if_statement "if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }" if (parenthesized_expression "((*(uint *)PTR_DAT_0012a334 & 0x10) != 0)" ( (binary_expression "(*(uint *)PTR_DAT_0012a334 & 0x10) != 0" (parenthesized_expression "(*(uint *)PTR_DAT_0012a334 & 0x10)" ( (binary_expression "*(uint *)PTR_DAT_0012a334 & 0x10" (pointer_expression "*(uint *)PTR_DAT_0012a334" * (cast_expression "(uint *)PTR_DAT_0012a334" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }" { (expression_statement "FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);" (call_expression "FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a)" identifier (argument_list "(PTR_FUN_0012a1a8 + 0x500a)" ( (binary_expression "PTR_FUN_0012a1a8 + 0x500a" identifier + number_literal) ))) ;) })) (expression_statement "iVar6 = *(int *)PTR_DAT_0012a304;" (assignment_expression "iVar6 = *(int *)PTR_DAT_0012a304" identifier = (pointer_expression "*(int *)PTR_DAT_0012a304" * (cast_expression "(int *)PTR_DAT_0012a304" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = *(int *)(iVar6 + 0x1ac);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x1ac)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1ac)" * (cast_expression "(int *)(iVar6 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1ac)" ( (binary_expression "iVar6 + 0x1ac" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = *(undefined4 **)(iVar6 + 0x1a8);" (assignment_expression "puVar5 = *(undefined4 **)(iVar6 + 0x1a8)" identifier = (pointer_expression "*(undefined4 **)(iVar6 + 0x1a8)" * (cast_expression "(undefined4 **)(iVar6 + 0x1a8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0x1a8)" ( (binary_expression "iVar6 + 0x1a8" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));" do (compound_statement "{\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "uVar4 = *puVar5;" (assignment_expression "uVar4 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = FUN_000193cc(uVar4);" (assignment_expression "uVar2 = FUN_000193cc(uVar4)" identifier = (call_expression "FUN_000193cc(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) (expression_statement "iVar3 = FUN_0002ceb0(uVar2,uVar4);" (assignment_expression "iVar3 = FUN_0002ceb0(uVar2,uVar4)" identifier = (call_expression "FUN_0002ceb0(uVar2,uVar4)" identifier (argument_list "(uVar2,uVar4)" ( identifier , identifier )))) ;) (expression_statement "(*(code *)PTR_fclose_0012ad6c)(uVar2);" (call_expression "(*(code *)PTR_fclose_0012ad6c)(uVar2)" (parenthesized_expression "(*(code *)PTR_fclose_0012ad6c)" ( (pointer_expression "*(code *)PTR_fclose_0012ad6c" * (cast_expression "(code *)PTR_fclose_0012ad6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 < *(uint *)(iVar6 + 0x1ac))" ( (binary_expression "uVar7 < *(uint *)(iVar6 + 0x1ac)" identifier < (pointer_expression "*(uint *)(iVar6 + 0x1ac)" * (cast_expression "(uint *)(iVar6 + 0x1ac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1ac)" ( (binary_expression "iVar6 + 0x1ac" identifier + number_literal) ))))) )) ;) })) (if_statement "if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }" if (parenthesized_expression "((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0))" ( (binary_expression "(**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)" (parenthesized_expression "(**(char **)PTR_DAT_0012a1ac != 'b')" ( (binary_expression "**(char **)PTR_DAT_0012a1ac != 'b'" (pointer_expression "**(char **)PTR_DAT_0012a1ac" * (pointer_expression "*(char **)PTR_DAT_0012a1ac" * (cast_expression "(char **)PTR_DAT_0012a1ac" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) != (char_literal "'b'" ' character ')) )) && (parenthesized_expression "((*(uint *)puVar1 & 0x20) == 0)" ( (binary_expression "(*(uint *)puVar1 & 0x20) == 0" (parenthesized_expression "(*(uint *)puVar1 & 0x20)" ( (binary_expression "*(uint *)puVar1 & 0x20" (pointer_expression "*(uint *)puVar1" * (cast_expression "(uint *)puVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);" (assignment_expression "iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0)" identifier = (call_expression "FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0)" identifier (argument_list "(*(undefined4 *)PTR_stdin_0012aee0,0)" ( (pointer_expression "*(undefined4 *)PTR_stdin_0012aee0" * (cast_expression "(undefined4 *)PTR_stdin_0012aee0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal )))) ;) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nBcStatus zxc_vm_exec(void)\n\n{\n  undefined *puVar1;\n  FILE *fp;\n  BcStatus BVar2;\n  char *path;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_option_mask32_0012a334;\n  if ((*(uint *)PTR_option_mask32_0012a334 & 0x10) != 0) {\n    zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + 0x500a);\n  }\n  iVar4 = *(int *)PTR_ptr_to_globals_0012a304;\n  BVar2 = *(BcStatus *)(iVar4 + 0x1ac);\n  if (BVar2 != BC_STATUS_SUCCESS) {\n    uVar5 = 0;\n    puVar3 = *(undefined4 **)(iVar4 + 0x1a8);\n    do {\n      path = (char *)*puVar3;\n      uVar5 = uVar5 + 1;\n      fp = xfopen_for_read(path);\n      BVar2 = zxc_vm_execute_FILE(fp,path);\n      (*(code *)PTR_fclose_0012ad6c)(fp);\n      puVar3 = puVar3 + 1;\n    } while (uVar5 < *(uint *)(iVar4 + 0x1ac));\n  }\n  if ((**(char **)PTR_applet_name_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return BVar2;\n  }\n  BVar2 = zxc_vm_execute_FILE(*(FILE **)PTR_stdin_0012aee0,(char *)0x0);\n  return BVar2;\n}\n\n" comment (function_definition "BcStatus zxc_vm_exec(void)\n\n{\n  undefined *puVar1;\n  FILE *fp;\n  BcStatus BVar2;\n  char *path;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_option_mask32_0012a334;\n  if ((*(uint *)PTR_option_mask32_0012a334 & 0x10) != 0) {\n    zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + 0x500a);\n  }\n  iVar4 = *(int *)PTR_ptr_to_globals_0012a304;\n  BVar2 = *(BcStatus *)(iVar4 + 0x1ac);\n  if (BVar2 != BC_STATUS_SUCCESS) {\n    uVar5 = 0;\n    puVar3 = *(undefined4 **)(iVar4 + 0x1a8);\n    do {\n      path = (char *)*puVar3;\n      uVar5 = uVar5 + 1;\n      fp = xfopen_for_read(path);\n      BVar2 = zxc_vm_execute_FILE(fp,path);\n      (*(code *)PTR_fclose_0012ad6c)(fp);\n      puVar3 = puVar3 + 1;\n    } while (uVar5 < *(uint *)(iVar4 + 0x1ac));\n  }\n  if ((**(char **)PTR_applet_name_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return BVar2;\n  }\n  BVar2 = zxc_vm_execute_FILE(*(FILE **)PTR_stdin_0012aee0,(char *)0x0);\n  return BVar2;\n}" type_identifier (function_declarator "zxc_vm_exec(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  FILE *fp;\n  BcStatus BVar2;\n  char *path;\n  undefined4 *puVar3;\n  int iVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_option_mask32_0012a334;\n  if ((*(uint *)PTR_option_mask32_0012a334 & 0x10) != 0) {\n    zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + 0x500a);\n  }\n  iVar4 = *(int *)PTR_ptr_to_globals_0012a304;\n  BVar2 = *(BcStatus *)(iVar4 + 0x1ac);\n  if (BVar2 != BC_STATUS_SUCCESS) {\n    uVar5 = 0;\n    puVar3 = *(undefined4 **)(iVar4 + 0x1a8);\n    do {\n      path = (char *)*puVar3;\n      uVar5 = uVar5 + 1;\n      fp = xfopen_for_read(path);\n      BVar2 = zxc_vm_execute_FILE(fp,path);\n      (*(code *)PTR_fclose_0012ad6c)(fp);\n      puVar3 = puVar3 + 1;\n    } while (uVar5 < *(uint *)(iVar4 + 0x1ac));\n  }\n  if ((**(char **)PTR_applet_name_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return BVar2;\n  }\n  BVar2 = zxc_vm_execute_FILE(*(FILE **)PTR_stdin_0012aee0,(char *)0x0);\n  return BVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "FILE *fp;" type_identifier (pointer_declarator "*fp" * identifier) ;) (declaration "BcStatus BVar2;" type_identifier identifier ;) (declaration "char *path;" primitive_type (pointer_declarator "*path" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_option_mask32_0012a334;" (assignment_expression "puVar1 = PTR_option_mask32_0012a334" identifier = identifier) ;) (if_statement "if ((*(uint *)PTR_option_mask32_0012a334 & 0x10) != 0) {\n    zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + 0x500a);\n  }" if (parenthesized_expression "((*(uint *)PTR_option_mask32_0012a334 & 0x10) != 0)" ( (binary_expression "(*(uint *)PTR_option_mask32_0012a334 & 0x10) != 0" (parenthesized_expression "(*(uint *)PTR_option_mask32_0012a334 & 0x10)" ( (binary_expression "*(uint *)PTR_option_mask32_0012a334 & 0x10" (pointer_expression "*(uint *)PTR_option_mask32_0012a334" * (cast_expression "(uint *)PTR_option_mask32_0012a334" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + 0x500a);\n  }" { (expression_statement "zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + 0x500a);" (binary_expression "zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)9__f_l_0012a1a8 + 0x500a" (call_expression "zxc_vm_process(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)" identifier (argument_list "(PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P)" ( (binary_expression "PTR_s_<_W_q_v1_HxLJ_&uD_sa_____P" (binary_expression "PTR_s_<_W_q_v1_HxLJ_" identifier < identifier) & identifier) ))) (ERROR "9__f_l_0012a1a8" number_literal identifier) + number_literal) (ERROR ")" )) ;) })) (expression_statement "iVar4 = *(int *)PTR_ptr_to_globals_0012a304;" (assignment_expression "iVar4 = *(int *)PTR_ptr_to_globals_0012a304" identifier = (pointer_expression "*(int *)PTR_ptr_to_globals_0012a304" * (cast_expression "(int *)PTR_ptr_to_globals_0012a304" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "BVar2 = *(BcStatus *)(iVar4 + 0x1ac);" (assignment_expression "BVar2 = *(BcStatus *)(iVar4 + 0x1ac)" identifier = (pointer_expression "*(BcStatus *)(iVar4 + 0x1ac)" * (cast_expression "(BcStatus *)(iVar4 + 0x1ac)" ( (type_descriptor "BcStatus *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1ac)" ( (binary_expression "iVar4 + 0x1ac" identifier + number_literal) ))))) ;) (if_statement "if (BVar2 != BC_STATUS_SUCCESS) {\n    uVar5 = 0;\n    puVar3 = *(undefined4 **)(iVar4 + 0x1a8);\n    do {\n      path = (char *)*puVar3;\n      uVar5 = uVar5 + 1;\n      fp = xfopen_for_read(path);\n      BVar2 = zxc_vm_execute_FILE(fp,path);\n      (*(code *)PTR_fclose_0012ad6c)(fp);\n      puVar3 = puVar3 + 1;\n    } while (uVar5 < *(uint *)(iVar4 + 0x1ac));\n  }" if (parenthesized_expression "(BVar2 != BC_STATUS_SUCCESS)" ( (binary_expression "BVar2 != BC_STATUS_SUCCESS" identifier != identifier) )) (compound_statement "{\n    uVar5 = 0;\n    puVar3 = *(undefined4 **)(iVar4 + 0x1a8);\n    do {\n      path = (char *)*puVar3;\n      uVar5 = uVar5 + 1;\n      fp = xfopen_for_read(path);\n      BVar2 = zxc_vm_execute_FILE(fp,path);\n      (*(code *)PTR_fclose_0012ad6c)(fp);\n      puVar3 = puVar3 + 1;\n    } while (uVar5 < *(uint *)(iVar4 + 0x1ac));\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "puVar3 = *(undefined4 **)(iVar4 + 0x1a8);" (assignment_expression "puVar3 = *(undefined4 **)(iVar4 + 0x1a8)" identifier = (pointer_expression "*(undefined4 **)(iVar4 + 0x1a8)" * (cast_expression "(undefined4 **)(iVar4 + 0x1a8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x1a8)" ( (binary_expression "iVar4 + 0x1a8" identifier + number_literal) ))))) ;) (do_statement "do {\n      path = (char *)*puVar3;\n      uVar5 = uVar5 + 1;\n      fp = xfopen_for_read(path);\n      BVar2 = zxc_vm_execute_FILE(fp,path);\n      (*(code *)PTR_fclose_0012ad6c)(fp);\n      puVar3 = puVar3 + 1;\n    } while (uVar5 < *(uint *)(iVar4 + 0x1ac));" do (compound_statement "{\n      path = (char *)*puVar3;\n      uVar5 = uVar5 + 1;\n      fp = xfopen_for_read(path);\n      BVar2 = zxc_vm_execute_FILE(fp,path);\n      (*(code *)PTR_fclose_0012ad6c)(fp);\n      puVar3 = puVar3 + 1;\n    }" { (expression_statement "path = (char *)*puVar3;" (assignment_expression "path = (char *)*puVar3" identifier = (cast_expression "(char *)*puVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "fp = xfopen_for_read(path);" (assignment_expression "fp = xfopen_for_read(path)" identifier = (call_expression "xfopen_for_read(path)" identifier (argument_list "(path)" ( identifier )))) ;) (expression_statement "BVar2 = zxc_vm_execute_FILE(fp,path);" (assignment_expression "BVar2 = zxc_vm_execute_FILE(fp,path)" identifier = (call_expression "zxc_vm_execute_FILE(fp,path)" identifier (argument_list "(fp,path)" ( identifier , identifier )))) ;) (expression_statement "(*(code *)PTR_fclose_0012ad6c)(fp);" (call_expression "(*(code *)PTR_fclose_0012ad6c)(fp)" (parenthesized_expression "(*(code *)PTR_fclose_0012ad6c)" ( (pointer_expression "*(code *)PTR_fclose_0012ad6c" * (cast_expression "(code *)PTR_fclose_0012ad6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(fp)" ( identifier ))) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < *(uint *)(iVar4 + 0x1ac))" ( (binary_expression "uVar5 < *(uint *)(iVar4 + 0x1ac)" identifier < (pointer_expression "*(uint *)(iVar4 + 0x1ac)" * (cast_expression "(uint *)(iVar4 + 0x1ac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1ac)" ( (binary_expression "iVar4 + 0x1ac" identifier + number_literal) ))))) )) ;) })) (if_statement "if ((**(char **)PTR_applet_name_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return BVar2;\n  }" if (parenthesized_expression "((**(char **)PTR_applet_name_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0))" ( (binary_expression "(**(char **)PTR_applet_name_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)" (parenthesized_expression "(**(char **)PTR_applet_name_0012a1ac != 'b')" ( (binary_expression "**(char **)PTR_applet_name_0012a1ac != 'b'" (pointer_expression "**(char **)PTR_applet_name_0012a1ac" * (pointer_expression "*(char **)PTR_applet_name_0012a1ac" * (cast_expression "(char **)PTR_applet_name_0012a1ac" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) != (char_literal "'b'" ' character ')) )) && (parenthesized_expression "((*(uint *)puVar1 & 0x20) == 0)" ( (binary_expression "(*(uint *)puVar1 & 0x20) == 0" (parenthesized_expression "(*(uint *)puVar1 & 0x20)" ( (binary_expression "*(uint *)puVar1 & 0x20" (pointer_expression "*(uint *)puVar1" * (cast_expression "(uint *)puVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    return BVar2;\n  }" { (return_statement "return BVar2;" return identifier ;) })) (expression_statement "BVar2 = zxc_vm_execute_FILE(*(FILE **)PTR_stdin_0012aee0,(char *)0x0);" (assignment_expression "BVar2 = zxc_vm_execute_FILE(*(FILE **)PTR_stdin_0012aee0,(char *)0x0)" identifier = (call_expression "zxc_vm_execute_FILE(*(FILE **)PTR_stdin_0012aee0,(char *)0x0)" identifier (argument_list "(*(FILE **)PTR_stdin_0012aee0,(char *)0x0)" ( (pointer_expression "*(FILE **)PTR_stdin_0012aee0" * (cast_expression "(FILE **)PTR_stdin_0012aee0" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (return_statement "return BVar2;" return identifier ;) })))
(translation_unit "int FUN_0002cf40(void)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  \n  puVar1 = PTR_DAT_0012a334;\n  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }\n  iVar6 = *(int *)PTR_DAT_0012a304;\n  iVar3 = *(int *)(iVar6 + 0x1ac);\n  if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }\n  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }\n  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);\n  return iVar3;\n}\n\n" (function_definition "int FUN_0002cf40(void)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  \n  puVar1 = PTR_DAT_0012a334;\n  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }\n  iVar6 = *(int *)PTR_DAT_0012a304;\n  iVar3 = *(int *)(iVar6 + 0x1ac);\n  if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }\n  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }\n  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);\n  return iVar3;\n}" primitive_type (function_declarator "FUN_0002cf40(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  \n  puVar1 = PTR_DAT_0012a334;\n  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }\n  iVar6 = *(int *)PTR_DAT_0012a304;\n  iVar3 = *(int *)(iVar6 + 0x1ac);\n  if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }\n  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }\n  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_DAT_0012a334;" (assignment_expression "puVar1 = PTR_DAT_0012a334" identifier = identifier) ;) (if_statement "if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }" if (parenthesized_expression "((*(uint *)PTR_DAT_0012a334 & 0x10) != 0)" ( (binary_expression "(*(uint *)PTR_DAT_0012a334 & 0x10) != 0" (parenthesized_expression "(*(uint *)PTR_DAT_0012a334 & 0x10)" ( (binary_expression "*(uint *)PTR_DAT_0012a334 & 0x10" (pointer_expression "*(uint *)PTR_DAT_0012a334" * (cast_expression "(uint *)PTR_DAT_0012a334" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }" { (expression_statement "FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);" (call_expression "FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a)" identifier (argument_list "(PTR_FUN_0012a1a8 + 0x500a)" ( (binary_expression "PTR_FUN_0012a1a8 + 0x500a" identifier + number_literal) ))) ;) })) (expression_statement "iVar6 = *(int *)PTR_DAT_0012a304;" (assignment_expression "iVar6 = *(int *)PTR_DAT_0012a304" identifier = (pointer_expression "*(int *)PTR_DAT_0012a304" * (cast_expression "(int *)PTR_DAT_0012a304" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = *(int *)(iVar6 + 0x1ac);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x1ac)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1ac)" * (cast_expression "(int *)(iVar6 + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1ac)" ( (binary_expression "iVar6 + 0x1ac" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = *(undefined4 **)(iVar6 + 0x1a8);" (assignment_expression "puVar5 = *(undefined4 **)(iVar6 + 0x1a8)" identifier = (pointer_expression "*(undefined4 **)(iVar6 + 0x1a8)" * (cast_expression "(undefined4 **)(iVar6 + 0x1a8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0x1a8)" ( (binary_expression "iVar6 + 0x1a8" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));" do (compound_statement "{\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "uVar4 = *puVar5;" (assignment_expression "uVar4 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = FUN_000193cc(uVar4);" (assignment_expression "uVar2 = FUN_000193cc(uVar4)" identifier = (call_expression "FUN_000193cc(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) (expression_statement "iVar3 = FUN_0002ceb0(uVar2,uVar4);" (assignment_expression "iVar3 = FUN_0002ceb0(uVar2,uVar4)" identifier = (call_expression "FUN_0002ceb0(uVar2,uVar4)" identifier (argument_list "(uVar2,uVar4)" ( identifier , identifier )))) ;) (expression_statement "(*(code *)PTR_fclose_0012ad6c)(uVar2);" (call_expression "(*(code *)PTR_fclose_0012ad6c)(uVar2)" (parenthesized_expression "(*(code *)PTR_fclose_0012ad6c)" ( (pointer_expression "*(code *)PTR_fclose_0012ad6c" * (cast_expression "(code *)PTR_fclose_0012ad6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 < *(uint *)(iVar6 + 0x1ac))" ( (binary_expression "uVar7 < *(uint *)(iVar6 + 0x1ac)" identifier < (pointer_expression "*(uint *)(iVar6 + 0x1ac)" * (cast_expression "(uint *)(iVar6 + 0x1ac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1ac)" ( (binary_expression "iVar6 + 0x1ac" identifier + number_literal) ))))) )) ;) })) (if_statement "if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }" if (parenthesized_expression "((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0))" ( (binary_expression "(**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)" (parenthesized_expression "(**(char **)PTR_DAT_0012a1ac != 'b')" ( (binary_expression "**(char **)PTR_DAT_0012a1ac != 'b'" (pointer_expression "**(char **)PTR_DAT_0012a1ac" * (pointer_expression "*(char **)PTR_DAT_0012a1ac" * (cast_expression "(char **)PTR_DAT_0012a1ac" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) != (char_literal "'b'" ' character ')) )) && (parenthesized_expression "((*(uint *)puVar1 & 0x20) == 0)" ( (binary_expression "(*(uint *)puVar1 & 0x20) == 0" (parenthesized_expression "(*(uint *)puVar1 & 0x20)" ( (binary_expression "*(uint *)puVar1 & 0x20" (pointer_expression "*(uint *)puVar1" * (cast_expression "(uint *)puVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);" (assignment_expression "iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0)" identifier = (call_expression "FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0)" identifier (argument_list "(*(undefined4 *)PTR_stdin_0012aee0,0)" ( (pointer_expression "*(undefined4 *)PTR_stdin_0012aee0" * (cast_expression "(undefined4 *)PTR_stdin_0012aee0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal )))) ;) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_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) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) != (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) & LIT) )) == LIT) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , LIT )))) ;) (return_statement return IDENT ;) })))
(function_definition "int FUN_0002cf40(void)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  \n  puVar1 = PTR_DAT_0012a334;\n  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }\n  iVar6 = *(int *)PTR_DAT_0012a304;\n  iVar3 = *(int *)(iVar6 + 0x1ac);\n  if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }\n  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }\n  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);\n  return iVar3;\n}" (primitive_type "int") (function_declarator "FUN_0002cf40(void)" (identifier "FUN_0002cf40") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  \n  puVar1 = PTR_DAT_0012a334;\n  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }\n  iVar6 = *(int *)PTR_DAT_0012a304;\n  iVar3 = *(int *)(iVar6 + 0x1ac);\n  if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }\n  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }\n  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);\n  return iVar3;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (expression_statement "puVar1 = PTR_DAT_0012a334;" (assignment_expression "puVar1 = PTR_DAT_0012a334" (identifier "puVar1") (= "=") (identifier "PTR_DAT_0012a334")) (; ";")) (if_statement "if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }" (if "if") (parenthesized_expression "((*(uint *)PTR_DAT_0012a334 & 0x10) != 0)" (( "(") (binary_expression "(*(uint *)PTR_DAT_0012a334 & 0x10) != 0" (parenthesized_expression "(*(uint *)PTR_DAT_0012a334 & 0x10)" (( "(") (binary_expression "*(uint *)PTR_DAT_0012a334 & 0x10" (pointer_expression "*(uint *)PTR_DAT_0012a334" (* "*") (cast_expression "(uint *)PTR_DAT_0012a334" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0012a334"))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);\n  }" ({ "{") (expression_statement "FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);" (call_expression "FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a)" (identifier "FUN_00029c6c") (argument_list "(PTR_FUN_0012a1a8 + 0x500a)" (( "(") (binary_expression "PTR_FUN_0012a1a8 + 0x500a" (identifier "PTR_FUN_0012a1a8") (+ "+") (number_literal "0x500a")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar6 = *(int *)PTR_DAT_0012a304;" (assignment_expression "iVar6 = *(int *)PTR_DAT_0012a304" (identifier "iVar6") (= "=") (pointer_expression "*(int *)PTR_DAT_0012a304" (* "*") (cast_expression "(int *)PTR_DAT_0012a304" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0012a304")))) (; ";")) (expression_statement "iVar3 = *(int *)(iVar6 + 0x1ac);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x1ac)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar6 + 0x1ac)" (* "*") (cast_expression "(int *)(iVar6 + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1ac)" (( "(") (binary_expression "iVar6 + 0x1ac" (identifier "iVar6") (+ "+") (number_literal "0x1ac")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = 0;\n    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);\n    do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));\n  }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = *(undefined4 **)(iVar6 + 0x1a8);" (assignment_expression "puVar5 = *(undefined4 **)(iVar6 + 0x1a8)" (identifier "puVar5") (= "=") (pointer_expression "*(undefined4 **)(iVar6 + 0x1a8)" (* "*") (cast_expression "(undefined4 **)(iVar6 + 0x1a8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0x1a8)" (( "(") (binary_expression "iVar6 + 0x1a8" (identifier "iVar6") (+ "+") (number_literal "0x1a8")) () ")"))))) (; ";")) (do_statement "do {\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));" (do "do") (compound_statement "{\n      uVar4 = *puVar5;\n      uVar7 = uVar7 + 1;\n      uVar2 = FUN_000193cc(uVar4);\n      iVar3 = FUN_0002ceb0(uVar2,uVar4);\n      (*(code *)PTR_fclose_0012ad6c)(uVar2);\n      puVar5 = puVar5 + 1;\n    }" ({ "{") (expression_statement "uVar4 = *puVar5;" (assignment_expression "uVar4 = *puVar5" (identifier "uVar4") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = FUN_000193cc(uVar4);" (assignment_expression "uVar2 = FUN_000193cc(uVar4)" (identifier "uVar2") (= "=") (call_expression "FUN_000193cc(uVar4)" (identifier "FUN_000193cc") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")")))) (; ";")) (expression_statement "iVar3 = FUN_0002ceb0(uVar2,uVar4);" (assignment_expression "iVar3 = FUN_0002ceb0(uVar2,uVar4)" (identifier "iVar3") (= "=") (call_expression "FUN_0002ceb0(uVar2,uVar4)" (identifier "FUN_0002ceb0") (argument_list "(uVar2,uVar4)" (( "(") (identifier "uVar2") (, ",") (identifier "uVar4") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_fclose_0012ad6c)(uVar2);" (call_expression "(*(code *)PTR_fclose_0012ad6c)(uVar2)" (parenthesized_expression "(*(code *)PTR_fclose_0012ad6c)" (( "(") (pointer_expression "*(code *)PTR_fclose_0012ad6c" (* "*") (cast_expression "(code *)PTR_fclose_0012ad6c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fclose_0012ad6c"))) () ")")) (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 < *(uint *)(iVar6 + 0x1ac))" (( "(") (binary_expression "uVar7 < *(uint *)(iVar6 + 0x1ac)" (identifier "uVar7") (< "<") (pointer_expression "*(uint *)(iVar6 + 0x1ac)" (* "*") (cast_expression "(uint *)(iVar6 + 0x1ac)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1ac)" (( "(") (binary_expression "iVar6 + 0x1ac" (identifier "iVar6") (+ "+") (number_literal "0x1ac")) () ")"))))) () ")")) (; ";")) (} "}"))) (if_statement "if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {\n    return iVar3;\n  }" (if "if") (parenthesized_expression "((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0))" (( "(") (binary_expression "(**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)" (parenthesized_expression "(**(char **)PTR_DAT_0012a1ac != 'b')" (( "(") (binary_expression "**(char **)PTR_DAT_0012a1ac != 'b'" (pointer_expression "**(char **)PTR_DAT_0012a1ac" (* "*") (pointer_expression "*(char **)PTR_DAT_0012a1ac" (* "*") (cast_expression "(char **)PTR_DAT_0012a1ac" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_DAT_0012a1ac")))) (!= "!=") (char_literal "'b'" (' "'") (character "b") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)puVar1 & 0x20) == 0)" (( "(") (binary_expression "(*(uint *)puVar1 & 0x20) == 0" (parenthesized_expression "(*(uint *)puVar1 & 0x20)" (( "(") (binary_expression "*(uint *)puVar1 & 0x20" (pointer_expression "*(uint *)puVar1" (* "*") (cast_expression "(uint *)puVar1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return iVar3;\n  }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);" (assignment_expression "iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0)" (identifier "iVar3") (= "=") (call_expression "FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0)" (identifier "FUN_0002ceb0") (argument_list "(*(undefined4 *)PTR_stdin_0012aee0,0)" (( "(") (pointer_expression "*(undefined4 *)PTR_stdin_0012aee0" (* "*") (cast_expression "(undefined4 *)PTR_stdin_0012aee0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_stdin_0012aee0"))) (, ",") (number_literal "0") () ")")))) (; ";")) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

type_1 function_1(void)

{
  type_2 *puVar1;
  type_3 *fp;
  type_1 var_6;
  char *path;
  type_4 *var_11;
  int var_5;
  type_5 var_8;
  
  puVar1 = PTR_option_mask32_0012a334;
  if ((*(type_5 *)PTR_option_mask32_0012a334 & 0x10) != 0) {
    var_1(var_2<var_3&var_4)9__f_l_0012a1a8 + 0x500a);
  }
  var_5 = *(int *)PTR_ptr_to_globals_0012a304;
  var_6 = *(type_1 *)(var_5 + 0x1ac);
  if (var_6 != var_7) {
    var_8 = 0;
    var_11 = *(type_4 **)(var_5 + 0x1a8);
    do {
      path = (char *)*var_11;
      var_8 = var_8 + 1;
      fp = var_9(path);
      var_6 = var_10(fp,path);
      (*(type_6 *)PTR_fclose_0012ad6c)(fp);
      var_11 = var_11 + 1;
    } while (var_8 < *(type_5 *)(var_5 + 0x1ac));
  }
  if ((**(char **)PTR_applet_name_0012a1ac != 'b') && ((*(type_5 *)puVar1 & 0x20) == 0)) {
    return var_6;
  }
  var_6 = var_10(*(type_3 **)PTR_stdin_0012aee0,(char *)0x0);
  return var_6;
}


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

int MASKED(void)

{
  undefined *puVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  uint uVar7;
  
  puVar1 = PTR_DAT_0012a334;
  if ((*(uint *)PTR_DAT_0012a334 & 0x10) != 0) {
    FUN_00029c6c(PTR_FUN_0012a1a8 + 0x500a);
  }
  iVar6 = *(int *)PTR_DAT_0012a304;
  iVar3 = *(int *)(iVar6 + 0x1ac);
  if (iVar3 != 0) {
    uVar7 = 0;
    puVar5 = *(undefined4 **)(iVar6 + 0x1a8);
    do {
      uVar4 = *puVar5;
      uVar7 = uVar7 + 1;
      uVar2 = FUN_000193cc(uVar4);
      iVar3 = FUN_0002ceb0(uVar2,uVar4);
      (*(code *)PTR_fclose_0012ad6c)(uVar2);
      puVar5 = puVar5 + 1;
    } while (uVar7 < *(uint *)(iVar6 + 0x1ac));
  }
  if ((**(char **)PTR_DAT_0012a1ac != 'b') && ((*(uint *)puVar1 & 0x20) == 0)) {
    return iVar3;
  }
  iVar3 = FUN_0002ceb0(*(undefined4 *)PTR_stdin_0012aee0,0);
  return iVar3;
}

