
/* DWARF original prototype: void visit_compilation_unit(Dwo_name_info_reader * this, off_t param_1,
   off_t param_2, Dwarf_die * die) */

void __thiscall
gold::Dwo_name_info_reader::visit_compilation_unit
          (Dwo_name_info_reader *this,off_t param_1,off_t param_2,Dwarf_die *die)

{
  vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_> *this_00;
  char *__s;
  uint64_t uVar1;
  size_t sVar2;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;
  Dwo_file_entry local_58;
  
  __s = Dwarf_die::string_attribute(die,0x2130);
  if (__s != (char *)0x0) {
    uVar1 = Dwarf_die::uint_attribute(die,0x2131);
    this_00 = this->files_;
    local_78._M_dataplus._M_p = (pointer)&local_78.field_2;
    sVar2 = strlen(__s);
    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
    _M_construct<char_const*>(&local_78,__s,__s + sVar2);
    local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2;
    local_58.dwo_id = uVar1;
                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */
    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
    _M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,
                        local_78._M_dataplus._M_p + local_78._M_string_length);
                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */
    std::vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_>::
    emplace_back<gold::Dwo_file_entry>(this_00,&local_58);
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2) {
      operator_delete(local_58.dwo_name._M_dataplus._M_p);
    }
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)local_78._M_dataplus._M_p != &local_78.field_2) {
      operator_delete(local_78._M_dataplus._M_p);
    }
  }
  return;
}



void FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  char *__s;
  undefined8 uVar2;
  size_t sVar3;
  undefined1 *local_78;
  long local_70;
  undefined1 local_68 [16];
  undefined8 local_58;
  undefined1 *local_50 [2];
  undefined1 local_40 [32];
  
  __s = (char *)FUN_00161640(param_4,0x2130);
  if (__s != (char *)0x0) {
    uVar2 = FUN_001616c0(param_4,0x2131);
    uVar1 = *(undefined8 *)(param_1 + 0x940);
    local_78 = local_68;
    sVar3 = strlen(__s);
    FUN_0015cbe0(&local_78,__s,__s + sVar3);
    local_50[0] = local_40;
    local_58 = uVar2;
                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */
    FUN_0015d030(local_50,local_78,local_78 + local_70);
                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */
    FUN_0015cb70(uVar1,&local_58);
    if (local_50[0] != local_40) {
      FUN_00276d20();
    }
    if (local_78 != local_68) {
      FUN_00276d20();
    }
  }
  return;
}


