
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* WARNING: Enum "STT": Some values do not have unique names */
/* DWARF original prototype: void finalize_symbols(Script_options * this, Symbol_table * symtab,
   Layout * layout) */

void __thiscall
gold::Script_options::finalize_symbols(Script_options *this,Symbol_table *symtab,Layout *layout)

{
  pointer ppSVar1;
  pointer ppSVar2;
  
  Script_sections::finalize_symbols(&this->script_sections_,symtab,layout);
  ppSVar1 = (this->symbol_assignments_).
            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.
            _M_impl._M_start;
  if (ppSVar1 !=
      (this->symbol_assignments_).
      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.
      _M_impl._M_finish) {
    do {
      Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);
      ppSVar1 = ppSVar1 + 1;
    } while ((this->symbol_assignments_).
             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>
             ._M_impl._M_finish != ppSVar1);
  }
  ppSVar2 = (this->assertions_).
            super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.
            _M_impl._M_start;
  if (ppSVar2 !=
      (this->assertions_).
      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>._M_impl.
      _M_finish) {
    do {
      Script_assertion::check(*ppSVar2,symtab,layout);
      ppSVar2 = ppSVar2 + 1;
    } while ((this->assertions_).
             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.
             _M_impl._M_finish != ppSVar2);
  }
  return;
}



/* gold::Script_options::finalize_symbols(gold::Symbol_table*, gold::Layout const*) */

void __thiscall
gold::Script_options::finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)

{
  undefined4 *puVar1;
  
  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);
  puVar1 = *(undefined4 **)(this + 0x18);
  if (puVar1 != *(undefined4 **)(this + 0x1c)) {
    do {
      Symbol_assignment::finalize_maybe_dot
                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)
      ;
      puVar1 = puVar1 + 1;
    } while (*(undefined4 **)(this + 0x1c) != puVar1);
  }
  puVar1 = *(undefined4 **)(this + 0x5c);
  if (puVar1 != *(undefined4 **)(this + 0x60)) {
    do {
      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);
      puVar1 = puVar1 + 1;
    } while (*(undefined4 **)(this + 0x60) != puVar1);
  }
  return;
}


