
/* WARNING: Unknown calling convention */

char * lang_get_output_target(void)

{
  int iVar1;
  char *pcVar2;
  lang_statement_union *entry;
  
  pcVar2 = output_target;
  if (output_target == (char *)0x0) {
    if ((current_target == (char *)0x0) ||
       (pcVar2 = current_target, current_target == default_target)) {
      entry = file_chain.head;
      if (file_chain.head == (lang_statement_union *)0x0) {
        return default_target;
      }
      do {
        if (((entry->header).type == lang_input_statement_enum) &&
           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {
          ldfile_open_file(&entry->input_statement);
          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {
            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);
            if ((iVar1 != 0) &&
               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {
              return pcVar2;
            }
          }
        }
        entry = (entry->wild_statement).children.head;
        if (entry == (lang_statement_union *)0x0) {
          return default_target;
        }
      } while( true );
    }
  }
  return pcVar2;
}



long FUN_0011c390(void)

{
  long lVar1;
  int iVar2;
  long lVar3;
  
  lVar3 = DAT_002b5ed8;
  if (DAT_002b5ed8 == 0) {
    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {
      lVar3 = DAT_002b4c50;
      if (DAT_002b4c50 == 0) {
        return DAT_002b6148;
      }
      do {
        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {
          FUN_0012a220(lVar3);
          if (*(long *)(lVar3 + 0x20) != 0) {
            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);
            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {
              return lVar1;
            }
          }
        }
        lVar3 = *(long *)(lVar3 + 0x30);
        if (lVar3 == 0) {
          return DAT_002b6148;
        }
      } while( true );
    }
  }
  return lVar3;
}


