
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void parse_library(General_options * this, char * param_1, char * arg,
   Command_line * cmdline) */

void __thiscall
gold::General_options::parse_library
          (General_options *this,char *param_1,char *arg,Command_line *cmdline)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar2;
  size_t sVar3;
  char *pcVar4;
  int unaff_EDI;
  Input_file_type local_74;
  Input_file_argument file;
  
  __x86_get_pc_thunk_di();
  paVar1 = &file.name_.field_2;
  file.name_._M_dataplus._M_p = (pointer)paVar1;
  if (*arg == ':') {
    arg = arg + 1;
    pcVar4 = (char *)0xffffffff;
    local_74 = INPUT_FILE_TYPE_SEARCHED_FILE;
    if (arg == (char *)0x0) goto LAB_000f2b16;
  }
  else {
    local_74 = INPUT_FILE_TYPE_LIBRARY;
  }
  sVar3 = strlen(arg);
  pcVar4 = arg + sVar3;
LAB_000f2b16:
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&file.name_,arg,pcVar4,0);
  file.type_ = local_74;
  paVar2 = &file.extra_search_path_.field_2;
  file.extra_search_path_._M_dataplus._M_p = (pointer)paVar2;
                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);
  file.options_.as_needed_ = (this->as_needed_).value;
  file.just_symbols_ = false;
  file.options_.Bdynamic_ = (this->Bdynamic_).value;
                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */
  file.options_.format_enum_ = string_to_object_format((this->format_).value);
  file.options_.whole_archive_ = (this->whole_archive_).value;
  file.arg_serial_ = 0;
  file.options_.incremental_disposition_ = this->incremental_disposition_;
                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */
  Input_arguments::add_file(&cmdline->inputs_,&file);
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)file.extra_search_path_._M_dataplus._M_p != paVar2) {
    operator_delete(file.extra_search_path_._M_dataplus._M_p);
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)file.name_._M_dataplus._M_p != paVar1) {
    operator_delete(file.name_._M_dataplus._M_p);
  }
  return;
}



void FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)

{
  size_t sVar1;
  char *pcVar2;
  int unaff_EDI;
  undefined4 local_74;
  undefined1 *local_68 [2];
  undefined1 local_60 [16];
  undefined4 local_50;
  undefined1 *local_4c [2];
  undefined1 local_44 [16];
  undefined1 local_34;
  undefined1 local_30;
  undefined1 local_2f;
  undefined4 local_2c;
  undefined1 local_28;
  undefined4 local_24;
  undefined4 local_20;
  
  FUN_00062073();
  local_68[0] = local_60;
  if (*param_3 == ':') {
    param_3 = param_3 + 1;
    pcVar2 = (char *)0xffffffff;
    local_74 = 2;
    if (param_3 == (char *)0x0) goto LAB_000f2b16;
  }
  else {
    local_74 = 1;
  }
  sVar1 = strlen(param_3);
  pcVar2 = param_3 + sVar1;
LAB_000f2b16:
  FUN_0005c9a0(local_68,param_3,pcVar2,0);
  local_50 = local_74;
  local_4c[0] = local_44;
                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */
  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);
  local_30 = *(undefined1 *)(param_1 + 0x2f5);
  local_34 = 0;
  local_2f = *(undefined1 *)(param_1 + 0x549);
                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */
  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));
  local_28 = *(undefined1 *)(param_1 + 0x4a2d);
  local_20 = 0;
  local_24 = *(undefined4 *)(param_1 + 0x5a14);
                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */
  FUN_000f24b0(param_4 + 0x5b6c,local_68);
  if (local_4c[0] != local_44) {
    FUN_001fd020(local_4c[0]);
  }
  if (local_68[0] != local_60) {
    FUN_001fd020(local_68[0]);
  }
  return;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x00062073