lui gp,0x22
addiu gp,gp,-0x261c
addu gp,gp,t9
addiu sp,sp,-0x40
lw t9,-0x6c30(gp)
sw s1,0x2c(sp)
or s1,a0,zero
addiu a0,a0,0xac
sw gp,0x20(sp)
sw s3,0x34(sp)
or s3,a2,zero
sw s2,0x30(sp)
or s2,a1,zero
sw s0,0x28(sp)
sw ra,0x3c(sp)
bal 0x0020c300
_sw s4,0x38(sp)
lw s0,0x18(s1)
lw v0,0x1c(s1)
beq s0,v0,0x0021c880
_lw gp,0x20(sp)
lw s4,-0x6c48(gp)
lw a0,0x0(s0)
or v0,zero,zero
or v1,zero,zero
sw zero,0x18(sp)
or a3,zero,zero
sw v0,0x10(sp)
sw v1,0x14(sp)
or a2,s3,zero
or t9,s4,zero
bal 0x0021bfcc
_or a1,s2,zero
addiu s0,s0,0x4
lw v0,0x1c(s1)
bne v0,s0,0x0021c844
_lw gp,0x20(sp)
lw s0,0x5c(s1)
lw v0,0x60(s1)
beq s0,v0,0x0021c8b4
_lw s4,-0x6c2c(gp)
lw a0,0x0(s0)
or a2,s3,zero
or t9,s4,zero
bal 0x0021c518
_or a1,s2,zero
addiu s0,s0,0x4
lw v0,0x60(s1)
bne v0,s0,0x0021c890
_nop
lw ra,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x40
(translation_unit "/* gold::Script_options::finalize_symbols(gold::Symbol_table*, gold::Layout const*) */\n\nvoid __thiscall\ngold::Script_options::finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)\n\n{\n  undefined4 *puVar1;\n  \n  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);\n  puVar1 = *(undefined4 **)(this + 0x18);\n  if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }\n  puVar1 = *(undefined4 **)(this + 0x5c);\n  if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Script_options::finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)\n\n{\n  undefined4 *puVar1;\n  \n  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);\n  puVar1 = *(undefined4 **)(this + 0x18);\n  if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }\n  puVar1 = *(undefined4 **)(this + 0x5c);\n  if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_options::" identifier : : identifier : :) (function_declarator "finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)" identifier (parameter_list "(Script_options *this,Symbol_table *param_1,Layout *param_2)" ( (parameter_declaration "Script_options *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "Layout *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);\n  puVar1 = *(undefined4 **)(this + 0x18);\n  if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }\n  puVar1 = *(undefined4 **)(this + 0x5c);\n  if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (labeled_statement "Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);" statement_identifier : (ERROR ":" :) (expression_statement "finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);" (call_expression "finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2)" identifier (argument_list "((Script_sections *)(this + 0xac),param_1,param_2)" ( (cast_expression "(Script_sections *)(this + 0xac)" ( (type_descriptor "Script_sections *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xac)" ( (binary_expression "this + 0xac" identifier + number_literal) ))) , identifier , identifier ))) ;)) (expression_statement "puVar1 = *(undefined4 **)(this + 0x18);" (assignment_expression "puVar1 = *(undefined4 **)(this + 0x18)" identifier = (pointer_expression "*(undefined4 **)(this + 0x18)" * (cast_expression "(undefined4 **)(this + 0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }" if (parenthesized_expression "(puVar1 != *(undefined4 **)(this + 0x1c))" ( (binary_expression "puVar1 != *(undefined4 **)(this + 0x1c)" identifier != (pointer_expression "*(undefined4 **)(this + 0x1c)" * (cast_expression "(undefined4 **)(this + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }" { (do_statement "do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);" do (compound_statement "{\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    }" { (labeled_statement "Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;" statement_identifier : (ERROR ":" :) (expression_statement "finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;" (call_expression "finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)" identifier (argument_list "((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)" ( (cast_expression "(Symbol_table *)*puVar1" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) , (cast_expression "(Layout *)param_1" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (call_expression "SUB41(param_2,0)" identifier (argument_list "(param_2,0)" ( identifier , number_literal ))) , number_literal , (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(undefined4 **)(this + 0x1c) != puVar1)" ( (binary_expression "*(undefined4 **)(this + 0x1c) != puVar1" (pointer_expression "*(undefined4 **)(this + 0x1c)" * (cast_expression "(undefined4 **)(this + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) )))) != identifier) )) ;) })) (expression_statement "puVar1 = *(undefined4 **)(this + 0x5c);" (assignment_expression "puVar1 = *(undefined4 **)(this + 0x5c)" identifier = (pointer_expression "*(undefined4 **)(this + 0x5c)" * (cast_expression "(undefined4 **)(this + 0x5c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }" if (parenthesized_expression "(puVar1 != *(undefined4 **)(this + 0x60))" ( (binary_expression "puVar1 != *(undefined4 **)(this + 0x60)" identifier != (pointer_expression "*(undefined4 **)(this + 0x60)" * (cast_expression "(undefined4 **)(this + 0x60)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }" { (do_statement "do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);" do (compound_statement "{\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    }" { (labeled_statement "Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);" statement_identifier : (ERROR ":" :) (expression_statement "check((Script_assertion *)*puVar1,param_1,param_2);" (call_expression "check((Script_assertion *)*puVar1,param_1,param_2)" identifier (argument_list "((Script_assertion *)*puVar1,param_1,param_2)" ( (cast_expression "(Script_assertion *)*puVar1" ( (type_descriptor "Script_assertion *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) , identifier , identifier ))) ;)) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(undefined4 **)(this + 0x60) != puVar1)" ( (binary_expression "*(undefined4 **)(this + 0x60) != puVar1" (pointer_expression "*(undefined4 **)(this + 0x60)" * (cast_expression "(undefined4 **)(this + 0x60)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* WARNING: Enum "STT": Some values do not have unique names */\n/* DWARF original prototype: void finalize_symbols(Script_options * this, Symbol_table * symtab,\n   Layout * layout) */\n\nvoid __thiscall\ngold::Script_options::finalize_symbols(Script_options *this,Symbol_table *symtab,Layout *layout)\n\n{\n  pointer ppSVar1;\n  pointer ppSVar2;\n  \n  Script_sections::finalize_symbols(&this->script_sections_,symtab,layout);\n  ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start;\n  if (ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish) {\n    do {\n      Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);\n      ppSVar1 = ppSVar1 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar1);\n  }\n  ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n            _M_impl._M_start;\n  if (ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>._M_impl.\n      _M_finish) {\n    do {\n      Script_assertion::check(*ppSVar2,symtab,layout);\n      ppSVar2 = ppSVar2 + 1;\n    } while ((this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish != ppSVar2);\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment comment (function_definition "void __thiscall\ngold::Script_options::finalize_symbols(Script_options *this,Symbol_table *symtab,Layout *layout)\n\n{\n  pointer ppSVar1;\n  pointer ppSVar2;\n  \n  Script_sections::finalize_symbols(&this->script_sections_,symtab,layout);\n  ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start;\n  if (ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish) {\n    do {\n      Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);\n      ppSVar1 = ppSVar1 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar1);\n  }\n  ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n            _M_impl._M_start;\n  if (ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>._M_impl.\n      _M_finish) {\n    do {\n      Script_assertion::check(*ppSVar2,symtab,layout);\n      ppSVar2 = ppSVar2 + 1;\n    } while ((this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish != ppSVar2);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_options::" identifier : : identifier : :) (function_declarator "finalize_symbols(Script_options *this,Symbol_table *symtab,Layout *layout)" identifier (parameter_list "(Script_options *this,Symbol_table *symtab,Layout *layout)" ( (parameter_declaration "Script_options *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) ))) (compound_statement "{\n  pointer ppSVar1;\n  pointer ppSVar2;\n  \n  Script_sections::finalize_symbols(&this->script_sections_,symtab,layout);\n  ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start;\n  if (ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish) {\n    do {\n      Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);\n      ppSVar1 = ppSVar1 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar1);\n  }\n  ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n            _M_impl._M_start;\n  if (ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>._M_impl.\n      _M_finish) {\n    do {\n      Script_assertion::check(*ppSVar2,symtab,layout);\n      ppSVar2 = ppSVar2 + 1;\n    } while ((this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish != ppSVar2);\n  }\n  return;\n}" { (declaration "pointer ppSVar1;" type_identifier identifier ;) (declaration "pointer ppSVar2;" type_identifier identifier ;) (labeled_statement "Script_sections::finalize_symbols(&this->script_sections_,symtab,layout);" statement_identifier : (ERROR ":" :) (expression_statement "finalize_symbols(&this->script_sections_,symtab,layout);" (call_expression "finalize_symbols(&this->script_sections_,symtab,layout)" identifier (argument_list "(&this->script_sections_,symtab,layout)" ( (pointer_expression "&this->script_sections_" & (field_expression "this->script_sections_" identifier -> field_identifier)) , identifier , identifier ))) ;)) (expression_statement "ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start;" (field_expression "ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start" (field_expression "ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl" (binary_expression "ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_" (binary_expression "ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold" (binary_expression "ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std" (assignment_expression "ppSVar1 = (this->symbol_assignments_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->symbol_assignments_).\n            super__Vector_base<gold" (field_expression "(this->symbol_assignments_).\n            super__Vector_base" (parenthesized_expression "(this->symbol_assignments_)" ( (field_expression "this->symbol_assignments_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Symbol_assignment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish) {\n    do {\n      Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);\n      ppSVar1 = ppSVar1 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar1);\n  }" if (parenthesized_expression "(ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish)" ( (field_expression "ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish" (field_expression "ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl" (binary_expression "ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_" (binary_expression "ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold" (binary_expression "ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std" (binary_expression "ppSVar1 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold" identifier != (binary_expression "(this->symbol_assignments_).\n      super__Vector_base<gold" (field_expression "(this->symbol_assignments_).\n      super__Vector_base" (parenthesized_expression "(this->symbol_assignments_)" ( (field_expression "this->symbol_assignments_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Symbol_assignment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    do {\n      Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);\n      ppSVar1 = ppSVar1 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar1);\n  }" { (do_statement "do {\n      Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);\n      ppSVar1 = ppSVar1 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar1);" do (compound_statement "{\n      Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);\n      ppSVar1 = ppSVar1 + 1;\n    }" { (labeled_statement "Symbol_assignment::finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);" statement_identifier : (ERROR ":" :) (expression_statement "finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0);" (call_expression "finalize_maybe_dot(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0)" identifier (argument_list "(*ppSVar1,symtab,layout,false,0,(Output_section *)0x0)" ( (pointer_expression "*ppSVar1" * identifier) , identifier , identifier , false , number_literal , (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (expression_statement "ppSVar1 = ppSVar1 + 1;" (assignment_expression "ppSVar1 = ppSVar1 + 1" identifier = (binary_expression "ppSVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar1)" ( (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar1" (field_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish" (field_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl" (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_" (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold" (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std" (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold" (field_expression "(this->symbol_assignments_).\n             super__Vector_base" (parenthesized_expression "(this->symbol_assignments_)" ( (field_expression "this->symbol_assignments_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (expression_statement "ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n            _M_impl._M_start;" (field_expression "ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n            _M_impl._M_start" (field_expression "ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n            _M_impl" (binary_expression "ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_" (binary_expression "ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std::allocator<gold" (binary_expression "ppSVar2 = (this->assertions_).\n            super__Vector_base<gold::Script_assertion*,_std" (assignment_expression "ppSVar2 = (this->assertions_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->assertions_).\n            super__Vector_base<gold" (field_expression "(this->assertions_).\n            super__Vector_base" (parenthesized_expression "(this->assertions_)" ( (field_expression "this->assertions_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Script_assertion" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Script_assertion" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>._M_impl.\n      _M_finish) {\n    do {\n      Script_assertion::check(*ppSVar2,symtab,layout);\n      ppSVar2 = ppSVar2 + 1;\n    } while ((this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish != ppSVar2);\n  }" if (parenthesized_expression "(ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>._M_impl.\n      _M_finish)" ( (field_expression "ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>._M_impl.\n      _M_finish" (field_expression "ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>._M_impl" (binary_expression "ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_" (binary_expression "ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std::allocator<gold" (binary_expression "ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold::Script_assertion*,_std" (binary_expression "ppSVar2 !=\n      (this->assertions_).\n      super__Vector_base<gold" identifier != (binary_expression "(this->assertions_).\n      super__Vector_base<gold" (field_expression "(this->assertions_).\n      super__Vector_base" (parenthesized_expression "(this->assertions_)" ( (field_expression "this->assertions_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Script_assertion" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Script_assertion" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    do {\n      Script_assertion::check(*ppSVar2,symtab,layout);\n      ppSVar2 = ppSVar2 + 1;\n    } while ((this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish != ppSVar2);\n  }" { (do_statement "do {\n      Script_assertion::check(*ppSVar2,symtab,layout);\n      ppSVar2 = ppSVar2 + 1;\n    } while ((this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish != ppSVar2);" do (compound_statement "{\n      Script_assertion::check(*ppSVar2,symtab,layout);\n      ppSVar2 = ppSVar2 + 1;\n    }" { (labeled_statement "Script_assertion::check(*ppSVar2,symtab,layout);" statement_identifier : (ERROR ":" :) (expression_statement "check(*ppSVar2,symtab,layout);" (call_expression "check(*ppSVar2,symtab,layout)" identifier (argument_list "(*ppSVar2,symtab,layout)" ( (pointer_expression "*ppSVar2" * identifier) , identifier , identifier ))) ;)) (expression_statement "ppSVar2 = ppSVar2 + 1;" (assignment_expression "ppSVar2 = ppSVar2 + 1" identifier = (binary_expression "ppSVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish != ppSVar2)" ( (binary_expression "(this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish != ppSVar2" (field_expression "(this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl._M_finish" (field_expression "(this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_>.\n             _M_impl" (binary_expression "(this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold::Script_assertion*>_" (binary_expression "(this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std::allocator<gold" (binary_expression "(this->assertions_).\n             super__Vector_base<gold::Script_assertion*,_std" (binary_expression "(this->assertions_).\n             super__Vector_base<gold" (field_expression "(this->assertions_).\n             super__Vector_base" (parenthesized_expression "(this->assertions_)" ( (field_expression "this->assertions_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Script_assertion" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Script_assertion" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __thiscall\ngold::Script_options::finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)\n\n{\n  undefined4 *puVar1;\n  \n  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);\n  puVar1 = *(undefined4 **)(this + 0x18);\n  if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }\n  puVar1 = *(undefined4 **)(this + 0x5c);\n  if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }\n  return;\n}\n\n" (function_definition "void __thiscall\ngold::Script_options::finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)\n\n{\n  undefined4 *puVar1;\n  \n  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);\n  puVar1 = *(undefined4 **)(this + 0x18);\n  if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }\n  puVar1 = *(undefined4 **)(this + 0x5c);\n  if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_options::" identifier : : identifier : :) (function_declarator "finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)" identifier (parameter_list "(Script_options *this,Symbol_table *param_1,Layout *param_2)" ( (parameter_declaration "Script_options *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "Layout *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);\n  puVar1 = *(undefined4 **)(this + 0x18);\n  if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }\n  puVar1 = *(undefined4 **)(this + 0x5c);\n  if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (labeled_statement "Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);" statement_identifier : (ERROR ":" :) (expression_statement "finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);" (call_expression "finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2)" identifier (argument_list "((Script_sections *)(this + 0xac),param_1,param_2)" ( (cast_expression "(Script_sections *)(this + 0xac)" ( (type_descriptor "Script_sections *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xac)" ( (binary_expression "this + 0xac" identifier + number_literal) ))) , identifier , identifier ))) ;)) (expression_statement "puVar1 = *(undefined4 **)(this + 0x18);" (assignment_expression "puVar1 = *(undefined4 **)(this + 0x18)" identifier = (pointer_expression "*(undefined4 **)(this + 0x18)" * (cast_expression "(undefined4 **)(this + 0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }" if (parenthesized_expression "(puVar1 != *(undefined4 **)(this + 0x1c))" ( (binary_expression "puVar1 != *(undefined4 **)(this + 0x1c)" identifier != (pointer_expression "*(undefined4 **)(this + 0x1c)" * (cast_expression "(undefined4 **)(this + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }" { (do_statement "do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);" do (compound_statement "{\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    }" { (labeled_statement "Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;" statement_identifier : (ERROR ":" :) (expression_statement "finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;" (call_expression "finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)" identifier (argument_list "((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)" ( (cast_expression "(Symbol_table *)*puVar1" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) , (cast_expression "(Layout *)param_1" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (call_expression "SUB41(param_2,0)" identifier (argument_list "(param_2,0)" ( identifier , number_literal ))) , number_literal , (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(undefined4 **)(this + 0x1c) != puVar1)" ( (binary_expression "*(undefined4 **)(this + 0x1c) != puVar1" (pointer_expression "*(undefined4 **)(this + 0x1c)" * (cast_expression "(undefined4 **)(this + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) )))) != identifier) )) ;) })) (expression_statement "puVar1 = *(undefined4 **)(this + 0x5c);" (assignment_expression "puVar1 = *(undefined4 **)(this + 0x5c)" identifier = (pointer_expression "*(undefined4 **)(this + 0x5c)" * (cast_expression "(undefined4 **)(this + 0x5c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }" if (parenthesized_expression "(puVar1 != *(undefined4 **)(this + 0x60))" ( (binary_expression "puVar1 != *(undefined4 **)(this + 0x60)" identifier != (pointer_expression "*(undefined4 **)(this + 0x60)" * (cast_expression "(undefined4 **)(this + 0x60)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }" { (do_statement "do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);" do (compound_statement "{\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    }" { (labeled_statement "Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);" statement_identifier : (ERROR ":" :) (expression_statement "check((Script_assertion *)*puVar1,param_1,param_2);" (call_expression "check((Script_assertion *)*puVar1,param_1,param_2)" identifier (argument_list "((Script_assertion *)*puVar1,param_1,param_2)" ( (cast_expression "(Script_assertion *)*puVar1" ( (type_descriptor "Script_assertion *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) , identifier , identifier ))) ;)) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(undefined4 **)(this + 0x60) != puVar1)" ( (binary_expression "*(undefined4 **)(this + 0x60) != puVar1" (pointer_expression "*(undefined4 **)(this + 0x60)" * (cast_expression "(undefined4 **)(this + 0x60)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (call_expression IDENT (argument_list ( IDENT , LIT ))) , LIT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void __thiscall\ngold::Script_options::finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)\n\n{\n  undefined4 *puVar1;\n  \n  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);\n  puVar1 = *(undefined4 **)(this + 0x18);\n  if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }\n  puVar1 = *(undefined4 **)(this + 0x5c);\n  if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }\n  return;\n}" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Script_options::" (identifier "gold") (: ":") (: ":") (identifier "Script_options") (: ":") (: ":")) (function_declarator "finalize_symbols(Script_options *this,Symbol_table *param_1,Layout *param_2)" (identifier "finalize_symbols") (parameter_list "(Script_options *this,Symbol_table *param_1,Layout *param_2)" (( "(") (parameter_declaration "Script_options *this" (type_identifier "Script_options") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Symbol_table *param_1" (type_identifier "Symbol_table") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "Layout *param_2" (type_identifier "Layout") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  \n  Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);\n  puVar1 = *(undefined4 **)(this + 0x18);\n  if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }\n  puVar1 = *(undefined4 **)(this + 0x5c);\n  if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (labeled_statement "Script_sections::finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);" (statement_identifier "Script_sections") (: ":") (ERROR ":" (: ":")) (expression_statement "finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2);" (call_expression "finalize_symbols((Script_sections *)(this + 0xac),param_1,param_2)" (identifier "finalize_symbols") (argument_list "((Script_sections *)(this + 0xac),param_1,param_2)" (( "(") (cast_expression "(Script_sections *)(this + 0xac)" (( "(") (type_descriptor "Script_sections *" (type_identifier "Script_sections") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xac)" (( "(") (binary_expression "this + 0xac" (identifier "this") (+ "+") (number_literal "0xac")) () ")"))) (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";"))) (expression_statement "puVar1 = *(undefined4 **)(this + 0x18);" (assignment_expression "puVar1 = *(undefined4 **)(this + 0x18)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(this + 0x18)" (* "*") (cast_expression "(undefined4 **)(this + 0x18)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x18)" (( "(") (binary_expression "this + 0x18" (identifier "this") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (puVar1 != *(undefined4 **)(this + 0x1c)) {\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }" (if "if") (parenthesized_expression "(puVar1 != *(undefined4 **)(this + 0x1c))" (( "(") (binary_expression "puVar1 != *(undefined4 **)(this + 0x1c)" (identifier "puVar1") (!= "!=") (pointer_expression "*(undefined4 **)(this + 0x1c)" (* "*") (cast_expression "(undefined4 **)(this + 0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x1c)" (( "(") (binary_expression "this + 0x1c" (identifier "this") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);\n  }" ({ "{") (do_statement "do {\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x1c) != puVar1);" (do "do") (compound_statement "{\n      Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;\n      puVar1 = puVar1 + 1;\n    }" ({ "{") (labeled_statement "Symbol_assignment::finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;" (statement_identifier "Symbol_assignment") (: ":") (ERROR ":" (: ":")) (expression_statement "finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)\n      ;" (call_expression "finalize_maybe_dot\n                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)" (identifier "finalize_maybe_dot") (argument_list "((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)" (( "(") (cast_expression "(Symbol_table *)*puVar1" (( "(") (type_descriptor "Symbol_table *" (type_identifier "Symbol_table") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (, ",") (cast_expression "(Layout *)param_1" (( "(") (type_descriptor "Layout *" (type_identifier "Layout") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) (, ",") (call_expression "SUB41(param_2,0)" (identifier "SUB41") (argument_list "(param_2,0)" (( "(") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (, ",") (number_literal "0") (, ",") (cast_expression "(Output_section *)0x0" (( "(") (type_descriptor "Output_section *" (type_identifier "Output_section") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) () ")"))) (; ";"))) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(undefined4 **)(this + 0x1c) != puVar1)" (( "(") (binary_expression "*(undefined4 **)(this + 0x1c) != puVar1" (pointer_expression "*(undefined4 **)(this + 0x1c)" (* "*") (cast_expression "(undefined4 **)(this + 0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x1c)" (( "(") (binary_expression "this + 0x1c" (identifier "this") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (identifier "puVar1")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar1 = *(undefined4 **)(this + 0x5c);" (assignment_expression "puVar1 = *(undefined4 **)(this + 0x5c)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(this + 0x5c)" (* "*") (cast_expression "(undefined4 **)(this + 0x5c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x5c)" (( "(") (binary_expression "this + 0x5c" (identifier "this") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (if_statement "if (puVar1 != *(undefined4 **)(this + 0x60)) {\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }" (if "if") (parenthesized_expression "(puVar1 != *(undefined4 **)(this + 0x60))" (( "(") (binary_expression "puVar1 != *(undefined4 **)(this + 0x60)" (identifier "puVar1") (!= "!=") (pointer_expression "*(undefined4 **)(this + 0x60)" (* "*") (cast_expression "(undefined4 **)(this + 0x60)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x60)" (( "(") (binary_expression "this + 0x60" (identifier "this") (+ "+") (number_literal "0x60")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);\n  }" ({ "{") (do_statement "do {\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    } while (*(undefined4 **)(this + 0x60) != puVar1);" (do "do") (compound_statement "{\n      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);\n      puVar1 = puVar1 + 1;\n    }" ({ "{") (labeled_statement "Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);" (statement_identifier "Script_assertion") (: ":") (ERROR ":" (: ":")) (expression_statement "check((Script_assertion *)*puVar1,param_1,param_2);" (call_expression "check((Script_assertion *)*puVar1,param_1,param_2)" (identifier "check") (argument_list "((Script_assertion *)*puVar1,param_1,param_2)" (( "(") (cast_expression "(Script_assertion *)*puVar1" (( "(") (type_descriptor "Script_assertion *" (type_identifier "Script_assertion") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";"))) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(undefined4 **)(this + 0x60) != puVar1)" (( "(") (binary_expression "*(undefined4 **)(this + 0x60) != puVar1" (pointer_expression "*(undefined4 **)(this + 0x60)" (* "*") (cast_expression "(undefined4 **)(this + 0x60)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x60)" (( "(") (binary_expression "this + 0x60" (identifier "this") (+ "+") (number_literal "0x60")) () ")")))) (!= "!=") (identifier "puVar1")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* WARNING: Enum "STT": Some values do not have unique names */
/* DWARF original prototype: void finalize_symbols(Script_options * this, Symbol_table * symtab,
   Layout * layout) */

void __thiscall
var_1::type_1::function_1(type_1 *this,type_2 *symtab,type_3 *layout)

{
  type_4 var_4;
  type_4 var_6;
  
  Script_sections::function_1(&this->script_sections_,symtab,layout);
  var_4 = (this->symbol_assignments_).
            super__Vector_base<var_1::Symbol_assignment*,var_2::allocator<var_1::Symbol_assignment*>var_3>.
            _M_impl._M_start;
  if (var_4 !=
      (this->symbol_assignments_).
      super__Vector_base<var_1::Symbol_assignment*,var_2::allocator<var_1::Symbol_assignment*>var_3>.
      _M_impl._M_finish) {
    do {
      Symbol_assignment::var_5(*var_4,symtab,layout,false,0,(type_5 *)0x0);
      var_4 = var_4 + 1;
    } while ((this->symbol_assignments_).
             super__Vector_base<var_1::Symbol_assignment*,var_2::allocator<var_1::Symbol_assignment*>var_3>
             ._M_impl._M_finish != var_4);
  }
  var_6 = (this->assertions_).
            super__Vector_base<var_1::Script_assertion*,var_2::allocator<var_1::Script_assertion*>var_3>.
            _M_impl._M_start;
  if (var_6 !=
      (this->assertions_).
      super__Vector_base<var_1::Script_assertion*,var_2::allocator<var_1::Script_assertion*>var_3>._M_impl.
      _M_finish) {
    do {
      Script_assertion::var_7(*var_6,symtab,layout);
      var_6 = var_6 + 1;
    } while ((this->assertions_).
             super__Vector_base<var_1::Script_assertion*,var_2::allocator<var_1::Script_assertion*>var_3>.
             _M_impl._M_finish != var_6);
  }
  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))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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))))))) consequence: (compound_statement (do_statement body: (compound_statement (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))) (number_literal) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) 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: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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))))))) consequence: (compound_statement (do_statement body: (compound_statement (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) 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: (identifier)))))) (return_statement))))

/* gold::Script_options::MASKED(gold::Symbol_table*, gold::Layout const*) */

void __thiscall
gold::Script_options::MASKED(Script_options *this,Symbol_table *param_1,Layout *param_2)

{
  undefined4 *puVar1;
  
  Script_sections::MASKED((Script_sections *)(this + 0xac),param_1,param_2);
  puVar1 = *(undefined4 **)(this + 0x18);
  if (puVar1 != *(undefined4 **)(this + 0x1c)) {
    do {
      Symbol_assignment::finalize_maybe_dot
                ((Symbol_table *)*puVar1,(Layout *)param_1,SUB41(param_2,0),0,(Output_section *)0x0)
      ;
      puVar1 = puVar1 + 1;
    } while (*(undefined4 **)(this + 0x1c) != puVar1);
  }
  puVar1 = *(undefined4 **)(this + 0x5c);
  if (puVar1 != *(undefined4 **)(this + 0x60)) {
    do {
      Script_assertion::check((Script_assertion *)*puVar1,param_1,param_2);
      puVar1 = puVar1 + 1;
    } while (*(undefined4 **)(this + 0x60) != puVar1);
  }
  return;
}

