
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: void add_fill(Script_sections * this, Expression * val) */

void __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *val)

{
  int iVar1;
  undefined *puVar2;
  Output_section_element **ppOVar3;
  _func_int_varargs **pp_Var4;
  iterator __position;
  char cVar5;
  _func_int_varargs **in_a3;
  undefined *puVar6;
  Output_section_element *apOStack_40 [3];
  
  if (this->output_section_ != (Output_section_definition *)0x0) {
    Output_section_definition::add_fill(this->output_section_,val);
    return;
  }
  pp_Var4 = (_func_int_varargs **)0xd92;
  cVar5 = (char)PTR_s__0043226c + -0x4c;
  puVar2 = PTR_s__0043226c + -0x5d54;
  puVar6 = PTR_do_gold_unreachable_004323c4;
  (*(code *)PTR_do_gold_unreachable_004323c4)();
  apOStack_40[0] = (Output_section_element *)(**(code **)(puVar6 + 0x224100))(0x10);
  __position._M_current = *(Output_section_element ***)(puVar2 + 0x3c);
  ppOVar3 = *(Output_section_element ***)(puVar2 + 0x40);
  apOStack_40[0][1]._vptr_Output_section_element = pp_Var4;
  iVar1 = *(int *)(puVar6 + 0x226e50);
  *(char *)&apOStack_40[0][2]._vptr_Output_section_element = cVar5;
  apOStack_40[0][3]._vptr_Output_section_element = in_a3;
  apOStack_40[0]->_vptr_Output_section_element = (_func_int_varargs **)(iVar1 + 8);
  if (__position._M_current != ppOVar3) {
    *__position._M_current = apOStack_40[0];
    *(Output_section_element ***)(puVar2 + 0x3c) = __position._M_current + 1;
    return;
  }
  std::vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>::
  _M_realloc_insert<gold::Output_section_element*_const&>
            ((vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>
              *)(puVar2 + 0x38),__position,apOStack_40);
  return;
}



/* gold::Script_sections::add_fill(gold::Expression*) */

void __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *param_1)

{
  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {
    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);
    return;
  }
  (*(code *)PTR_do_gold_unreachable_004323c4)
            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);
  return;
}


