
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* 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)

{
  undefined *puVar1;
  int iVar2;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar3;
  char *pcVar4;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar5;
  Input_file_type IVar6;
  Input_file_argument file;
  
  paVar5 = &file.name_.field_2;
  file.name_._M_dataplus._M_p = (pointer)paVar5;
  if (*arg == ':') {
    pcVar4 = arg + 1;
    IVar6 = INPUT_FILE_TYPE_SEARCHED_FILE;
    arg = (char *)0xffffffff;
    if (pcVar4 == (char *)0x0) goto LAB_0016f81c;
  }
  else {
    IVar6 = INPUT_FILE_TYPE_LIBRARY;
    pcVar4 = arg;
  }
  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar4,param_1,arg);
  arg = pcVar4 + iVar2;
LAB_0016f81c:
  puVar1 = PTR__M_construct<char_const*>_00432488;
  (*(code *)PTR__M_construct<char_const*>_00432488)(&file,pcVar4,arg,0);
  paVar3 = &file.extra_search_path_.field_2;
  file.type_ = IVar6;
  file.extra_search_path_._M_dataplus._M_p = (pointer)paVar3;
                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */
  (*(code *)puVar1)(&file.extra_search_path_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);
  file.options_.as_needed_ = (this->as_needed_).value;
  file.options_.Bdynamic_ = (this->Bdynamic_).value;
  file.just_symbols_ = false;
                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */
  file.options_.format_enum_ = string_to_object_format((this->format_).value);
  file.options_.whole_archive_ = (this->whole_archive_).value;
  file.options_.incremental_disposition_ = this->incremental_disposition_;
                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */
  file.arg_serial_ = 0;
  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 != paVar3) {
    (*(code *)PTR_operator_delete_0043228c)();
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)file.name_._M_dataplus._M_p != paVar5) {
    (*(code *)PTR_operator_delete_0043228c)();
  }
  return;
}



/* gold::General_options::parse_library(char const*, char const*, gold::Command_line*) */

void __thiscall
gold::General_options::parse_library
          (General_options *this,char *param_1,char *param_2,Command_line *param_3)

{
  undefined *puVar1;
  int iVar2;
  char *pcVar3;
  undefined4 uVar4;
  undefined1 *local_70 [2];
  undefined1 auStack_68 [16];
  undefined4 local_58;
  undefined1 *local_54 [2];
  undefined1 auStack_4c [16];
  undefined1 local_3c;
  General_options local_38;
  General_options local_37;
  undefined4 local_34;
  General_options local_30;
  undefined4 local_2c;
  undefined4 local_28;
  
  local_70[0] = auStack_68;
  if (*param_2 == ':') {
    pcVar3 = param_2 + 1;
    uVar4 = 2;
    param_2 = (char *)0xffffffff;
    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;
  }
  else {
    uVar4 = 1;
    pcVar3 = param_2;
  }
  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);
  param_2 = pcVar3 + iVar2;
LAB_0016f81c:
  puVar1 = PTR__M_construct<char_const*>_00432488;
  (*(code *)PTR__M_construct<char_const*>_00432488)
            ((Input_file_argument *)local_70,pcVar3,param_2,0);
  local_58 = uVar4;
  local_54[0] = auStack_4c;
                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */
  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);
  local_38 = this[0x2f5];
  local_37 = this[0x54d];
  local_3c = 0;
                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */
  local_34 = string_to_object_format(*(char **)(this + 0x3b8));
  local_30 = this[0x4a3d];
  local_2c = *(undefined4 *)(this + 0x5a24);
                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */
  local_28 = 0;
  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);
  if (local_54[0] != auStack_4c) {
    (*(code *)PTR_operator_delete_0043228c)();
  }
  if (local_70[0] != auStack_68) {
    (*(code *)PTR_operator_delete_0043228c)();
  }
  return;
}