MOV RAX,qword ptr [0x002b5ed8]
TEST RAX,RAX
JZ 0x0011c3a0
RET
MOV RAX,qword ptr [0x002b4da0]
MOV RDX,qword ptr [0x002b6148]
TEST RAX,RAX
JZ 0x0011c3b8
CMP RAX,RDX
JNZ 0x0011c39c
PUSH RBX
MOV RBX,qword ptr [0x002b4c50]
TEST RBX,RBX
JNZ 0x0011c3d9
JMP 0x0011c430
MOV RBX,qword ptr [RBX + 0x30]
TEST RBX,RBX
JZ 0x0011c420
CMP dword ptr [RBX + 0x8],0x2
JNZ 0x0011c3d0
TEST byte ptr [RBX + 0x49],0x4
JZ 0x0011c3d0
MOV RDI,RBX
CALL 0x0012a220
MOV RDI,qword ptr [RBX + 0x20]
TEST RDI,RDI
JZ 0x0011c3d0
MOV ESI,0x1
CALL 0x0010dbf0
TEST EAX,EAX
JZ 0x0011c3d0
MOV RAX,qword ptr [RBX + 0x20]
MOV RAX,qword ptr [RAX + 0x8]
MOV RAX,qword ptr [RAX]
TEST RAX,RAX
JZ 0x0011c3d0
POP RBX
RET
MOV RAX,qword ptr [0x002b6148]
POP RBX
RET
MOV RAX,RDX
POP RBX
RET
(translation_unit "long FUN_0011c390(void)\n\n{\n  long lVar1;\n  int iVar2;\n  long lVar3;\n  \n  lVar3 = DAT_002b5ed8;\n  if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }\n  return lVar3;\n}\n\n" (function_definition "long FUN_0011c390(void)\n\n{\n  long lVar1;\n  int iVar2;\n  long lVar3;\n  \n  lVar3 = DAT_002b5ed8;\n  if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }\n  return lVar3;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0011c390(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  long lVar3;\n  \n  lVar3 = DAT_002b5ed8;\n  if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }\n  return lVar3;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar3 = DAT_002b5ed8;" (assignment_expression "lVar3 = DAT_002b5ed8" identifier = identifier) ;) (if_statement "if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(DAT_002b5ed8 == 0)" ( (binary_expression "DAT_002b5ed8 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }" { (if_statement "if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }" if (parenthesized_expression "((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148))" ( (binary_expression "(DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)" (parenthesized_expression "(DAT_002b4da0 == 0)" ( (binary_expression "DAT_002b4da0 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)" ( (comma_expression "lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148" (assignment_expression "lVar3 = DAT_002b4da0" identifier = identifier) , (binary_expression "DAT_002b4da0 == DAT_002b6148" identifier == identifier)) ))) )) (compound_statement "{\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }" { (expression_statement "lVar3 = DAT_002b4c50;" (assignment_expression "lVar3 = DAT_002b4c50" identifier = identifier) ;) (if_statement "if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }" if (parenthesized_expression "(DAT_002b4c50 == 0)" ( (binary_expression "DAT_002b4c50 == 0" identifier == number_literal) )) (compound_statement "{\n        return DAT_002b6148;\n      }" { (return_statement "return DAT_002b6148;" return identifier ;) })) (do_statement "do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );" do (compound_statement "{\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      }" { (if_statement "if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }" if (parenthesized_expression "((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0))" ( (binary_expression "(*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)" (parenthesized_expression "(*(int *)(lVar3 + 8) == 2)" ( (binary_expression "*(int *)(lVar3 + 8) == 2" (pointer_expression "*(int *)(lVar3 + 8)" * (cast_expression "(int *)(lVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "((*(byte *)(lVar3 + 0x49) & 4) != 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x49) & 4) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x49) & 4)" ( (binary_expression "*(byte *)(lVar3 + 0x49) & 4" (pointer_expression "*(byte *)(lVar3 + 0x49)" * (cast_expression "(byte *)(lVar3 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x49)" ( (binary_expression "lVar3 + 0x49" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }" { (expression_statement "FUN_0012a220(lVar3);" (call_expression "FUN_0012a220(lVar3)" identifier (argument_list "(lVar3)" ( identifier ))) ;) (if_statement "if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }" if (parenthesized_expression "(*(long *)(lVar3 + 0x20) != 0)" ( (binary_expression "*(long *)(lVar3 + 0x20) != 0" (pointer_expression "*(long *)(lVar3 + 0x20)" * (cast_expression "(long *)(lVar3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }" { (expression_statement "iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);" (assignment_expression "iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1)" identifier = (call_expression "bfd_check_format(*(long *)(lVar3 + 0x20),1)" identifier (argument_list "(*(long *)(lVar3 + 0x20),1)" ( (pointer_expression "*(long *)(lVar3 + 0x20)" * (cast_expression "(long *)(lVar3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }" if (parenthesized_expression "((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0))" ( (binary_expression "(iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)" ( (comma_expression "lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0" (assignment_expression "lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8)" identifier = (pointer_expression "**(long **)(*(long *)(lVar3 + 0x20) + 8)" * (pointer_expression "*(long **)(*(long *)(lVar3 + 0x20) + 8)" * (cast_expression "(long **)(*(long *)(lVar3 + 0x20) + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar3 + 0x20) + 8)" ( (binary_expression "*(long *)(lVar3 + 0x20) + 8" (pointer_expression "*(long *)(lVar3 + 0x20)" * (cast_expression "(long *)(lVar3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) + number_literal) )))))) , (binary_expression "lVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              return lVar1;\n            }" { (return_statement "return lVar1;" return identifier ;) })) })) })) (expression_statement "lVar3 = *(long *)(lVar3 + 0x30);" (assignment_expression "lVar3 = *(long *)(lVar3 + 0x30)" identifier = (pointer_expression "*(long *)(lVar3 + 0x30)" * (cast_expression "(long *)(lVar3 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x30)" ( (binary_expression "lVar3 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (lVar3 == 0) {\n          return DAT_002b6148;\n        }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          return DAT_002b6148;\n        }" { (return_statement "return DAT_002b6148;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (return_statement "return lVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nchar * lang_get_output_target(void)\n\n{\n  int iVar1;\n  char *pcVar2;\n  lang_statement_union *entry;\n  \n  pcVar2 = output_target;\n  if (output_target == (char *)0x0) {\n    if ((current_target == (char *)0x0) ||\n       (pcVar2 = current_target, current_target == default_target)) {\n      entry = file_chain.head;\n      if (file_chain.head == (lang_statement_union *)0x0) {\n        return default_target;\n      }\n      do {\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      } while( true );\n    }\n  }\n  return pcVar2;\n}\n\n" comment (function_definition "char * lang_get_output_target(void)\n\n{\n  int iVar1;\n  char *pcVar2;\n  lang_statement_union *entry;\n  \n  pcVar2 = output_target;\n  if (output_target == (char *)0x0) {\n    if ((current_target == (char *)0x0) ||\n       (pcVar2 = current_target, current_target == default_target)) {\n      entry = file_chain.head;\n      if (file_chain.head == (lang_statement_union *)0x0) {\n        return default_target;\n      }\n      do {\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      } while( true );\n    }\n  }\n  return pcVar2;\n}" primitive_type (pointer_declarator "* lang_get_output_target(void)" * (function_declarator "lang_get_output_target(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  lang_statement_union *entry;\n  \n  pcVar2 = output_target;\n  if (output_target == (char *)0x0) {\n    if ((current_target == (char *)0x0) ||\n       (pcVar2 = current_target, current_target == default_target)) {\n      entry = file_chain.head;\n      if (file_chain.head == (lang_statement_union *)0x0) {\n        return default_target;\n      }\n      do {\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      } while( true );\n    }\n  }\n  return pcVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "lang_statement_union *entry;" type_identifier (pointer_declarator "*entry" * identifier) ;) (expression_statement "pcVar2 = output_target;" (assignment_expression "pcVar2 = output_target" identifier = identifier) ;) (if_statement "if (output_target == (char *)0x0) {\n    if ((current_target == (char *)0x0) ||\n       (pcVar2 = current_target, current_target == default_target)) {\n      entry = file_chain.head;\n      if (file_chain.head == (lang_statement_union *)0x0) {\n        return default_target;\n      }\n      do {\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(output_target == (char *)0x0)" ( (binary_expression "output_target == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if ((current_target == (char *)0x0) ||\n       (pcVar2 = current_target, current_target == default_target)) {\n      entry = file_chain.head;\n      if (file_chain.head == (lang_statement_union *)0x0) {\n        return default_target;\n      }\n      do {\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      } while( true );\n    }\n  }" { (if_statement "if ((current_target == (char *)0x0) ||\n       (pcVar2 = current_target, current_target == default_target)) {\n      entry = file_chain.head;\n      if (file_chain.head == (lang_statement_union *)0x0) {\n        return default_target;\n      }\n      do {\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      } while( true );\n    }" if (parenthesized_expression "((current_target == (char *)0x0) ||\n       (pcVar2 = current_target, current_target == default_target))" ( (binary_expression "(current_target == (char *)0x0) ||\n       (pcVar2 = current_target, current_target == default_target)" (parenthesized_expression "(current_target == (char *)0x0)" ( (binary_expression "current_target == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pcVar2 = current_target, current_target == default_target)" ( (comma_expression "pcVar2 = current_target, current_target == default_target" (assignment_expression "pcVar2 = current_target" identifier = identifier) , (binary_expression "current_target == default_target" identifier == identifier)) ))) )) (compound_statement "{\n      entry = file_chain.head;\n      if (file_chain.head == (lang_statement_union *)0x0) {\n        return default_target;\n      }\n      do {\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      } while( true );\n    }" { (expression_statement "entry = file_chain.head;" (assignment_expression "entry = file_chain.head" identifier = (field_expression "file_chain.head" identifier . field_identifier)) ;) (if_statement "if (file_chain.head == (lang_statement_union *)0x0) {\n        return default_target;\n      }" if (parenthesized_expression "(file_chain.head == (lang_statement_union *)0x0)" ( (binary_expression "file_chain.head == (lang_statement_union *)0x0" (field_expression "file_chain.head" identifier . field_identifier) == (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return default_target;\n      }" { (return_statement "return default_target;" return identifier ;) })) (do_statement "do {\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      } while( true );" do (compound_statement "{\n        if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }\n        entry = (entry->wild_statement).children.head;\n        if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }\n      }" { (if_statement "if (((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)) {\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }" if (parenthesized_expression "(((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0))" ( (binary_expression "((entry->header).type == lang_input_statement_enum) &&\n           (((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)" (parenthesized_expression "((entry->header).type == lang_input_statement_enum)" ( (binary_expression "(entry->header).type == lang_input_statement_enum" (field_expression "(entry->header).type" (parenthesized_expression "(entry->header)" ( (field_expression "entry->header" identifier -> field_identifier) )) . field_identifier) == identifier) )) && (parenthesized_expression "(((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0)" ( (binary_expression "((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400) != 0" (parenthesized_expression "((ulong)(entry->wild_statement).walk_wild_section_handler & 0x400)" ( (binary_expression "(ulong)(entry->wild_statement).walk_wild_section_handler & 0x400" (field_expression "(ulong)(entry->wild_statement).walk_wild_section_handler" (call_expression "(ulong)(entry->wild_statement)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(entry->wild_statement)" ( (field_expression "entry->wild_statement" identifier -> field_identifier) ))) . field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          ldfile_open_file(&entry->input_statement);\n          if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }\n        }" { (expression_statement "ldfile_open_file(&entry->input_statement);" (call_expression "ldfile_open_file(&entry->input_statement)" identifier (argument_list "(&entry->input_statement)" ( (pointer_expression "&entry->input_statement" & (field_expression "entry->input_statement" identifier -> field_identifier)) ))) ;) (if_statement "if ((entry->wild_statement).section_list != (wildcard_list *)0x0) {\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }" if (parenthesized_expression "((entry->wild_statement).section_list != (wildcard_list *)0x0)" ( (binary_expression "(entry->wild_statement).section_list != (wildcard_list *)0x0" (field_expression "(entry->wild_statement).section_list" (parenthesized_expression "(entry->wild_statement)" ( (field_expression "entry->wild_statement" identifier -> field_identifier) )) . field_identifier) != (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar1 = bfd_check_format((entry->wild_statement).section_list,1);\n            if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }\n          }" { (expression_statement "iVar1 = bfd_check_format((entry->wild_statement).section_list,1);" (assignment_expression "iVar1 = bfd_check_format((entry->wild_statement).section_list,1)" identifier = (call_expression "bfd_check_format((entry->wild_statement).section_list,1)" identifier (argument_list "((entry->wild_statement).section_list,1)" ( (field_expression "(entry->wild_statement).section_list" (parenthesized_expression "(entry->wild_statement)" ( (field_expression "entry->wild_statement" identifier -> field_identifier) )) . field_identifier) , number_literal )))) ;) (if_statement "if ((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)) {\n              return pcVar2;\n            }" if (parenthesized_expression "((iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0))" ( (binary_expression "(iVar1 != 0) &&\n               (pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0)" ( (comma_expression "pcVar2 = ((entry->input_statement).the_bfd)->xvec->name, pcVar2 != (char *)0x0" (assignment_expression "pcVar2 = ((entry->input_statement).the_bfd)->xvec->name" identifier = (field_expression "((entry->input_statement).the_bfd)->xvec->name" (field_expression "((entry->input_statement).the_bfd)->xvec" (parenthesized_expression "((entry->input_statement).the_bfd)" ( (field_expression "(entry->input_statement).the_bfd" (parenthesized_expression "(entry->input_statement)" ( (field_expression "entry->input_statement" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) -> field_identifier)) , (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              return pcVar2;\n            }" { (return_statement "return pcVar2;" return identifier ;) })) })) })) (expression_statement "entry = (entry->wild_statement).children.head;" (assignment_expression "entry = (entry->wild_statement).children.head" identifier = (field_expression "(entry->wild_statement).children.head" (field_expression "(entry->wild_statement).children" (parenthesized_expression "(entry->wild_statement)" ( (field_expression "entry->wild_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (entry == (lang_statement_union *)0x0) {\n          return default_target;\n        }" if (parenthesized_expression "(entry == (lang_statement_union *)0x0)" ( (binary_expression "entry == (lang_statement_union *)0x0" identifier == (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return default_target;\n        }" { (return_statement "return default_target;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (return_statement "return pcVar2;" return identifier ;) })))
(translation_unit "long FUN_0011c390(void)\n\n{\n  long lVar1;\n  int iVar2;\n  long lVar3;\n  \n  lVar3 = DAT_002b5ed8;\n  if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }\n  return lVar3;\n}\n\n" (function_definition "long FUN_0011c390(void)\n\n{\n  long lVar1;\n  int iVar2;\n  long lVar3;\n  \n  lVar3 = DAT_002b5ed8;\n  if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }\n  return lVar3;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0011c390(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  long lVar3;\n  \n  lVar3 = DAT_002b5ed8;\n  if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }\n  return lVar3;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar3 = DAT_002b5ed8;" (assignment_expression "lVar3 = DAT_002b5ed8" identifier = identifier) ;) (if_statement "if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(DAT_002b5ed8 == 0)" ( (binary_expression "DAT_002b5ed8 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }" { (if_statement "if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }" if (parenthesized_expression "((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148))" ( (binary_expression "(DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)" (parenthesized_expression "(DAT_002b4da0 == 0)" ( (binary_expression "DAT_002b4da0 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)" ( (comma_expression "lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148" (assignment_expression "lVar3 = DAT_002b4da0" identifier = identifier) , (binary_expression "DAT_002b4da0 == DAT_002b6148" identifier == identifier)) ))) )) (compound_statement "{\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }" { (expression_statement "lVar3 = DAT_002b4c50;" (assignment_expression "lVar3 = DAT_002b4c50" identifier = identifier) ;) (if_statement "if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }" if (parenthesized_expression "(DAT_002b4c50 == 0)" ( (binary_expression "DAT_002b4c50 == 0" identifier == number_literal) )) (compound_statement "{\n        return DAT_002b6148;\n      }" { (return_statement "return DAT_002b6148;" return identifier ;) })) (do_statement "do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );" do (compound_statement "{\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      }" { (if_statement "if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }" if (parenthesized_expression "((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0))" ( (binary_expression "(*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)" (parenthesized_expression "(*(int *)(lVar3 + 8) == 2)" ( (binary_expression "*(int *)(lVar3 + 8) == 2" (pointer_expression "*(int *)(lVar3 + 8)" * (cast_expression "(int *)(lVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "((*(byte *)(lVar3 + 0x49) & 4) != 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x49) & 4) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x49) & 4)" ( (binary_expression "*(byte *)(lVar3 + 0x49) & 4" (pointer_expression "*(byte *)(lVar3 + 0x49)" * (cast_expression "(byte *)(lVar3 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x49)" ( (binary_expression "lVar3 + 0x49" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }" { (expression_statement "FUN_0012a220(lVar3);" (call_expression "FUN_0012a220(lVar3)" identifier (argument_list "(lVar3)" ( identifier ))) ;) (if_statement "if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }" if (parenthesized_expression "(*(long *)(lVar3 + 0x20) != 0)" ( (binary_expression "*(long *)(lVar3 + 0x20) != 0" (pointer_expression "*(long *)(lVar3 + 0x20)" * (cast_expression "(long *)(lVar3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }" { (expression_statement "iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);" (assignment_expression "iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1)" identifier = (call_expression "bfd_check_format(*(long *)(lVar3 + 0x20),1)" identifier (argument_list "(*(long *)(lVar3 + 0x20),1)" ( (pointer_expression "*(long *)(lVar3 + 0x20)" * (cast_expression "(long *)(lVar3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }" if (parenthesized_expression "((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0))" ( (binary_expression "(iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)" ( (comma_expression "lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0" (assignment_expression "lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8)" identifier = (pointer_expression "**(long **)(*(long *)(lVar3 + 0x20) + 8)" * (pointer_expression "*(long **)(*(long *)(lVar3 + 0x20) + 8)" * (cast_expression "(long **)(*(long *)(lVar3 + 0x20) + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar3 + 0x20) + 8)" ( (binary_expression "*(long *)(lVar3 + 0x20) + 8" (pointer_expression "*(long *)(lVar3 + 0x20)" * (cast_expression "(long *)(lVar3 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) + number_literal) )))))) , (binary_expression "lVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              return lVar1;\n            }" { (return_statement "return lVar1;" return identifier ;) })) })) })) (expression_statement "lVar3 = *(long *)(lVar3 + 0x30);" (assignment_expression "lVar3 = *(long *)(lVar3 + 0x30)" identifier = (pointer_expression "*(long *)(lVar3 + 0x30)" * (cast_expression "(long *)(lVar3 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x30)" ( (binary_expression "lVar3 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (lVar3 == 0) {\n          return DAT_002b6148;\n        }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          return DAT_002b6148;\n        }" { (return_statement "return DAT_002b6148;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (return_statement "return lVar3;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (return_statement return IDENT ;) })) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) })) (return_statement return IDENT ;) })))
(function_definition "long FUN_0011c390(void)\n\n{\n  long lVar1;\n  int iVar2;\n  long lVar3;\n  \n  lVar3 = DAT_002b5ed8;\n  if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }\n  return lVar3;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_0011c390(void)" (identifier "FUN_0011c390") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  long lVar3;\n  \n  lVar3 = DAT_002b5ed8;\n  if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }\n  return lVar3;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (expression_statement "lVar3 = DAT_002b5ed8;" (assignment_expression "lVar3 = DAT_002b5ed8" (identifier "lVar3") (= "=") (identifier "DAT_002b5ed8")) (; ";")) (if_statement "if (DAT_002b5ed8 == 0) {\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }" (if "if") (parenthesized_expression "(DAT_002b5ed8 == 0)" (( "(") (binary_expression "DAT_002b5ed8 == 0" (identifier "DAT_002b5ed8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }\n  }" ({ "{") (if_statement "if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }" (if "if") (parenthesized_expression "((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148))" (( "(") (binary_expression "(DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)" (parenthesized_expression "(DAT_002b4da0 == 0)" (( "(") (binary_expression "DAT_002b4da0 == 0" (identifier "DAT_002b4da0") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)" (( "(") (comma_expression "lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148" (assignment_expression "lVar3 = DAT_002b4da0" (identifier "lVar3") (= "=") (identifier "DAT_002b4da0")) (, ",") (binary_expression "DAT_002b4da0 == DAT_002b6148" (identifier "DAT_002b4da0") (== "==") (identifier "DAT_002b6148"))) () ")"))) () ")")) (compound_statement "{\n      lVar3 = DAT_002b4c50;\n      if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }\n      do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );\n    }" ({ "{") (expression_statement "lVar3 = DAT_002b4c50;" (assignment_expression "lVar3 = DAT_002b4c50" (identifier "lVar3") (= "=") (identifier "DAT_002b4c50")) (; ";")) (if_statement "if (DAT_002b4c50 == 0) {\n        return DAT_002b6148;\n      }" (if "if") (parenthesized_expression "(DAT_002b4c50 == 0)" (( "(") (binary_expression "DAT_002b4c50 == 0" (identifier "DAT_002b4c50") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return DAT_002b6148;\n      }" ({ "{") (return_statement "return DAT_002b6148;" (return "return") (identifier "DAT_002b6148") (; ";")) (} "}"))) (do_statement "do {\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      } while( true );" (do "do") (compound_statement "{\n        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }\n        lVar3 = *(long *)(lVar3 + 0x30);\n        if (lVar3 == 0) {\n          return DAT_002b6148;\n        }\n      }" ({ "{") (if_statement "if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }" (if "if") (parenthesized_expression "((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0))" (( "(") (binary_expression "(*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)" (parenthesized_expression "(*(int *)(lVar3 + 8) == 2)" (( "(") (binary_expression "*(int *)(lVar3 + 8) == 2" (pointer_expression "*(int *)(lVar3 + 8)" (* "*") (cast_expression "(int *)(lVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(lVar3 + 0x49) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(lVar3 + 0x49) & 4) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x49) & 4)" (( "(") (binary_expression "*(byte *)(lVar3 + 0x49) & 4" (pointer_expression "*(byte *)(lVar3 + 0x49)" (* "*") (cast_expression "(byte *)(lVar3 + 0x49)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x49)" (( "(") (binary_expression "lVar3 + 0x49" (identifier "lVar3") (+ "+") (number_literal "0x49")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          FUN_0012a220(lVar3);\n          if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }\n        }" ({ "{") (expression_statement "FUN_0012a220(lVar3);" (call_expression "FUN_0012a220(lVar3)" (identifier "FUN_0012a220") (argument_list "(lVar3)" (( "(") (identifier "lVar3") () ")"))) (; ";")) (if_statement "if (*(long *)(lVar3 + 0x20) != 0) {\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }" (if "if") (parenthesized_expression "(*(long *)(lVar3 + 0x20) != 0)" (( "(") (binary_expression "*(long *)(lVar3 + 0x20) != 0" (pointer_expression "*(long *)(lVar3 + 0x20)" (* "*") (cast_expression "(long *)(lVar3 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x20)" (( "(") (binary_expression "lVar3 + 0x20" (identifier "lVar3") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);\n            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }\n          }" ({ "{") (expression_statement "iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);" (assignment_expression "iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1)" (identifier "iVar2") (= "=") (call_expression "bfd_check_format(*(long *)(lVar3 + 0x20),1)" (identifier "bfd_check_format") (argument_list "(*(long *)(lVar3 + 0x20),1)" (( "(") (pointer_expression "*(long *)(lVar3 + 0x20)" (* "*") (cast_expression "(long *)(lVar3 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x20)" (( "(") (binary_expression "lVar3 + 0x20" (identifier "lVar3") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {\n              return lVar1;\n            }" (if "if") (parenthesized_expression "((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0))" (( "(") (binary_expression "(iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)" (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)" (( "(") (comma_expression "lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0" (assignment_expression "lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8)" (identifier "lVar1") (= "=") (pointer_expression "**(long **)(*(long *)(lVar3 + 0x20) + 8)" (* "*") (pointer_expression "*(long **)(*(long *)(lVar3 + 0x20) + 8)" (* "*") (cast_expression "(long **)(*(long *)(lVar3 + 0x20) + 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(lVar3 + 0x20) + 8)" (( "(") (binary_expression "*(long *)(lVar3 + 0x20) + 8" (pointer_expression "*(long *)(lVar3 + 0x20)" (* "*") (cast_expression "(long *)(lVar3 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x20)" (( "(") (binary_expression "lVar3 + 0x20" (identifier "lVar3") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "8")) () ")")))))) (, ",") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              return lVar1;\n            }" ({ "{") (return_statement "return lVar1;" (return "return") (identifier "lVar1") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "lVar3 = *(long *)(lVar3 + 0x30);" (assignment_expression "lVar3 = *(long *)(lVar3 + 0x30)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(lVar3 + 0x30)" (* "*") (cast_expression "(long *)(lVar3 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x30)" (( "(") (binary_expression "lVar3 + 0x30" (identifier "lVar3") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (lVar3 == 0) {\n          return DAT_002b6148;\n        }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return DAT_002b6148;\n        }" ({ "{") (return_statement "return DAT_002b6148;" (return "return") (identifier "DAT_002b6148") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}"))) (return_statement "return lVar3;" (return "return") (identifier "lVar3") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

char * function_1(void)

{
  int var_7;
  char *var_8;
  type_1 *var_9;
  
  var_8 = var_1;
  if (var_1 == (char *)0x0) {
    if ((var_2 == (char *)0x0) ||
       (var_8 = var_2, var_2 == var_3)) {
      var_9 = file_chain.head;
      if (file_chain.head == (type_1 *)0x0) {
        return var_3;
      }
      do {
        if (((var_9->header).type == var_4) &&
           (((ulong)(var_9->wild_statement).walk_wild_section_handler & 0x400) != 0)) {
          var_5(&var_9->input_statement);
          if ((var_9->wild_statement).section_list != (type_2 *)0x0) {
            var_7 = var_6((var_9->wild_statement).section_list,1);
            if ((var_7 != 0) &&
               (var_8 = ((var_9->input_statement).the_bfd)->xvec->name, var_8 != (char *)0x0)) {
              return var_8;
            }
          }
        }
        var_9 = (var_9->wild_statement).children.head;
        if (var_9 == (type_1 *)0x0) {
          return var_3;
        }
      } while( true );
    }
  }
  return var_8;
}


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

long MASKED(void)

{
  long lVar1;
  int iVar2;
  long lVar3;
  
  lVar3 = DAT_002b5ed8;
  if (DAT_002b5ed8 == 0) {
    if ((DAT_002b4da0 == 0) || (lVar3 = DAT_002b4da0, DAT_002b4da0 == DAT_002b6148)) {
      lVar3 = DAT_002b4c50;
      if (DAT_002b4c50 == 0) {
        return DAT_002b6148;
      }
      do {
        if ((*(int *)(lVar3 + 8) == 2) && ((*(byte *)(lVar3 + 0x49) & 4) != 0)) {
          FUN_0012a220(lVar3);
          if (*(long *)(lVar3 + 0x20) != 0) {
            iVar2 = bfd_check_format(*(long *)(lVar3 + 0x20),1);
            if ((iVar2 != 0) && (lVar1 = **(long **)(*(long *)(lVar3 + 0x20) + 8), lVar1 != 0)) {
              return lVar1;
            }
          }
        }
        lVar3 = *(long *)(lVar3 + 0x30);
        if (lVar3 == 0) {
          return DAT_002b6148;
        }
      } while( true );
    }
  }
  return lVar3;
}