ADD EDI,0x2b7527
PUSH ESI
PUSH EBX
SUB ESP,0x6c
MOV EAX,dword ptr [EBP + 0x10]
MOV ESI,dword ptr [EBP + 0x8]
CMP byte ptr [EAX],0x3a
LEA EAX,[EBP + -0x5c]
MOV dword ptr [EBP + -0x6c],EAX
MOV dword ptr [EBP + -0x64],EAX
JZ 0x000f2be0
MOV dword ptr [EBP + -0x70],0x1
SUB ESP,0xc
PUSH dword ptr [EBP + 0x10]
MOV EBX,EDI
CALL 0x0002a5f0
ADD ESP,0x10
ADD EAX,dword ptr [EBP + 0x10]
LEA EBX,[EBP + -0x64]
PUSH 0x0
PUSH EAX
PUSH dword ptr [EBP + 0x10]
PUSH EBX
MOV dword ptr [EBP + -0x74],EBX
CALL 0x0005c9a0
MOV EAX,dword ptr [EBP + -0x70]
ADD ESP,0x10
PUSH 0x0
MOV dword ptr [EBP + -0x4c],EAX
LEA EAX,[EBP + -0x40]
MOV dword ptr [EBP + -0x70],EAX
MOV dword ptr [EBP + -0x48],EAX
LEA EAX,[EDI + 0xfff0c336]
PUSH EAX
PUSH EAX
LEA EAX,[EBP + -0x48]
PUSH EAX
CALL 0x0005c9a0
POP EAX
MOVZX EAX,byte ptr [ESI + 0x2f5]
MOV byte ptr [EBP + -0x30],0x0
MOV byte ptr [EBP + -0x2c],AL
MOVZX EAX,byte ptr [ESI + 0x549]
PUSH dword ptr [ESI + 0x3b8]
MOV byte ptr [EBP + -0x2b],AL
CALL 0x000f10b0
MOV dword ptr [EBP + -0x28],EAX
MOVZX EAX,byte ptr [ESI + 0x4a2d]
POP EDX
POP ECX
MOV dword ptr [EBP + -0x1c],0x0
MOV byte ptr [EBP + -0x24],AL
MOV ECX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [ESI + 0x5a14]
PUSH EBX
MOV dword ptr [EBP + -0x20],EAX
LEA EAX,[ECX + 0x5b6c]
PUSH EAX
CALL 0x000f24b0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x48]
CMP EAX,dword ptr [EBP + -0x70]
JZ 0x000f2bb9
SUB ESP,0xc
MOV EBX,EDI
PUSH EAX
CALL 0x001fd020
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x64]
CMP EAX,dword ptr [EBP + -0x6c]
JZ 0x000f2bcf
SUB ESP,0xc
MOV EBX,EDI
PUSH EAX
CALL 0x001fd020
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD dword ptr [EBP + 0x10],0x1
MOV EAX,0xffffffff
MOV dword ptr [EBP + -0x70],0x2
JZ 0x000f2b16
JMP 0x000f2b03
(translation_unit "void FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)\n\n{\n  size_t sVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  undefined4 local_74;\n  undefined1 *local_68 [2];\n  undefined1 local_60 [16];\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 local_44 [16];\n  undefined1 local_34;\n  undefined1 local_30;\n  undefined1 local_2f;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  \n  FUN_00062073();\n  local_68[0] = local_60;\n  if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }\n  sVar1 = strlen(param_3);\n  pcVar2 = param_3 + sVar1;\nLAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);\n  local_50 = local_74;\n  local_4c[0] = local_44;\n                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */\n  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  local_30 = *(undefined1 *)(param_1 + 0x2f5);\n  local_34 = 0;\n  local_2f = *(undefined1 *)(param_1 + 0x549);\n                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */\n  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));\n  local_28 = *(undefined1 *)(param_1 + 0x4a2d);\n  local_20 = 0;\n  local_24 = *(undefined4 *)(param_1 + 0x5a14);\n                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */\n  FUN_000f24b0(param_4 + 0x5b6c,local_68);\n  if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }\n  if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)\n\n{\n  size_t sVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  undefined4 local_74;\n  undefined1 *local_68 [2];\n  undefined1 local_60 [16];\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 local_44 [16];\n  undefined1 local_34;\n  undefined1 local_30;\n  undefined1 local_2f;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  \n  FUN_00062073();\n  local_68[0] = local_60;\n  if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }\n  sVar1 = strlen(param_3);\n  pcVar2 = param_3 + sVar1;\nLAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);\n  local_50 = local_74;\n  local_4c[0] = local_44;\n                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */\n  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  local_30 = *(undefined1 *)(param_1 + 0x2f5);\n  local_34 = 0;\n  local_2f = *(undefined1 *)(param_1 + 0x549);\n                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */\n  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));\n  local_28 = *(undefined1 *)(param_1 + 0x4a2d);\n  local_20 = 0;\n  local_24 = *(undefined4 *)(param_1 + 0x5a14);\n                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */\n  FUN_000f24b0(param_4 + 0x5b6c,local_68);\n  if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }\n  if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,char *param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  size_t sVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  undefined4 local_74;\n  undefined1 *local_68 [2];\n  undefined1 local_60 [16];\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 local_44 [16];\n  undefined1 local_34;\n  undefined1 local_30;\n  undefined1 local_2f;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  \n  FUN_00062073();\n  local_68[0] = local_60;\n  if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }\n  sVar1 = strlen(param_3);\n  pcVar2 = param_3 + sVar1;\nLAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);\n  local_50 = local_74;\n  local_4c[0] = local_44;\n                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */\n  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  local_30 = *(undefined1 *)(param_1 + 0x2f5);\n  local_34 = 0;\n  local_2f = *(undefined1 *)(param_1 + 0x549);\n                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */\n  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));\n  local_28 = *(undefined1 *)(param_1 + 0x4a2d);\n  local_20 = 0;\n  local_24 = *(undefined4 *)(param_1 + 0x5a14);\n                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */\n  FUN_000f24b0(param_4 + 0x5b6c,local_68);\n  if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }\n  if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }\n  return;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "undefined1 *local_68 [2];" type_identifier (pointer_declarator "*local_68 [2]" * (array_declarator "local_68 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_60 [16];" type_identifier (array_declarator "local_60 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined1 *local_4c [2];" type_identifier (pointer_declarator "*local_4c [2]" * (array_declarator "local_4c [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_44 [16];" type_identifier (array_declarator "local_44 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_34;" type_identifier identifier ;) (declaration "undefined1 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2f;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined1 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "FUN_00062073();" (call_expression "FUN_00062073()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_68[0] = local_60;" (assignment_expression "local_68[0] = local_60" (subscript_expression "local_68[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }" if (parenthesized_expression "(*param_3 == ':')" ( (binary_expression "*param_3 == ':'" (pointer_expression "*param_3" * identifier) == (char_literal "':'" ' character ')) )) (compound_statement "{\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }" { (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (expression_statement "pcVar2 = (char *)0xffffffff;" (assignment_expression "pcVar2 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = 2;" (assignment_expression "local_74 = 2" identifier = number_literal) ;) (if_statement "if (param_3 == (char *)0x0) goto LAB_000f2b16;" if (parenthesized_expression "(param_3 == (char *)0x0)" ( (binary_expression "param_3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f2b16;" goto statement_identifier ;)) }) (else_clause "else {\n    local_74 = 1;\n  }" else (compound_statement "{\n    local_74 = 1;\n  }" { (expression_statement "local_74 = 1;" (assignment_expression "local_74 = 1" identifier = number_literal) ;) }))) (expression_statement "sVar1 = strlen(param_3);" (assignment_expression "sVar1 = strlen(param_3)" identifier = (call_expression "strlen(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "pcVar2 = param_3 + sVar1;" (assignment_expression "pcVar2 = param_3 + sVar1" identifier = (binary_expression "param_3 + sVar1" identifier + identifier)) ;) (labeled_statement "LAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);" statement_identifier : (expression_statement "FUN_0005c9a0(local_68,param_3,pcVar2,0);" (call_expression "FUN_0005c9a0(local_68,param_3,pcVar2,0)" identifier (argument_list "(local_68,param_3,pcVar2,0)" ( identifier , identifier , identifier , number_literal ))) ;)) (expression_statement "local_50 = local_74;" (assignment_expression "local_50 = local_74" identifier = identifier) ;) (expression_statement "local_4c[0] = local_44;" (assignment_expression "local_4c[0] = local_44" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);" (call_expression "FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0)" identifier (argument_list "(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0)" ( identifier , (binary_expression "unaff_EDI + 0x1c385d" identifier + number_literal) , (binary_expression "unaff_EDI + 0x1c385d" identifier + number_literal) , number_literal ))) ;) (expression_statement "local_30 = *(undefined1 *)(param_1 + 0x2f5);" (assignment_expression "local_30 = *(undefined1 *)(param_1 + 0x2f5)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x2f5)" * (cast_expression "(undefined1 *)(param_1 + 0x2f5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2f5)" ( (binary_expression "param_1 + 0x2f5" identifier + number_literal) ))))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2f = *(undefined1 *)(param_1 + 0x549);" (assignment_expression "local_2f = *(undefined1 *)(param_1 + 0x549)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x549)" * (cast_expression "(undefined1 *)(param_1 + 0x549)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x549)" ( (binary_expression "param_1 + 0x549" identifier + number_literal) ))))) ;) comment (expression_statement "local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));" (assignment_expression "local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8))" identifier = (call_expression "FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3b8))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3b8)" * (cast_expression "(undefined4 *)(param_1 + 0x3b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3b8)" ( (binary_expression "param_1 + 0x3b8" identifier + number_literal) )))) )))) ;) (expression_statement "local_28 = *(undefined1 *)(param_1 + 0x4a2d);" (assignment_expression "local_28 = *(undefined1 *)(param_1 + 0x4a2d)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x4a2d)" * (cast_expression "(undefined1 *)(param_1 + 0x4a2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4a2d)" ( (binary_expression "param_1 + 0x4a2d" identifier + number_literal) ))))) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = *(undefined4 *)(param_1 + 0x5a14);" (assignment_expression "local_24 = *(undefined4 *)(param_1 + 0x5a14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x5a14)" * (cast_expression "(undefined4 *)(param_1 + 0x5a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5a14)" ( (binary_expression "param_1 + 0x5a14" identifier + number_literal) ))))) ;) comment (expression_statement "FUN_000f24b0(param_4 + 0x5b6c,local_68);" (call_expression "FUN_000f24b0(param_4 + 0x5b6c,local_68)" identifier (argument_list "(param_4 + 0x5b6c,local_68)" ( (binary_expression "param_4 + 0x5b6c" identifier + number_literal) , identifier ))) ;) (if_statement "if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }" if (parenthesized_expression "(local_4c[0] != local_44)" ( (binary_expression "local_4c[0] != local_44" (subscript_expression "local_4c[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_001fd020(local_4c[0]);\n  }" { (expression_statement "FUN_001fd020(local_4c[0]);" (call_expression "FUN_001fd020(local_4c[0])" identifier (argument_list "(local_4c[0])" ( (subscript_expression "local_4c[0]" identifier [ number_literal ]) ))) ;) })) (if_statement "if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }" if (parenthesized_expression "(local_68[0] != local_60)" ( (binary_expression "local_68[0] != local_60" (subscript_expression "local_68[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_001fd020(local_68[0]);\n  }" { (expression_statement "FUN_001fd020(local_68[0]);" (call_expression "FUN_001fd020(local_68[0])" identifier (argument_list "(local_68[0])" ( (subscript_expression "local_68[0]" identifier [ number_literal ]) ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void parse_library(General_options * this, char * param_1, char * arg,\n   Command_line * cmdline) */\n\nvoid __thiscall\ngold::General_options::parse_library\n          (General_options *this,char *param_1,char *arg,Command_line *cmdline)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  size_t sVar3;\n  char *pcVar4;\n  int unaff_EDI;\n  Input_file_type local_74;\n  Input_file_argument file;\n  \n  __x86_get_pc_thunk_di();\n  paVar1 = &file.name_.field_2;\n  file.name_._M_dataplus._M_p = (pointer)paVar1;\n  if (*arg == ':') {\n    arg = arg + 1;\n    pcVar4 = (char *)0xffffffff;\n    local_74 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    if (arg == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = INPUT_FILE_TYPE_LIBRARY;\n  }\n  sVar3 = strlen(arg);\n  pcVar4 = arg + sVar3;\nLAB_000f2b16:\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,arg,pcVar4,0);\n  file.type_ = local_74;\n  paVar2 = &file.extra_search_path_.field_2;\n  file.extra_search_path_._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  file.options_.as_needed_ = (this->as_needed_).value;\n  file.just_symbols_ = false;\n  file.options_.Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */\n  file.options_.format_enum_ = string_to_object_format((this->format_).value);\n  file.options_.whole_archive_ = (this->whole_archive_).value;\n  file.arg_serial_ = 0;\n  file.options_.incremental_disposition_ = this->incremental_disposition_;\n                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */\n  Input_arguments::add_file(&cmdline->inputs_,&file);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != paVar2) {\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != paVar1) {\n    operator_delete(file.name_._M_dataplus._M_p);\n  }\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::General_options::parse_library\n          (General_options *this,char *param_1,char *arg,Command_line *cmdline)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  size_t sVar3;\n  char *pcVar4;\n  int unaff_EDI;\n  Input_file_type local_74;\n  Input_file_argument file;\n  \n  __x86_get_pc_thunk_di();\n  paVar1 = &file.name_.field_2;\n  file.name_._M_dataplus._M_p = (pointer)paVar1;\n  if (*arg == ':') {\n    arg = arg + 1;\n    pcVar4 = (char *)0xffffffff;\n    local_74 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    if (arg == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = INPUT_FILE_TYPE_LIBRARY;\n  }\n  sVar3 = strlen(arg);\n  pcVar4 = arg + sVar3;\nLAB_000f2b16:\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,arg,pcVar4,0);\n  file.type_ = local_74;\n  paVar2 = &file.extra_search_path_.field_2;\n  file.extra_search_path_._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  file.options_.as_needed_ = (this->as_needed_).value;\n  file.just_symbols_ = false;\n  file.options_.Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */\n  file.options_.format_enum_ = string_to_object_format((this->format_).value);\n  file.options_.whole_archive_ = (this->whole_archive_).value;\n  file.arg_serial_ = 0;\n  file.options_.incremental_disposition_ = this->incremental_disposition_;\n                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */\n  Input_arguments::add_file(&cmdline->inputs_,&file);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != paVar2) {\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != paVar1) {\n    operator_delete(file.name_._M_dataplus._M_p);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::General_options::" identifier : : identifier : :) (function_declarator "parse_library\n          (General_options *this,char *param_1,char *arg,Command_line *cmdline)" identifier (parameter_list "(General_options *this,char *param_1,char *arg,Command_line *cmdline)" ( (parameter_declaration "General_options *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *arg" primitive_type (pointer_declarator "*arg" * identifier)) , (parameter_declaration "Command_line *cmdline" type_identifier (pointer_declarator "*cmdline" * identifier)) ))) (compound_statement "{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  size_t sVar3;\n  char *pcVar4;\n  int unaff_EDI;\n  Input_file_type local_74;\n  Input_file_argument file;\n  \n  __x86_get_pc_thunk_di();\n  paVar1 = &file.name_.field_2;\n  file.name_._M_dataplus._M_p = (pointer)paVar1;\n  if (*arg == ':') {\n    arg = arg + 1;\n    pcVar4 = (char *)0xffffffff;\n    local_74 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    if (arg == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = INPUT_FILE_TYPE_LIBRARY;\n  }\n  sVar3 = strlen(arg);\n  pcVar4 = arg + sVar3;\nLAB_000f2b16:\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,arg,pcVar4,0);\n  file.type_ = local_74;\n  paVar2 = &file.extra_search_path_.field_2;\n  file.extra_search_path_._M_dataplus._M_p = (pointer)paVar2;\n                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  file.options_.as_needed_ = (this->as_needed_).value;\n  file.just_symbols_ = false;\n  file.options_.Bdynamic_ = (this->Bdynamic_).value;\n                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */\n  file.options_.format_enum_ = string_to_object_format((this->format_).value);\n  file.options_.whole_archive_ = (this->whole_archive_).value;\n  file.arg_serial_ = 0;\n  file.options_.incremental_disposition_ = this->incremental_disposition_;\n                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */\n  Input_arguments::add_file(&cmdline->inputs_,&file);\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != paVar2) {\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != paVar1) {\n    operator_delete(file.name_._M_dataplus._M_p);\n  }\n  return;\n}" { (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *paVar1;" (binary_expression "allocator<char>_>_9\n  *paVar1" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar1" identifier * identifier)) ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *paVar2;" (binary_expression "allocator<char>_>_9\n  *paVar2" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar2" identifier * identifier)) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "Input_file_type local_74;" type_identifier identifier ;) (declaration "Input_file_argument file;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "paVar1 = &file.name_.field_2;" (assignment_expression "paVar1 = &file.name_.field_2" identifier = (pointer_expression "&file.name_.field_2" & (field_expression "file.name_.field_2" (field_expression "file.name_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "file.name_._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "file.name_._M_dataplus._M_p = (pointer)paVar1" (field_expression "file.name_._M_dataplus._M_p" (field_expression "file.name_._M_dataplus" (field_expression "file.name_" identifier . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (*arg == ':') {\n    arg = arg + 1;\n    pcVar4 = (char *)0xffffffff;\n    local_74 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    if (arg == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = INPUT_FILE_TYPE_LIBRARY;\n  }" if (parenthesized_expression "(*arg == ':')" ( (binary_expression "*arg == ':'" (pointer_expression "*arg" * identifier) == (char_literal "':'" ' character ')) )) (compound_statement "{\n    arg = arg + 1;\n    pcVar4 = (char *)0xffffffff;\n    local_74 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    if (arg == (char *)0x0) goto LAB_000f2b16;\n  }" { (expression_statement "arg = arg + 1;" (assignment_expression "arg = arg + 1" identifier = (binary_expression "arg + 1" identifier + number_literal)) ;) (expression_statement "pcVar4 = (char *)0xffffffff;" (assignment_expression "pcVar4 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = INPUT_FILE_TYPE_SEARCHED_FILE;" (assignment_expression "local_74 = INPUT_FILE_TYPE_SEARCHED_FILE" identifier = identifier) ;) (if_statement "if (arg == (char *)0x0) goto LAB_000f2b16;" if (parenthesized_expression "(arg == (char *)0x0)" ( (binary_expression "arg == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f2b16;" goto statement_identifier ;)) }) (else_clause "else {\n    local_74 = INPUT_FILE_TYPE_LIBRARY;\n  }" else (compound_statement "{\n    local_74 = INPUT_FILE_TYPE_LIBRARY;\n  }" { (expression_statement "local_74 = INPUT_FILE_TYPE_LIBRARY;" (assignment_expression "local_74 = INPUT_FILE_TYPE_LIBRARY" identifier = identifier) ;) }))) (expression_statement "sVar3 = strlen(arg);" (assignment_expression "sVar3 = strlen(arg)" identifier = (call_expression "strlen(arg)" identifier (argument_list "(arg)" ( identifier )))) ;) (expression_statement "pcVar4 = arg + sVar3;" (assignment_expression "pcVar4 = arg + sVar3" identifier = (binary_expression "arg + sVar3" identifier + identifier)) ;) (labeled_statement "LAB_000f2b16:\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,arg,pcVar4,0);" statement_identifier : (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.name_,arg,pcVar4,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&file.name_,arg,pcVar4,0);" (binary_expression "_M_construct<char_const*>(&file.name_,arg,pcVar4,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&file.name_,arg,pcVar4,0)" ( (comma_expression "&file.name_,arg,pcVar4,0" (pointer_expression "&file.name_" & (field_expression "file.name_" identifier . field_identifier)) , (comma_expression "arg,pcVar4,0" identifier , (comma_expression "pcVar4,0" identifier , number_literal))) ))) ;))) (expression_statement "file.type_ = local_74;" (assignment_expression "file.type_ = local_74" (field_expression "file.type_" identifier . field_identifier) = identifier) ;) (expression_statement "paVar2 = &file.extra_search_path_.field_2;" (assignment_expression "paVar2 = &file.extra_search_path_.field_2" identifier = (pointer_expression "&file.extra_search_path_.field_2" & (field_expression "file.extra_search_path_.field_2" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "file.extra_search_path_._M_dataplus._M_p = (pointer)paVar2;" (assignment_expression "file.extra_search_path_._M_dataplus._M_p = (pointer)paVar2" (field_expression "file.extra_search_path_._M_dataplus._M_p" (field_expression "file.extra_search_path_._M_dataplus" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar2" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);" (binary_expression "_M_construct<char_const*>(&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0)" ( (comma_expression "&file.extra_search_path_,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0" (pointer_expression "&file.extra_search_path_" & (field_expression "file.extra_search_path_" identifier . field_identifier)) , (comma_expression "unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0" (binary_expression "unaff_EDI + 0x1c385d" identifier + number_literal) , (comma_expression "unaff_EDI + 0x1c385d,0" (binary_expression "unaff_EDI + 0x1c385d" identifier + number_literal) , number_literal))) ))) ;)) (expression_statement "file.options_.as_needed_ = (this->as_needed_).value;" (assignment_expression "file.options_.as_needed_ = (this->as_needed_).value" (field_expression "file.options_.as_needed_" (field_expression "file.options_" identifier . field_identifier) . field_identifier) = (field_expression "(this->as_needed_).value" (parenthesized_expression "(this->as_needed_)" ( (field_expression "this->as_needed_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "file.just_symbols_ = false;" (assignment_expression "file.just_symbols_ = false" (field_expression "file.just_symbols_" identifier . field_identifier) = false) ;) (expression_statement "file.options_.Bdynamic_ = (this->Bdynamic_).value;" (assignment_expression "file.options_.Bdynamic_ = (this->Bdynamic_).value" (field_expression "file.options_.Bdynamic_" (field_expression "file.options_" identifier . field_identifier) . field_identifier) = (field_expression "(this->Bdynamic_).value" (parenthesized_expression "(this->Bdynamic_)" ( (field_expression "this->Bdynamic_" identifier -> field_identifier) )) . field_identifier)) ;) comment (expression_statement "file.options_.format_enum_ = string_to_object_format((this->format_).value);" (assignment_expression "file.options_.format_enum_ = string_to_object_format((this->format_).value)" (field_expression "file.options_.format_enum_" (field_expression "file.options_" identifier . field_identifier) . field_identifier) = (call_expression "string_to_object_format((this->format_).value)" identifier (argument_list "((this->format_).value)" ( (field_expression "(this->format_).value" (parenthesized_expression "(this->format_)" ( (field_expression "this->format_" identifier -> field_identifier) )) . field_identifier) )))) ;) (expression_statement "file.options_.whole_archive_ = (this->whole_archive_).value;" (assignment_expression "file.options_.whole_archive_ = (this->whole_archive_).value" (field_expression "file.options_.whole_archive_" (field_expression "file.options_" identifier . field_identifier) . field_identifier) = (field_expression "(this->whole_archive_).value" (parenthesized_expression "(this->whole_archive_)" ( (field_expression "this->whole_archive_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "file.arg_serial_ = 0;" (assignment_expression "file.arg_serial_ = 0" (field_expression "file.arg_serial_" identifier . field_identifier) = number_literal) ;) (expression_statement "file.options_.incremental_disposition_ = this->incremental_disposition_;" (assignment_expression "file.options_.incremental_disposition_ = this->incremental_disposition_" (field_expression "file.options_.incremental_disposition_" (field_expression "file.options_" identifier . field_identifier) . field_identifier) = (field_expression "this->incremental_disposition_" identifier -> field_identifier)) ;) comment (labeled_statement "Input_arguments::add_file(&cmdline->inputs_,&file);" statement_identifier : (ERROR ":" :) (expression_statement "add_file(&cmdline->inputs_,&file);" (call_expression "add_file(&cmdline->inputs_,&file)" identifier (argument_list "(&cmdline->inputs_,&file)" ( (pointer_expression "&cmdline->inputs_" & (field_expression "cmdline->inputs_" identifier -> field_identifier)) , (pointer_expression "&file" & identifier) ))) ;)) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != paVar2) {\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != paVar2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != paVar2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p != paVar2" (binary_expression "allocator<char>_>_9\n       *)file.extra_search_path_._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)file.extra_search_path_._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "file.extra_search_path_._M_dataplus._M_p" (field_expression "file.extra_search_path_._M_dataplus" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n    operator_delete(file.extra_search_path_._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(file.extra_search_path_._M_dataplus._M_p);" (call_expression "operator_delete(file.extra_search_path_._M_dataplus._M_p)" identifier (argument_list "(file.extra_search_path_._M_dataplus._M_p)" ( (field_expression "file.extra_search_path_._M_dataplus._M_p" (field_expression "file.extra_search_path_._M_dataplus" (field_expression "file.extra_search_path_" identifier . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != paVar1) {\n    operator_delete(file.name_._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n       *)file.name_._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)file.name_._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "file.name_._M_dataplus._M_p" (field_expression "file.name_._M_dataplus" (field_expression "file.name_" identifier . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n    operator_delete(file.name_._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(file.name_._M_dataplus._M_p);" (call_expression "operator_delete(file.name_._M_dataplus._M_p)" identifier (argument_list "(file.name_._M_dataplus._M_p)" ( (field_expression "file.name_._M_dataplus._M_p" (field_expression "file.name_._M_dataplus" (field_expression "file.name_" identifier . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)\n\n{\n  size_t sVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  undefined4 local_74;\n  undefined1 *local_68 [2];\n  undefined1 local_60 [16];\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 local_44 [16];\n  undefined1 local_34;\n  undefined1 local_30;\n  undefined1 local_2f;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  \n  FUN_00062073();\n  local_68[0] = local_60;\n  if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }\n  sVar1 = strlen(param_3);\n  pcVar2 = param_3 + sVar1;\nLAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);\n  local_50 = local_74;\n  local_4c[0] = local_44;\n                    \n  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  local_30 = *(undefined1 *)(param_1 + 0x2f5);\n  local_34 = 0;\n  local_2f = *(undefined1 *)(param_1 + 0x549);\n                    \n  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));\n  local_28 = *(undefined1 *)(param_1 + 0x4a2d);\n  local_20 = 0;\n  local_24 = *(undefined4 *)(param_1 + 0x5a14);\n                    \n  FUN_000f24b0(param_4 + 0x5b6c,local_68);\n  if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }\n  if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }\n  return;\n}\n\n" (function_definition "void FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)\n\n{\n  size_t sVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  undefined4 local_74;\n  undefined1 *local_68 [2];\n  undefined1 local_60 [16];\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 local_44 [16];\n  undefined1 local_34;\n  undefined1 local_30;\n  undefined1 local_2f;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  \n  FUN_00062073();\n  local_68[0] = local_60;\n  if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }\n  sVar1 = strlen(param_3);\n  pcVar2 = param_3 + sVar1;\nLAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);\n  local_50 = local_74;\n  local_4c[0] = local_44;\n                    \n  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  local_30 = *(undefined1 *)(param_1 + 0x2f5);\n  local_34 = 0;\n  local_2f = *(undefined1 *)(param_1 + 0x549);\n                    \n  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));\n  local_28 = *(undefined1 *)(param_1 + 0x4a2d);\n  local_20 = 0;\n  local_24 = *(undefined4 *)(param_1 + 0x5a14);\n                    \n  FUN_000f24b0(param_4 + 0x5b6c,local_68);\n  if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }\n  if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,char *param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  size_t sVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  undefined4 local_74;\n  undefined1 *local_68 [2];\n  undefined1 local_60 [16];\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 local_44 [16];\n  undefined1 local_34;\n  undefined1 local_30;\n  undefined1 local_2f;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  \n  FUN_00062073();\n  local_68[0] = local_60;\n  if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }\n  sVar1 = strlen(param_3);\n  pcVar2 = param_3 + sVar1;\nLAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);\n  local_50 = local_74;\n  local_4c[0] = local_44;\n                    \n  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  local_30 = *(undefined1 *)(param_1 + 0x2f5);\n  local_34 = 0;\n  local_2f = *(undefined1 *)(param_1 + 0x549);\n                    \n  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));\n  local_28 = *(undefined1 *)(param_1 + 0x4a2d);\n  local_20 = 0;\n  local_24 = *(undefined4 *)(param_1 + 0x5a14);\n                    \n  FUN_000f24b0(param_4 + 0x5b6c,local_68);\n  if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }\n  if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }\n  return;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "undefined1 *local_68 [2];" type_identifier (pointer_declarator "*local_68 [2]" * (array_declarator "local_68 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_60 [16];" type_identifier (array_declarator "local_60 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined1 *local_4c [2];" type_identifier (pointer_declarator "*local_4c [2]" * (array_declarator "local_4c [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_44 [16];" type_identifier (array_declarator "local_44 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_34;" type_identifier identifier ;) (declaration "undefined1 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2f;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined1 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "FUN_00062073();" (call_expression "FUN_00062073()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_68[0] = local_60;" (assignment_expression "local_68[0] = local_60" (subscript_expression "local_68[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }" if (parenthesized_expression "(*param_3 == ':')" ( (binary_expression "*param_3 == ':'" (pointer_expression "*param_3" * identifier) == (char_literal "':'" ' character ')) )) (compound_statement "{\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }" { (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (expression_statement "pcVar2 = (char *)0xffffffff;" (assignment_expression "pcVar2 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_74 = 2;" (assignment_expression "local_74 = 2" identifier = number_literal) ;) (if_statement "if (param_3 == (char *)0x0) goto LAB_000f2b16;" if (parenthesized_expression "(param_3 == (char *)0x0)" ( (binary_expression "param_3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f2b16;" goto statement_identifier ;)) }) (else_clause "else {\n    local_74 = 1;\n  }" else (compound_statement "{\n    local_74 = 1;\n  }" { (expression_statement "local_74 = 1;" (assignment_expression "local_74 = 1" identifier = number_literal) ;) }))) (expression_statement "sVar1 = strlen(param_3);" (assignment_expression "sVar1 = strlen(param_3)" identifier = (call_expression "strlen(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "pcVar2 = param_3 + sVar1;" (assignment_expression "pcVar2 = param_3 + sVar1" identifier = (binary_expression "param_3 + sVar1" identifier + identifier)) ;) (labeled_statement "LAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);" statement_identifier : (expression_statement "FUN_0005c9a0(local_68,param_3,pcVar2,0);" (call_expression "FUN_0005c9a0(local_68,param_3,pcVar2,0)" identifier (argument_list "(local_68,param_3,pcVar2,0)" ( identifier , identifier , identifier , number_literal ))) ;)) (expression_statement "local_50 = local_74;" (assignment_expression "local_50 = local_74" identifier = identifier) ;) (expression_statement "local_4c[0] = local_44;" (assignment_expression "local_4c[0] = local_44" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);" (call_expression "FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0)" identifier (argument_list "(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0)" ( identifier , (binary_expression "unaff_EDI + 0x1c385d" identifier + number_literal) , (binary_expression "unaff_EDI + 0x1c385d" identifier + number_literal) , number_literal ))) ;) (expression_statement "local_30 = *(undefined1 *)(param_1 + 0x2f5);" (assignment_expression "local_30 = *(undefined1 *)(param_1 + 0x2f5)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x2f5)" * (cast_expression "(undefined1 *)(param_1 + 0x2f5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2f5)" ( (binary_expression "param_1 + 0x2f5" identifier + number_literal) ))))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2f = *(undefined1 *)(param_1 + 0x549);" (assignment_expression "local_2f = *(undefined1 *)(param_1 + 0x549)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x549)" * (cast_expression "(undefined1 *)(param_1 + 0x549)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x549)" ( (binary_expression "param_1 + 0x549" identifier + number_literal) ))))) ;) (expression_statement "local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));" (assignment_expression "local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8))" identifier = (call_expression "FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x3b8))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x3b8)" * (cast_expression "(undefined4 *)(param_1 + 0x3b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3b8)" ( (binary_expression "param_1 + 0x3b8" identifier + number_literal) )))) )))) ;) (expression_statement "local_28 = *(undefined1 *)(param_1 + 0x4a2d);" (assignment_expression "local_28 = *(undefined1 *)(param_1 + 0x4a2d)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x4a2d)" * (cast_expression "(undefined1 *)(param_1 + 0x4a2d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4a2d)" ( (binary_expression "param_1 + 0x4a2d" identifier + number_literal) ))))) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = *(undefined4 *)(param_1 + 0x5a14);" (assignment_expression "local_24 = *(undefined4 *)(param_1 + 0x5a14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x5a14)" * (cast_expression "(undefined4 *)(param_1 + 0x5a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5a14)" ( (binary_expression "param_1 + 0x5a14" identifier + number_literal) ))))) ;) (expression_statement "FUN_000f24b0(param_4 + 0x5b6c,local_68);" (call_expression "FUN_000f24b0(param_4 + 0x5b6c,local_68)" identifier (argument_list "(param_4 + 0x5b6c,local_68)" ( (binary_expression "param_4 + 0x5b6c" identifier + number_literal) , identifier ))) ;) (if_statement "if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }" if (parenthesized_expression "(local_4c[0] != local_44)" ( (binary_expression "local_4c[0] != local_44" (subscript_expression "local_4c[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_001fd020(local_4c[0]);\n  }" { (expression_statement "FUN_001fd020(local_4c[0]);" (call_expression "FUN_001fd020(local_4c[0])" identifier (argument_list "(local_4c[0])" ( (subscript_expression "local_4c[0]" identifier [ number_literal ]) ))) ;) })) (if_statement "if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }" if (parenthesized_expression "(local_68[0] != local_60)" ( (binary_expression "local_68[0] != local_60" (subscript_expression "local_68[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    FUN_001fd020(local_68[0]);\n  }" { (expression_statement "FUN_001fd020(local_68[0]);" (call_expression "FUN_001fd020(local_68[0])" identifier (argument_list "(local_68[0])" ( (subscript_expression "local_68[0]" identifier [ number_literal ]) ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)\n\n{\n  size_t sVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  undefined4 local_74;\n  undefined1 *local_68 [2];\n  undefined1 local_60 [16];\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 local_44 [16];\n  undefined1 local_34;\n  undefined1 local_30;\n  undefined1 local_2f;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  \n  FUN_00062073();\n  local_68[0] = local_60;\n  if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }\n  sVar1 = strlen(param_3);\n  pcVar2 = param_3 + sVar1;\nLAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);\n  local_50 = local_74;\n  local_4c[0] = local_44;\n                    \n  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  local_30 = *(undefined1 *)(param_1 + 0x2f5);\n  local_34 = 0;\n  local_2f = *(undefined1 *)(param_1 + 0x549);\n                    \n  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));\n  local_28 = *(undefined1 *)(param_1 + 0x4a2d);\n  local_20 = 0;\n  local_24 = *(undefined4 *)(param_1 + 0x5a14);\n                    \n  FUN_000f24b0(param_4 + 0x5b6c,local_68);\n  if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }\n  if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000f2ad0(int param_1,undefined4 param_2,char *param_3,int param_4)" (identifier "FUN_000f2ad0") (parameter_list "(int param_1,undefined4 param_2,char *param_3,int param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  size_t sVar1;\n  char *pcVar2;\n  int unaff_EDI;\n  undefined4 local_74;\n  undefined1 *local_68 [2];\n  undefined1 local_60 [16];\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 local_44 [16];\n  undefined1 local_34;\n  undefined1 local_30;\n  undefined1 local_2f;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  \n  FUN_00062073();\n  local_68[0] = local_60;\n  if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }\n  sVar1 = strlen(param_3);\n  pcVar2 = param_3 + sVar1;\nLAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);\n  local_50 = local_74;\n  local_4c[0] = local_44;\n                    \n  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);\n  local_30 = *(undefined1 *)(param_1 + 0x2f5);\n  local_34 = 0;\n  local_2f = *(undefined1 *)(param_1 + 0x549);\n                    \n  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));\n  local_28 = *(undefined1 *)(param_1 + 0x4a2d);\n  local_20 = 0;\n  local_24 = *(undefined4 *)(param_1 + 0x5a14);\n                    \n  FUN_000f24b0(param_4 + 0x5b6c,local_68);\n  if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }\n  if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }\n  return;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined4 local_74;" (type_identifier "undefined4") (identifier "local_74") (; ";")) (declaration "undefined1 *local_68 [2];" (type_identifier "undefined1") (pointer_declarator "*local_68 [2]" (* "*") (array_declarator "local_68 [2]" (identifier "local_68") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_60 [16];" (type_identifier "undefined1") (array_declarator "local_60 [16]" (identifier "local_60") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined1 *local_4c [2];" (type_identifier "undefined1") (pointer_declarator "*local_4c [2]" (* "*") (array_declarator "local_4c [2]" (identifier "local_4c") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_44 [16];" (type_identifier "undefined1") (array_declarator "local_44 [16]" (identifier "local_44") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 local_34;" (type_identifier "undefined1") (identifier "local_34") (; ";")) (declaration "undefined1 local_30;" (type_identifier "undefined1") (identifier "local_30") (; ";")) (declaration "undefined1 local_2f;" (type_identifier "undefined1") (identifier "local_2f") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined1 local_28;" (type_identifier "undefined1") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (expression_statement "FUN_00062073();" (call_expression "FUN_00062073()" (identifier "FUN_00062073") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_68[0] = local_60;" (assignment_expression "local_68[0] = local_60" (subscript_expression "local_68[0]" (identifier "local_68") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_60")) (; ";")) (if_statement "if (*param_3 == ':') {\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }\n  else {\n    local_74 = 1;\n  }" (if "if") (parenthesized_expression "(*param_3 == ':')" (( "(") (binary_expression "*param_3 == ':'" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (char_literal "':'" (' "'") (character ":") (' "'"))) () ")")) (compound_statement "{\n    param_3 = param_3 + 1;\n    pcVar2 = (char *)0xffffffff;\n    local_74 = 2;\n    if (param_3 == (char *)0x0) goto LAB_000f2b16;\n  }" ({ "{") (expression_statement "param_3 = param_3 + 1;" (assignment_expression "param_3 = param_3 + 1" (identifier "param_3") (= "=") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar2 = (char *)0xffffffff;" (assignment_expression "pcVar2 = (char *)0xffffffff" (identifier "pcVar2") (= "=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "local_74 = 2;" (assignment_expression "local_74 = 2" (identifier "local_74") (= "=") (number_literal "2")) (; ";")) (if_statement "if (param_3 == (char *)0x0) goto LAB_000f2b16;" (if "if") (parenthesized_expression "(param_3 == (char *)0x0)" (( "(") (binary_expression "param_3 == (char *)0x0" (identifier "param_3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000f2b16;" (goto "goto") (statement_identifier "LAB_000f2b16") (; ";"))) (} "}")) (else_clause "else {\n    local_74 = 1;\n  }" (else "else") (compound_statement "{\n    local_74 = 1;\n  }" ({ "{") (expression_statement "local_74 = 1;" (assignment_expression "local_74 = 1" (identifier "local_74") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "sVar1 = strlen(param_3);" (assignment_expression "sVar1 = strlen(param_3)" (identifier "sVar1") (= "=") (call_expression "strlen(param_3)" (identifier "strlen") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "pcVar2 = param_3 + sVar1;" (assignment_expression "pcVar2 = param_3 + sVar1" (identifier "pcVar2") (= "=") (binary_expression "param_3 + sVar1" (identifier "param_3") (+ "+") (identifier "sVar1"))) (; ";")) (labeled_statement "LAB_000f2b16:\n  FUN_0005c9a0(local_68,param_3,pcVar2,0);" (statement_identifier "LAB_000f2b16") (: ":") (expression_statement "FUN_0005c9a0(local_68,param_3,pcVar2,0);" (call_expression "FUN_0005c9a0(local_68,param_3,pcVar2,0)" (identifier "FUN_0005c9a0") (argument_list "(local_68,param_3,pcVar2,0)" (( "(") (identifier "local_68") (, ",") (identifier "param_3") (, ",") (identifier "pcVar2") (, ",") (number_literal "0") () ")"))) (; ";"))) (expression_statement "local_50 = local_74;" (assignment_expression "local_50 = local_74" (identifier "local_50") (= "=") (identifier "local_74")) (; ";")) (expression_statement "local_4c[0] = local_44;" (assignment_expression "local_4c[0] = local_44" (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_44")) (; ";")) (expression_statement "FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);" (call_expression "FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0)" (identifier "FUN_0005c9a0") (argument_list "(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0)" (( "(") (identifier "local_4c") (, ",") (binary_expression "unaff_EDI + 0x1c385d" (identifier "unaff_EDI") (+ "+") (number_literal "0x1c385d")) (, ",") (binary_expression "unaff_EDI + 0x1c385d" (identifier "unaff_EDI") (+ "+") (number_literal "0x1c385d")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_30 = *(undefined1 *)(param_1 + 0x2f5);" (assignment_expression "local_30 = *(undefined1 *)(param_1 + 0x2f5)" (identifier "local_30") (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x2f5)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x2f5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2f5)" (( "(") (binary_expression "param_1 + 0x2f5" (identifier "param_1") (+ "+") (number_literal "0x2f5")) () ")"))))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2f = *(undefined1 *)(param_1 + 0x549);" (assignment_expression "local_2f = *(undefined1 *)(param_1 + 0x549)" (identifier "local_2f") (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x549)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x549)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x549)" (( "(") (binary_expression "param_1 + 0x549" (identifier "param_1") (+ "+") (number_literal "0x549")) () ")"))))) (; ";")) (expression_statement "local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));" (assignment_expression "local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8))" (identifier "local_2c") (= "=") (call_expression "FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8))" (identifier "FUN_000f10b0") (argument_list "(*(undefined4 *)(param_1 + 0x3b8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x3b8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3b8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3b8)" (( "(") (binary_expression "param_1 + 0x3b8" (identifier "param_1") (+ "+") (number_literal "0x3b8")) () ")")))) () ")")))) (; ";")) (expression_statement "local_28 = *(undefined1 *)(param_1 + 0x4a2d);" (assignment_expression "local_28 = *(undefined1 *)(param_1 + 0x4a2d)" (identifier "local_28") (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x4a2d)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x4a2d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4a2d)" (( "(") (binary_expression "param_1 + 0x4a2d" (identifier "param_1") (+ "+") (number_literal "0x4a2d")) () ")"))))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = *(undefined4 *)(param_1 + 0x5a14);" (assignment_expression "local_24 = *(undefined4 *)(param_1 + 0x5a14)" (identifier "local_24") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x5a14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x5a14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5a14)" (( "(") (binary_expression "param_1 + 0x5a14" (identifier "param_1") (+ "+") (number_literal "0x5a14")) () ")"))))) (; ";")) (expression_statement "FUN_000f24b0(param_4 + 0x5b6c,local_68);" (call_expression "FUN_000f24b0(param_4 + 0x5b6c,local_68)" (identifier "FUN_000f24b0") (argument_list "(param_4 + 0x5b6c,local_68)" (( "(") (binary_expression "param_4 + 0x5b6c" (identifier "param_4") (+ "+") (number_literal "0x5b6c")) (, ",") (identifier "local_68") () ")"))) (; ";")) (if_statement "if (local_4c[0] != local_44) {\n    FUN_001fd020(local_4c[0]);\n  }" (if "if") (parenthesized_expression "(local_4c[0] != local_44)" (( "(") (binary_expression "local_4c[0] != local_44" (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_44")) () ")")) (compound_statement "{\n    FUN_001fd020(local_4c[0]);\n  }" ({ "{") (expression_statement "FUN_001fd020(local_4c[0]);" (call_expression "FUN_001fd020(local_4c[0])" (identifier "FUN_001fd020") (argument_list "(local_4c[0])" (( "(") (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_68[0] != local_60) {\n    FUN_001fd020(local_68[0]);\n  }" (if "if") (parenthesized_expression "(local_68[0] != local_60)" (( "(") (binary_expression "local_68[0] != local_60" (subscript_expression "local_68[0]" (identifier "local_68") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_60")) () ")")) (compound_statement "{\n    FUN_001fd020(local_68[0]);\n  }" ({ "{") (expression_statement "FUN_001fd020(local_68[0]);" (call_expression "FUN_001fd020(local_68[0])" (identifier "FUN_001fd020") (argument_list "(local_68[0])" (( "(") (subscript_expression "local_68[0]" (identifier "local_68") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void parse_library(General_options * this, char * param_1, char * arg,
   Command_line * cmdline) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,char *param_1,char *var_8,type_2 *cmdline)

{
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_6;
  size_t var_10;
  char *pcVar4;
  int var_13;
  type_3 local_74;
  type_4 file;
  
  var_7();
  var_5 = &file.name_.field_2;
  file.name_._M_dataplus._M_p = (type_5)var_5;
  if (*var_8 == ':') {
    var_8 = var_8 + 1;
    pcVar4 = (char *)0xffffffff;
    local_74 = INPUT_FILE_TYPE_SEARCHED_FILE;
    if (var_8 == (char *)0x0) goto LAB_000f2b16;
  }
  else {
    local_74 = INPUT_FILE_TYPE_LIBRARY;
  }
  var_10 = var_9(var_8);
  pcVar4 = var_8 + var_10;
LAB_000f2b16:
  std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
  var_11<var_12*>(&file.name_,var_8,pcVar4,0);
  file.type_ = local_74;
  var_6 = &file.extra_search_path_.field_2;
  file.extra_search_path_._M_dataplus._M_p = (type_5)var_6;
                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */
  std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
  var_11<var_12*>(&file.extra_search_path_,var_13 + 0x1c385d,var_13 + 0x1c385d,0);
  file.options_.as_needed_ = (this->as_needed_).value;
  file.just_symbols_ = false;
  file.options_.Bdynamic_ = (this->Bdynamic_).value;
                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */
  file.options_.format_enum_ = var_14((this->format_).value);
  file.options_.whole_archive_ = (this->whole_archive_).value;
  file.arg_serial_ = 0;
  file.options_.incremental_disposition_ = this->incremental_disposition_;
                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */
  Input_arguments::var_15(&cmdline->inputs_,&file);
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)file.extra_search_path_._M_dataplus._M_p != var_6) {
    var_16(file.extra_search_path_._M_dataplus._M_p);
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)file.name_._M_dataplus._M_p != var_5) {
    var_16(file.name_._M_dataplus._M_p);
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (return_statement))))

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

{
  size_t sVar1;
  char *pcVar2;
  int unaff_EDI;
  undefined4 local_74;
  undefined1 *local_68 [2];
  undefined1 local_60 [16];
  undefined4 local_50;
  undefined1 *local_4c [2];
  undefined1 local_44 [16];
  undefined1 local_34;
  undefined1 local_30;
  undefined1 local_2f;
  undefined4 local_2c;
  undefined1 local_28;
  undefined4 local_24;
  undefined4 local_20;
  
  FUN_00062073();
  local_68[0] = local_60;
  if (*param_3 == ':') {
    param_3 = param_3 + 1;
    pcVar2 = (char *)0xffffffff;
    local_74 = 2;
    if (param_3 == (char *)0x0) goto LAB_000f2b16;
  }
  else {
    local_74 = 1;
  }
  sVar1 = strlen(param_3);
  pcVar2 = param_3 + sVar1;
LAB_000f2b16:
  FUN_0005c9a0(local_68,param_3,pcVar2,0);
  local_50 = local_74;
  local_4c[0] = local_44;
                    /* try { // try from 000f2b48 to 000f2b4c has its CatchHandler @ 000f2c09 */
  FUN_0005c9a0(local_4c,unaff_EDI + 0x1c385d,unaff_EDI + 0x1c385d,0);
  local_30 = *(undefined1 *)(param_1 + 0x2f5);
  local_34 = 0;
  local_2f = *(undefined1 *)(param_1 + 0x549);
                    /* try { // try from 000f2b6c to 000f2b70 has its CatchHandler @ 000f2c02 */
  local_2c = FUN_000f10b0(*(undefined4 *)(param_1 + 0x3b8));
  local_28 = *(undefined1 *)(param_1 + 0x4a2d);
  local_20 = 0;
  local_24 = *(undefined4 *)(param_1 + 0x5a14);
                    /* try { // try from 000f2b9b to 000f2b9f has its CatchHandler @ 000f2bfb */
  FUN_000f24b0(param_4 + 0x5b6c,local_68);
  if (local_4c[0] != local_44) {
    FUN_001fd020(local_4c[0]);
  }
  if (local_68[0] != local_60) {
    FUN_001fd020(local_68[0]);
  }
  return;
}