PUSH R13
MOV ESI,0x2130
PUSH R12
MOV R12,RDI
MOV RDI,RCX
PUSH RBP
MOV RBP,RCX
PUSH RBX
SUB RSP,0x58
CALL 0x00161640
TEST RAX,RAX
JZ 0x0014a6cb
MOV ESI,0x2131
MOV RDI,RBP
MOV RBX,RAX
MOV RBP,RSP
CALL 0x001616c0
MOV RDI,RBX
MOV R12,qword ptr [R12 + 0x940]
MOV R13,RAX
LEA RAX,[RBP + 0x10]
MOV qword ptr [RSP],RAX
CALL 0x0013e490
MOV RSI,RBX
MOV RDI,RBP
LEA RDX,[RBX + RAX*0x1]
LEA RBX,[RSP + 0x20]
CALL 0x0015cbe0
MOV RSI,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x8]
LEA RAX,[RBX + 0x18]
LEA RDI,[RBX + 0x8]
MOV qword ptr [RSP + 0x20],R13
ADD RDX,RSI
MOV qword ptr [RSP + 0x28],RAX
CALL 0x0015d030
MOV RSI,RBX
MOV RDI,R12
CALL 0x0015cb70
MOV RDI,qword ptr [RSP + 0x28]
ADD RBX,0x18
CMP RDI,RBX
JZ 0x0014a6b9
CALL 0x00276d20
MOV RDI,qword ptr [RSP]
ADD RBP,0x10
CMP RDI,RBP
JZ 0x0014a6cb
CALL 0x00276d20
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
RET
(translation_unit "void FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 uVar1;\n  char *__s;\n  undefined8 uVar2;\n  size_t sVar3;\n  undefined1 *local_78;\n  long local_70;\n  undefined1 local_68 [16];\n  undefined8 local_58;\n  undefined1 *local_50 [2];\n  undefined1 local_40 [32];\n  \n  __s = (char *)FUN_00161640(param_4,0x2130);\n  if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 uVar1;\n  char *__s;\n  undefined8 uVar2;\n  size_t sVar3;\n  undefined1 *local_78;\n  long local_70;\n  undefined1 local_68 [16];\n  undefined8 local_58;\n  undefined1 *local_50 [2];\n  undefined1 local_40 [32];\n  \n  __s = (char *)FUN_00161640(param_4,0x2130);\n  if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  char *__s;\n  undefined8 uVar2;\n  size_t sVar3;\n  undefined1 *local_78;\n  long local_70;\n  undefined1 local_68 [16];\n  undefined8 local_58;\n  undefined1 *local_50 [2];\n  undefined1 local_40 [32];\n  \n  __s = (char *)FUN_00161640(param_4,0x2130);\n  if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 local_58;" type_identifier identifier ;) (declaration "undefined1 *local_50 [2];" type_identifier (pointer_declarator "*local_50 [2]" * (array_declarator "local_50 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_40 [32];" type_identifier (array_declarator "local_40 [32]" identifier [ number_literal ]) ;) (expression_statement "__s = (char *)FUN_00161640(param_4,0x2130);" (assignment_expression "__s = (char *)FUN_00161640(param_4,0x2130)" identifier = (cast_expression "(char *)FUN_00161640(param_4,0x2130)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00161640(param_4,0x2130)" identifier (argument_list "(param_4,0x2130)" ( identifier , number_literal ))))) ;) (if_statement "if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }" { (expression_statement "uVar2 = FUN_001616c0(param_4,0x2131);" (assignment_expression "uVar2 = FUN_001616c0(param_4,0x2131)" identifier = (call_expression "FUN_001616c0(param_4,0x2131)" identifier (argument_list "(param_4,0x2131)" ( identifier , number_literal )))) ;) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x940);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x940)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x940)" * (cast_expression "(undefined8 *)(param_1 + 0x940)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) ))))) ;) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" identifier = identifier) ;) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "FUN_0015cbe0(&local_78,__s,__s + sVar3);" (call_expression "FUN_0015cbe0(&local_78,__s,__s + sVar3)" identifier (argument_list "(&local_78,__s,__s + sVar3)" ( (pointer_expression "&local_78" & identifier) , identifier , (binary_expression "__s + sVar3" identifier + identifier) ))) ;) (expression_statement "local_50[0] = local_40;" (assignment_expression "local_50[0] = local_40" (subscript_expression "local_50[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_58 = uVar2;" (assignment_expression "local_58 = uVar2" identifier = identifier) ;) comment (expression_statement "FUN_0015d030(local_50,local_78,local_78 + local_70);" (call_expression "FUN_0015d030(local_50,local_78,local_78 + local_70)" identifier (argument_list "(local_50,local_78,local_78 + local_70)" ( identifier , identifier , (binary_expression "local_78 + local_70" identifier + identifier) ))) ;) comment (expression_statement "FUN_0015cb70(uVar1,&local_58);" (call_expression "FUN_0015cb70(uVar1,&local_58)" identifier (argument_list "(uVar1,&local_58)" ( identifier , (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }" if (parenthesized_expression "(local_50[0] != local_40)" ( (binary_expression "local_50[0] != local_40" (subscript_expression "local_50[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      FUN_00276d20();\n    }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78 != local_68) {\n      FUN_00276d20();\n    }" if (parenthesized_expression "(local_78 != local_68)" ( (binary_expression "local_78 != local_68" identifier != identifier) )) (compound_statement "{\n      FUN_00276d20();\n    }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void visit_compilation_unit(Dwo_name_info_reader * this, off_t param_1,\n   off_t param_2, Dwarf_die * die) */\n\nvoid __thiscall\ngold::Dwo_name_info_reader::visit_compilation_unit\n          (Dwo_name_info_reader *this,off_t param_1,off_t param_2,Dwarf_die *die)\n\n{\n  vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_> *this_00;\n  char *__s;\n  uint64_t uVar1;\n  size_t sVar2;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  Dwo_file_entry local_58;\n  \n  __s = Dwarf_die::string_attribute(die,0x2130);\n  if (__s != (char *)0x0) {\n    uVar1 = Dwarf_die::uint_attribute(die,0x2131);\n    this_00 = this->files_;\n    local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n    sVar2 = strlen(__s);\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&local_78,__s,__s + sVar2);\n    local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2;\n    local_58.dwo_id = uVar1;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    std::vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_>::\n    emplace_back<gold::Dwo_file_entry>(this_00,&local_58);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2) {\n      operator_delete(local_58.dwo_name._M_dataplus._M_p);\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_78._M_dataplus._M_p != &local_78.field_2) {\n      operator_delete(local_78._M_dataplus._M_p);\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Dwo_name_info_reader::visit_compilation_unit\n          (Dwo_name_info_reader *this,off_t param_1,off_t param_2,Dwarf_die *die)\n\n{\n  vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_> *this_00;\n  char *__s;\n  uint64_t uVar1;\n  size_t sVar2;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  Dwo_file_entry local_58;\n  \n  __s = Dwarf_die::string_attribute(die,0x2130);\n  if (__s != (char *)0x0) {\n    uVar1 = Dwarf_die::uint_attribute(die,0x2131);\n    this_00 = this->files_;\n    local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n    sVar2 = strlen(__s);\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&local_78,__s,__s + sVar2);\n    local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2;\n    local_58.dwo_id = uVar1;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    std::vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_>::\n    emplace_back<gold::Dwo_file_entry>(this_00,&local_58);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2) {\n      operator_delete(local_58.dwo_name._M_dataplus._M_p);\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_78._M_dataplus._M_p != &local_78.field_2) {\n      operator_delete(local_78._M_dataplus._M_p);\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwo_name_info_reader::" identifier : : identifier : :) (function_declarator "visit_compilation_unit\n          (Dwo_name_info_reader *this,off_t param_1,off_t param_2,Dwarf_die *die)" identifier (parameter_list "(Dwo_name_info_reader *this,off_t param_1,off_t param_2,Dwarf_die *die)" ( (parameter_declaration "Dwo_name_info_reader *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t param_1" type_identifier identifier) , (parameter_declaration "off_t param_2" type_identifier identifier) , (parameter_declaration "Dwarf_die *die" type_identifier (pointer_declarator "*die" * identifier)) ))) (compound_statement "{\n  vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_> *this_00;\n  char *__s;\n  uint64_t uVar1;\n  size_t sVar2;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_78;\n  Dwo_file_entry local_58;\n  \n  __s = Dwarf_die::string_attribute(die,0x2130);\n  if (__s != (char *)0x0) {\n    uVar1 = Dwarf_die::uint_attribute(die,0x2131);\n    this_00 = this->files_;\n    local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n    sVar2 = strlen(__s);\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&local_78,__s,__s + sVar2);\n    local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2;\n    local_58.dwo_id = uVar1;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    std::vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_>::\n    emplace_back<gold::Dwo_file_entry>(this_00,&local_58);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2) {\n      operator_delete(local_58.dwo_name._M_dataplus._M_p);\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_78._M_dataplus._M_p != &local_78.field_2) {\n      operator_delete(local_78._M_dataplus._M_p);\n    }\n  }\n  return;\n}" { (ERROR "vector<gold::Dwo_file_entry,_std::allocator<gold::" (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Dwo_file_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Dwo_file_entry>_> *this_00;" (binary_expression "Dwo_file_entry>_> *this_00" (binary_expression "Dwo_file_entry>_" identifier > identifier) > (pointer_expression "*this_00" * identifier)) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "uint64_t uVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "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>_> local_78;" (binary_expression "allocator<char>_> local_78" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;) (declaration "Dwo_file_entry local_58;" type_identifier identifier ;) (ERROR "__s = Dwarf_die::" (assignment_expression "__s = Dwarf_die" identifier = identifier) : :) (expression_statement "string_attribute(die,0x2130);" (call_expression "string_attribute(die,0x2130)" identifier (argument_list "(die,0x2130)" ( identifier , number_literal ))) ;) (if_statement "if (__s != (char *)0x0) {\n    uVar1 = Dwarf_die::uint_attribute(die,0x2131);\n    this_00 = this->files_;\n    local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n    sVar2 = strlen(__s);\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&local_78,__s,__s + sVar2);\n    local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2;\n    local_58.dwo_id = uVar1;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    std::vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_>::\n    emplace_back<gold::Dwo_file_entry>(this_00,&local_58);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2) {\n      operator_delete(local_58.dwo_name._M_dataplus._M_p);\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_78._M_dataplus._M_p != &local_78.field_2) {\n      operator_delete(local_78._M_dataplus._M_p);\n    }\n  }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar1 = Dwarf_die::uint_attribute(die,0x2131);\n    this_00 = this->files_;\n    local_78._M_dataplus._M_p = (pointer)&local_78.field_2;\n    sVar2 = strlen(__s);\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&local_78,__s,__s + sVar2);\n    local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2;\n    local_58.dwo_id = uVar1;\n                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length);\n                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */\n    std::vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_>::\n    emplace_back<gold::Dwo_file_entry>(this_00,&local_58);\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2) {\n      operator_delete(local_58.dwo_name._M_dataplus._M_p);\n    }\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_78._M_dataplus._M_p != &local_78.field_2) {\n      operator_delete(local_78._M_dataplus._M_p);\n    }\n  }" { (ERROR "uVar1 = Dwarf_die::" (assignment_expression "uVar1 = Dwarf_die" identifier = identifier) : :) (expression_statement "uint_attribute(die,0x2131);" (call_expression "uint_attribute(die,0x2131)" identifier (argument_list "(die,0x2131)" ( identifier , number_literal ))) ;) (expression_statement "this_00 = this->files_;" (assignment_expression "this_00 = this->files_" identifier = (field_expression "this->files_" identifier -> field_identifier)) ;) (expression_statement "local_78._M_dataplus._M_p = (pointer)&local_78.field_2;" (assignment_expression "local_78._M_dataplus._M_p = (pointer)&local_78.field_2" (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_78.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_78.field_2" identifier . field_identifier))) ;) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&local_78,__s,__s + sVar2);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&local_78,__s,__s + sVar2);" (binary_expression "_M_construct<char_const*>(&local_78,__s,__s + sVar2)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_78,__s,__s + sVar2)" ( (comma_expression "&local_78,__s,__s + sVar2" (pointer_expression "&local_78" & identifier) , (comma_expression "__s,__s + sVar2" identifier , (binary_expression "__s + sVar2" identifier + identifier))) ))) ;)) (expression_statement "local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2;" (assignment_expression "local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2" (field_expression "local_58.dwo_name._M_dataplus._M_p" (field_expression "local_58.dwo_name._M_dataplus" (field_expression "local_58.dwo_name" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_58.dwo_name.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_58.dwo_name.field_2" (field_expression "local_58.dwo_name" identifier . field_identifier) . field_identifier))) ;) (expression_statement "local_58.dwo_id = uVar1;" (assignment_expression "local_58.dwo_id = uVar1" (field_expression "local_58.dwo_id" identifier . field_identifier) = identifier) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length);" (binary_expression "_M_construct<char*>(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length)" ( (comma_expression "&local_58.dwo_name,local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length" (pointer_expression "&local_58.dwo_name" & (field_expression "local_58.dwo_name" identifier . field_identifier)) , (comma_expression "local_78._M_dataplus._M_p,\n                        local_78._M_dataplus._M_p + local_78._M_string_length" (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier) , (binary_expression "local_78._M_dataplus._M_p + local_78._M_string_length" (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier) + (field_expression "local_78._M_string_length" identifier . field_identifier)))) ))) ;)) comment (labeled_statement "std::vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_>::\n    emplace_back<gold::Dwo_file_entry>(this_00,&local_58);" statement_identifier (ERROR "::vector<gold::Dwo_file_entry,_std::allocator<gold::Dwo_file_entry>_>::\n    emplace_back<gold:" : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Dwo_file_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Dwo_file_entry>_" identifier > identifier) > : : (binary_expression "emplace_back<gold" identifier < identifier) :) : (expression_statement "Dwo_file_entry>(this_00,&local_58);" (binary_expression "Dwo_file_entry>(this_00,&local_58)" identifier > (parenthesized_expression "(this_00,&local_58)" ( (comma_expression "this_00,&local_58" identifier , (pointer_expression "&local_58" & identifier)) ))) ;)) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2) {\n      operator_delete(local_58.dwo_name._M_dataplus._M_p);\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2)" ( (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         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2" (binary_expression "allocator<char>_>_9\n         *)local_58.dwo_name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)local_58.dwo_name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58.dwo_name._M_dataplus._M_p" (field_expression "local_58.dwo_name._M_dataplus" (field_expression "local_58.dwo_name" identifier . field_identifier) . field_identifier) . field_identifier))) != (pointer_expression "&local_58.dwo_name.field_2" & (field_expression "local_58.dwo_name.field_2" (field_expression "local_58.dwo_name" identifier . field_identifier) . field_identifier))) )) )) (compound_statement "{\n      operator_delete(local_58.dwo_name._M_dataplus._M_p);\n    }" { (expression_statement "operator_delete(local_58.dwo_name._M_dataplus._M_p);" (call_expression "operator_delete(local_58.dwo_name._M_dataplus._M_p)" identifier (argument_list "(local_58.dwo_name._M_dataplus._M_p)" ( (field_expression "local_58.dwo_name._M_dataplus._M_p" (field_expression "local_58.dwo_name._M_dataplus" (field_expression "local_58.dwo_name" identifier . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_78._M_dataplus._M_p != &local_78.field_2) {\n      operator_delete(local_78._M_dataplus._M_p);\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_78._M_dataplus._M_p != &local_78.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_78._M_dataplus._M_p != &local_78.field_2)" ( (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         *)local_78._M_dataplus._M_p != &local_78.field_2" (binary_expression "allocator<char>_>_9\n         *)local_78._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)local_78._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&local_78.field_2" & (field_expression "local_78.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n      operator_delete(local_78._M_dataplus._M_p);\n    }" { (expression_statement "operator_delete(local_78._M_dataplus._M_p);" (call_expression "operator_delete(local_78._M_dataplus._M_p)" identifier (argument_list "(local_78._M_dataplus._M_p)" ( (field_expression "local_78._M_dataplus._M_p" (field_expression "local_78._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 uVar1;\n  char *__s;\n  undefined8 uVar2;\n  size_t sVar3;\n  undefined1 *local_78;\n  long local_70;\n  undefined1 local_68 [16];\n  undefined8 local_58;\n  undefined1 *local_50 [2];\n  undefined1 local_40 [32];\n  \n  __s = (char *)FUN_00161640(param_4,0x2130);\n  if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 uVar1;\n  char *__s;\n  undefined8 uVar2;\n  size_t sVar3;\n  undefined1 *local_78;\n  long local_70;\n  undefined1 local_68 [16];\n  undefined8 local_58;\n  undefined1 *local_50 [2];\n  undefined1 local_40 [32];\n  \n  __s = (char *)FUN_00161640(param_4,0x2130);\n  if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  char *__s;\n  undefined8 uVar2;\n  size_t sVar3;\n  undefined1 *local_78;\n  long local_70;\n  undefined1 local_68 [16];\n  undefined8 local_58;\n  undefined1 *local_50 [2];\n  undefined1 local_40 [32];\n  \n  __s = (char *)FUN_00161640(param_4,0x2130);\n  if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 local_58;" type_identifier identifier ;) (declaration "undefined1 *local_50 [2];" type_identifier (pointer_declarator "*local_50 [2]" * (array_declarator "local_50 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_40 [32];" type_identifier (array_declarator "local_40 [32]" identifier [ number_literal ]) ;) (expression_statement "__s = (char *)FUN_00161640(param_4,0x2130);" (assignment_expression "__s = (char *)FUN_00161640(param_4,0x2130)" identifier = (cast_expression "(char *)FUN_00161640(param_4,0x2130)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00161640(param_4,0x2130)" identifier (argument_list "(param_4,0x2130)" ( identifier , number_literal ))))) ;) (if_statement "if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }" { (expression_statement "uVar2 = FUN_001616c0(param_4,0x2131);" (assignment_expression "uVar2 = FUN_001616c0(param_4,0x2131)" identifier = (call_expression "FUN_001616c0(param_4,0x2131)" identifier (argument_list "(param_4,0x2131)" ( identifier , number_literal )))) ;) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x940);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x940)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x940)" * (cast_expression "(undefined8 *)(param_1 + 0x940)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) ))))) ;) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" identifier = identifier) ;) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "FUN_0015cbe0(&local_78,__s,__s + sVar3);" (call_expression "FUN_0015cbe0(&local_78,__s,__s + sVar3)" identifier (argument_list "(&local_78,__s,__s + sVar3)" ( (pointer_expression "&local_78" & identifier) , identifier , (binary_expression "__s + sVar3" identifier + identifier) ))) ;) (expression_statement "local_50[0] = local_40;" (assignment_expression "local_50[0] = local_40" (subscript_expression "local_50[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_58 = uVar2;" (assignment_expression "local_58 = uVar2" identifier = identifier) ;) (expression_statement "FUN_0015d030(local_50,local_78,local_78 + local_70);" (call_expression "FUN_0015d030(local_50,local_78,local_78 + local_70)" identifier (argument_list "(local_50,local_78,local_78 + local_70)" ( identifier , identifier , (binary_expression "local_78 + local_70" identifier + identifier) ))) ;) (expression_statement "FUN_0015cb70(uVar1,&local_58);" (call_expression "FUN_0015cb70(uVar1,&local_58)" identifier (argument_list "(uVar1,&local_58)" ( identifier , (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }" if (parenthesized_expression "(local_50[0] != local_40)" ( (binary_expression "local_50[0] != local_40" (subscript_expression "local_50[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n      FUN_00276d20();\n    }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78 != local_68) {\n      FUN_00276d20();\n    }" if (parenthesized_expression "(local_78 != local_68)" ( (binary_expression "local_78 != local_68" identifier != identifier) )) (compound_statement "{\n      FUN_00276d20();\n    }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  undefined8 uVar1;\n  char *__s;\n  undefined8 uVar2;\n  size_t sVar3;\n  undefined1 *local_78;\n  long local_70;\n  undefined1 local_68 [16];\n  undefined8 local_58;\n  undefined1 *local_50 [2];\n  undefined1 local_40 [32];\n  \n  __s = (char *)FUN_00161640(param_4,0x2130);\n  if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0014a610(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" (identifier "FUN_0014a610") (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  char *__s;\n  undefined8 uVar2;\n  size_t sVar3;\n  undefined1 *local_78;\n  long local_70;\n  undefined1 local_68 [16];\n  undefined8 local_58;\n  undefined1 *local_50 [2];\n  undefined1 local_40 [32];\n  \n  __s = (char *)FUN_00161640(param_4,0x2130);\n  if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "undefined1 *local_78;" (type_identifier "undefined1") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "long local_70;" (sized_type_specifier "long" (long "long")) (identifier "local_70") (; ";")) (declaration "undefined1 local_68 [16];" (type_identifier "undefined1") (array_declarator "local_68 [16]" (identifier "local_68") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 local_58;" (type_identifier "undefined8") (identifier "local_58") (; ";")) (declaration "undefined1 *local_50 [2];" (type_identifier "undefined1") (pointer_declarator "*local_50 [2]" (* "*") (array_declarator "local_50 [2]" (identifier "local_50") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_40 [32];" (type_identifier "undefined1") (array_declarator "local_40 [32]" (identifier "local_40") ([ "[") (number_literal "32") (] "]")) (; ";")) (expression_statement "__s = (char *)FUN_00161640(param_4,0x2130);" (assignment_expression "__s = (char *)FUN_00161640(param_4,0x2130)" (identifier "__s") (= "=") (cast_expression "(char *)FUN_00161640(param_4,0x2130)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00161640(param_4,0x2130)" (identifier "FUN_00161640") (argument_list "(param_4,0x2130)" (( "(") (identifier "param_4") (, ",") (number_literal "0x2130") () ")"))))) (; ";")) (if_statement "if (__s != (char *)0x0) {\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }" (if "if") (parenthesized_expression "(__s != (char *)0x0)" (( "(") (binary_expression "__s != (char *)0x0" (identifier "__s") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar2 = FUN_001616c0(param_4,0x2131);\n    uVar1 = *(undefined8 *)(param_1 + 0x940);\n    local_78 = local_68;\n    sVar3 = strlen(__s);\n    FUN_0015cbe0(&local_78,__s,__s + sVar3);\n    local_50[0] = local_40;\n    local_58 = uVar2;\n                    \n    FUN_0015d030(local_50,local_78,local_78 + local_70);\n                    \n    FUN_0015cb70(uVar1,&local_58);\n    if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }\n    if (local_78 != local_68) {\n      FUN_00276d20();\n    }\n  }" ({ "{") (expression_statement "uVar2 = FUN_001616c0(param_4,0x2131);" (assignment_expression "uVar2 = FUN_001616c0(param_4,0x2131)" (identifier "uVar2") (= "=") (call_expression "FUN_001616c0(param_4,0x2131)" (identifier "FUN_001616c0") (argument_list "(param_4,0x2131)" (( "(") (identifier "param_4") (, ",") (number_literal "0x2131") () ")")))) (; ";")) (expression_statement "uVar1 = *(undefined8 *)(param_1 + 0x940);" (assignment_expression "uVar1 = *(undefined8 *)(param_1 + 0x940)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x940)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x940)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x940)" (( "(") (binary_expression "param_1 + 0x940" (identifier "param_1") (+ "+") (number_literal "0x940")) () ")"))))) (; ";")) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" (identifier "local_78") (= "=") (identifier "local_68")) (; ";")) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" (identifier "sVar3") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "FUN_0015cbe0(&local_78,__s,__s + sVar3);" (call_expression "FUN_0015cbe0(&local_78,__s,__s + sVar3)" (identifier "FUN_0015cbe0") (argument_list "(&local_78,__s,__s + sVar3)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (identifier "__s") (, ",") (binary_expression "__s + sVar3" (identifier "__s") (+ "+") (identifier "sVar3")) () ")"))) (; ";")) (expression_statement "local_50[0] = local_40;" (assignment_expression "local_50[0] = local_40" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_40")) (; ";")) (expression_statement "local_58 = uVar2;" (assignment_expression "local_58 = uVar2" (identifier "local_58") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "FUN_0015d030(local_50,local_78,local_78 + local_70);" (call_expression "FUN_0015d030(local_50,local_78,local_78 + local_70)" (identifier "FUN_0015d030") (argument_list "(local_50,local_78,local_78 + local_70)" (( "(") (identifier "local_50") (, ",") (identifier "local_78") (, ",") (binary_expression "local_78 + local_70" (identifier "local_78") (+ "+") (identifier "local_70")) () ")"))) (; ";")) (expression_statement "FUN_0015cb70(uVar1,&local_58);" (call_expression "FUN_0015cb70(uVar1,&local_58)" (identifier "FUN_0015cb70") (argument_list "(uVar1,&local_58)" (( "(") (identifier "uVar1") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (if_statement "if (local_50[0] != local_40) {\n      FUN_00276d20();\n    }" (if "if") (parenthesized_expression "(local_50[0] != local_40)" (( "(") (binary_expression "local_50[0] != local_40" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_40")) () ")")) (compound_statement "{\n      FUN_00276d20();\n    }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_78 != local_68) {\n      FUN_00276d20();\n    }" (if "if") (parenthesized_expression "(local_78 != local_68)" (( "(") (binary_expression "local_78 != local_68" (identifier "local_78") (!= "!=") (identifier "local_68")) () ")")) (compound_statement "{\n      FUN_00276d20();\n    }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void visit_compilation_unit(Dwo_name_info_reader * this, off_t param_1,
   off_t param_2, Dwarf_die * die) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 param_1,type_2 param_2,type_3 *die)

{
  vector<gold::var_1,_std::var_3<gold::var_1>var_2> *this_00;
  char *var_7;
  uint64_t uVar1;
  size_t var_12;
  basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_2> var_5;
  var_1 local_58;
  
  var_7 = type_3::var_6(die,0x2130);
  if (var_7 != (char *)0x0) {
    uVar1 = type_3::var_8(die,0x2131);
    this_00 = this->files_;
    var_5._M_dataplus._M_p = (pointer)&var_5.field_2;
    var_12 = var_9(var_7);
    std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_2>::
    var_10<var_11*>(&var_5,var_7,var_7 + var_12);
    local_58.dwo_name._M_dataplus._M_p = (pointer)&local_58.dwo_name.field_2;
    local_58.dwo_id = uVar1;
                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */
    std::__cxx11::basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_2>::
    var_10<var_4*>(&local_58.dwo_name,var_5._M_dataplus._M_p,
                        var_5._M_dataplus._M_p + var_5._M_string_length);
                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */
    std::vector<gold::var_1,_std::var_3<gold::var_1>var_2>::
    emplace_back<gold::var_1>(this_00,&local_58);
    if ((anon_union_16_2_edb7204a_for_basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_2>var_13
         *)local_58.dwo_name._M_dataplus._M_p != &local_58.dwo_name.field_2) {
      var_14(local_58.dwo_name._M_dataplus._M_p);
    }
    if ((anon_union_16_2_edb7204a_for_basic_string<var_4,_std::char_traits<var_4>,_std::var_3<var_4>var_2>var_13
         *)var_5._M_dataplus._M_p != &var_5.field_2) {
      var_14(var_5._M_dataplus._M_p);
    }
  }
  return;
}


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

void MASKED(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  undefined8 uVar1;
  char *__s;
  undefined8 uVar2;
  size_t sVar3;
  undefined1 *local_78;
  long local_70;
  undefined1 local_68 [16];
  undefined8 local_58;
  undefined1 *local_50 [2];
  undefined1 local_40 [32];
  
  __s = (char *)FUN_00161640(param_4,0x2130);
  if (__s != (char *)0x0) {
    uVar2 = FUN_001616c0(param_4,0x2131);
    uVar1 = *(undefined8 *)(param_1 + 0x940);
    local_78 = local_68;
    sVar3 = strlen(__s);
    FUN_0015cbe0(&local_78,__s,__s + sVar3);
    local_50[0] = local_40;
    local_58 = uVar2;
                    /* try { // try from 0014a696 to 0014a69a has its CatchHandler @ 0014a6de */
    FUN_0015d030(local_50,local_78,local_78 + local_70);
                    /* try { // try from 0014a6a1 to 0014a6a5 has its CatchHandler @ 0014a6d6 */
    FUN_0015cb70(uVar1,&local_58);
    if (local_50[0] != local_40) {
      FUN_00276d20();
    }
    if (local_78 != local_68) {
      FUN_00276d20();
    }
  }
  return;
}

