
/* DWARF original prototype: void add_declaration_with_full_name(Gdb_index_info_reader * this,
   Dwarf_die * die, char * full_name) */

void __thiscall
gold::Gdb_index_info_reader::add_declaration_with_full_name
          (Gdb_index_info_reader *this,Dwarf_die *die,char *full_name)

{
  size_t sVar1;
  void *__dest;
  ulong __n;
  off_t local_48 [2];
  void *local_38;
  
  sVar1 = strlen(full_name);
  __n = (ulong)((int)sVar1 + 1);
  __dest = operator_new__(__n);
  local_38 = memcpy(__dest,full_name,__n);
  local_48[1] = 0xffffffffffffffff;
  local_48[0] = die->die_offset_;
  std::
  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>
            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
              *)&this->declarations_,local_48);
  return;
}



void FUN_002b7f30(long param_1,long param_2,char *param_3)

{
  size_t sVar1;
  void *__dest;
  undefined8 local_48;
  undefined8 local_40;
  void *local_38;
  
  sVar1 = strlen(param_3);
  sVar1 = (size_t)((int)sVar1 + 1);
  __dest = (void *)thunk_FUN_002d9490(sVar1);
  local_38 = memcpy(__dest,param_3,sVar1);
  local_40 = 0xffffffffffffffff;
  local_48 = *(undefined8 *)(param_2 + 0x10);
  FUN_002b9a50(param_1 + 0x950,&local_48);
  return;
}


