
/* DWARF original prototype: void Merged_symbol_value(Merged_symbol_value<32> * this, Value
   input_value, Value output_start_address) */

void __thiscall
gold::Merged_symbol_value<32>::Merged_symbol_value
          (Merged_symbol_value<32> *this,Value input_value,Value output_start_address)

{
  uint uVar1;
  
  this->input_value_ = input_value;
  this->output_start_address_ = output_start_address;
  uVar1 = 0;
  do {
    *(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1) = 0;
    uVar1 = uVar1 + 4;
  } while (uVar1 < 0x1c);
  (this->output_addresses_)._M_h._M_bucket_count = 1;
  (this->output_addresses_)._M_h._M_buckets = &(this->output_addresses_)._M_h._M_single_bucket;
  (this->output_addresses_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;
  (this->output_addresses_)._M_h._M_element_count = 0;
  (this->output_addresses_)._M_h._M_rehash_policy._M_max_load_factor = 1.0;
  (this->output_addresses_)._M_h._M_rehash_policy._M_next_resize = 0;
  (this->output_addresses_)._M_h._M_single_bucket = (__bucket_type)0x0;
  return;
}



void FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1 = param_2;
  param_1[1] = param_3;
  uVar1 = 0;
  do {
    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;
    uVar1 = uVar1 + 4;
  } while (uVar1 < 0x1c);
  param_1[3] = 1;
  param_1[2] = param_1 + 8;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0x3f800000;
  param_1[7] = 0;
  param_1[8] = 0;
  return;
}


MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x8]
XOR ECX,ECX
MOV dword ptr [EAX],EDX
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [EAX + 0x4],EDX
XOR EDX,EDX
MOV dword ptr [EAX + EDX*0x1 + 0x8],ECX
ADD EDX,0x4
CMP EDX,0x1c
JC 0x00126ed5
LEA EDX,[EAX + 0x20]
MOV dword ptr [EAX + 0xc],0x1
MOV dword ptr [EAX + 0x8],EDX
MOV dword ptr [EAX + 0x10],0x0
MOV dword ptr [EAX + 0x14],0x0
MOV dword ptr [EAX + 0x18],0x3f800000
MOV dword ptr [EAX + 0x1c],0x0
MOV dword ptr [EAX + 0x20],0x0
RET
(translation_unit "void FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  \n  *param_1 = param_2;\n  param_1[1] = param_3;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  param_1[3] = 1;\n  param_1[2] = param_1 + 8;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0x3f800000;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  return;\n}\n\n" (function_definition "void FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  \n  *param_1 = param_2;\n  param_1[1] = param_3;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  param_1[3] = 1;\n  param_1[2] = param_1 + 8;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0x3f800000;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  return;\n}" primitive_type (function_declarator "FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  *param_1 = param_2;\n  param_1[1] = param_3;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  param_1[3] = 1;\n  param_1[2] = param_1 + 8;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0x3f800000;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_3;" (assignment_expression "param_1[1] = param_3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);" do (compound_statement "{\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)param_1 + uVar1 + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + uVar1 + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + uVar1 + 8)" * (cast_expression "(undefined4 *)((int)param_1 + uVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + uVar1 + 8)" ( (binary_expression "(int)param_1 + uVar1 + 8" (binary_expression "(int)param_1 + uVar1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = uVar1 + 4;" (assignment_expression "uVar1 = uVar1 + 4" identifier = (binary_expression "uVar1 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 < 0x1c)" ( (binary_expression "uVar1 < 0x1c" identifier < number_literal) )) ;) (expression_statement "param_1[3] = 1;" (assignment_expression "param_1[3] = 1" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = param_1 + 8;" (assignment_expression "param_1[2] = param_1 + 8" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0x3f800000;" (assignment_expression "param_1[6] = 0x3f800000" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void Merged_symbol_value(Merged_symbol_value<32> * this, Value\n   input_value, Value output_start_address) */\n\nvoid __thiscall\ngold::Merged_symbol_value<32>::Merged_symbol_value\n          (Merged_symbol_value<32> *this,Value input_value,Value output_start_address)\n\n{\n  uint uVar1;\n  \n  this->input_value_ = input_value;\n  this->output_start_address_ = output_start_address;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  (this->output_addresses_)._M_h._M_bucket_count = 1;\n  (this->output_addresses_)._M_h._M_buckets = &(this->output_addresses_)._M_h._M_single_bucket;\n  (this->output_addresses_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n  (this->output_addresses_)._M_h._M_element_count = 0;\n  (this->output_addresses_)._M_h._M_rehash_policy._M_max_load_factor = 1.0;\n  (this->output_addresses_)._M_h._M_rehash_policy._M_next_resize = 0;\n  (this->output_addresses_)._M_h._M_single_bucket = (__bucket_type)0x0;\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Merged_symbol_value<32>::Merged_symbol_value\n          (Merged_symbol_value<32> *this,Value input_value,Value output_start_address)\n\n{\n  uint uVar1;\n  \n  this->input_value_ = input_value;\n  this->output_start_address_ = output_start_address;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  (this->output_addresses_)._M_h._M_bucket_count = 1;\n  (this->output_addresses_)._M_h._M_buckets = &(this->output_addresses_)._M_h._M_single_bucket;\n  (this->output_addresses_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n  (this->output_addresses_)._M_h._M_element_count = 0;\n  (this->output_addresses_)._M_h._M_rehash_policy._M_max_load_factor = 1.0;\n  (this->output_addresses_)._M_h._M_rehash_policy._M_next_resize = 0;\n  (this->output_addresses_)._M_h._M_single_bucket = (__bucket_type)0x0;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Merged_symbol_value<32>::" identifier : : identifier < number_literal > : :) (function_declarator "Merged_symbol_value\n          (Merged_symbol_value<32> *this,Value input_value,Value output_start_address)" identifier (parameter_list "(Merged_symbol_value<32> *this,Value input_value,Value output_start_address)" ( (parameter_declaration "Merged_symbol_value<32> *this" type_identifier (ERROR "<32>" < number_literal >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Value input_value" type_identifier identifier) , (parameter_declaration "Value output_start_address" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  this->input_value_ = input_value;\n  this->output_start_address_ = output_start_address;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  (this->output_addresses_)._M_h._M_bucket_count = 1;\n  (this->output_addresses_)._M_h._M_buckets = &(this->output_addresses_)._M_h._M_single_bucket;\n  (this->output_addresses_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;\n  (this->output_addresses_)._M_h._M_element_count = 0;\n  (this->output_addresses_)._M_h._M_rehash_policy._M_max_load_factor = 1.0;\n  (this->output_addresses_)._M_h._M_rehash_policy._M_next_resize = 0;\n  (this->output_addresses_)._M_h._M_single_bucket = (__bucket_type)0x0;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "this->input_value_ = input_value;" (assignment_expression "this->input_value_ = input_value" (field_expression "this->input_value_" identifier -> field_identifier) = identifier) ;) (expression_statement "this->output_start_address_ = output_start_address;" (assignment_expression "this->output_start_address_ = output_start_address" (field_expression "this->output_start_address_" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);" do (compound_statement "{\n    *(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1) = 0;\n    uVar1 = uVar1 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1) = 0;" (assignment_expression "*(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1) = 0" (pointer_expression "*(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1)" * (cast_expression "(undefined4 *)((int)&(this->output_addresses_)._M_h._M_buckets + uVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->output_addresses_)._M_h._M_buckets + uVar1)" ( (binary_expression "(int)&(this->output_addresses_)._M_h._M_buckets + uVar1" (cast_expression "(int)&(this->output_addresses_)._M_h._M_buckets" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->output_addresses_)._M_h._M_buckets" & (field_expression "(this->output_addresses_)._M_h._M_buckets" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "uVar1 = uVar1 + 4;" (assignment_expression "uVar1 = uVar1 + 4" identifier = (binary_expression "uVar1 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 < 0x1c)" ( (binary_expression "uVar1 < 0x1c" identifier < number_literal) )) ;) (expression_statement "(this->output_addresses_)._M_h._M_bucket_count = 1;" (assignment_expression "(this->output_addresses_)._M_h._M_bucket_count = 1" (field_expression "(this->output_addresses_)._M_h._M_bucket_count" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(this->output_addresses_)._M_h._M_buckets = &(this->output_addresses_)._M_h._M_single_bucket;" (assignment_expression "(this->output_addresses_)._M_h._M_buckets = &(this->output_addresses_)._M_h._M_single_bucket" (field_expression "(this->output_addresses_)._M_h._M_buckets" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (pointer_expression "&(this->output_addresses_)._M_h._M_single_bucket" & (field_expression "(this->output_addresses_)._M_h._M_single_bucket" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "(this->output_addresses_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0;" (assignment_expression "(this->output_addresses_)._M_h._M_before_begin._M_nxt = (_Hash_node_base *)0x0" (field_expression "(this->output_addresses_)._M_h._M_before_begin._M_nxt" (field_expression "(this->output_addresses_)._M_h._M_before_begin" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(this->output_addresses_)._M_h._M_element_count = 0;" (assignment_expression "(this->output_addresses_)._M_h._M_element_count = 0" (field_expression "(this->output_addresses_)._M_h._M_element_count" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(this->output_addresses_)._M_h._M_rehash_policy._M_max_load_factor = 1.0;" (assignment_expression "(this->output_addresses_)._M_h._M_rehash_policy._M_max_load_factor = 1.0" (field_expression "(this->output_addresses_)._M_h._M_rehash_policy._M_max_load_factor" (field_expression "(this->output_addresses_)._M_h._M_rehash_policy" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(this->output_addresses_)._M_h._M_rehash_policy._M_next_resize = 0;" (assignment_expression "(this->output_addresses_)._M_h._M_rehash_policy._M_next_resize = 0" (field_expression "(this->output_addresses_)._M_h._M_rehash_policy._M_next_resize" (field_expression "(this->output_addresses_)._M_h._M_rehash_policy" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(this->output_addresses_)._M_h._M_single_bucket = (__bucket_type)0x0;" (assignment_expression "(this->output_addresses_)._M_h._M_single_bucket = (__bucket_type)0x0" (field_expression "(this->output_addresses_)._M_h._M_single_bucket" (field_expression "(this->output_addresses_)._M_h" (parenthesized_expression "(this->output_addresses_)" ( (field_expression "this->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  \n  *param_1 = param_2;\n  param_1[1] = param_3;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  param_1[3] = 1;\n  param_1[2] = param_1 + 8;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0x3f800000;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  return;\n}\n\n" (function_definition "void FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  \n  *param_1 = param_2;\n  param_1[1] = param_3;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  param_1[3] = 1;\n  param_1[2] = param_1 + 8;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0x3f800000;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  return;\n}" primitive_type (function_declarator "FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  *param_1 = param_2;\n  param_1[1] = param_3;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  param_1[3] = 1;\n  param_1[2] = param_1 + 8;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0x3f800000;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_3;" (assignment_expression "param_1[1] = param_3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);" do (compound_statement "{\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)param_1 + uVar1 + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + uVar1 + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + uVar1 + 8)" * (cast_expression "(undefined4 *)((int)param_1 + uVar1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + uVar1 + 8)" ( (binary_expression "(int)param_1 + uVar1 + 8" (binary_expression "(int)param_1 + uVar1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar1 = uVar1 + 4;" (assignment_expression "uVar1 = uVar1 + 4" identifier = (binary_expression "uVar1 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 < 0x1c)" ( (binary_expression "uVar1 < 0x1c" identifier < number_literal) )) ;) (expression_statement "param_1[3] = 1;" (assignment_expression "param_1[3] = 1" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = param_1 + 8;" (assignment_expression "param_1[2] = param_1 + 8" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[6] = 0x3f800000;" (assignment_expression "param_1[6] = 0x3f800000" (subscript_expression "param_1[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })))
(function_definition "void FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  \n  *param_1 = param_2;\n  param_1[1] = param_3;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  param_1[3] = 1;\n  param_1[2] = param_1 + 8;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0x3f800000;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00126ec0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)" (identifier "FUN_00126ec0") (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  \n  *param_1 = param_2;\n  param_1[1] = param_3;\n  uVar1 = 0;\n  do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);\n  param_1[3] = 1;\n  param_1[2] = param_1 + 8;\n  param_1[4] = 0;\n  param_1[5] = 0;\n  param_1[6] = 0x3f800000;\n  param_1[7] = 0;\n  param_1[8] = 0;\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_1[1] = param_3;" (assignment_expression "param_1[1] = param_3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  } while (uVar1 < 0x1c);" (do "do") (compound_statement "{\n    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;\n    uVar1 = uVar1 + 4;\n  }" ({ "{") (expression_statement "*(undefined4 *)((int)param_1 + uVar1 + 8) = 0;" (assignment_expression "*(undefined4 *)((int)param_1 + uVar1 + 8) = 0" (pointer_expression "*(undefined4 *)((int)param_1 + uVar1 + 8)" (* "*") (cast_expression "(undefined4 *)((int)param_1 + uVar1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + uVar1 + 8)" (( "(") (binary_expression "(int)param_1 + uVar1 + 8" (binary_expression "(int)param_1 + uVar1" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (identifier "uVar1")) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar1 = uVar1 + 4;" (assignment_expression "uVar1 = uVar1 + 4" (identifier "uVar1") (= "=") (binary_expression "uVar1 + 4" (identifier "uVar1") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar1 < 0x1c)" (( "(") (binary_expression "uVar1 < 0x1c" (identifier "uVar1") (< "<") (number_literal "0x1c")) () ")")) (; ";")) (expression_statement "param_1[3] = 1;" (assignment_expression "param_1[3] = 1" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_1[2] = param_1 + 8;" (assignment_expression "param_1[2] = param_1 + 8" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[6] = 0x3f800000;" (assignment_expression "param_1[6] = 0x3f800000" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0x3f800000")) (; ";")) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void Merged_symbol_value(Merged_symbol_value<32> * this, Value
   input_value, Value output_start_address) */

void __thiscall
gold::function_1<32>::function_1
          (function_1<32> *this,type_1 input_value,type_1 output_start_address)

{
  type_2 var_1;
  
  this->input_value_ = input_value;
  this->output_start_address_ = output_start_address;
  var_1 = 0;
  do {
    *(type_3 *)((int)&(this->output_addresses_)._M_h._M_buckets + var_1) = 0;
    var_1 = var_1 + 4;
  } while (var_1 < 0x1c);
  (this->output_addresses_)._M_h._M_bucket_count = 1;
  (this->output_addresses_)._M_h._M_buckets = &(this->output_addresses_)._M_h._M_single_bucket;
  (this->output_addresses_)._M_h._M_before_begin._M_nxt = (type_4 *)0x0;
  (this->output_addresses_)._M_h._M_element_count = 0;
  (this->output_addresses_)._M_h._M_rehash_policy._M_max_load_factor = 1.0;
  (this->output_addresses_)._M_h._M_rehash_policy._M_next_resize = 0;
  (this->output_addresses_)._M_h._M_single_bucket = (type_5)0x0;
  return;
}


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

void MASKED(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1 = param_2;
  param_1[1] = param_3;
  uVar1 = 0;
  do {
    *(undefined4 *)((int)param_1 + uVar1 + 8) = 0;
    uVar1 = uVar1 + 4;
  } while (uVar1 < 0x1c);
  param_1[3] = 1;
  param_1[2] = param_1 + 8;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0x3f800000;
  param_1[7] = 0;
  param_1[8] = 0;
  return;
}