lui gp,0x23
addiu gp,gp,-0x4020
addu gp,gp,t9
addiu sp,sp,-0x20
lw a0,0x8(a0)
sw gp,0x10(sp)
sw ra,0x1c(sp)
beq a0,zero,0x0020e220
_lw ra,0x1c(sp)
lw t9,-0x5148(gp)
b 0x0020e154
_addiu sp,sp,0x20
lw a2,-0x7f64(gp)
li a1,0xd92
lw a0,-0x7f64(gp)
lw t9,-0x7e0c(gp)
addiu a2,a2,-0x544c
jalr t9
_addiu a0,a0,-0x5d54
(translation_unit "/* gold::Script_sections::add_fill(gold::Expression*) */\n\nvoid __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *param_1)\n\n{\n  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);\n  return;\n}\n\n" comment (function_definition "void __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *param_1)\n\n{\n  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_sections::" identifier : : identifier : :) (function_declarator "add_fill(Script_sections *this,Expression *param_1)" identifier (parameter_list "(Script_sections *this,Expression *param_1)" ( (parameter_declaration "Script_sections *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Expression *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);\n  return;\n}" { (if_statement "if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }" if (parenthesized_expression "(*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0)" ( (binary_expression "*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0" (pointer_expression "*(Output_section_definition **)(this + 8)" * (cast_expression "(Output_section_definition **)(this + 8)" ( (type_descriptor "Output_section_definition **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) != (cast_expression "(Output_section_definition *)0x0" ( (type_descriptor "Output_section_definition *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }" { (labeled_statement "Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);" statement_identifier : (ERROR ":" :) (expression_statement "add_fill(*(Output_section_definition **)(this + 8),param_1);" (call_expression "add_fill(*(Output_section_definition **)(this + 8),param_1)" identifier (argument_list "(*(Output_section_definition **)(this + 8),param_1)" ( (pointer_expression "*(Output_section_definition **)(this + 8)" * (cast_expression "(Output_section_definition **)(this + 8)" ( (type_descriptor "Output_section_definition **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) , identifier ))) ;)) (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c)" ( (binary_expression "PTR_DAT_0043226c + -0x5d54" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0043226c + -0x544c" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: void add_fill(Script_sections * this, Expression * val) */\n\nvoid __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *val)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  Output_section_element **ppOVar3;\n  _func_int_varargs **pp_Var4;\n  iterator __position;\n  char cVar5;\n  _func_int_varargs **in_a3;\n  undefined *puVar6;\n  Output_section_element *apOStack_40 [3];\n  \n  if (this->output_section_ != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(this->output_section_,val);\n    return;\n  }\n  pp_Var4 = (_func_int_varargs **)0xd92;\n  cVar5 = (char)PTR_s__0043226c + -0x4c;\n  puVar2 = PTR_s__0043226c + -0x5d54;\n  puVar6 = PTR_do_gold_unreachable_004323c4;\n  (*(code *)PTR_do_gold_unreachable_004323c4)();\n  apOStack_40[0] = (Output_section_element *)(**(code **)(puVar6 + 0x224100))(0x10);\n  __position._M_current = *(Output_section_element ***)(puVar2 + 0x3c);\n  ppOVar3 = *(Output_section_element ***)(puVar2 + 0x40);\n  apOStack_40[0][1]._vptr_Output_section_element = pp_Var4;\n  iVar1 = *(int *)(puVar6 + 0x226e50);\n  *(char *)&apOStack_40[0][2]._vptr_Output_section_element = cVar5;\n  apOStack_40[0][3]._vptr_Output_section_element = in_a3;\n  apOStack_40[0]->_vptr_Output_section_element = (_func_int_varargs **)(iVar1 + 8);\n  if (__position._M_current != ppOVar3) {\n    *__position._M_current = apOStack_40[0];\n    *(Output_section_element ***)(puVar2 + 0x3c) = __position._M_current + 1;\n    return;\n  }\n  std::vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>::\n  _M_realloc_insert<gold::Output_section_element*_const&>\n            ((vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)(puVar2 + 0x38),__position,apOStack_40);\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *val)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  Output_section_element **ppOVar3;\n  _func_int_varargs **pp_Var4;\n  iterator __position;\n  char cVar5;\n  _func_int_varargs **in_a3;\n  undefined *puVar6;\n  Output_section_element *apOStack_40 [3];\n  \n  if (this->output_section_ != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(this->output_section_,val);\n    return;\n  }\n  pp_Var4 = (_func_int_varargs **)0xd92;\n  cVar5 = (char)PTR_s__0043226c + -0x4c;\n  puVar2 = PTR_s__0043226c + -0x5d54;\n  puVar6 = PTR_do_gold_unreachable_004323c4;\n  (*(code *)PTR_do_gold_unreachable_004323c4)();\n  apOStack_40[0] = (Output_section_element *)(**(code **)(puVar6 + 0x224100))(0x10);\n  __position._M_current = *(Output_section_element ***)(puVar2 + 0x3c);\n  ppOVar3 = *(Output_section_element ***)(puVar2 + 0x40);\n  apOStack_40[0][1]._vptr_Output_section_element = pp_Var4;\n  iVar1 = *(int *)(puVar6 + 0x226e50);\n  *(char *)&apOStack_40[0][2]._vptr_Output_section_element = cVar5;\n  apOStack_40[0][3]._vptr_Output_section_element = in_a3;\n  apOStack_40[0]->_vptr_Output_section_element = (_func_int_varargs **)(iVar1 + 8);\n  if (__position._M_current != ppOVar3) {\n    *__position._M_current = apOStack_40[0];\n    *(Output_section_element ***)(puVar2 + 0x3c) = __position._M_current + 1;\n    return;\n  }\n  std::vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>::\n  _M_realloc_insert<gold::Output_section_element*_const&>\n            ((vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)(puVar2 + 0x38),__position,apOStack_40);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_sections::" identifier : : identifier : :) (function_declarator "add_fill(Script_sections *this,Expression *val)" identifier (parameter_list "(Script_sections *this,Expression *val)" ( (parameter_declaration "Script_sections *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Expression *val" type_identifier (pointer_declarator "*val" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined *puVar2;\n  Output_section_element **ppOVar3;\n  _func_int_varargs **pp_Var4;\n  iterator __position;\n  char cVar5;\n  _func_int_varargs **in_a3;\n  undefined *puVar6;\n  Output_section_element *apOStack_40 [3];\n  \n  if (this->output_section_ != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(this->output_section_,val);\n    return;\n  }\n  pp_Var4 = (_func_int_varargs **)0xd92;\n  cVar5 = (char)PTR_s__0043226c + -0x4c;\n  puVar2 = PTR_s__0043226c + -0x5d54;\n  puVar6 = PTR_do_gold_unreachable_004323c4;\n  (*(code *)PTR_do_gold_unreachable_004323c4)();\n  apOStack_40[0] = (Output_section_element *)(**(code **)(puVar6 + 0x224100))(0x10);\n  __position._M_current = *(Output_section_element ***)(puVar2 + 0x3c);\n  ppOVar3 = *(Output_section_element ***)(puVar2 + 0x40);\n  apOStack_40[0][1]._vptr_Output_section_element = pp_Var4;\n  iVar1 = *(int *)(puVar6 + 0x226e50);\n  *(char *)&apOStack_40[0][2]._vptr_Output_section_element = cVar5;\n  apOStack_40[0][3]._vptr_Output_section_element = in_a3;\n  apOStack_40[0]->_vptr_Output_section_element = (_func_int_varargs **)(iVar1 + 8);\n  if (__position._M_current != ppOVar3) {\n    *__position._M_current = apOStack_40[0];\n    *(Output_section_element ***)(puVar2 + 0x3c) = __position._M_current + 1;\n    return;\n  }\n  std::vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>::\n  _M_realloc_insert<gold::Output_section_element*_const&>\n            ((vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)(puVar2 + 0x38),__position,apOStack_40);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Output_section_element **ppOVar3;" type_identifier (pointer_declarator "**ppOVar3" * (pointer_declarator "*ppOVar3" * identifier)) ;) (declaration "_func_int_varargs **pp_Var4;" type_identifier (pointer_declarator "**pp_Var4" * (pointer_declarator "*pp_Var4" * identifier)) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "_func_int_varargs **in_a3;" type_identifier (pointer_declarator "**in_a3" * (pointer_declarator "*in_a3" * identifier)) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "Output_section_element *apOStack_40 [3];" type_identifier (pointer_declarator "*apOStack_40 [3]" * (array_declarator "apOStack_40 [3]" identifier [ number_literal ])) ;) (if_statement "if (this->output_section_ != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(this->output_section_,val);\n    return;\n  }" if (parenthesized_expression "(this->output_section_ != (Output_section_definition *)0x0)" ( (binary_expression "this->output_section_ != (Output_section_definition *)0x0" (field_expression "this->output_section_" identifier -> field_identifier) != (cast_expression "(Output_section_definition *)0x0" ( (type_descriptor "Output_section_definition *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    Output_section_definition::add_fill(this->output_section_,val);\n    return;\n  }" { (labeled_statement "Output_section_definition::add_fill(this->output_section_,val);" statement_identifier : (ERROR ":" :) (expression_statement "add_fill(this->output_section_,val);" (call_expression "add_fill(this->output_section_,val)" identifier (argument_list "(this->output_section_,val)" ( (field_expression "this->output_section_" identifier -> field_identifier) , identifier ))) ;)) (return_statement "return;" return ;) })) (expression_statement "pp_Var4 = (_func_int_varargs **)0xd92;" (assignment_expression "pp_Var4 = (_func_int_varargs **)0xd92" identifier = (cast_expression "(_func_int_varargs **)0xd92" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "cVar5 = (char)PTR_s__0043226c + -0x4c;" (assignment_expression "cVar5 = (char)PTR_s__0043226c + -0x4c" identifier = (binary_expression "(char)PTR_s__0043226c + -0x4c" (cast_expression "(char)PTR_s__0043226c" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "puVar2 = PTR_s__0043226c + -0x5d54;" (assignment_expression "puVar2 = PTR_s__0043226c + -0x5d54" identifier = (binary_expression "PTR_s__0043226c + -0x5d54" identifier + number_literal)) ;) (expression_statement "puVar6 = PTR_do_gold_unreachable_004323c4;" (assignment_expression "puVar6 = PTR_do_gold_unreachable_004323c4" identifier = identifier) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)();" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)()" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "apOStack_40[0] = (Output_section_element *)(**(code **)(puVar6 + 0x224100))(0x10);" (assignment_expression "apOStack_40[0] = (Output_section_element *)(**(code **)(puVar6 + 0x224100))(0x10)" (subscript_expression "apOStack_40[0]" identifier [ number_literal ]) = (cast_expression "(Output_section_element *)(**(code **)(puVar6 + 0x224100))(0x10)" ( (type_descriptor "Output_section_element *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar6 + 0x224100))(0x10)" (parenthesized_expression "(**(code **)(puVar6 + 0x224100))" ( (pointer_expression "**(code **)(puVar6 + 0x224100)" * (pointer_expression "*(code **)(puVar6 + 0x224100)" * (cast_expression "(code **)(puVar6 + 0x224100)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x224100)" ( (binary_expression "puVar6 + 0x224100" identifier + number_literal) ))))) )) (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "__position._M_current = *(Output_section_element ***)(puVar2 + 0x3c);" (assignment_expression "__position._M_current = *(Output_section_element ***)(puVar2 + 0x3c)" (field_expression "__position._M_current" identifier . field_identifier) = (pointer_expression "*(Output_section_element ***)(puVar2 + 0x3c)" * (cast_expression "(Output_section_element ***)(puVar2 + 0x3c)" ( (type_descriptor "Output_section_element ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar2 + 0x3c)" ( (binary_expression "puVar2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "ppOVar3 = *(Output_section_element ***)(puVar2 + 0x40);" (assignment_expression "ppOVar3 = *(Output_section_element ***)(puVar2 + 0x40)" identifier = (pointer_expression "*(Output_section_element ***)(puVar2 + 0x40)" * (cast_expression "(Output_section_element ***)(puVar2 + 0x40)" ( (type_descriptor "Output_section_element ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar2 + 0x40)" ( (binary_expression "puVar2 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "apOStack_40[0][1]._vptr_Output_section_element = pp_Var4;" (assignment_expression "apOStack_40[0][1]._vptr_Output_section_element = pp_Var4" (field_expression "apOStack_40[0][1]._vptr_Output_section_element" (subscript_expression "apOStack_40[0][1]" (subscript_expression "apOStack_40[0]" identifier [ number_literal ]) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "iVar1 = *(int *)(puVar6 + 0x226e50);" (assignment_expression "iVar1 = *(int *)(puVar6 + 0x226e50)" identifier = (pointer_expression "*(int *)(puVar6 + 0x226e50)" * (cast_expression "(int *)(puVar6 + 0x226e50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x226e50)" ( (binary_expression "puVar6 + 0x226e50" identifier + number_literal) ))))) ;) (expression_statement "*(char *)&apOStack_40[0][2]._vptr_Output_section_element = cVar5;" (assignment_expression "*(char *)&apOStack_40[0][2]._vptr_Output_section_element = cVar5" (pointer_expression "*(char *)&apOStack_40[0][2]._vptr_Output_section_element" * (cast_expression "(char *)&apOStack_40[0][2]._vptr_Output_section_element" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&apOStack_40[0][2]._vptr_Output_section_element" & (field_expression "apOStack_40[0][2]._vptr_Output_section_element" (subscript_expression "apOStack_40[0][2]" (subscript_expression "apOStack_40[0]" identifier [ number_literal ]) [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "apOStack_40[0][3]._vptr_Output_section_element = in_a3;" (assignment_expression "apOStack_40[0][3]._vptr_Output_section_element = in_a3" (field_expression "apOStack_40[0][3]._vptr_Output_section_element" (subscript_expression "apOStack_40[0][3]" (subscript_expression "apOStack_40[0]" identifier [ number_literal ]) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "apOStack_40[0]->_vptr_Output_section_element = (_func_int_varargs **)(iVar1 + 8);" (assignment_expression "apOStack_40[0]->_vptr_Output_section_element = (_func_int_varargs **)(iVar1 + 8)" (field_expression "apOStack_40[0]->_vptr_Output_section_element" (subscript_expression "apOStack_40[0]" identifier [ number_literal ]) -> field_identifier) = (cast_expression "(_func_int_varargs **)(iVar1 + 8)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) ;) (if_statement "if (__position._M_current != ppOVar3) {\n    *__position._M_current = apOStack_40[0];\n    *(Output_section_element ***)(puVar2 + 0x3c) = __position._M_current + 1;\n    return;\n  }" if (parenthesized_expression "(__position._M_current != ppOVar3)" ( (binary_expression "__position._M_current != ppOVar3" (field_expression "__position._M_current" identifier . field_identifier) != identifier) )) (compound_statement "{\n    *__position._M_current = apOStack_40[0];\n    *(Output_section_element ***)(puVar2 + 0x3c) = __position._M_current + 1;\n    return;\n  }" { (expression_statement "*__position._M_current = apOStack_40[0];" (assignment_expression "*__position._M_current = apOStack_40[0]" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = (subscript_expression "apOStack_40[0]" identifier [ number_literal ])) ;) (expression_statement "*(Output_section_element ***)(puVar2 + 0x3c) = __position._M_current + 1;" (assignment_expression "*(Output_section_element ***)(puVar2 + 0x3c) = __position._M_current + 1" (pointer_expression "*(Output_section_element ***)(puVar2 + 0x3c)" * (cast_expression "(Output_section_element ***)(puVar2 + 0x3c)" ( (type_descriptor "Output_section_element ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar2 + 0x3c)" ( (binary_expression "puVar2 + 0x3c" identifier + number_literal) )))) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (return_statement "return;" return ;) })) (ERROR "std::vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>::\n  _M_realloc_insert<gold::" (comma_expression "std::vector<gold::Output_section_element*,_std" identifier (ERROR "::vector<gold::Output_section_element*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_section_element*>_>::\n  _M_realloc_insert<gold" (binary_expression "Output_section_element*>_>::\n  _M_realloc_insert" (binary_expression "Output_section_element*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Output_section_element*_const&>\n            ((vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)(puVar2 + 0x38),__position,apOStack_40);" (binary_expression "Output_section_element*_const&>\n            ((vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)(puVar2 + 0x38),__position,apOStack_40)" (binary_expression "Output_section_element*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "((vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)(puVar2 + 0x38),__position,apOStack_40)" ( (comma_expression "(vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)(puVar2 + 0x38),__position,apOStack_40" (call_expression "(vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)(puVar2 + 0x38)" (parenthesized_expression "(vector<gold::Output_section_element*,_std::allocator<gold::Output_section_element*>_>\n              *)" ( (ERROR "vector<gold::Output_section_element*,_std::allocator<gold::" (binary_expression "vector<gold" identifier < identifier) : : (type_descriptor "Output_section_element*" type_identifier (abstract_pointer_declarator "*" *)) , identifier : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Output_section_element*>_>\n              *" (binary_expression "Output_section_element*>_" identifier * (ERROR ">" >) identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(puVar2 + 0x38)" ( (binary_expression "puVar2 + 0x38" identifier + number_literal) ))) , (comma_expression "__position,apOStack_40" identifier , identifier)) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *param_1)\n\n{\n  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);\n  return;\n}\n\n" (function_definition "void __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *param_1)\n\n{\n  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_sections::" identifier : : identifier : :) (function_declarator "add_fill(Script_sections *this,Expression *param_1)" identifier (parameter_list "(Script_sections *this,Expression *param_1)" ( (parameter_declaration "Script_sections *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Expression *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);\n  return;\n}" { (if_statement "if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }" if (parenthesized_expression "(*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0)" ( (binary_expression "*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0" (pointer_expression "*(Output_section_definition **)(this + 8)" * (cast_expression "(Output_section_definition **)(this + 8)" ( (type_descriptor "Output_section_definition **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) != (cast_expression "(Output_section_definition *)0x0" ( (type_descriptor "Output_section_definition *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }" { (labeled_statement "Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);" statement_identifier : (ERROR ":" :) (expression_statement "add_fill(*(Output_section_definition **)(this + 8),param_1);" (call_expression "add_fill(*(Output_section_definition **)(this + 8),param_1)" identifier (argument_list "(*(Output_section_definition **)(this + 8),param_1)" ( (pointer_expression "*(Output_section_definition **)(this + 8)" * (cast_expression "(Output_section_definition **)(this + 8)" ( (type_descriptor "Output_section_definition **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) , identifier ))) ;)) (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c)" ( (binary_expression "PTR_DAT_0043226c + -0x5d54" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0043226c + -0x544c" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;)) (return_statement return ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })))
(function_definition "void __thiscall gold::Script_sections::add_fill(Script_sections *this,Expression *param_1)\n\n{\n  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);\n  return;\n}" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Script_sections::" (identifier "gold") (: ":") (: ":") (identifier "Script_sections") (: ":") (: ":")) (function_declarator "add_fill(Script_sections *this,Expression *param_1)" (identifier "add_fill") (parameter_list "(Script_sections *this,Expression *param_1)" (( "(") (parameter_declaration "Script_sections *this" (type_identifier "Script_sections") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Expression *param_1" (type_identifier "Expression") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);\n  return;\n}" ({ "{") (if_statement "if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }" (if "if") (parenthesized_expression "(*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0)" (( "(") (binary_expression "*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0" (pointer_expression "*(Output_section_definition **)(this + 8)" (* "*") (cast_expression "(Output_section_definition **)(this + 8)" (( "(") (type_descriptor "Output_section_definition **" (type_identifier "Output_section_definition") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (cast_expression "(Output_section_definition *)0x0" (( "(") (type_descriptor "Output_section_definition *" (type_identifier "Output_section_definition") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);\n    return;\n  }" ({ "{") (labeled_statement "Output_section_definition::add_fill(*(Output_section_definition **)(this + 8),param_1);" (statement_identifier "Output_section_definition") (: ":") (ERROR ":" (: ":")) (expression_statement "add_fill(*(Output_section_definition **)(this + 8),param_1);" (call_expression "add_fill(*(Output_section_definition **)(this + 8),param_1)" (identifier "add_fill") (argument_list "(*(Output_section_definition **)(this + 8),param_1)" (( "(") (pointer_expression "*(Output_section_definition **)(this + 8)" (* "*") (cast_expression "(Output_section_definition **)(this + 8)" (( "(") (type_descriptor "Output_section_definition **" (type_identifier "Output_section_definition") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 8)" (( "(") (binary_expression "this + 8" (identifier "this") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "param_1") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004323c4"))) () ")")) (argument_list "(PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c)" (( "(") (binary_expression "PTR_DAT_0043226c + -0x5d54" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "-0x5d54")) (, ",") (number_literal "0xd92") (, ",") (binary_expression "PTR_DAT_0043226c + -0x544c" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "-0x544c")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: void add_fill(Script_sections * this, Expression * val) */

void __thiscall gold::type_1::function_1(type_1 *this,type_2 *val)

{
  int var_4;
  type_3 *var_3;
  type_4 **var_5;
  type_5 **pp_Var4;
  type_6 __position;
  char cVar5;
  type_5 **in_a3;
  type_3 *var_2;
  type_4 *apOStack_40 [3];
  
  if (this->output_section_ != (type_7 *)0x0) {
    Output_section_definition::function_1(this->output_section_,val);
    return;
  }
  pp_Var4 = (type_5 **)0xd92;
  cVar5 = (char)var_1 + -0x4c;
  var_3 = var_1 + -0x5d54;
  var_2 = PTR_do_gold_unreachable_004323c4;
  (*(type_8 *)PTR_do_gold_unreachable_004323c4)();
  apOStack_40[0] = (type_4 *)(**(type_8 **)(var_2 + 0x224100))(0x10);
  __position._M_current = *(type_4 ***)(var_3 + 0x3c);
  var_5 = *(type_4 ***)(var_3 + 0x40);
  apOStack_40[0][1]._vptr_Output_section_element = pp_Var4;
  var_4 = *(int *)(var_2 + 0x226e50);
  *(char *)&apOStack_40[0][2]._vptr_Output_section_element = cVar5;
  apOStack_40[0][3]._vptr_Output_section_element = in_a3;
  apOStack_40[0]->_vptr_Output_section_element = (type_5 **)(var_4 + 8);
  if (__position._M_current != var_5) {
    *__position._M_current = apOStack_40[0];
    *(type_4 ***)(var_3 + 0x3c) = __position._M_current + 1;
    return;
  }
  std::vector<gold::type_4*,_std::allocator<gold::type_4*>var_7>::
  _M_realloc_insert<gold::type_4*var_6&>
            ((vector<gold::type_4*,_std::allocator<gold::type_4*>var_7>
              *)(var_3 + 0x38),__position,apOStack_40);
  return;
}


(translation_unit (function_definition type: (primitive_type) (ms_call_modifier) (ERROR (identifier) (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier))))) (return_statement))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))))

/* gold::Script_sections::MASKED(gold::Expression*) */

void __thiscall gold::Script_sections::MASKED(Script_sections *this,Expression *param_1)

{
  if (*(Output_section_definition **)(this + 8) != (Output_section_definition *)0x0) {
    Output_section_definition::MASKED(*(Output_section_definition **)(this + 8),param_1);
    return;
  }
  (*(code *)PTR_do_gold_unreachable_004323c4)
            (PTR_DAT_0043226c + -0x5d54,0xd92,PTR_DAT_0043226c + -0x544c);
  return;
}