lui gp,0x2d
addiu gp,gp,-0x55e0
addu gp,gp,t9
addiu sp,sp,-0x88
li v0,0x3a
sw s6,0x80(sp)
or s6,a3,zero
sw s2,0x70(sp)
addiu s2,sp,0x20
sw s1,0x6c(sp)
or s1,a2,zero
sw s0,0x68(sp)
sw gp,0x10(sp)
sw ra,0x84(sp)
sw s5,0x7c(sp)
sw s4,0x78(sp)
sw s3,0x74(sp)
lb v1,0x0(a2)
beq v1,v0,0x0016f914
_or s0,a0,zero
li s5,0x1
sw s2,0x18(sp)
lw t9,-0x3a54(gp)
jalr t9
_or a0,s1,zero
lw gp,0x10(sp)
addu a2,s1,v0
lw s4,-0x7d48(gp)
or a3,zero,zero
addiu s3,sp,0x18
sll a3,a3,0x18
or a1,s1,zero
or t9,s4,zero
jalr t9
_or a0,s3,zero
or a3,zero,zero
lw gp,0x10(sp)
addiu s1,sp,0x3c
sll a3,a3,0x18
sw s5,0x30(sp)
addiu a0,sp,0x34
sw s1,0x34(sp)
or t9,s4,zero
lw a2,-0x7f64(gp)
addiu a2,a2,0x1018
jalr t9
_or a1,a2,zero
lw gp,0x10(sp)
lbu v1,0x2f5(s0)
lbu v0,0x54d(s0)
lw a0,0x3b8(s0)
lw t9,-0x6ea8(gp)
sb zero,0x4c(sp)
sb v1,0x50(sp)
bal 0x0016d82c
_sb v0,0x51(sp)
lw gp,0x10(sp)
addiu a0,s6,0x5b84
lbu a2,0x4a3d(s0)
or a1,s3,zero
lw v1,0x5a24(s0)
sw v0,0x54(sp)
sb a2,0x58(sp)
sw v1,0x5c(sp)
lw t9,-0x6e68(gp)
bal 0x0016f170
_sw zero,0x60(sp)
lw a0,0x34(sp)
beq a0,s1,0x0016f8d8
_lw gp,0x10(sp)
lw t9,-0x7f44(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw a0,0x18(sp)
beq a0,s2,0x0016f8ec
_lw t9,-0x7f44(gp)
jalr t9
_nop
lw ra,0x84(sp)
lw s6,0x80(sp)
lw s5,0x7c(sp)
lw s4,0x78(sp)
lw s3,0x74(sp)
lw s2,0x70(sp)
lw s1,0x6c(sp)
lw s0,0x68(sp)
jr ra
_addiu sp,sp,0x88
addiu s1,a2,0x1
sw s2,0x18(sp)
li s5,0x2
beq s1,zero,0x0016f81c
_li a2,-0x1
b 0x0016f80c
_lw t9,-0x3a54(gp)
(translation_unit "/* gold::General_options::parse_library(char const*, char const*, gold::Command_line*) */\n\nvoid __thiscall\ngold::General_options::parse_library\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined1 *local_54 [2];\n  undefined1 auStack_4c [16];\n  undefined1 local_3c;\n  General_options local_38;\n  General_options local_37;\n  undefined4 local_34;\n  General_options local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_70[0] = auStack_68;\n  if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);\n  param_2 = pcVar3 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);\n  local_58 = uVar4;\n  local_54[0] = auStack_4c;\n                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */\n  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_38 = this[0x2f5];\n  local_37 = this[0x54d];\n  local_3c = 0;\n                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */\n  local_34 = string_to_object_format(*(char **)(this + 0x3b8));\n  local_30 = this[0x4a3d];\n  local_2c = *(undefined4 *)(this + 0x5a24);\n                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */\n  local_28 = 0;\n  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);\n  if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::General_options::parse_library\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined1 *local_54 [2];\n  undefined1 auStack_4c [16];\n  undefined1 local_3c;\n  General_options local_38;\n  General_options local_37;\n  undefined4 local_34;\n  General_options local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_70[0] = auStack_68;\n  if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);\n  param_2 = pcVar3 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);\n  local_58 = uVar4;\n  local_54[0] = auStack_4c;\n                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */\n  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_38 = this[0x2f5];\n  local_37 = this[0x54d];\n  local_3c = 0;\n                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */\n  local_34 = string_to_object_format(*(char **)(this + 0x3b8));\n  local_30 = this[0x4a3d];\n  local_2c = *(undefined4 *)(this + 0x5a24);\n                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */\n  local_28 = 0;\n  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);\n  if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\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 *param_2,Command_line *param_3)" identifier (parameter_list "(General_options *this,char *param_1,char *param_2,Command_line *param_3)" ( (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 *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "Command_line *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined1 *local_54 [2];\n  undefined1 auStack_4c [16];\n  undefined1 local_3c;\n  General_options local_38;\n  General_options local_37;\n  undefined4 local_34;\n  General_options local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_70[0] = auStack_68;\n  if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);\n  param_2 = pcVar3 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);\n  local_58 = uVar4;\n  local_54[0] = auStack_4c;\n                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */\n  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_38 = this[0x2f5];\n  local_37 = this[0x54d];\n  local_3c = 0;\n                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */\n  local_34 = string_to_object_format(*(char **)(this + 0x3b8));\n  local_30 = this[0x4a3d];\n  local_2c = *(undefined4 *)(this + 0x5a24);\n                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */\n  local_28 = 0;\n  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);\n  if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined1 *local_70 [2];" type_identifier (pointer_declarator "*local_70 [2]" * (array_declarator "local_70 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_68 [16];" type_identifier (array_declarator "auStack_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined1 *local_54 [2];" type_identifier (pointer_declarator "*local_54 [2]" * (array_declarator "local_54 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_4c [16];" type_identifier (array_declarator "auStack_4c [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_3c;" type_identifier identifier ;) (declaration "General_options local_38;" type_identifier identifier ;) (declaration "General_options local_37;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "General_options local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "local_70[0] = auStack_68;" (assignment_expression "local_70[0] = auStack_68" (subscript_expression "local_70[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" if (parenthesized_expression "(*param_2 == ':')" ( (binary_expression "*param_2 == ':'" (pointer_expression "*param_2" * identifier) == (char_literal "':'" ' character ')) )) (compound_statement "{\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }" { (expression_statement "pcVar3 = param_2 + 1;" (assignment_expression "pcVar3 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" identifier = number_literal) ;) (expression_statement "param_2 = (char *)0xffffffff;" (assignment_expression "param_2 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0016f81c;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0016f81c;" goto statement_identifier ;)) }) (else_clause "else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" else (compound_statement "{\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "pcVar3 = param_2;" (assignment_expression "pcVar3 = param_2" identifier = identifier) ;) }))) (expression_statement "iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);" (assignment_expression "iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar3,param_1,param_2)" ( identifier , identifier , identifier )))) ;) (expression_statement "param_2 = pcVar3 + iVar2;" (assignment_expression "param_2 = pcVar3 + iVar2" identifier = (binary_expression "pcVar3 + iVar2" identifier + identifier)) ;) (labeled_statement "LAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;" statement_identifier : (expression_statement "puVar1 = PTR__M_construct<char_const*>_00432488;" (assignment_expression "puVar1 = PTR__M_construct<char_const*>_00432488" identifier = (binary_expression "PTR__M_construct<char_const*>_00432488" (binary_expression "PTR__M_construct<char_const" identifier < identifier) (ERROR "*" *) > identifier)) ;)) (expression_statement "(*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);" (call_expression "(*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0)" (parenthesized_expression "(*(code *)PTR__M_construct<char_const*>_00432488)" ( (binary_expression "*(code *)PTR__M_construct<char_const*>_00432488" (binary_expression "*(code *)PTR__M_construct<char_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "((Input_file_argument *)local_70,pcVar3,param_2,0)" ( (cast_expression "(Input_file_argument *)local_70" ( (type_descriptor "Input_file_argument *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "local_58 = uVar4;" (assignment_expression "local_58 = uVar4" identifier = identifier) ;) (expression_statement "local_54[0] = auStack_4c;" (assignment_expression "local_54[0] = auStack_4c" (subscript_expression "local_54[0]" identifier [ number_literal ]) = identifier) ;) comment (expression_statement "(*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);" (call_expression "(*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" ( identifier , (binary_expression "PTR_DAT_0043226c + 0x1018" identifier + number_literal) , (binary_expression "PTR_DAT_0043226c + 0x1018" identifier + number_literal) , number_literal ))) ;) (expression_statement "local_38 = this[0x2f5];" (assignment_expression "local_38 = this[0x2f5]" identifier = (subscript_expression "this[0x2f5]" identifier [ number_literal ])) ;) (expression_statement "local_37 = this[0x54d];" (assignment_expression "local_37 = this[0x54d]" identifier = (subscript_expression "this[0x54d]" identifier [ number_literal ])) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) comment (expression_statement "local_34 = string_to_object_format(*(char **)(this + 0x3b8));" (assignment_expression "local_34 = string_to_object_format(*(char **)(this + 0x3b8))" identifier = (call_expression "string_to_object_format(*(char **)(this + 0x3b8))" identifier (argument_list "(*(char **)(this + 0x3b8))" ( (pointer_expression "*(char **)(this + 0x3b8)" * (cast_expression "(char **)(this + 0x3b8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x3b8)" ( (binary_expression "this + 0x3b8" identifier + number_literal) )))) )))) ;) (expression_statement "local_30 = this[0x4a3d];" (assignment_expression "local_30 = this[0x4a3d]" identifier = (subscript_expression "this[0x4a3d]" identifier [ number_literal ])) ;) (expression_statement "local_2c = *(undefined4 *)(this + 0x5a24);" (assignment_expression "local_2c = *(undefined4 *)(this + 0x5a24)" identifier = (pointer_expression "*(undefined4 *)(this + 0x5a24)" * (cast_expression "(undefined4 *)(this + 0x5a24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5a24)" ( (binary_expression "this + 0x5a24" identifier + number_literal) ))))) ;) comment (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (labeled_statement "Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);" statement_identifier : (ERROR ":" :) (expression_statement "add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);" (call_expression "add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70)" identifier (argument_list "((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70)" ( (cast_expression "(Input_arguments *)(param_3 + 0x5b84)" ( (type_descriptor "Input_arguments *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x5b84)" ( (binary_expression "param_3 + 0x5b84" identifier + number_literal) ))) , (cast_expression "(Input_file_argument *)local_70" ( (type_descriptor "Input_file_argument *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (if_statement "if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" if (parenthesized_expression "(local_54[0] != auStack_4c)" ( (binary_expression "local_54[0] != auStack_4c" (subscript_expression "local_54[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" if (parenthesized_expression "(local_70[0] != auStack_68)" ( (binary_expression "local_70[0] != auStack_68" (subscript_expression "local_70[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\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  undefined *puVar1;\n  int iVar2;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar3;\n  char *pcVar4;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar5;\n  Input_file_type IVar6;\n  Input_file_argument file;\n  \n  paVar5 = &file.name_.field_2;\n  file.name_._M_dataplus._M_p = (pointer)paVar5;\n  if (*arg == ':') {\n    pcVar4 = arg + 1;\n    IVar6 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    arg = (char *)0xffffffff;\n    if (pcVar4 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    IVar6 = INPUT_FILE_TYPE_LIBRARY;\n    pcVar4 = arg;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar4,param_1,arg);\n  arg = pcVar4 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)(&file,pcVar4,arg,0);\n  paVar3 = &file.extra_search_path_.field_2;\n  file.type_ = IVar6;\n  file.extra_search_path_._M_dataplus._M_p = (pointer)paVar3;\n                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */\n  (*(code *)puVar1)(&file.extra_search_path_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);\n  file.options_.as_needed_ = (this->as_needed_).value;\n  file.options_.Bdynamic_ = (this->Bdynamic_).value;\n  file.just_symbols_ = false;\n                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */\n  file.options_.format_enum_ = string_to_object_format((this->format_).value);\n  file.options_.whole_archive_ = (this->whole_archive_).value;\n  file.options_.incremental_disposition_ = this->incremental_disposition_;\n                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */\n  file.arg_serial_ = 0;\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 != paVar3) {\n    (*(code *)PTR_operator_delete_0043228c)();\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 != paVar5) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  return;\n}\n\n" comment comment comment comment comment 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  undefined *puVar1;\n  int iVar2;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar3;\n  char *pcVar4;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar5;\n  Input_file_type IVar6;\n  Input_file_argument file;\n  \n  paVar5 = &file.name_.field_2;\n  file.name_._M_dataplus._M_p = (pointer)paVar5;\n  if (*arg == ':') {\n    pcVar4 = arg + 1;\n    IVar6 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    arg = (char *)0xffffffff;\n    if (pcVar4 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    IVar6 = INPUT_FILE_TYPE_LIBRARY;\n    pcVar4 = arg;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar4,param_1,arg);\n  arg = pcVar4 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)(&file,pcVar4,arg,0);\n  paVar3 = &file.extra_search_path_.field_2;\n  file.type_ = IVar6;\n  file.extra_search_path_._M_dataplus._M_p = (pointer)paVar3;\n                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */\n  (*(code *)puVar1)(&file.extra_search_path_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);\n  file.options_.as_needed_ = (this->as_needed_).value;\n  file.options_.Bdynamic_ = (this->Bdynamic_).value;\n  file.just_symbols_ = false;\n                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */\n  file.options_.format_enum_ = string_to_object_format((this->format_).value);\n  file.options_.whole_archive_ = (this->whole_archive_).value;\n  file.options_.incremental_disposition_ = this->incremental_disposition_;\n                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */\n  file.arg_serial_ = 0;\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 != paVar3) {\n    (*(code *)PTR_operator_delete_0043228c)();\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 != paVar5) {\n    (*(code *)PTR_operator_delete_0043228c)();\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  undefined *puVar1;\n  int iVar2;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar3;\n  char *pcVar4;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar5;\n  Input_file_type IVar6;\n  Input_file_argument file;\n  \n  paVar5 = &file.name_.field_2;\n  file.name_._M_dataplus._M_p = (pointer)paVar5;\n  if (*arg == ':') {\n    pcVar4 = arg + 1;\n    IVar6 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    arg = (char *)0xffffffff;\n    if (pcVar4 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    IVar6 = INPUT_FILE_TYPE_LIBRARY;\n    pcVar4 = arg;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar4,param_1,arg);\n  arg = pcVar4 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)(&file,pcVar4,arg,0);\n  paVar3 = &file.extra_search_path_.field_2;\n  file.type_ = IVar6;\n  file.extra_search_path_._M_dataplus._M_p = (pointer)paVar3;\n                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */\n  (*(code *)puVar1)(&file.extra_search_path_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);\n  file.options_.as_needed_ = (this->as_needed_).value;\n  file.options_.Bdynamic_ = (this->Bdynamic_).value;\n  file.just_symbols_ = false;\n                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */\n  file.options_.format_enum_ = string_to_object_format((this->format_).value);\n  file.options_.whole_archive_ = (this->whole_archive_).value;\n  file.options_.incremental_disposition_ = this->incremental_disposition_;\n                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */\n  file.arg_serial_ = 0;\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 != paVar3) {\n    (*(code *)PTR_operator_delete_0043228c)();\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 != paVar5) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type 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  *paVar3;" (binary_expression "allocator<char>_>_9\n  *paVar3" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar3" identifier * identifier)) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * 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  *paVar5;" (binary_expression "allocator<char>_>_9\n  *paVar5" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar5" identifier * identifier)) ;) (declaration "Input_file_type IVar6;" type_identifier identifier ;) (declaration "Input_file_argument file;" type_identifier identifier ;) (expression_statement "paVar5 = &file.name_.field_2;" (assignment_expression "paVar5 = &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)paVar5;" (assignment_expression "file.name_._M_dataplus._M_p = (pointer)paVar5" (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)paVar5" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (*arg == ':') {\n    pcVar4 = arg + 1;\n    IVar6 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    arg = (char *)0xffffffff;\n    if (pcVar4 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    IVar6 = INPUT_FILE_TYPE_LIBRARY;\n    pcVar4 = arg;\n  }" if (parenthesized_expression "(*arg == ':')" ( (binary_expression "*arg == ':'" (pointer_expression "*arg" * identifier) == (char_literal "':'" ' character ')) )) (compound_statement "{\n    pcVar4 = arg + 1;\n    IVar6 = INPUT_FILE_TYPE_SEARCHED_FILE;\n    arg = (char *)0xffffffff;\n    if (pcVar4 == (char *)0x0) goto LAB_0016f81c;\n  }" { (expression_statement "pcVar4 = arg + 1;" (assignment_expression "pcVar4 = arg + 1" identifier = (binary_expression "arg + 1" identifier + number_literal)) ;) (expression_statement "IVar6 = INPUT_FILE_TYPE_SEARCHED_FILE;" (assignment_expression "IVar6 = INPUT_FILE_TYPE_SEARCHED_FILE" identifier = identifier) ;) (expression_statement "arg = (char *)0xffffffff;" (assignment_expression "arg = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar4 == (char *)0x0) goto LAB_0016f81c;" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0016f81c;" goto statement_identifier ;)) }) (else_clause "else {\n    IVar6 = INPUT_FILE_TYPE_LIBRARY;\n    pcVar4 = arg;\n  }" else (compound_statement "{\n    IVar6 = INPUT_FILE_TYPE_LIBRARY;\n    pcVar4 = arg;\n  }" { (expression_statement "IVar6 = INPUT_FILE_TYPE_LIBRARY;" (assignment_expression "IVar6 = INPUT_FILE_TYPE_LIBRARY" identifier = identifier) ;) (expression_statement "pcVar4 = arg;" (assignment_expression "pcVar4 = arg" identifier = identifier) ;) }))) (expression_statement "iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar4,param_1,arg);" (assignment_expression "iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar4,param_1,arg)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(pcVar4,param_1,arg)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar4,param_1,arg)" ( identifier , identifier , identifier )))) ;) (expression_statement "arg = pcVar4 + iVar2;" (assignment_expression "arg = pcVar4 + iVar2" identifier = (binary_expression "pcVar4 + iVar2" identifier + identifier)) ;) (labeled_statement "LAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;" statement_identifier : (expression_statement "puVar1 = PTR__M_construct<char_const*>_00432488;" (assignment_expression "puVar1 = PTR__M_construct<char_const*>_00432488" identifier = (binary_expression "PTR__M_construct<char_const*>_00432488" (binary_expression "PTR__M_construct<char_const" identifier < identifier) (ERROR "*" *) > identifier)) ;)) (expression_statement "(*(code *)PTR__M_construct<char_const*>_00432488)(&file,pcVar4,arg,0);" (call_expression "(*(code *)PTR__M_construct<char_const*>_00432488)(&file,pcVar4,arg,0)" (parenthesized_expression "(*(code *)PTR__M_construct<char_const*>_00432488)" ( (binary_expression "*(code *)PTR__M_construct<char_const*>_00432488" (binary_expression "*(code *)PTR__M_construct<char_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "(&file,pcVar4,arg,0)" ( (pointer_expression "&file" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "paVar3 = &file.extra_search_path_.field_2;" (assignment_expression "paVar3 = &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.type_ = IVar6;" (assignment_expression "file.type_ = IVar6" (field_expression "file.type_" identifier . field_identifier) = identifier) ;) (expression_statement "file.extra_search_path_._M_dataplus._M_p = (pointer)paVar3;" (assignment_expression "file.extra_search_path_._M_dataplus._M_p = (pointer)paVar3" (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)paVar3" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) comment (expression_statement "(*(code *)puVar1)(&file.extra_search_path_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);" (call_expression "(*(code *)puVar1)(&file.extra_search_path_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&file.extra_search_path_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0)" ( (pointer_expression "&file.extra_search_path_" & (field_expression "file.extra_search_path_" identifier . field_identifier)) , (binary_expression "PTR_s__0043226c + 0x1018" identifier + number_literal) , (binary_expression "PTR_s__0043226c + 0x1018" 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.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)) ;) (expression_statement "file.just_symbols_ = false;" (assignment_expression "file.just_symbols_ = false" (field_expression "file.just_symbols_" identifier . field_identifier) = false) ;) 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.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 (expression_statement "file.arg_serial_ = 0;" (assignment_expression "file.arg_serial_ = 0" (field_expression "file.arg_serial_" identifier . field_identifier) = number_literal) ;) (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 != paVar3) {\n    (*(code *)PTR_operator_delete_0043228c)();\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 != paVar3)" ( (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 != paVar3)" ( (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 != paVar3" (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    (*(code *)PTR_operator_delete_0043228c)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (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 != paVar5) {\n    (*(code *)PTR_operator_delete_0043228c)();\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 != paVar5)" ( (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 != paVar5)" ( (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 != paVar5" (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    (*(code *)PTR_operator_delete_0043228c)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __thiscall\ngold::General_options::parse_library\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined1 *local_54 [2];\n  undefined1 auStack_4c [16];\n  undefined1 local_3c;\n  General_options local_38;\n  General_options local_37;\n  undefined4 local_34;\n  General_options local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_70[0] = auStack_68;\n  if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);\n  param_2 = pcVar3 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);\n  local_58 = uVar4;\n  local_54[0] = auStack_4c;\n                    \n  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_38 = this[0x2f5];\n  local_37 = this[0x54d];\n  local_3c = 0;\n                    \n  local_34 = string_to_object_format(*(char **)(this + 0x3b8));\n  local_30 = this[0x4a3d];\n  local_2c = *(undefined4 *)(this + 0x5a24);\n                    \n  local_28 = 0;\n  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);\n  if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  return;\n}\n\n" (function_definition "void __thiscall\ngold::General_options::parse_library\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined1 *local_54 [2];\n  undefined1 auStack_4c [16];\n  undefined1 local_3c;\n  General_options local_38;\n  General_options local_37;\n  undefined4 local_34;\n  General_options local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_70[0] = auStack_68;\n  if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);\n  param_2 = pcVar3 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);\n  local_58 = uVar4;\n  local_54[0] = auStack_4c;\n                    \n  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_38 = this[0x2f5];\n  local_37 = this[0x54d];\n  local_3c = 0;\n                    \n  local_34 = string_to_object_format(*(char **)(this + 0x3b8));\n  local_30 = this[0x4a3d];\n  local_2c = *(undefined4 *)(this + 0x5a24);\n                    \n  local_28 = 0;\n  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);\n  if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\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 *param_2,Command_line *param_3)" identifier (parameter_list "(General_options *this,char *param_1,char *param_2,Command_line *param_3)" ( (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 *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "Command_line *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined1 *local_54 [2];\n  undefined1 auStack_4c [16];\n  undefined1 local_3c;\n  General_options local_38;\n  General_options local_37;\n  undefined4 local_34;\n  General_options local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_70[0] = auStack_68;\n  if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);\n  param_2 = pcVar3 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);\n  local_58 = uVar4;\n  local_54[0] = auStack_4c;\n                    \n  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_38 = this[0x2f5];\n  local_37 = this[0x54d];\n  local_3c = 0;\n                    \n  local_34 = string_to_object_format(*(char **)(this + 0x3b8));\n  local_30 = this[0x4a3d];\n  local_2c = *(undefined4 *)(this + 0x5a24);\n                    \n  local_28 = 0;\n  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);\n  if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined1 *local_70 [2];" type_identifier (pointer_declarator "*local_70 [2]" * (array_declarator "local_70 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_68 [16];" type_identifier (array_declarator "auStack_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined1 *local_54 [2];" type_identifier (pointer_declarator "*local_54 [2]" * (array_declarator "local_54 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_4c [16];" type_identifier (array_declarator "auStack_4c [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_3c;" type_identifier identifier ;) (declaration "General_options local_38;" type_identifier identifier ;) (declaration "General_options local_37;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "General_options local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "local_70[0] = auStack_68;" (assignment_expression "local_70[0] = auStack_68" (subscript_expression "local_70[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" if (parenthesized_expression "(*param_2 == ':')" ( (binary_expression "*param_2 == ':'" (pointer_expression "*param_2" * identifier) == (char_literal "':'" ' character ')) )) (compound_statement "{\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }" { (expression_statement "pcVar3 = param_2 + 1;" (assignment_expression "pcVar3 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" identifier = number_literal) ;) (expression_statement "param_2 = (char *)0xffffffff;" (assignment_expression "param_2 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0016f81c;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0016f81c;" goto statement_identifier ;)) }) (else_clause "else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" else (compound_statement "{\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "pcVar3 = param_2;" (assignment_expression "pcVar3 = param_2" identifier = identifier) ;) }))) (expression_statement "iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);" (assignment_expression "iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2)" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar3,param_1,param_2)" ( identifier , identifier , identifier )))) ;) (expression_statement "param_2 = pcVar3 + iVar2;" (assignment_expression "param_2 = pcVar3 + iVar2" identifier = (binary_expression "pcVar3 + iVar2" identifier + identifier)) ;) (labeled_statement "LAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;" statement_identifier : (expression_statement "puVar1 = PTR__M_construct<char_const*>_00432488;" (assignment_expression "puVar1 = PTR__M_construct<char_const*>_00432488" identifier = (binary_expression "PTR__M_construct<char_const*>_00432488" (binary_expression "PTR__M_construct<char_const" identifier < identifier) (ERROR "*" *) > identifier)) ;)) (expression_statement "(*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);" (call_expression "(*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0)" (parenthesized_expression "(*(code *)PTR__M_construct<char_const*>_00432488)" ( (binary_expression "*(code *)PTR__M_construct<char_const*>_00432488" (binary_expression "*(code *)PTR__M_construct<char_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "((Input_file_argument *)local_70,pcVar3,param_2,0)" ( (cast_expression "(Input_file_argument *)local_70" ( (type_descriptor "Input_file_argument *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "local_58 = uVar4;" (assignment_expression "local_58 = uVar4" identifier = identifier) ;) (expression_statement "local_54[0] = auStack_4c;" (assignment_expression "local_54[0] = auStack_4c" (subscript_expression "local_54[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);" (call_expression "(*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" ( identifier , (binary_expression "PTR_DAT_0043226c + 0x1018" identifier + number_literal) , (binary_expression "PTR_DAT_0043226c + 0x1018" identifier + number_literal) , number_literal ))) ;) (expression_statement "local_38 = this[0x2f5];" (assignment_expression "local_38 = this[0x2f5]" identifier = (subscript_expression "this[0x2f5]" identifier [ number_literal ])) ;) (expression_statement "local_37 = this[0x54d];" (assignment_expression "local_37 = this[0x54d]" identifier = (subscript_expression "this[0x54d]" identifier [ number_literal ])) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_34 = string_to_object_format(*(char **)(this + 0x3b8));" (assignment_expression "local_34 = string_to_object_format(*(char **)(this + 0x3b8))" identifier = (call_expression "string_to_object_format(*(char **)(this + 0x3b8))" identifier (argument_list "(*(char **)(this + 0x3b8))" ( (pointer_expression "*(char **)(this + 0x3b8)" * (cast_expression "(char **)(this + 0x3b8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x3b8)" ( (binary_expression "this + 0x3b8" identifier + number_literal) )))) )))) ;) (expression_statement "local_30 = this[0x4a3d];" (assignment_expression "local_30 = this[0x4a3d]" identifier = (subscript_expression "this[0x4a3d]" identifier [ number_literal ])) ;) (expression_statement "local_2c = *(undefined4 *)(this + 0x5a24);" (assignment_expression "local_2c = *(undefined4 *)(this + 0x5a24)" identifier = (pointer_expression "*(undefined4 *)(this + 0x5a24)" * (cast_expression "(undefined4 *)(this + 0x5a24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5a24)" ( (binary_expression "this + 0x5a24" identifier + number_literal) ))))) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (labeled_statement "Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);" statement_identifier : (ERROR ":" :) (expression_statement "add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);" (call_expression "add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70)" identifier (argument_list "((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70)" ( (cast_expression "(Input_arguments *)(param_3 + 0x5b84)" ( (type_descriptor "Input_arguments *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x5b84)" ( (binary_expression "param_3 + 0x5b84" identifier + number_literal) ))) , (cast_expression "(Input_file_argument *)local_70" ( (type_descriptor "Input_file_argument *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (if_statement "if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" if (parenthesized_expression "(local_54[0] != auStack_4c)" ( (binary_expression "local_54[0] != auStack_4c" (subscript_expression "local_54[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" if (parenthesized_expression "(local_70[0] != auStack_68)" ( (binary_expression "local_70[0] != auStack_68" (subscript_expression "local_70[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" { (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" ( (pointer_expression "*(code *)PTR_operator_delete_0043228c" * (cast_expression "(code *)PTR_operator_delete_0043228c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT < IDENT) (ERROR *) > IDENT)) ;)) (expression_statement (call_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) < IDENT) (ERROR *) > IDENT) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_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) ;) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void __thiscall\ngold::General_options::parse_library\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined1 *local_54 [2];\n  undefined1 auStack_4c [16];\n  undefined1 local_3c;\n  General_options local_38;\n  General_options local_37;\n  undefined4 local_34;\n  General_options local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_70[0] = auStack_68;\n  if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);\n  param_2 = pcVar3 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);\n  local_58 = uVar4;\n  local_54[0] = auStack_4c;\n                    \n  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_38 = this[0x2f5];\n  local_37 = this[0x54d];\n  local_3c = 0;\n                    \n  local_34 = string_to_object_format(*(char **)(this + 0x3b8));\n  local_30 = this[0x4a3d];\n  local_2c = *(undefined4 *)(this + 0x5a24);\n                    \n  local_28 = 0;\n  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);\n  if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  return;\n}" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::General_options::" (identifier "gold") (: ":") (: ":") (identifier "General_options") (: ":") (: ":")) (function_declarator "parse_library\n          (General_options *this,char *param_1,char *param_2,Command_line *param_3)" (identifier "parse_library") (parameter_list "(General_options *this,char *param_1,char *param_2,Command_line *param_3)" (( "(") (parameter_declaration "General_options *this" (type_identifier "General_options") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "Command_line *param_3" (type_identifier "Command_line") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char *pcVar3;\n  undefined4 uVar4;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined1 *local_54 [2];\n  undefined1 auStack_4c [16];\n  undefined1 local_3c;\n  General_options local_38;\n  General_options local_37;\n  undefined4 local_34;\n  General_options local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  \n  local_70[0] = auStack_68;\n  if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }\n  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);\n  param_2 = pcVar3 + iVar2;\nLAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);\n  local_58 = uVar4;\n  local_54[0] = auStack_4c;\n                    \n  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_38 = this[0x2f5];\n  local_37 = this[0x54d];\n  local_3c = 0;\n                    \n  local_34 = string_to_object_format(*(char **)(this + 0x3b8));\n  local_30 = this[0x4a3d];\n  local_2c = *(undefined4 *)(this + 0x5a24);\n                    \n  local_28 = 0;\n  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);\n  if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined1 *local_70 [2];" (type_identifier "undefined1") (pointer_declarator "*local_70 [2]" (* "*") (array_declarator "local_70 [2]" (identifier "local_70") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 auStack_68 [16];" (type_identifier "undefined1") (array_declarator "auStack_68 [16]" (identifier "auStack_68") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_58;" (type_identifier "undefined4") (identifier "local_58") (; ";")) (declaration "undefined1 *local_54 [2];" (type_identifier "undefined1") (pointer_declarator "*local_54 [2]" (* "*") (array_declarator "local_54 [2]" (identifier "local_54") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 auStack_4c [16];" (type_identifier "undefined1") (array_declarator "auStack_4c [16]" (identifier "auStack_4c") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 local_3c;" (type_identifier "undefined1") (identifier "local_3c") (; ";")) (declaration "General_options local_38;" (type_identifier "General_options") (identifier "local_38") (; ";")) (declaration "General_options local_37;" (type_identifier "General_options") (identifier "local_37") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "General_options local_30;" (type_identifier "General_options") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (expression_statement "local_70[0] = auStack_68;" (assignment_expression "local_70[0] = auStack_68" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "auStack_68")) (; ";")) (if_statement "if (*param_2 == ':') {\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }\n  else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" (if "if") (parenthesized_expression "(*param_2 == ':')" (( "(") (binary_expression "*param_2 == ':'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (char_literal "':'" (' "'") (character ":") (' "'"))) () ")")) (compound_statement "{\n    pcVar3 = param_2 + 1;\n    uVar4 = 2;\n    param_2 = (char *)0xffffffff;\n    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;\n  }" ({ "{") (expression_statement "pcVar3 = param_2 + 1;" (assignment_expression "pcVar3 = param_2 + 1" (identifier "pcVar3") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" (identifier "uVar4") (= "=") (number_literal "2")) (; ";")) (expression_statement "param_2 = (char *)0xffffffff;" (assignment_expression "param_2 = (char *)0xffffffff" (identifier "param_2") (= "=") (cast_expression "(char *)0xffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0016f81c;" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0016f81c;" (goto "goto") (statement_identifier "LAB_0016f81c") (; ";"))) (} "}")) (else_clause "else {\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" (else "else") (compound_statement "{\n    uVar4 = 1;\n    pcVar3 = param_2;\n  }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar3 = param_2;" (assignment_expression "pcVar3 = param_2" (identifier "pcVar3") (= "=") (identifier "param_2")) (; ";")) (} "}")))) (expression_statement "iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);" (assignment_expression "iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2)" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "(pcVar3,param_1,param_2)" (( "(") (identifier "pcVar3") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "param_2 = pcVar3 + iVar2;" (assignment_expression "param_2 = pcVar3 + iVar2" (identifier "param_2") (= "=") (binary_expression "pcVar3 + iVar2" (identifier "pcVar3") (+ "+") (identifier "iVar2"))) (; ";")) (labeled_statement "LAB_0016f81c:\n  puVar1 = PTR__M_construct<char_const*>_00432488;" (statement_identifier "LAB_0016f81c") (: ":") (expression_statement "puVar1 = PTR__M_construct<char_const*>_00432488;" (assignment_expression "puVar1 = PTR__M_construct<char_const*>_00432488" (identifier "puVar1") (= "=") (binary_expression "PTR__M_construct<char_const*>_00432488" (binary_expression "PTR__M_construct<char_const" (identifier "PTR__M_construct") (< "<") (identifier "char_const")) (ERROR "*" (* "*")) (> ">") (identifier "_00432488"))) (; ";"))) (expression_statement "(*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0);" (call_expression "(*(code *)PTR__M_construct<char_const*>_00432488)\n            ((Input_file_argument *)local_70,pcVar3,param_2,0)" (parenthesized_expression "(*(code *)PTR__M_construct<char_const*>_00432488)" (( "(") (binary_expression "*(code *)PTR__M_construct<char_const*>_00432488" (binary_expression "*(code *)PTR__M_construct<char_const" (pointer_expression "*(code *)PTR__M_construct" (* "*") (cast_expression "(code *)PTR__M_construct" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_construct"))) (< "<") (identifier "char_const")) (ERROR "*" (* "*")) (> ">") (identifier "_00432488")) () ")")) (argument_list "((Input_file_argument *)local_70,pcVar3,param_2,0)" (( "(") (cast_expression "(Input_file_argument *)local_70" (( "(") (type_descriptor "Input_file_argument *" (type_identifier "Input_file_argument") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_70")) (, ",") (identifier "pcVar3") (, ",") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_58 = uVar4;" (assignment_expression "local_58 = uVar4" (identifier "local_58") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "local_54[0] = auStack_4c;" (assignment_expression "local_54[0] = auStack_4c" (subscript_expression "local_54[0]" (identifier "local_54") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "auStack_4c")) (; ";")) (expression_statement "(*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);" (call_expression "(*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" (( "(") (identifier "local_54") (, ",") (binary_expression "PTR_DAT_0043226c + 0x1018" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x1018")) (, ",") (binary_expression "PTR_DAT_0043226c + 0x1018" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x1018")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_38 = this[0x2f5];" (assignment_expression "local_38 = this[0x2f5]" (identifier "local_38") (= "=") (subscript_expression "this[0x2f5]" (identifier "this") ([ "[") (number_literal "0x2f5") (] "]"))) (; ";")) (expression_statement "local_37 = this[0x54d];" (assignment_expression "local_37 = this[0x54d]" (identifier "local_37") (= "=") (subscript_expression "this[0x54d]" (identifier "this") ([ "[") (number_literal "0x54d") (] "]"))) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = string_to_object_format(*(char **)(this + 0x3b8));" (assignment_expression "local_34 = string_to_object_format(*(char **)(this + 0x3b8))" (identifier "local_34") (= "=") (call_expression "string_to_object_format(*(char **)(this + 0x3b8))" (identifier "string_to_object_format") (argument_list "(*(char **)(this + 0x3b8))" (( "(") (pointer_expression "*(char **)(this + 0x3b8)" (* "*") (cast_expression "(char **)(this + 0x3b8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x3b8)" (( "(") (binary_expression "this + 0x3b8" (identifier "this") (+ "+") (number_literal "0x3b8")) () ")")))) () ")")))) (; ";")) (expression_statement "local_30 = this[0x4a3d];" (assignment_expression "local_30 = this[0x4a3d]" (identifier "local_30") (= "=") (subscript_expression "this[0x4a3d]" (identifier "this") ([ "[") (number_literal "0x4a3d") (] "]"))) (; ";")) (expression_statement "local_2c = *(undefined4 *)(this + 0x5a24);" (assignment_expression "local_2c = *(undefined4 *)(this + 0x5a24)" (identifier "local_2c") (= "=") (pointer_expression "*(undefined4 *)(this + 0x5a24)" (* "*") (cast_expression "(undefined4 *)(this + 0x5a24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x5a24)" (( "(") (binary_expression "this + 0x5a24" (identifier "this") (+ "+") (number_literal "0x5a24")) () ")"))))) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (labeled_statement "Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);" (statement_identifier "Input_arguments") (: ":") (ERROR ":" (: ":")) (expression_statement "add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);" (call_expression "add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70)" (identifier "add_file") (argument_list "((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70)" (( "(") (cast_expression "(Input_arguments *)(param_3 + 0x5b84)" (( "(") (type_descriptor "Input_arguments *" (type_identifier "Input_arguments") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x5b84)" (( "(") (binary_expression "param_3 + 0x5b84" (identifier "param_3") (+ "+") (number_literal "0x5b84")) () ")"))) (, ",") (cast_expression "(Input_file_argument *)local_70" (( "(") (type_descriptor "Input_file_argument *" (type_identifier "Input_file_argument") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_70")) () ")"))) (; ";"))) (if_statement "if (local_54[0] != auStack_4c) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" (if "if") (parenthesized_expression "(local_54[0] != auStack_4c)" (( "(") (binary_expression "local_54[0] != auStack_4c" (subscript_expression "local_54[0]" (identifier "local_54") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "auStack_4c")) () ")")) (compound_statement "{\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" ({ "{") (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_0043228c" (* "*") (cast_expression "(code *)PTR_operator_delete_0043228c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_0043228c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_70[0] != auStack_68) {\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" (if "if") (parenthesized_expression "(local_70[0] != auStack_68)" (( "(") (binary_expression "local_70[0] != auStack_68" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "auStack_68")) () ")")) (compound_statement "{\n    (*(code *)PTR_operator_delete_0043228c)();\n  }" ({ "{") (expression_statement "(*(code *)PTR_operator_delete_0043228c)();" (call_expression "(*(code *)PTR_operator_delete_0043228c)()" (parenthesized_expression "(*(code *)PTR_operator_delete_0043228c)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_0043228c" (* "*") (cast_expression "(code *)PTR_operator_delete_0043228c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_0043228c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) (ms_call_modifier) (ERROR (identifier) (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator 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 (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) (ERROR) right: (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier)) (ERROR) right: (identifier))) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (return_statement))))

/* gold::General_options::MASKED(char const*, char const*, gold::Command_line*) */

void __thiscall
gold::General_options::MASKED
          (General_options *this,char *param_1,char *param_2,Command_line *param_3)

{
  undefined *puVar1;
  int iVar2;
  char *pcVar3;
  undefined4 uVar4;
  undefined1 *local_70 [2];
  undefined1 auStack_68 [16];
  undefined4 local_58;
  undefined1 *local_54 [2];
  undefined1 auStack_4c [16];
  undefined1 local_3c;
  General_options local_38;
  General_options local_37;
  undefined4 local_34;
  General_options local_30;
  undefined4 local_2c;
  undefined4 local_28;
  
  local_70[0] = auStack_68;
  if (*param_2 == ':') {
    pcVar3 = param_2 + 1;
    uVar4 = 2;
    param_2 = (char *)0xffffffff;
    if (pcVar3 == (char *)0x0) goto LAB_0016f81c;
  }
  else {
    uVar4 = 1;
    pcVar3 = param_2;
  }
  iVar2 = (*(code *)PTR_strlen_0043677c)(pcVar3,param_1,param_2);
  param_2 = pcVar3 + iVar2;
LAB_0016f81c:
  puVar1 = PTR__M_construct<char_const*>_00432488;
  (*(code *)PTR__M_construct<char_const*>_00432488)
            ((Input_file_argument *)local_70,pcVar3,param_2,0);
  local_58 = uVar4;
  local_54[0] = auStack_4c;
                    /* try { // try from 0016f864 to 0016f86b has its CatchHandler @ 0016f998 */
  (*(code *)puVar1)(local_54,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);
  local_38 = this[0x2f5];
  local_37 = this[0x54d];
  local_3c = 0;
                    /* try { // try from 0016f888 to 0016f88f has its CatchHandler @ 0016f954 */
  local_34 = string_to_object_format(*(char **)(this + 0x3b8));
  local_30 = this[0x4a3d];
  local_2c = *(undefined4 *)(this + 0x5a24);
                    /* try { // try from 0016f8b4 to 0016f8bb has its CatchHandler @ 0016f930 */
  local_28 = 0;
  Input_arguments::add_file((Input_arguments *)(param_3 + 0x5b84),(Input_file_argument *)local_70);
  if (local_54[0] != auStack_4c) {
    (*(code *)PTR_operator_delete_0043228c)();
  }
  if (local_70[0] != auStack_68) {
    (*(code *)PTR_operator_delete_0043228c)();
  }
  return;
}