PUSH R13
MOV R13,RSI
PUSH R12
MOV R12,RDX
PUSH RBP
MOV RBP,RDI
MOV RDI,RDX
PUSH RBX
SUB RSP,0x28
CALL 0x00147490
LEA EBX,[RAX + 0x1]
MOVSXD RBX,EBX
MOV RDI,RBX
CALL 0x002d9430
MOV RDX,RBX
MOV RSI,R12
MOV RDI,RAX
CALL 0x00147aa0
MOV RSI,RSP
LEA RDI,[RBP + 0x950]
MOV qword ptr [RSP + 0x8],-0x1
MOV RCX,RAX
MOV RAX,qword ptr [R13 + 0x10]
MOV qword ptr [RSP + 0x10],RCX
MOV qword ptr [RSP],RAX
CALL 0x002b9a50
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
RET
(translation_unit "void FUN_002b7f30(long param_1,long param_2,char *param_3)\n\n{\n  size_t sVar1;\n  void *__dest;\n  undefined8 local_48;\n  undefined8 local_40;\n  void *local_38;\n  \n  sVar1 = strlen(param_3);\n  sVar1 = (size_t)((int)sVar1 + 1);\n  __dest = (void *)thunk_FUN_002d9490(sVar1);\n  local_38 = memcpy(__dest,param_3,sVar1);\n  local_40 = 0xffffffffffffffff;\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_002b9a50(param_1 + 0x950,&local_48);\n  return;\n}\n\n" (function_definition "void FUN_002b7f30(long param_1,long param_2,char *param_3)\n\n{\n  size_t sVar1;\n  void *__dest;\n  undefined8 local_48;\n  undefined8 local_40;\n  void *local_38;\n  \n  sVar1 = strlen(param_3);\n  sVar1 = (size_t)((int)sVar1 + 1);\n  __dest = (void *)thunk_FUN_002d9490(sVar1);\n  local_38 = memcpy(__dest,param_3,sVar1);\n  local_40 = 0xffffffffffffffff;\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_002b9a50(param_1 + 0x950,&local_48);\n  return;\n}" primitive_type (function_declarator "FUN_002b7f30(long param_1,long param_2,char *param_3)" identifier (parameter_list "(long param_1,long param_2,char *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  size_t sVar1;\n  void *__dest;\n  undefined8 local_48;\n  undefined8 local_40;\n  void *local_38;\n  \n  sVar1 = strlen(param_3);\n  sVar1 = (size_t)((int)sVar1 + 1);\n  __dest = (void *)thunk_FUN_002d9490(sVar1);\n  local_38 = memcpy(__dest,param_3,sVar1);\n  local_40 = 0xffffffffffffffff;\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_002b9a50(param_1 + 0x950,&local_48);\n  return;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (declaration "void *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (expression_statement "sVar1 = strlen(param_3);" (assignment_expression "sVar1 = strlen(param_3)" identifier = (call_expression "strlen(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "sVar1 = (size_t)((int)sVar1 + 1);" (assignment_expression "sVar1 = (size_t)((int)sVar1 + 1)" identifier = (cast_expression "(size_t)((int)sVar1 + 1)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "((int)sVar1 + 1)" ( (binary_expression "(int)sVar1 + 1" (cast_expression "(int)sVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "__dest = (void *)thunk_FUN_002d9490(sVar1);" (assignment_expression "__dest = (void *)thunk_FUN_002d9490(sVar1)" identifier = (cast_expression "(void *)thunk_FUN_002d9490(sVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d9490(sVar1)" identifier (argument_list "(sVar1)" ( identifier ))))) ;) (expression_statement "local_38 = memcpy(__dest,param_3,sVar1);" (assignment_expression "local_38 = memcpy(__dest,param_3,sVar1)" identifier = (call_expression "memcpy(__dest,param_3,sVar1)" identifier (argument_list "(__dest,param_3,sVar1)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_40 = 0xffffffffffffffff;" (assignment_expression "local_40 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "local_48 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_48 = *(undefined8 *)(param_2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "FUN_002b9a50(param_1 + 0x950,&local_48);" (call_expression "FUN_002b9a50(param_1 + 0x950,&local_48)" identifier (argument_list "(param_1 + 0x950,&local_48)" ( (binary_expression "param_1 + 0x950" identifier + number_literal) , (pointer_expression "&local_48" & identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void add_declaration_with_full_name(Gdb_index_info_reader * this,\n   Dwarf_die * die, char * full_name) */\n\nvoid __thiscall\ngold::Gdb_index_info_reader::add_declaration_with_full_name\n          (Gdb_index_info_reader *this,Dwarf_die *die,char *full_name)\n\n{\n  size_t sVar1;\n  void *__dest;\n  ulong __n;\n  off_t local_48 [2];\n  void *local_38;\n  \n  sVar1 = strlen(full_name);\n  __n = (ulong)((int)sVar1 + 1);\n  __dest = operator_new__(__n);\n  local_38 = memcpy(__dest,full_name,__n);\n  local_48[1] = 0xffffffffffffffff;\n  local_48[0] = die->die_offset_;\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48);\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Gdb_index_info_reader::add_declaration_with_full_name\n          (Gdb_index_info_reader *this,Dwarf_die *die,char *full_name)\n\n{\n  size_t sVar1;\n  void *__dest;\n  ulong __n;\n  off_t local_48 [2];\n  void *local_38;\n  \n  sVar1 = strlen(full_name);\n  __n = (ulong)((int)sVar1 + 1);\n  __dest = operator_new__(__n);\n  local_38 = memcpy(__dest,full_name,__n);\n  local_48[1] = 0xffffffffffffffff;\n  local_48[0] = die->die_offset_;\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) (function_declarator "add_declaration_with_full_name\n          (Gdb_index_info_reader *this,Dwarf_die *die,char *full_name)" identifier (parameter_list "(Gdb_index_info_reader *this,Dwarf_die *die,char *full_name)" ( (parameter_declaration "Gdb_index_info_reader *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Dwarf_die *die" type_identifier (pointer_declarator "*die" * identifier)) , (parameter_declaration "char *full_name" primitive_type (pointer_declarator "*full_name" * identifier)) ))) (compound_statement "{\n  size_t sVar1;\n  void *__dest;\n  ulong __n;\n  off_t local_48 [2];\n  void *local_38;\n  \n  sVar1 = strlen(full_name);\n  __n = (ulong)((int)sVar1 + 1);\n  __dest = operator_new__(__n);\n  local_38 = memcpy(__dest,full_name,__n);\n  local_48[1] = 0xffffffffffffffff;\n  local_48[0] = die->die_offset_;\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48);\n  return;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "off_t local_48 [2];" type_identifier (array_declarator "local_48 [2]" identifier [ number_literal ]) ;) (declaration "void *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (expression_statement "sVar1 = strlen(full_name);" (assignment_expression "sVar1 = strlen(full_name)" identifier = (call_expression "strlen(full_name)" identifier (argument_list "(full_name)" ( identifier )))) ;) (expression_statement "__n = (ulong)((int)sVar1 + 1);" (assignment_expression "__n = (ulong)((int)sVar1 + 1)" identifier = (call_expression "(ulong)((int)sVar1 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar1 + 1)" ( (binary_expression "(int)sVar1 + 1" (cast_expression "(int)sVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "__dest = operator_new__(__n);" (assignment_expression "__dest = operator_new__(__n)" identifier = (call_expression "operator_new__(__n)" identifier (argument_list "(__n)" ( identifier )))) ;) (expression_statement "local_38 = memcpy(__dest,full_name,__n);" (assignment_expression "local_38 = memcpy(__dest,full_name,__n)" identifier = (call_expression "memcpy(__dest,full_name,__n)" identifier (argument_list "(__dest,full_name,__n)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_48[1] = 0xffffffffffffffff;" (assignment_expression "local_48[1] = 0xffffffffffffffff" (subscript_expression "local_48[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_48[0] = die->die_offset_;" (assignment_expression "local_48[0] = die->die_offset_" (subscript_expression "local_48[0]" identifier [ number_literal ]) = (field_expression "die->die_offset_" identifier -> field_identifier)) ;) (ERROR "std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::" (comma_expression "std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std" identifier (ERROR "::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>" : : (comma_expression "_Hashtable<long_int,_std" (binary_expression "_Hashtable<long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>,_std" identifier (ERROR "::Declaration_pair>" : : identifier >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>_>,_std" identifier (ERROR "::Declaration_pair>_>" : : (binary_expression "Declaration_pair>_" identifier > identifier) >) , identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<long_int>,_std" identifier (ERROR "::_Select1st,_std::equal_to<long_int>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<long_int" identifier < identifier) >) , identifier) : : (binary_expression "hash<long_int" identifier < identifier) >) , identifier) : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : (comma_expression "_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n  ::_M_emplace<std" identifier , (binary_expression "_true>_>\n  ::_M_emplace<std" (binary_expression "_true>_>\n  ::_M_emplace" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) identifier) < identifier))) : : (comma_expression "pair<long_int,_gold" (binary_expression "pair<long_int" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std" identifier (ERROR "::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>" : : (binary_expression "Declaration_pair>_" identifier > identifier) > ( ( (comma_expression "_Hashtable<long_int,_std" (binary_expression "_Hashtable<long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>,_std" identifier (ERROR "::Declaration_pair>" : : identifier >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>_>,_std" identifier (ERROR "::Declaration_pair>_>" : : (binary_expression "Declaration_pair>_" identifier > identifier) >) , identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<long_int>,_std" identifier (ERROR "::_Select1st,_std::equal_to<long_int>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<long_int" identifier < identifier) >) , identifier) : : (binary_expression "hash<long_int" identifier < identifier) >) , identifier) : :) (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48);" (comma_expression "_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,local_48" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n              *)&this->declarations_,local_48" identifier , (comma_expression "_true>_>\n              *)&this->declarations_,local_48" (binary_expression "_true>_>\n              *)&this->declarations_" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)&this->declarations_" * (ERROR ")" )) (pointer_expression "&this->declarations_" & (field_expression "this->declarations_" identifier -> field_identifier)))) , identifier))) (ERROR ")" )) ;))))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002b7f30(long param_1,long param_2,char *param_3)\n\n{\n  size_t sVar1;\n  void *__dest;\n  undefined8 local_48;\n  undefined8 local_40;\n  void *local_38;\n  \n  sVar1 = strlen(param_3);\n  sVar1 = (size_t)((int)sVar1 + 1);\n  __dest = (void *)thunk_FUN_002d9490(sVar1);\n  local_38 = memcpy(__dest,param_3,sVar1);\n  local_40 = 0xffffffffffffffff;\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_002b9a50(param_1 + 0x950,&local_48);\n  return;\n}\n\n" (function_definition "void FUN_002b7f30(long param_1,long param_2,char *param_3)\n\n{\n  size_t sVar1;\n  void *__dest;\n  undefined8 local_48;\n  undefined8 local_40;\n  void *local_38;\n  \n  sVar1 = strlen(param_3);\n  sVar1 = (size_t)((int)sVar1 + 1);\n  __dest = (void *)thunk_FUN_002d9490(sVar1);\n  local_38 = memcpy(__dest,param_3,sVar1);\n  local_40 = 0xffffffffffffffff;\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_002b9a50(param_1 + 0x950,&local_48);\n  return;\n}" primitive_type (function_declarator "FUN_002b7f30(long param_1,long param_2,char *param_3)" identifier (parameter_list "(long param_1,long param_2,char *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  size_t sVar1;\n  void *__dest;\n  undefined8 local_48;\n  undefined8 local_40;\n  void *local_38;\n  \n  sVar1 = strlen(param_3);\n  sVar1 = (size_t)((int)sVar1 + 1);\n  __dest = (void *)thunk_FUN_002d9490(sVar1);\n  local_38 = memcpy(__dest,param_3,sVar1);\n  local_40 = 0xffffffffffffffff;\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_002b9a50(param_1 + 0x950,&local_48);\n  return;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (declaration "void *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (expression_statement "sVar1 = strlen(param_3);" (assignment_expression "sVar1 = strlen(param_3)" identifier = (call_expression "strlen(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "sVar1 = (size_t)((int)sVar1 + 1);" (assignment_expression "sVar1 = (size_t)((int)sVar1 + 1)" identifier = (cast_expression "(size_t)((int)sVar1 + 1)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "((int)sVar1 + 1)" ( (binary_expression "(int)sVar1 + 1" (cast_expression "(int)sVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "__dest = (void *)thunk_FUN_002d9490(sVar1);" (assignment_expression "__dest = (void *)thunk_FUN_002d9490(sVar1)" identifier = (cast_expression "(void *)thunk_FUN_002d9490(sVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d9490(sVar1)" identifier (argument_list "(sVar1)" ( identifier ))))) ;) (expression_statement "local_38 = memcpy(__dest,param_3,sVar1);" (assignment_expression "local_38 = memcpy(__dest,param_3,sVar1)" identifier = (call_expression "memcpy(__dest,param_3,sVar1)" identifier (argument_list "(__dest,param_3,sVar1)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_40 = 0xffffffffffffffff;" (assignment_expression "local_40 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "local_48 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_48 = *(undefined8 *)(param_2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "FUN_002b9a50(param_1 + 0x950,&local_48);" (call_expression "FUN_002b9a50(param_1 + 0x950,&local_48)" identifier (argument_list "(param_1 + 0x950,&local_48)" ( (binary_expression "param_1 + 0x950" identifier + number_literal) , (pointer_expression "&local_48" & identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_002b7f30(long param_1,long param_2,char *param_3)\n\n{\n  size_t sVar1;\n  void *__dest;\n  undefined8 local_48;\n  undefined8 local_40;\n  void *local_38;\n  \n  sVar1 = strlen(param_3);\n  sVar1 = (size_t)((int)sVar1 + 1);\n  __dest = (void *)thunk_FUN_002d9490(sVar1);\n  local_38 = memcpy(__dest,param_3,sVar1);\n  local_40 = 0xffffffffffffffff;\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_002b9a50(param_1 + 0x950,&local_48);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002b7f30(long param_1,long param_2,char *param_3)" (identifier "FUN_002b7f30") (parameter_list "(long param_1,long param_2,char *param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  size_t sVar1;\n  void *__dest;\n  undefined8 local_48;\n  undefined8 local_40;\n  void *local_38;\n  \n  sVar1 = strlen(param_3);\n  sVar1 = (size_t)((int)sVar1 + 1);\n  __dest = (void *)thunk_FUN_002d9490(sVar1);\n  local_38 = memcpy(__dest,param_3,sVar1);\n  local_40 = 0xffffffffffffffff;\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_002b9a50(param_1 + 0x950,&local_48);\n  return;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "undefined8 local_40;" (type_identifier "undefined8") (identifier "local_40") (; ";")) (declaration "void *local_38;" (primitive_type "void") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (expression_statement "sVar1 = strlen(param_3);" (assignment_expression "sVar1 = strlen(param_3)" (identifier "sVar1") (= "=") (call_expression "strlen(param_3)" (identifier "strlen") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "sVar1 = (size_t)((int)sVar1 + 1);" (assignment_expression "sVar1 = (size_t)((int)sVar1 + 1)" (identifier "sVar1") (= "=") (cast_expression "(size_t)((int)sVar1 + 1)" (( "(") (type_descriptor "size_t" (primitive_type "size_t")) () ")") (parenthesized_expression "((int)sVar1 + 1)" (( "(") (binary_expression "(int)sVar1 + 1" (cast_expression "(int)sVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar1")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "__dest = (void *)thunk_FUN_002d9490(sVar1);" (assignment_expression "__dest = (void *)thunk_FUN_002d9490(sVar1)" (identifier "__dest") (= "=") (cast_expression "(void *)thunk_FUN_002d9490(sVar1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002d9490(sVar1)" (identifier "thunk_FUN_002d9490") (argument_list "(sVar1)" (( "(") (identifier "sVar1") () ")"))))) (; ";")) (expression_statement "local_38 = memcpy(__dest,param_3,sVar1);" (assignment_expression "local_38 = memcpy(__dest,param_3,sVar1)" (identifier "local_38") (= "=") (call_expression "memcpy(__dest,param_3,sVar1)" (identifier "memcpy") (argument_list "(__dest,param_3,sVar1)" (( "(") (identifier "__dest") (, ",") (identifier "param_3") (, ",") (identifier "sVar1") () ")")))) (; ";")) (expression_statement "local_40 = 0xffffffffffffffff;" (assignment_expression "local_40 = 0xffffffffffffffff" (identifier "local_40") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "local_48 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_48 = *(undefined8 *)(param_2 + 0x10)" (identifier "local_48") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "FUN_002b9a50(param_1 + 0x950,&local_48);" (call_expression "FUN_002b9a50(param_1 + 0x950,&local_48)" (identifier "FUN_002b9a50") (argument_list "(param_1 + 0x950,&local_48)" (( "(") (binary_expression "param_1 + 0x950" (identifier "param_1") (+ "+") (number_literal "0x950")) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void add_declaration_with_full_name(Gdb_index_info_reader * this,
   Dwarf_die * die, char * full_name) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *die,char *full_name)

{
  size_t sVar1;
  void *__dest;
  type_3 __n;
  type_4 local_48 [2];
  void *local_38;
  
  sVar1 = var_1(full_name);
  __n = (type_3)((int)sVar1 + 1);
  __dest = var_2(__n);
  local_38 = var_3(__dest,full_name,__n);
  local_48[1] = 0xffffffffffffffff;
  local_48[0] = die->die_offset_;
  std::
  _Hashtable<long_int,_std::pair<long_int_const,_gold::type_1::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::type_1::Declaration_pair>var_6>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_4<false,_false,var_5>var_6>
  ::_M_emplace<std::pair<long_int,_gold::type_1::Declaration_pair>var_6>
            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::type_1::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::type_1::Declaration_pair>var_6>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_4<false,_false,var_5>var_6>
              *)&this->declarations_,local_48);
  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: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier))))) (return_statement))))

void MASKED(long param_1,long param_2,char *param_3)

{
  size_t sVar1;
  void *__dest;
  undefined8 local_48;
  undefined8 local_40;
  void *local_38;
  
  sVar1 = strlen(param_3);
  sVar1 = (size_t)((int)sVar1 + 1);
  __dest = (void *)thunk_FUN_002d9490(sVar1);
  local_38 = memcpy(__dest,param_3,sVar1);
  local_40 = 0xffffffffffffffff;
  local_48 = *(undefined8 *)(param_2 + 0x10);
  FUN_002b9a50(param_1 + 0x950,&local_48);
  return;
}

