
/* 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_" */
/* DWARF original name: add_to_gdb_index<32, true>
   DWARF original prototype: void add_to_gdb_index<32,_true>(Layout * this, bool is_type_unit,
   Sized_relobj<32,_true> * object, uchar * symbols, off_t symbols_size, uint shndx, uint
   reloc_shndx, uint reloc_type) */

void __thiscall
gold::Layout::add_to_gdb_index<32,_true>
          (Layout *this,bool is_type_unit,Sized_relobj<32,_true> *object,uchar *symbols,
          off_t symbols_size,uint shndx,uint reloc_shndx,uint reloc_type)

{
  undefined *puVar1;
  Gdb_index *pGVar2;
  Output_section *pOVar3;
  undefined3 in_register_00000014;
  
  pGVar2 = this->gdb_index_data_;
  if (pGVar2 == (Gdb_index *)0x0) {
    pOVar3 = choose_output_section
                       (this,(Relobj *)0x0,PTR_s__s_004c1a50 + 0x40e8,1,0,false,ORDER_INVALID,false,
                        false,false);
    if (pOVar3 == (Output_section *)0x0) {
      return;
    }
    pGVar2 = (Gdb_index *)(*(code *)PTR_operator_new_004c13a8)(0x138);
                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */
    (*(code *)PTR_Gdb_index_004c2500)(pGVar2,pOVar3);
    puVar1 = PTR_add_output_section_data_004c2104;
    this->gdb_index_data_ = pGVar2;
    (*(code *)puVar1)(pOVar3,pGVar2);
    *(uint *)&pOVar3->field_0x98 = *(uint *)&pOVar3->field_0x98 & 0xf7ffffff | 0x8000000;
    pGVar2 = this->gdb_index_data_;
  }
                    /* WARNING: Could not recover jumptable at 0x001c9610. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)PTR_scan_debug_info_004c24fc)
            (pGVar2,CONCAT31(in_register_00000014,is_type_unit),object,symbols);
  return;
}



/* void gold::Layout::add_to_gdb_index<32, true>(bool, gold::Sized_relobj<32, true>*, unsigned char
   const*, long long, unsigned int, unsigned int, unsigned int) */

void __thiscall
gold::Layout::add_to_gdb_index<32,true>
          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,
          uint param_5,uint param_6,uint param_7)

{
  undefined *puVar1;
  int iVar2;
  undefined4 uVar3;
  undefined3 in_register_00000014;
  
  iVar2 = *(int *)(this + 0x1ac);
  if (iVar2 == 0) {
    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);
    if (iVar2 == 0) {
      return;
    }
    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);
                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */
    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);
    puVar1 = PTR_add_output_section_data_004c2104;
    *(undefined4 *)(this + 0x1ac) = uVar3;
    (*(code *)puVar1)(iVar2,uVar3);
    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;
    iVar2 = *(int *)(this + 0x1ac);
  }
                    /* WARNING: Could not recover jumptable at 0x001c9610. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)PTR_scan_debug_info_004c24fc)
            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3);
  return;
}


lui gp,0x30
addiu gp,gp,-0x31c
addu gp,gp,t9
addiu sp,sp,-0x68
lw v0,0x1ac(a0)
sw gp,0x30(sp)
sw s8,0x60(sp)
or s8,a3,zero
sw s7,0x5c(sp)
sw s6,0x58(sp)
or s6,a2,zero
sw s5,0x54(sp)
sw s4,0x50(sp)
or s4,a1,zero
sw s3,0x4c(sp)
sw s2,0x48(sp)
sw s1,0x44(sp)
sw ra,0x64(sp)
sw s0,0x40(sp)
lw s3,0x7c(sp)
lw s2,0x78(sp)
lw s1,0x80(sp)
lw s5,0x84(sp)
beq v0,zero,0x001c9618
_lw s7,0x88(sp)
lw ra,0x64(sp)
or a3,s8,zero
lw s0,0x40(sp)
or a2,s6,zero
lw s8,0x60(sp)
or a1,s4,zero
lw s6,0x58(sp)
or a0,v0,zero
lw s4,0x50(sp)
lw t9,-0x6d44(gp)
sw s7,0x88(sp)
sw s5,0x84(sp)
sw s1,0x80(sp)
sw s3,0x7c(sp)
sw s2,0x78(sp)
lw s7,0x5c(sp)
lw s5,0x54(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
jr t9
_addiu sp,sp,0x68
lw a2,-0x77f0(gp)
or v1,zero,zero
or v0,zero,zero
lw t9,-0x6f20(gp)
li a3,0x1
sw v1,0x14(sp)
or a1,zero,zero
sw v0,0x10(sp)
addiu a2,a2,0x40e8
sw zero,0x28(sp)
sw zero,0x24(sp)
or s0,a0,zero
sw zero,0x20(sp)
sw zero,0x1c(sp)
bal 0x001bac78
_sw zero,0x18(sp)
lw gp,0x30(sp)
beq v0,zero,0x001c96c4
_sw v0,0x38(sp)
lw t9,-0x7e98(gp)
jalr t9
_li a0,0x138
lw gp,0x30(sp)
or a0,v0,zero
lw a1,0x38(sp)
lw t9,-0x6d40(gp)
jalr t9
_sw v0,0x3c(sp)
lw gp,0x30(sp)
lw v1,0x3c(sp)
lw a0,0x38(sp)
lw t9,-0x713c(gp)
or a1,v1,zero
jalr t9
_sw v1,0x1ac(s0)
li v1,0x1
lw a0,0x38(sp)
lw gp,0x30(sp)
lw v0,0x98(a0)
ins v0,v1,0x1b,0x1
sw v0,0x98(a0)
b 0x001c95c0
_lw v0,0x1ac(s0)
lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
(translation_unit "/* void gold::Layout::add_to_gdb_index<32, true>(bool, gold::Sized_relobj<32, true>*, unsigned char\n   const*, long long, unsigned int, unsigned int, unsigned int) */\n\nvoid __thiscall\ngold::Layout::add_to_gdb_index<32,true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined3 in_register_00000014;\n  \n  iVar2 = *(int *)(this + 0x1ac);\n  if (iVar2 == 0) {\n    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);\n    if (iVar2 == 0) {\n      return;\n    }\n    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);\n                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */\n    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    *(undefined4 *)(this + 0x1ac) = uVar3;\n    (*(code *)puVar1)(iVar2,uVar3);\n    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;\n    iVar2 = *(int *)(this + 0x1ac);\n  }\n                    /* WARNING: Could not recover jumptable at 0x001c9610. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(code *)PTR_scan_debug_info_004c24fc)\n            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3);\n  return;\n}\n\n" comment (declaration "void __thiscall\ngold::Layout::add_to_gdb_index<32,true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)\n\n{\n  undefined *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)\n\n{\n  undefined" (function_declarator "true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)" identifier (ERROR ">" >) (parameter_list "(Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "bool param_1" primitive_type identifier) , (parameter_declaration "Sized_relobj *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uchar *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "longlong param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined3 in_register_00000014;" type_identifier identifier ;) (expression_statement "iVar2 = *(int *)(this + 0x1ac);" (assignment_expression "iVar2 = *(int *)(this + 0x1ac)" identifier = (pointer_expression "*(int *)(this + 0x1ac)" * (cast_expression "(int *)(this + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1ac)" ( (binary_expression "this + 0x1ac" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);\n    if (iVar2 == 0) {\n      return;\n    }\n    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);\n                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */\n    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    *(undefined4 *)(this + 0x1ac) = uVar3;\n    (*(code *)puVar1)(iVar2,uVar3);\n    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;\n    iVar2 = *(int *)(this + 0x1ac);\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);\n    if (iVar2 == 0) {\n      return;\n    }\n    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);\n                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */\n    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    *(undefined4 *)(this + 0x1ac) = uVar3;\n    (*(code *)puVar1)(iVar2,uVar3);\n    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;\n    iVar2 = *(int *)(this + 0x1ac);\n  }" { (expression_statement "iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);" (assignment_expression "iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" identifier = (call_expression "choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" identifier (argument_list "(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" ( identifier , number_literal , (binary_expression "PTR_s__s_004c1a50 + 0x40e8" identifier + number_literal) , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);" (assignment_expression "uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138)" identifier = (call_expression "(*(code *)PTR_operator_new_004c13a8)(0x138)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" ( (pointer_expression "*(code *)PTR_operator_new_004c13a8" * (cast_expression "(code *)PTR_operator_new_004c13a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x138)" ( number_literal )))) ;) comment (expression_statement "(*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);" (call_expression "(*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2)" (parenthesized_expression "(*(code *)PTR_Gdb_index_004c2500)" ( (pointer_expression "*(code *)PTR_Gdb_index_004c2500" * (cast_expression "(code *)PTR_Gdb_index_004c2500" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3,iVar2)" ( identifier , identifier ))) ;) (expression_statement "puVar1 = PTR_add_output_section_data_004c2104;" (assignment_expression "puVar1 = PTR_add_output_section_data_004c2104" identifier = identifier) ;) (expression_statement "*(undefined4 *)(this + 0x1ac) = uVar3;" (assignment_expression "*(undefined4 *)(this + 0x1ac) = uVar3" (pointer_expression "*(undefined4 *)(this + 0x1ac)" * (cast_expression "(undefined4 *)(this + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1ac)" ( (binary_expression "this + 0x1ac" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)puVar1)(iVar2,uVar3);" (call_expression "(*(code *)puVar1)(iVar2,uVar3)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,uVar3)" ( identifier , identifier ))) ;) (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000" (binary_expression "*(uint *)(iVar2 + 0x98) & 0xf7ffffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "iVar2 = *(int *)(this + 0x1ac);" (assignment_expression "iVar2 = *(int *)(this + 0x1ac)" identifier = (pointer_expression "*(int *)(this + 0x1ac)" * (cast_expression "(int *)(this + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1ac)" ( (binary_expression "this + 0x1ac" identifier + number_literal) ))))) ;) })) comment comment (expression_statement "(*(code *)PTR_scan_debug_info_004c24fc)\n            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3);" (call_expression "(*(code *)PTR_scan_debug_info_004c24fc)\n            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3)" (parenthesized_expression "(*(code *)PTR_scan_debug_info_004c24fc)" ( (pointer_expression "*(code *)PTR_scan_debug_info_004c24fc" * (cast_expression "(code *)PTR_scan_debug_info_004c24fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3)" ( identifier , (call_expression "CONCAT31(in_register_00000014,param_1)" identifier (argument_list "(in_register_00000014,param_1)" ( identifier , identifier ))) , identifier , identifier ))) ;) (return_statement "return;" return ;) (ERROR "}" }))
(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/* DWARF original name: add_to_gdb_index<32, true>\n   DWARF original prototype: void add_to_gdb_index<32,_true>(Layout * this, bool is_type_unit,\n   Sized_relobj<32,_true> * object, uchar * symbols, off_t symbols_size, uint shndx, uint\n   reloc_shndx, uint reloc_type) */\n\nvoid __thiscall\ngold::Layout::add_to_gdb_index<32,_true>\n          (Layout *this,bool is_type_unit,Sized_relobj<32,_true> *object,uchar *symbols,\n          off_t symbols_size,uint shndx,uint reloc_shndx,uint reloc_type)\n\n{\n  undefined *puVar1;\n  Gdb_index *pGVar2;\n  Output_section *pOVar3;\n  undefined3 in_register_00000014;\n  \n  pGVar2 = this->gdb_index_data_;\n  if (pGVar2 == (Gdb_index *)0x0) {\n    pOVar3 = choose_output_section\n                       (this,(Relobj *)0x0,PTR_s__s_004c1a50 + 0x40e8,1,0,false,ORDER_INVALID,false,\n                        false,false);\n    if (pOVar3 == (Output_section *)0x0) {\n      return;\n    }\n    pGVar2 = (Gdb_index *)(*(code *)PTR_operator_new_004c13a8)(0x138);\n                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */\n    (*(code *)PTR_Gdb_index_004c2500)(pGVar2,pOVar3);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    this->gdb_index_data_ = pGVar2;\n    (*(code *)puVar1)(pOVar3,pGVar2);\n    *(uint *)&pOVar3->field_0x98 = *(uint *)&pOVar3->field_0x98 & 0xf7ffffff | 0x8000000;\n    pGVar2 = this->gdb_index_data_;\n  }\n                    /* WARNING: Could not recover jumptable at 0x001c9610. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(code *)PTR_scan_debug_info_004c24fc)\n            (pGVar2,CONCAT31(in_register_00000014,is_type_unit),object,symbols);\n  return;\n}\n\n" comment comment comment comment comment comment comment (declaration "void __thiscall\ngold::Layout::add_to_gdb_index<32,_true>\n          (Layout *this,bool is_type_unit,Sized_relobj<32,_true> *object,uchar *symbols,\n          off_t symbols_size,uint shndx,uint reloc_shndx,uint reloc_type)\n\n{\n  undefined *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>\n          (Layout *this,bool is_type_unit,Sized_relobj<32,_true> *object,uchar *symbols,\n          off_t symbols_size,uint shndx,uint reloc_shndx,uint reloc_type)\n\n{\n  undefined" (function_declarator "_true>\n          (Layout *this,bool is_type_unit,Sized_relobj<32,_true> *object,uchar *symbols,\n          off_t symbols_size,uint shndx,uint reloc_shndx,uint reloc_type)" identifier (ERROR ">" >) (parameter_list "(Layout *this,bool is_type_unit,Sized_relobj<32,_true> *object,uchar *symbols,\n          off_t symbols_size,uint shndx,uint reloc_shndx,uint reloc_type)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "bool is_type_unit" primitive_type identifier) , (parameter_declaration "Sized_relobj" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *object" type_identifier (ERROR ">" >) (pointer_declarator "*object" * identifier)) , (parameter_declaration "uchar *symbols" type_identifier (pointer_declarator "*symbols" * identifier)) , (parameter_declaration "off_t symbols_size" type_identifier identifier) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "uint reloc_shndx" type_identifier identifier) , (parameter_declaration "uint reloc_type" type_identifier identifier) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "Gdb_index *pGVar2;" type_identifier (pointer_declarator "*pGVar2" * identifier) ;) (declaration "Output_section *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "undefined3 in_register_00000014;" type_identifier identifier ;) (expression_statement "pGVar2 = this->gdb_index_data_;" (assignment_expression "pGVar2 = this->gdb_index_data_" identifier = (field_expression "this->gdb_index_data_" identifier -> field_identifier)) ;) (if_statement "if (pGVar2 == (Gdb_index *)0x0) {\n    pOVar3 = choose_output_section\n                       (this,(Relobj *)0x0,PTR_s__s_004c1a50 + 0x40e8,1,0,false,ORDER_INVALID,false,\n                        false,false);\n    if (pOVar3 == (Output_section *)0x0) {\n      return;\n    }\n    pGVar2 = (Gdb_index *)(*(code *)PTR_operator_new_004c13a8)(0x138);\n                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */\n    (*(code *)PTR_Gdb_index_004c2500)(pGVar2,pOVar3);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    this->gdb_index_data_ = pGVar2;\n    (*(code *)puVar1)(pOVar3,pGVar2);\n    *(uint *)&pOVar3->field_0x98 = *(uint *)&pOVar3->field_0x98 & 0xf7ffffff | 0x8000000;\n    pGVar2 = this->gdb_index_data_;\n  }" if (parenthesized_expression "(pGVar2 == (Gdb_index *)0x0)" ( (binary_expression "pGVar2 == (Gdb_index *)0x0" identifier == (cast_expression "(Gdb_index *)0x0" ( (type_descriptor "Gdb_index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pOVar3 = choose_output_section\n                       (this,(Relobj *)0x0,PTR_s__s_004c1a50 + 0x40e8,1,0,false,ORDER_INVALID,false,\n                        false,false);\n    if (pOVar3 == (Output_section *)0x0) {\n      return;\n    }\n    pGVar2 = (Gdb_index *)(*(code *)PTR_operator_new_004c13a8)(0x138);\n                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */\n    (*(code *)PTR_Gdb_index_004c2500)(pGVar2,pOVar3);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    this->gdb_index_data_ = pGVar2;\n    (*(code *)puVar1)(pOVar3,pGVar2);\n    *(uint *)&pOVar3->field_0x98 = *(uint *)&pOVar3->field_0x98 & 0xf7ffffff | 0x8000000;\n    pGVar2 = this->gdb_index_data_;\n  }" { (expression_statement "pOVar3 = choose_output_section\n                       (this,(Relobj *)0x0,PTR_s__s_004c1a50 + 0x40e8,1,0,false,ORDER_INVALID,false,\n                        false,false);" (assignment_expression "pOVar3 = choose_output_section\n                       (this,(Relobj *)0x0,PTR_s__s_004c1a50 + 0x40e8,1,0,false,ORDER_INVALID,false,\n                        false,false)" identifier = (call_expression "choose_output_section\n                       (this,(Relobj *)0x0,PTR_s__s_004c1a50 + 0x40e8,1,0,false,ORDER_INVALID,false,\n                        false,false)" identifier (argument_list "(this,(Relobj *)0x0,PTR_s__s_004c1a50 + 0x40e8,1,0,false,ORDER_INVALID,false,\n                        false,false)" ( identifier , (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "PTR_s__s_004c1a50 + 0x40e8" identifier + number_literal) , number_literal , number_literal , false , identifier , false , false , false )))) ;) (if_statement "if (pOVar3 == (Output_section *)0x0) {\n      return;\n    }" if (parenthesized_expression "(pOVar3 == (Output_section *)0x0)" ( (binary_expression "pOVar3 == (Output_section *)0x0" identifier == (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "pGVar2 = (Gdb_index *)(*(code *)PTR_operator_new_004c13a8)(0x138);" (assignment_expression "pGVar2 = (Gdb_index *)(*(code *)PTR_operator_new_004c13a8)(0x138)" identifier = (cast_expression "(Gdb_index *)(*(code *)PTR_operator_new_004c13a8)(0x138)" ( (type_descriptor "Gdb_index *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new_004c13a8)(0x138)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" ( (pointer_expression "*(code *)PTR_operator_new_004c13a8" * (cast_expression "(code *)PTR_operator_new_004c13a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x138)" ( number_literal ))))) ;) comment (expression_statement "(*(code *)PTR_Gdb_index_004c2500)(pGVar2,pOVar3);" (call_expression "(*(code *)PTR_Gdb_index_004c2500)(pGVar2,pOVar3)" (parenthesized_expression "(*(code *)PTR_Gdb_index_004c2500)" ( (pointer_expression "*(code *)PTR_Gdb_index_004c2500" * (cast_expression "(code *)PTR_Gdb_index_004c2500" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pGVar2,pOVar3)" ( identifier , identifier ))) ;) (expression_statement "puVar1 = PTR_add_output_section_data_004c2104;" (assignment_expression "puVar1 = PTR_add_output_section_data_004c2104" identifier = identifier) ;) (expression_statement "this->gdb_index_data_ = pGVar2;" (assignment_expression "this->gdb_index_data_ = pGVar2" (field_expression "this->gdb_index_data_" identifier -> field_identifier) = identifier) ;) (expression_statement "(*(code *)puVar1)(pOVar3,pGVar2);" (call_expression "(*(code *)puVar1)(pOVar3,pGVar2)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pOVar3,pGVar2)" ( identifier , identifier ))) ;) (expression_statement "*(uint *)&pOVar3->field_0x98 = *(uint *)&pOVar3->field_0x98 & 0xf7ffffff | 0x8000000;" (assignment_expression "*(uint *)&pOVar3->field_0x98 = *(uint *)&pOVar3->field_0x98 & 0xf7ffffff | 0x8000000" (pointer_expression "*(uint *)&pOVar3->field_0x98" * (cast_expression "(uint *)&pOVar3->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar3->field_0x98" & (field_expression "pOVar3->field_0x98" identifier -> field_identifier)))) = (binary_expression "*(uint *)&pOVar3->field_0x98 & 0xf7ffffff | 0x8000000" (binary_expression "*(uint *)&pOVar3->field_0x98 & 0xf7ffffff" (pointer_expression "*(uint *)&pOVar3->field_0x98" * (cast_expression "(uint *)&pOVar3->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar3->field_0x98" & (field_expression "pOVar3->field_0x98" identifier -> field_identifier)))) & number_literal) | number_literal)) ;) (expression_statement "pGVar2 = this->gdb_index_data_;" (assignment_expression "pGVar2 = this->gdb_index_data_" identifier = (field_expression "this->gdb_index_data_" identifier -> field_identifier)) ;) })) comment comment (expression_statement "(*(code *)PTR_scan_debug_info_004c24fc)\n            (pGVar2,CONCAT31(in_register_00000014,is_type_unit),object,symbols);" (call_expression "(*(code *)PTR_scan_debug_info_004c24fc)\n            (pGVar2,CONCAT31(in_register_00000014,is_type_unit),object,symbols)" (parenthesized_expression "(*(code *)PTR_scan_debug_info_004c24fc)" ( (pointer_expression "*(code *)PTR_scan_debug_info_004c24fc" * (cast_expression "(code *)PTR_scan_debug_info_004c24fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pGVar2,CONCAT31(in_register_00000014,is_type_unit),object,symbols)" ( identifier , (call_expression "CONCAT31(in_register_00000014,is_type_unit)" identifier (argument_list "(in_register_00000014,is_type_unit)" ( identifier , identifier ))) , identifier , identifier ))) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void __thiscall\ngold::Layout::add_to_gdb_index<32,true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined3 in_register_00000014;\n  \n  iVar2 = *(int *)(this + 0x1ac);\n  if (iVar2 == 0) {\n    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);\n    if (iVar2 == 0) {\n      return;\n    }\n    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);\n                    \n    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    *(undefined4 *)(this + 0x1ac) = uVar3;\n    (*(code *)puVar1)(iVar2,uVar3);\n    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;\n    iVar2 = *(int *)(this + 0x1ac);\n  }\n                    \n                    \n  (*(code *)PTR_scan_debug_info_004c24fc)\n            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3);\n  return;\n}\n\n" (declaration "void __thiscall\ngold::Layout::add_to_gdb_index<32,true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)\n\n{\n  undefined *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)\n\n{\n  undefined" (function_declarator "true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)" identifier (ERROR ">" >) (parameter_list "(Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "bool param_1" primitive_type identifier) , (parameter_declaration "Sized_relobj *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uchar *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "longlong param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined3 in_register_00000014;" type_identifier identifier ;) (expression_statement "iVar2 = *(int *)(this + 0x1ac);" (assignment_expression "iVar2 = *(int *)(this + 0x1ac)" identifier = (pointer_expression "*(int *)(this + 0x1ac)" * (cast_expression "(int *)(this + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1ac)" ( (binary_expression "this + 0x1ac" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);\n    if (iVar2 == 0) {\n      return;\n    }\n    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);\n                    \n    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    *(undefined4 *)(this + 0x1ac) = uVar3;\n    (*(code *)puVar1)(iVar2,uVar3);\n    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;\n    iVar2 = *(int *)(this + 0x1ac);\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);\n    if (iVar2 == 0) {\n      return;\n    }\n    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);\n                    \n    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    *(undefined4 *)(this + 0x1ac) = uVar3;\n    (*(code *)puVar1)(iVar2,uVar3);\n    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;\n    iVar2 = *(int *)(this + 0x1ac);\n  }" { (expression_statement "iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);" (assignment_expression "iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" identifier = (call_expression "choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" identifier (argument_list "(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" ( identifier , number_literal , (binary_expression "PTR_s__s_004c1a50 + 0x40e8" identifier + number_literal) , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal , number_literal )))) ;) (if_statement "if (iVar2 == 0) {\n      return;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);" (assignment_expression "uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138)" identifier = (call_expression "(*(code *)PTR_operator_new_004c13a8)(0x138)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" ( (pointer_expression "*(code *)PTR_operator_new_004c13a8" * (cast_expression "(code *)PTR_operator_new_004c13a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x138)" ( number_literal )))) ;) (expression_statement "(*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);" (call_expression "(*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2)" (parenthesized_expression "(*(code *)PTR_Gdb_index_004c2500)" ( (pointer_expression "*(code *)PTR_Gdb_index_004c2500" * (cast_expression "(code *)PTR_Gdb_index_004c2500" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3,iVar2)" ( identifier , identifier ))) ;) (expression_statement "puVar1 = PTR_add_output_section_data_004c2104;" (assignment_expression "puVar1 = PTR_add_output_section_data_004c2104" identifier = identifier) ;) (expression_statement "*(undefined4 *)(this + 0x1ac) = uVar3;" (assignment_expression "*(undefined4 *)(this + 0x1ac) = uVar3" (pointer_expression "*(undefined4 *)(this + 0x1ac)" * (cast_expression "(undefined4 *)(this + 0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1ac)" ( (binary_expression "this + 0x1ac" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)puVar1)(iVar2,uVar3);" (call_expression "(*(code *)puVar1)(iVar2,uVar3)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,uVar3)" ( identifier , identifier ))) ;) (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000" (binary_expression "*(uint *)(iVar2 + 0x98) & 0xf7ffffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "iVar2 = *(int *)(this + 0x1ac);" (assignment_expression "iVar2 = *(int *)(this + 0x1ac)" identifier = (pointer_expression "*(int *)(this + 0x1ac)" * (cast_expression "(int *)(this + 0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1ac)" ( (binary_expression "this + 0x1ac" identifier + number_literal) ))))) ;) })) (expression_statement "(*(code *)PTR_scan_debug_info_004c24fc)\n            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3);" (call_expression "(*(code *)PTR_scan_debug_info_004c24fc)\n            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3)" (parenthesized_expression "(*(code *)PTR_scan_debug_info_004c24fc)" ( (pointer_expression "*(code *)PTR_scan_debug_info_004c24fc" * (cast_expression "(code *)PTR_scan_debug_info_004c24fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3)" ( identifier , (call_expression "CONCAT31(in_register_00000014,param_1)" identifier (argument_list "(in_register_00000014,param_1)" ( identifier , identifier ))) , identifier , identifier ))) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) IDENT (ERROR < LIT) , (ERROR (function_declarator IDENT (ERROR >) (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) { IDENT) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , LIT , LIT , LIT , LIT , LIT , LIT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) , IDENT , IDENT ))) ;) (return_statement return ;) (ERROR }))
(declaration "void __thiscall\ngold::Layout::add_to_gdb_index<32,true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)\n\n{\n  undefined *puVar1;" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Layout::" (identifier "gold") (: ":") (: ":") (identifier "Layout") (: ":") (: ":")) (identifier "add_to_gdb_index") (ERROR "<32" (< "<") (number_literal "32")) (, ",") (ERROR "true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)\n\n{\n  undefined" (function_declarator "true>\n          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)" (identifier "true") (ERROR ">" (> ">")) (parameter_list "(Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,\n          uint param_5,uint param_6,uint param_7)" (( "(") (parameter_declaration "Layout *this" (type_identifier "Layout") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "bool param_1" (primitive_type "bool") (identifier "param_1")) (, ",") (parameter_declaration "Sized_relobj *param_2" (type_identifier "Sized_relobj") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uchar *param_3" (type_identifier "uchar") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "longlong param_4" (type_identifier "longlong") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) () ")"))) ({ "{") (identifier "undefined")) (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined3 in_register_00000014;" (type_identifier "undefined3") (identifier "in_register_00000014") (; ";")) (expression_statement "iVar2 = *(int *)(this + 0x1ac);" (assignment_expression "iVar2 = *(int *)(this + 0x1ac)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(this + 0x1ac)" (* "*") (cast_expression "(int *)(this + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1ac)" (( "(") (binary_expression "this + 0x1ac" (identifier "this") (+ "+") (number_literal "0x1ac")) () ")"))))) (; ";")) (if_statement "if (iVar2 == 0) {\n    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);\n    if (iVar2 == 0) {\n      return;\n    }\n    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);\n                    \n    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    *(undefined4 *)(this + 0x1ac) = uVar3;\n    (*(code *)puVar1)(iVar2,uVar3);\n    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;\n    iVar2 = *(int *)(this + 0x1ac);\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);\n    if (iVar2 == 0) {\n      return;\n    }\n    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);\n                    \n    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);\n    puVar1 = PTR_add_output_section_data_004c2104;\n    *(undefined4 *)(this + 0x1ac) = uVar3;\n    (*(code *)puVar1)(iVar2,uVar3);\n    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;\n    iVar2 = *(int *)(this + 0x1ac);\n  }" ({ "{") (expression_statement "iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);" (assignment_expression "iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" (identifier "iVar2") (= "=") (call_expression "choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" (identifier "choose_output_section") (argument_list "(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0)" (( "(") (identifier "this") (, ",") (number_literal "0") (, ",") (binary_expression "PTR_s__s_004c1a50 + 0x40e8" (identifier "PTR_s__s_004c1a50") (+ "+") (number_literal "0x40e8")) (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      return;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);" (assignment_expression "uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR_operator_new_004c13a8)(0x138)" (parenthesized_expression "(*(code *)PTR_operator_new_004c13a8)" (( "(") (pointer_expression "*(code *)PTR_operator_new_004c13a8" (* "*") (cast_expression "(code *)PTR_operator_new_004c13a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_new_004c13a8"))) () ")")) (argument_list "(0x138)" (( "(") (number_literal "0x138") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);" (call_expression "(*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2)" (parenthesized_expression "(*(code *)PTR_Gdb_index_004c2500)" (( "(") (pointer_expression "*(code *)PTR_Gdb_index_004c2500" (* "*") (cast_expression "(code *)PTR_Gdb_index_004c2500" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_Gdb_index_004c2500"))) () ")")) (argument_list "(uVar3,iVar2)" (( "(") (identifier "uVar3") (, ",") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "puVar1 = PTR_add_output_section_data_004c2104;" (assignment_expression "puVar1 = PTR_add_output_section_data_004c2104" (identifier "puVar1") (= "=") (identifier "PTR_add_output_section_data_004c2104")) (; ";")) (expression_statement "*(undefined4 *)(this + 0x1ac) = uVar3;" (assignment_expression "*(undefined4 *)(this + 0x1ac) = uVar3" (pointer_expression "*(undefined4 *)(this + 0x1ac)" (* "*") (cast_expression "(undefined4 *)(this + 0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1ac)" (( "(") (binary_expression "this + 0x1ac" (identifier "this") (+ "+") (number_literal "0x1ac")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "(*(code *)puVar1)(iVar2,uVar3);" (call_expression "(*(code *)puVar1)(iVar2,uVar3)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(iVar2,uVar3)" (( "(") (identifier "iVar2") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000" (pointer_expression "*(uint *)(iVar2 + 0x98)" (* "*") (cast_expression "(uint *)(iVar2 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x98)" (( "(") (binary_expression "iVar2 + 0x98" (identifier "iVar2") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000" (binary_expression "*(uint *)(iVar2 + 0x98) & 0xf7ffffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" (* "*") (cast_expression "(uint *)(iVar2 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x98)" (( "(") (binary_expression "iVar2 + 0x98" (identifier "iVar2") (+ "+") (number_literal "0x98")) () ")")))) (& "&") (number_literal "0xf7ffffff")) (| "|") (number_literal "0x8000000"))) (; ";")) (expression_statement "iVar2 = *(int *)(this + 0x1ac);" (assignment_expression "iVar2 = *(int *)(this + 0x1ac)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(this + 0x1ac)" (* "*") (cast_expression "(int *)(this + 0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1ac)" (( "(") (binary_expression "this + 0x1ac" (identifier "this") (+ "+") (number_literal "0x1ac")) () ")"))))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_scan_debug_info_004c24fc)\n            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3);" (call_expression "(*(code *)PTR_scan_debug_info_004c24fc)\n            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3)" (parenthesized_expression "(*(code *)PTR_scan_debug_info_004c24fc)" (( "(") (pointer_expression "*(code *)PTR_scan_debug_info_004c24fc" (* "*") (cast_expression "(code *)PTR_scan_debug_info_004c24fc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_scan_debug_info_004c24fc"))) () ")")) (argument_list "(iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3)" (( "(") (identifier "iVar2") (, ",") (call_expression "CONCAT31(in_register_00000014,param_1)" (identifier "CONCAT31") (argument_list "(in_register_00000014,param_1)" (( "(") (identifier "in_register_00000014") (, ",") (identifier "param_1") () ")"))) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (ERROR "}" (} "}"))

/* 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_" */
/* DWARF original name: add_to_gdb_index<32, true>
   DWARF original prototype: void add_to_gdb_index<32,_true>(Layout * this, bool is_type_unit,
   Sized_relobj<32,_true> * object, uchar * symbols, off_t symbols_size, uint shndx, uint
   reloc_shndx, uint reloc_type) */

void __thiscall
gold::Layout::add_to_gdb_index<32,_true>
          (Layout *this,bool is_type_unit,Sized_relobj<32,_true> *object,uchar *symbols,
          off_t symbols_size,type_6 shndx,type_6 reloc_shndx,type_6 reloc_type)

{
  undefined *puVar1;
  type_1 *var_1;
  type_2 *var_4;
  type_3 in_register_00000014;
  
  var_1 = this->gdb_index_data_;
  if (var_1 == (type_1 *)0x0) {
    var_4 = var_2
                       (this,(type_4 *)0x0,var_3 + 0x40e8,1,0,false,ORDER_INVALID,false,
                        false,false);
    if (var_4 == (type_2 *)0x0) {
      return;
    }
    var_1 = (type_1 *)(*(type_5 *)PTR_operator_new_004c13a8)(0x138);
                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */
    (*(type_5 *)PTR_Gdb_index_004c2500)(var_1,var_4);
    puVar1 = PTR_add_output_section_data_004c2104;
    this->gdb_index_data_ = var_1;
    (*(type_5 *)puVar1)(var_4,var_1);
    *(type_6 *)&var_4->field_0x98 = *(type_6 *)&var_4->field_0x98 & 0xf7ffffff | 0x8000000;
    var_1 = this->gdb_index_data_;
  }
                    /* WARNING: Could not recover jumptable at 0x001c9610. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(type_5 *)PTR_scan_debug_info_004c24fc)
            (var_1,var_5(in_register_00000014,is_type_unit),object,symbols);
  return;
}


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

/* void gold::Layout::add_to_gdb_index<32, true>(bool, gold::Sized_relobj<32, true>*, unsigned char
   const*, long long, unsigned int, unsigned int, unsigned int) */

void __thiscall
gold::Layout::MASKED
          (Layout *this,bool param_1,Sized_relobj *param_2,uchar *param_3,longlong param_4,
          uint param_5,uint param_6,uint param_7)

{
  undefined *puVar1;
  int iVar2;
  undefined4 uVar3;
  undefined3 in_register_00000014;
  
  iVar2 = *(int *)(this + 0x1ac);
  if (iVar2 == 0) {
    iVar2 = choose_output_section(this,0,PTR_s__s_004c1a50 + 0x40e8,1,0,0,0,0,0,0,0);
    if (iVar2 == 0) {
      return;
    }
    uVar3 = (*(code *)PTR_operator_new_004c13a8)(0x138);
                    /* try { // try from 001c9680 to 001c9687 has its CatchHandler @ 001c96f4 */
    (*(code *)PTR_Gdb_index_004c2500)(uVar3,iVar2);
    puVar1 = PTR_add_output_section_data_004c2104;
    *(undefined4 *)(this + 0x1ac) = uVar3;
    (*(code *)puVar1)(iVar2,uVar3);
    *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xf7ffffff | 0x8000000;
    iVar2 = *(int *)(this + 0x1ac);
  }
                    /* WARNING: Could not recover jumptable at 0x001c9610. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)PTR_scan_debug_info_004c24fc)
            (iVar2,CONCAT31(in_register_00000014,param_1),param_2,param_3);
  return;
}

