
/* 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 prototype: void write_sections_after_input_sections(Layout * this, Output_file *
   of) */

void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *of)

{
  int iVar1;
  Output_section *pOVar2;
  int iVar3;
  Output_file *pass;
  pointer ppOVar4;
  pointer ppOVar5;
  off_t oVar6;
  undefined4 in_stack_ffffffdc;
  
  if (this->any_postprocessing_sections_ != false) {
    pass = of;
    set_section_offsets(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of);
    oVar6 = set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass);
    iVar1 = (int)((ulonglong)oVar6 >> 0x20);
    iVar3 = *(int *)&this->output_file_size_;
    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))) {
      (*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);
      this->output_file_size_ = oVar6;
    }
  }
  ppOVar5 = (this->section_list_).
            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
            _M_impl._M_start;
  ppOVar4 = (this->section_list_).
            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
            _M_impl._M_finish;
  while (ppOVar5 != ppOVar4) {
    while( true ) {
      pOVar2 = *ppOVar5;
      ppOVar5 = ppOVar5 + 1;
      if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;
      (*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);
      ppOVar4 = (this->section_list_).
                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
                _M_impl._M_finish;
      if (ppOVar5 == ppOVar4) goto LAB_00120fe0;
    }
  }
LAB_00120fe0:
                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);
  return;
}



/* gold::Layout::write_sections_after_input_sections(gold::Output_file*) */

void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined8 uVar6;
  undefined4 uVar7;
  
  if (this[0x1d6] != (Layout)0x0) {
    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);
    uVar7 = 2;
    uVar6 = set_section_offsets(this);
    iVar1 = (int)((ulonglong)uVar6 >> 0x20);
    iVar3 = *(int *)(this + 0x1c8);
    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {
      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);
      *(undefined8 *)(this + 0x1c8) = uVar6;
    }
  }
  puVar5 = *(undefined4 **)(this + 0x13c);
  puVar4 = *(undefined4 **)(this + 0x140);
  while (puVar5 != puVar4) {
    while( true ) {
      piVar2 = (int *)*puVar5;
      puVar5 = puVar5 + 1;
      if (-1 < piVar2[0x26] << 4) break;
      (**(code **)(*piVar2 + 8))(piVar2,param_1);
      puVar4 = *(undefined4 **)(this + 0x140);
      if (puVar5 == puVar4) goto LAB_00120fe0;
    }
  }
LAB_00120fe0:
                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);
  return;
}


lui gp,0x32
addiu gp,gp,-0x6d94
addu gp,gp,t9
addiu sp,sp,-0x38
lbu v0,0x1d6(a0)
sw gp,0x18(sp)
sw s2,0x30(sp)
or s2,a1,zero
sw s1,0x2c(sp)
or s1,a0,zero
sw ra,0x34(sp)
bne v0,zero,0x0012100c
_sw s0,0x28(sp)
lw s0,0x13c(s1)
lw a2,0x140(s1)
beq s0,a2,0x00120fe0
_nop
lw v1,0x0(s0)
or a1,s2,zero
addiu s0,s0,0x4
lw v0,0x98(v1)
ext v0,v0,0x1b,0x1
beq v0,zero,0x00120fa0
_or a0,v1,zero
lw v0,0x0(v1)
lw t9,0x8(v0)
jalr t9
_nop
lw a2,0x140(s1)
bne s0,a2,0x00120fa8
_lw gp,0x18(sp)
lw v0,0x16c(s1)
or a1,s2,zero
lw ra,0x34(sp)
lw s2,0x30(sp)
or a0,v0,zero
lw s1,0x2c(sp)
lw v0,0x0(v0)
lw s0,0x28(sp)
lw t9,0x8(v0)
jr t9
_addiu sp,sp,0x38
lw s0,-0x72c0(gp)
li v0,0x1
lw a3,0x1cc(a0)
lw a2,0x1c8(a0)
or t9,s0,zero
bal 0x0011f624
_sw v0,0x10(sp)
or a0,s1,zero
or a2,v0,zero
li v0,0x2
or t9,s0,zero
or a3,v1,zero
bal 0x0011f624
_sw v0,0x10(sp)
lw a0,0x1c8(s1)
or s0,v1,zero
slt a1,a0,v0
bne a1,zero,0x00121070
_lw gp,0x18(sp)
bne a0,v0,0x00120f98
_nop
lw v1,0x1cc(s1)
sltu v1,v1,s0
beq v1,zero,0x00120f98
_nop
lw t9,-0x72bc(gp)
or a2,v0,zero
sw v0,0x20(sp)
or a3,s0,zero
jalr t9
_or a0,s2,zero
lw v0,0x20(sp)
lw gp,0x18(sp)
sw s0,0x1cc(s1)
b 0x00120f98
_sw v0,0x1c8(s1)
(translation_unit "/* gold::Layout::write_sections_after_input_sections(gold::Output_file*) */\n\nvoid __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  \n  if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }\n  puVar5 = *(undefined4 **)(this + 0x13c);\n  puVar4 = *(undefined4 **)(this + 0x140);\n  while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);\n  return;\n}\n\n" comment (function_definition "void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  \n  if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }\n  puVar5 = *(undefined4 **)(this + 0x13c);\n  puVar4 = *(undefined4 **)(this + 0x140);\n  while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "write_sections_after_input_sections(Layout *this,Output_file *param_1)" identifier (parameter_list "(Layout *this,Output_file *param_1)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  \n  if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }\n  puVar5 = *(undefined4 **)(this + 0x13c);\n  puVar4 = *(undefined4 **)(this + 0x140);\n  while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (if_statement "if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }" if (parenthesized_expression "(this[0x1d6] != (Layout)0x0)" ( (binary_expression "this[0x1d6] != (Layout)0x0" (subscript_expression "this[0x1d6]" identifier [ number_literal ]) != (cast_expression "(Layout)0x0" ( (type_descriptor "Layout" type_identifier) ) number_literal)) )) (compound_statement "{\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }" { (expression_statement "set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);" (call_expression "set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1)" identifier (argument_list "(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(this + 0x1c8)" * (cast_expression "(undefined4 *)(this + 0x1c8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c8)" ( (binary_expression "this + 0x1c8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(this + 0x1cc)" * (cast_expression "(undefined4 *)(this + 0x1cc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1cc)" ( (binary_expression "this + 0x1cc" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "uVar7 = 2;" (assignment_expression "uVar7 = 2" identifier = number_literal) ;) (expression_statement "uVar6 = set_section_offsets(this);" (assignment_expression "uVar6 = set_section_offsets(this)" identifier = (call_expression "set_section_offsets(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "iVar1 = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar6 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar3 = *(int *)(this + 0x1c8);" (assignment_expression "iVar3 = *(int *)(this + 0x1c8)" identifier = (pointer_expression "*(int *)(this + 0x1c8)" * (cast_expression "(int *)(this + 0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c8)" ( (binary_expression "this + 0x1c8" identifier + number_literal) ))))) ;) (if_statement "if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }" if (parenthesized_expression "((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6))))" ( (binary_expression "(iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))" (parenthesized_expression "(iVar3 < iVar1)" ( (binary_expression "iVar3 < iVar1" identifier < identifier) )) || (parenthesized_expression "((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))" ( (parenthesized_expression "(iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6))" ( (binary_expression "iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)" (binary_expression "iVar3 == iVar1" identifier == identifier) && (parenthesized_expression "(*(uint *)(this + 0x1cc) < (uint)uVar6)" ( (binary_expression "*(uint *)(this + 0x1cc) < (uint)uVar6" (pointer_expression "*(uint *)(this + 0x1cc)" * (cast_expression "(uint *)(this + 0x1cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1cc)" ( (binary_expression "this + 0x1cc" identifier + number_literal) )))) < (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }" { (expression_statement "(*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);" (call_expression "(*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7)" (parenthesized_expression "(*(code *)PTR_resize_00432f14)" ( (pointer_expression "*(code *)PTR_resize_00432f14" * (cast_expression "(code *)PTR_resize_00432f14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7)" ( identifier , (binary_expression "iVar3 < iVar1" identifier < identifier) , identifier , (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier ))) ;) (expression_statement "*(undefined8 *)(this + 0x1c8) = uVar6;" (assignment_expression "*(undefined8 *)(this + 0x1c8) = uVar6" (pointer_expression "*(undefined8 *)(this + 0x1c8)" * (cast_expression "(undefined8 *)(this + 0x1c8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c8)" ( (binary_expression "this + 0x1c8" identifier + number_literal) )))) = identifier) ;) })) })) (expression_statement "puVar5 = *(undefined4 **)(this + 0x13c);" (assignment_expression "puVar5 = *(undefined4 **)(this + 0x13c)" identifier = (pointer_expression "*(undefined4 **)(this + 0x13c)" * (cast_expression "(undefined4 **)(this + 0x13c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x13c)" ( (binary_expression "this + 0x13c" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = *(undefined4 **)(this + 0x140);" (assignment_expression "puVar4 = *(undefined4 **)(this + 0x140)" identifier = (pointer_expression "*(undefined4 **)(this + 0x140)" * (cast_expression "(undefined4 **)(this + 0x140)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x140)" ( (binary_expression "this + 0x140" identifier + number_literal) ))))) ;) (while_statement "while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }" while (parenthesized_expression "(puVar5 != puVar4)" ( (binary_expression "puVar5 != puVar4" identifier != identifier) )) (compound_statement "{\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }" { (while_statement "while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }" { (expression_statement "piVar2 = (int *)*puVar5;" (assignment_expression "piVar2 = (int *)*puVar5" identifier = (cast_expression "(int *)*puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (if_statement "if (-1 < piVar2[0x26] << 4) break;" if (parenthesized_expression "(-1 < piVar2[0x26] << 4)" ( (binary_expression "-1 < piVar2[0x26] << 4" number_literal < (binary_expression "piVar2[0x26] << 4" (subscript_expression "piVar2[0x26]" identifier [ number_literal ]) << number_literal)) )) (break_statement "break;" break ;)) (expression_statement "(**(code **)(*piVar2 + 8))(piVar2,param_1);" (call_expression "(**(code **)(*piVar2 + 8))(piVar2,param_1)" (parenthesized_expression "(**(code **)(*piVar2 + 8))" ( (pointer_expression "**(code **)(*piVar2 + 8)" * (pointer_expression "*(code **)(*piVar2 + 8)" * (cast_expression "(code **)(*piVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 8)" ( (binary_expression "*piVar2 + 8" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_1)" ( identifier , identifier ))) ;) (expression_statement "puVar4 = *(undefined4 **)(this + 0x140);" (assignment_expression "puVar4 = *(undefined4 **)(this + 0x140)" identifier = (pointer_expression "*(undefined4 **)(this + 0x140)" * (cast_expression "(undefined4 **)(this + 0x140)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x140)" ( (binary_expression "this + 0x140" identifier + number_literal) ))))) ;) (if_statement "if (puVar5 == puVar4) goto LAB_00120fe0;" if (parenthesized_expression "(puVar5 == puVar4)" ( (binary_expression "puVar5 == puVar4" identifier == identifier) )) (goto_statement "goto LAB_00120fe0;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00120fe0:\n                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);" statement_identifier : comment comment (expression_statement "(**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);" (call_expression "(**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1)" (parenthesized_expression "(**(code **)(**(int **)(this + 0x16c) + 8))" ( (pointer_expression "**(code **)(**(int **)(this + 0x16c) + 8)" * (pointer_expression "*(code **)(**(int **)(this + 0x16c) + 8)" * (cast_expression "(code **)(**(int **)(this + 0x16c) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(this + 0x16c) + 8)" ( (binary_expression "**(int **)(this + 0x16c) + 8" (pointer_expression "**(int **)(this + 0x16c)" * (pointer_expression "*(int **)(this + 0x16c)" * (cast_expression "(int **)(this + 0x16c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x16c)" ( (binary_expression "this + 0x16c" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(this + 0x16c),param_1)" ( (pointer_expression "*(int **)(this + 0x16c)" * (cast_expression "(int **)(this + 0x16c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x16c)" ( (binary_expression "this + 0x16c" 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/* DWARF original prototype: void write_sections_after_input_sections(Layout * this, Output_file *\n   of) */\n\nvoid __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *of)\n\n{\n  int iVar1;\n  Output_section *pOVar2;\n  int iVar3;\n  Output_file *pass;\n  pointer ppOVar4;\n  pointer ppOVar5;\n  off_t oVar6;\n  undefined4 in_stack_ffffffdc;\n  \n  if (this->any_postprocessing_sections_ != false) {\n    pass = of;\n    set_section_offsets(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of);\n    oVar6 = set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass);\n    iVar1 = (int)((ulonglong)oVar6 >> 0x20);\n    iVar3 = *(int *)&this->output_file_size_;\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))) {\n      (*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);\n      this->output_file_size_ = oVar6;\n    }\n  }\n  ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start;\n  ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_finish;\n  while (ppOVar5 != ppOVar4) {\n    while( true ) {\n      pOVar2 = *ppOVar5;\n      ppOVar5 = ppOVar5 + 1;\n      if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;\n      (*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);\n      ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish;\n      if (ppOVar5 == ppOVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);\n  return;\n}\n\n" comment comment comment comment comment comment comment (function_definition "void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *of)\n\n{\n  int iVar1;\n  Output_section *pOVar2;\n  int iVar3;\n  Output_file *pass;\n  pointer ppOVar4;\n  pointer ppOVar5;\n  off_t oVar6;\n  undefined4 in_stack_ffffffdc;\n  \n  if (this->any_postprocessing_sections_ != false) {\n    pass = of;\n    set_section_offsets(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of);\n    oVar6 = set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass);\n    iVar1 = (int)((ulonglong)oVar6 >> 0x20);\n    iVar3 = *(int *)&this->output_file_size_;\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))) {\n      (*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);\n      this->output_file_size_ = oVar6;\n    }\n  }\n  ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start;\n  ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_finish;\n  while (ppOVar5 != ppOVar4) {\n    while( true ) {\n      pOVar2 = *ppOVar5;\n      ppOVar5 = ppOVar5 + 1;\n      if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;\n      (*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);\n      ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish;\n      if (ppOVar5 == ppOVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "write_sections_after_input_sections(Layout *this,Output_file *of)" identifier (parameter_list "(Layout *this,Output_file *of)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  Output_section *pOVar2;\n  int iVar3;\n  Output_file *pass;\n  pointer ppOVar4;\n  pointer ppOVar5;\n  off_t oVar6;\n  undefined4 in_stack_ffffffdc;\n  \n  if (this->any_postprocessing_sections_ != false) {\n    pass = of;\n    set_section_offsets(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of);\n    oVar6 = set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass);\n    iVar1 = (int)((ulonglong)oVar6 >> 0x20);\n    iVar3 = *(int *)&this->output_file_size_;\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))) {\n      (*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);\n      this->output_file_size_ = oVar6;\n    }\n  }\n  ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start;\n  ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_finish;\n  while (ppOVar5 != ppOVar4) {\n    while( true ) {\n      pOVar2 = *ppOVar5;\n      ppOVar5 = ppOVar5 + 1;\n      if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;\n      (*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);\n      ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish;\n      if (ppOVar5 == ppOVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "Output_section *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Output_file *pass;" type_identifier (pointer_declarator "*pass" * identifier) ;) (declaration "pointer ppOVar4;" type_identifier identifier ;) (declaration "pointer ppOVar5;" type_identifier identifier ;) (declaration "off_t oVar6;" type_identifier identifier ;) (declaration "undefined4 in_stack_ffffffdc;" type_identifier identifier ;) (if_statement "if (this->any_postprocessing_sections_ != false) {\n    pass = of;\n    set_section_offsets(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of);\n    oVar6 = set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass);\n    iVar1 = (int)((ulonglong)oVar6 >> 0x20);\n    iVar3 = *(int *)&this->output_file_size_;\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))) {\n      (*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);\n      this->output_file_size_ = oVar6;\n    }\n  }" if (parenthesized_expression "(this->any_postprocessing_sections_ != false)" ( (binary_expression "this->any_postprocessing_sections_ != false" (field_expression "this->any_postprocessing_sections_" identifier -> field_identifier) != false) )) (compound_statement "{\n    pass = of;\n    set_section_offsets(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of);\n    oVar6 = set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass);\n    iVar1 = (int)((ulonglong)oVar6 >> 0x20);\n    iVar3 = *(int *)&this->output_file_size_;\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))) {\n      (*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);\n      this->output_file_size_ = oVar6;\n    }\n  }" { (expression_statement "pass = of;" (assignment_expression "pass = of" identifier = identifier) ;) (expression_statement "set_section_offsets(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of);" (call_expression "set_section_offsets(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of)" identifier (argument_list "(this,CONCAT44(1,in_stack_ffffffdc),(Section_offset_pass)of)" ( identifier , (call_expression "CONCAT44(1,in_stack_ffffffdc)" identifier (argument_list "(1,in_stack_ffffffdc)" ( number_literal , identifier ))) , (cast_expression "(Section_offset_pass)of" ( (type_descriptor "Section_offset_pass" type_identifier) ) identifier) ))) ;) (expression_statement "oVar6 = set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass);" (assignment_expression "oVar6 = set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass)" identifier = (call_expression "set_section_offsets(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass)" identifier (argument_list "(this,CONCAT44(2,in_stack_ffffffdc),(Section_offset_pass)pass)" ( identifier , (call_expression "CONCAT44(2,in_stack_ffffffdc)" identifier (argument_list "(2,in_stack_ffffffdc)" ( number_literal , identifier ))) , (cast_expression "(Section_offset_pass)pass" ( (type_descriptor "Section_offset_pass" type_identifier) ) identifier) )))) ;) (expression_statement "iVar1 = (int)((ulonglong)oVar6 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)oVar6 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)oVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)oVar6 >> 0x20)" ( (binary_expression "(ulonglong)oVar6 >> 0x20" (cast_expression "(ulonglong)oVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar3 = *(int *)&this->output_file_size_;" (assignment_expression "iVar3 = *(int *)&this->output_file_size_" identifier = (pointer_expression "*(int *)&this->output_file_size_" * (cast_expression "(int *)&this->output_file_size_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->output_file_size_" & (field_expression "this->output_file_size_" identifier -> field_identifier))))) ;) (if_statement "if ((iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))) {\n      (*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);\n      this->output_file_size_ = oVar6;\n    }" if (parenthesized_expression "((iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6))))" ( (binary_expression "(iVar3 < iVar1) || ((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))" (parenthesized_expression "(iVar3 < iVar1)" ( (binary_expression "iVar3 < iVar1" identifier < identifier) )) || (parenthesized_expression "((iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)))" ( (parenthesized_expression "(iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6))" ( (binary_expression "iVar3 == iVar1 && ((uint)this->output_file_size_ < (uint)oVar6)" (binary_expression "iVar3 == iVar1" identifier == identifier) && (parenthesized_expression "((uint)this->output_file_size_ < (uint)oVar6)" ( (binary_expression "(uint)this->output_file_size_ < (uint)oVar6" (cast_expression "(uint)this->output_file_size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->output_file_size_" identifier -> field_identifier)) < (cast_expression "(uint)oVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n      (*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);\n      this->output_file_size_ = oVar6;\n    }" { (expression_statement "(*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6);" (call_expression "(*(code *)PTR_resize_00432f14)(of,iVar3 < iVar1,iVar1,(uint)oVar6)" (parenthesized_expression "(*(code *)PTR_resize_00432f14)" ( (pointer_expression "*(code *)PTR_resize_00432f14" * (cast_expression "(code *)PTR_resize_00432f14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(of,iVar3 < iVar1,iVar1,(uint)oVar6)" ( identifier , (binary_expression "iVar3 < iVar1" identifier < identifier) , identifier , (cast_expression "(uint)oVar6" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (expression_statement "this->output_file_size_ = oVar6;" (assignment_expression "this->output_file_size_ = oVar6" (field_expression "this->output_file_size_" identifier -> field_identifier) = identifier) ;) })) })) (expression_statement "ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start;" (field_expression "ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start" (field_expression "ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl" (binary_expression "ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar5 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar5 = (this->section_list_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->section_list_).\n            super__Vector_base<gold" (field_expression "(this->section_list_).\n            super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_finish;" (field_expression "ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_finish" (field_expression "ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl" (binary_expression "ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar4 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar4 = (this->section_list_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->section_list_).\n            super__Vector_base<gold" (field_expression "(this->section_list_).\n            super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (while_statement "while (ppOVar5 != ppOVar4) {\n    while( true ) {\n      pOVar2 = *ppOVar5;\n      ppOVar5 = ppOVar5 + 1;\n      if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;\n      (*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);\n      ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish;\n      if (ppOVar5 == ppOVar4) goto LAB_00120fe0;\n    }\n  }" while (parenthesized_expression "(ppOVar5 != ppOVar4)" ( (binary_expression "ppOVar5 != ppOVar4" identifier != identifier) )) (compound_statement "{\n    while( true ) {\n      pOVar2 = *ppOVar5;\n      ppOVar5 = ppOVar5 + 1;\n      if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;\n      (*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);\n      ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish;\n      if (ppOVar5 == ppOVar4) goto LAB_00120fe0;\n    }\n  }" { (while_statement "while( true ) {\n      pOVar2 = *ppOVar5;\n      ppOVar5 = ppOVar5 + 1;\n      if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;\n      (*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);\n      ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish;\n      if (ppOVar5 == ppOVar4) goto LAB_00120fe0;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pOVar2 = *ppOVar5;\n      ppOVar5 = ppOVar5 + 1;\n      if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;\n      (*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);\n      ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish;\n      if (ppOVar5 == ppOVar4) goto LAB_00120fe0;\n    }" { (expression_statement "pOVar2 = *ppOVar5;" (assignment_expression "pOVar2 = *ppOVar5" identifier = (pointer_expression "*ppOVar5" * identifier)) ;) (expression_statement "ppOVar5 = ppOVar5 + 1;" (assignment_expression "ppOVar5 = ppOVar5 + 1" identifier = (binary_expression "ppOVar5 + 1" identifier + number_literal)) ;) (if_statement "if (-1 < *(int *)&pOVar2->field_0x98 << 4) break;" if (parenthesized_expression "(-1 < *(int *)&pOVar2->field_0x98 << 4)" ( (binary_expression "-1 < *(int *)&pOVar2->field_0x98 << 4" number_literal < (binary_expression "*(int *)&pOVar2->field_0x98 << 4" (pointer_expression "*(int *)&pOVar2->field_0x98" * (cast_expression "(int *)&pOVar2->field_0x98" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar2->field_0x98" & (field_expression "pOVar2->field_0x98" identifier -> field_identifier)))) << number_literal)) )) (break_statement "break;" break ;)) (expression_statement "(*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of);" (call_expression "(*(pOVar2->super_Output_data)._vptr_Output_data[2])(pOVar2,of)" (parenthesized_expression "(*(pOVar2->super_Output_data)._vptr_Output_data[2])" ( (pointer_expression "*(pOVar2->super_Output_data)._vptr_Output_data[2]" * (subscript_expression "(pOVar2->super_Output_data)._vptr_Output_data[2]" (field_expression "(pOVar2->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar2->super_Output_data)" ( (field_expression "pOVar2->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(pOVar2,of)" ( identifier , identifier ))) ;) (expression_statement "ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish;" (field_expression "ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_finish" (field_expression "ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl" (binary_expression "ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar4 = (this->section_list_).\n                super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar4 = (this->section_list_).\n                super__Vector_base<gold" identifier = (binary_expression "(this->section_list_).\n                super__Vector_base<gold" (field_expression "(this->section_list_).\n                super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppOVar5 == ppOVar4) goto LAB_00120fe0;" if (parenthesized_expression "(ppOVar5 == ppOVar4)" ( (binary_expression "ppOVar5 == ppOVar4" identifier == identifier) )) (goto_statement "goto LAB_00120fe0;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00120fe0:\n                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);" statement_identifier : comment comment (expression_statement "(*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);" (call_expression "(*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of)" (parenthesized_expression "(*(this->section_headers_->super_Output_data)._vptr_Output_data[2])" ( (pointer_expression "*(this->section_headers_->super_Output_data)._vptr_Output_data[2]" * (subscript_expression "(this->section_headers_->super_Output_data)._vptr_Output_data[2]" (field_expression "(this->section_headers_->super_Output_data)._vptr_Output_data" (parenthesized_expression "(this->section_headers_->super_Output_data)" ( (field_expression "this->section_headers_->super_Output_data" (field_expression "this->section_headers_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(this->section_headers_,of)" ( (field_expression "this->section_headers_" identifier -> field_identifier) , identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  \n  if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }\n  puVar5 = *(undefined4 **)(this + 0x13c);\n  puVar4 = *(undefined4 **)(this + 0x140);\n  while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    \n                    \n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);\n  return;\n}\n\n" (function_definition "void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  \n  if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }\n  puVar5 = *(undefined4 **)(this + 0x13c);\n  puVar4 = *(undefined4 **)(this + 0x140);\n  while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    \n                    \n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "write_sections_after_input_sections(Layout *this,Output_file *param_1)" identifier (parameter_list "(Layout *this,Output_file *param_1)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  \n  if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }\n  puVar5 = *(undefined4 **)(this + 0x13c);\n  puVar4 = *(undefined4 **)(this + 0x140);\n  while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    \n                    \n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (if_statement "if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }" if (parenthesized_expression "(this[0x1d6] != (Layout)0x0)" ( (binary_expression "this[0x1d6] != (Layout)0x0" (subscript_expression "this[0x1d6]" identifier [ number_literal ]) != (cast_expression "(Layout)0x0" ( (type_descriptor "Layout" type_identifier) ) number_literal)) )) (compound_statement "{\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }" { (expression_statement "set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);" (call_expression "set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1)" identifier (argument_list "(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(this + 0x1c8)" * (cast_expression "(undefined4 *)(this + 0x1c8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c8)" ( (binary_expression "this + 0x1c8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(this + 0x1cc)" * (cast_expression "(undefined4 *)(this + 0x1cc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1cc)" ( (binary_expression "this + 0x1cc" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "uVar7 = 2;" (assignment_expression "uVar7 = 2" identifier = number_literal) ;) (expression_statement "uVar6 = set_section_offsets(this);" (assignment_expression "uVar6 = set_section_offsets(this)" identifier = (call_expression "set_section_offsets(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "iVar1 = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar6 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar3 = *(int *)(this + 0x1c8);" (assignment_expression "iVar3 = *(int *)(this + 0x1c8)" identifier = (pointer_expression "*(int *)(this + 0x1c8)" * (cast_expression "(int *)(this + 0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c8)" ( (binary_expression "this + 0x1c8" identifier + number_literal) ))))) ;) (if_statement "if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }" if (parenthesized_expression "((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6))))" ( (binary_expression "(iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))" (parenthesized_expression "(iVar3 < iVar1)" ( (binary_expression "iVar3 < iVar1" identifier < identifier) )) || (parenthesized_expression "((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))" ( (parenthesized_expression "(iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6))" ( (binary_expression "iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)" (binary_expression "iVar3 == iVar1" identifier == identifier) && (parenthesized_expression "(*(uint *)(this + 0x1cc) < (uint)uVar6)" ( (binary_expression "*(uint *)(this + 0x1cc) < (uint)uVar6" (pointer_expression "*(uint *)(this + 0x1cc)" * (cast_expression "(uint *)(this + 0x1cc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1cc)" ( (binary_expression "this + 0x1cc" identifier + number_literal) )))) < (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )) ))) )) (compound_statement "{\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }" { (expression_statement "(*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);" (call_expression "(*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7)" (parenthesized_expression "(*(code *)PTR_resize_00432f14)" ( (pointer_expression "*(code *)PTR_resize_00432f14" * (cast_expression "(code *)PTR_resize_00432f14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7)" ( identifier , (binary_expression "iVar3 < iVar1" identifier < identifier) , identifier , (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) , identifier ))) ;) (expression_statement "*(undefined8 *)(this + 0x1c8) = uVar6;" (assignment_expression "*(undefined8 *)(this + 0x1c8) = uVar6" (pointer_expression "*(undefined8 *)(this + 0x1c8)" * (cast_expression "(undefined8 *)(this + 0x1c8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c8)" ( (binary_expression "this + 0x1c8" identifier + number_literal) )))) = identifier) ;) })) })) (expression_statement "puVar5 = *(undefined4 **)(this + 0x13c);" (assignment_expression "puVar5 = *(undefined4 **)(this + 0x13c)" identifier = (pointer_expression "*(undefined4 **)(this + 0x13c)" * (cast_expression "(undefined4 **)(this + 0x13c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x13c)" ( (binary_expression "this + 0x13c" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = *(undefined4 **)(this + 0x140);" (assignment_expression "puVar4 = *(undefined4 **)(this + 0x140)" identifier = (pointer_expression "*(undefined4 **)(this + 0x140)" * (cast_expression "(undefined4 **)(this + 0x140)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x140)" ( (binary_expression "this + 0x140" identifier + number_literal) ))))) ;) (while_statement "while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }" while (parenthesized_expression "(puVar5 != puVar4)" ( (binary_expression "puVar5 != puVar4" identifier != identifier) )) (compound_statement "{\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }" { (while_statement "while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }" { (expression_statement "piVar2 = (int *)*puVar5;" (assignment_expression "piVar2 = (int *)*puVar5" identifier = (cast_expression "(int *)*puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (if_statement "if (-1 < piVar2[0x26] << 4) break;" if (parenthesized_expression "(-1 < piVar2[0x26] << 4)" ( (binary_expression "-1 < piVar2[0x26] << 4" number_literal < (binary_expression "piVar2[0x26] << 4" (subscript_expression "piVar2[0x26]" identifier [ number_literal ]) << number_literal)) )) (break_statement "break;" break ;)) (expression_statement "(**(code **)(*piVar2 + 8))(piVar2,param_1);" (call_expression "(**(code **)(*piVar2 + 8))(piVar2,param_1)" (parenthesized_expression "(**(code **)(*piVar2 + 8))" ( (pointer_expression "**(code **)(*piVar2 + 8)" * (pointer_expression "*(code **)(*piVar2 + 8)" * (cast_expression "(code **)(*piVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 8)" ( (binary_expression "*piVar2 + 8" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_1)" ( identifier , identifier ))) ;) (expression_statement "puVar4 = *(undefined4 **)(this + 0x140);" (assignment_expression "puVar4 = *(undefined4 **)(this + 0x140)" identifier = (pointer_expression "*(undefined4 **)(this + 0x140)" * (cast_expression "(undefined4 **)(this + 0x140)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x140)" ( (binary_expression "this + 0x140" identifier + number_literal) ))))) ;) (if_statement "if (puVar5 == puVar4) goto LAB_00120fe0;" if (parenthesized_expression "(puVar5 == puVar4)" ( (binary_expression "puVar5 == puVar4" identifier == identifier) )) (goto_statement "goto LAB_00120fe0;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00120fe0:\n                    \n                    \n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);" statement_identifier : (expression_statement "(**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);" (call_expression "(**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1)" (parenthesized_expression "(**(code **)(**(int **)(this + 0x16c) + 8))" ( (pointer_expression "**(code **)(**(int **)(this + 0x16c) + 8)" * (pointer_expression "*(code **)(**(int **)(this + 0x16c) + 8)" * (cast_expression "(code **)(**(int **)(this + 0x16c) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(this + 0x16c) + 8)" ( (binary_expression "**(int **)(this + 0x16c) + 8" (pointer_expression "**(int **)(this + 0x16c)" * (pointer_expression "*(int **)(this + 0x16c)" * (cast_expression "(int **)(this + 0x16c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x16c)" ( (binary_expression "this + 0x16c" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(this + 0x16c),param_1)" ( (pointer_expression "*(int **)(this + 0x16c)" * (cast_expression "(int **)(this + 0x16c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0x16c)" ( (binary_expression "this + 0x16c" 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)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (cast_expression ( (type_descriptor TYPE) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT < IDENT) , IDENT , (cast_expression ( (type_descriptor TYPE) ) 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 (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (subscript_expression IDENT [ LIT ]) << LIT)) )) (break_statement break ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( 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 == IDENT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;)) (return_statement return ;) })))
(function_definition "void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *param_1)\n\n{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  \n  if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }\n  puVar5 = *(undefined4 **)(this + 0x13c);\n  puVar4 = *(undefined4 **)(this + 0x140);\n  while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    \n                    \n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);\n  return;\n}" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Layout::" (identifier "gold") (: ":") (: ":") (identifier "Layout") (: ":") (: ":")) (function_declarator "write_sections_after_input_sections(Layout *this,Output_file *param_1)" (identifier "write_sections_after_input_sections") (parameter_list "(Layout *this,Output_file *param_1)" (( "(") (parameter_declaration "Layout *this" (type_identifier "Layout") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Output_file *param_1" (type_identifier "Output_file") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  \n  if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }\n  puVar5 = *(undefined4 **)(this + 0x13c);\n  puVar4 = *(undefined4 **)(this + 0x140);\n  while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }\nLAB_00120fe0:\n                    \n                    \n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (if_statement "if (this[0x1d6] != (Layout)0x0) {\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }" (if "if") (parenthesized_expression "(this[0x1d6] != (Layout)0x0)" (( "(") (binary_expression "this[0x1d6] != (Layout)0x0" (subscript_expression "this[0x1d6]" (identifier "this") ([ "[") (number_literal "0x1d6") (] "]")) (!= "!=") (cast_expression "(Layout)0x0" (( "(") (type_descriptor "Layout" (type_identifier "Layout")) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);\n    uVar7 = 2;\n    uVar6 = set_section_offsets(this);\n    iVar1 = (int)((ulonglong)uVar6 >> 0x20);\n    iVar3 = *(int *)(this + 0x1c8);\n    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }\n  }" ({ "{") (expression_statement "set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);" (call_expression "set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1)" (identifier "set_section_offsets") (argument_list "(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1)" (( "(") (identifier "this") (, ",") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(this + 0x1c8)" (* "*") (cast_expression "(undefined4 *)(this + 0x1c8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1c8)" (( "(") (binary_expression "this + 0x1c8" (identifier "this") (+ "+") (number_literal "0x1c8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(this + 0x1cc)" (* "*") (cast_expression "(undefined4 *)(this + 0x1cc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1cc)" (( "(") (binary_expression "this + 0x1cc" (identifier "this") (+ "+") (number_literal "0x1cc")) () ")")))) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "uVar7 = 2;" (assignment_expression "uVar7 = 2" (identifier "uVar7") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar6 = set_section_offsets(this);" (assignment_expression "uVar6 = set_section_offsets(this)" (identifier "uVar6") (= "=") (call_expression "set_section_offsets(this)" (identifier "set_section_offsets") (argument_list "(this)" (( "(") (identifier "this") () ")")))) (; ";")) (expression_statement "iVar1 = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar1 = (int)((ulonglong)uVar6 >> 0x20)" (identifier "iVar1") (= "=") (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar3 = *(int *)(this + 0x1c8);" (assignment_expression "iVar3 = *(int *)(this + 0x1c8)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(this + 0x1c8)" (* "*") (cast_expression "(int *)(this + 0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1c8)" (( "(") (binary_expression "this + 0x1c8" (identifier "this") (+ "+") (number_literal "0x1c8")) () ")"))))) (; ";")) (if_statement "if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }" (if "if") (parenthesized_expression "((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6))))" (( "(") (binary_expression "(iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))" (parenthesized_expression "(iVar3 < iVar1)" (( "(") (binary_expression "iVar3 < iVar1" (identifier "iVar3") (< "<") (identifier "iVar1")) () ")")) (|| "||") (parenthesized_expression "((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))" (( "(") (parenthesized_expression "(iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6))" (( "(") (binary_expression "iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)" (binary_expression "iVar3 == iVar1" (identifier "iVar3") (== "==") (identifier "iVar1")) (&& "&&") (parenthesized_expression "(*(uint *)(this + 0x1cc) < (uint)uVar6)" (( "(") (binary_expression "*(uint *)(this + 0x1cc) < (uint)uVar6" (pointer_expression "*(uint *)(this + 0x1cc)" (* "*") (cast_expression "(uint *)(this + 0x1cc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1cc)" (( "(") (binary_expression "this + 0x1cc" (identifier "this") (+ "+") (number_literal "0x1cc")) () ")")))) (< "<") (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);\n      *(undefined8 *)(this + 0x1c8) = uVar6;\n    }" ({ "{") (expression_statement "(*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);" (call_expression "(*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7)" (parenthesized_expression "(*(code *)PTR_resize_00432f14)" (( "(") (pointer_expression "*(code *)PTR_resize_00432f14" (* "*") (cast_expression "(code *)PTR_resize_00432f14" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_resize_00432f14"))) () ")")) (argument_list "(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7)" (( "(") (identifier "param_1") (, ",") (binary_expression "iVar3 < iVar1" (identifier "iVar3") (< "<") (identifier "iVar1")) (, ",") (identifier "iVar1") (, ",") (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "*(undefined8 *)(this + 0x1c8) = uVar6;" (assignment_expression "*(undefined8 *)(this + 0x1c8) = uVar6" (pointer_expression "*(undefined8 *)(this + 0x1c8)" (* "*") (cast_expression "(undefined8 *)(this + 0x1c8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x1c8)" (( "(") (binary_expression "this + 0x1c8" (identifier "this") (+ "+") (number_literal "0x1c8")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar5 = *(undefined4 **)(this + 0x13c);" (assignment_expression "puVar5 = *(undefined4 **)(this + 0x13c)" (identifier "puVar5") (= "=") (pointer_expression "*(undefined4 **)(this + 0x13c)" (* "*") (cast_expression "(undefined4 **)(this + 0x13c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x13c)" (( "(") (binary_expression "this + 0x13c" (identifier "this") (+ "+") (number_literal "0x13c")) () ")"))))) (; ";")) (expression_statement "puVar4 = *(undefined4 **)(this + 0x140);" (assignment_expression "puVar4 = *(undefined4 **)(this + 0x140)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined4 **)(this + 0x140)" (* "*") (cast_expression "(undefined4 **)(this + 0x140)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x140)" (( "(") (binary_expression "this + 0x140" (identifier "this") (+ "+") (number_literal "0x140")) () ")"))))) (; ";")) (while_statement "while (puVar5 != puVar4) {\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }" (while "while") (parenthesized_expression "(puVar5 != puVar4)" (( "(") (binary_expression "puVar5 != puVar4" (identifier "puVar5") (!= "!=") (identifier "puVar4")) () ")")) (compound_statement "{\n    while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      piVar2 = (int *)*puVar5;\n      puVar5 = puVar5 + 1;\n      if (-1 < piVar2[0x26] << 4) break;\n      (**(code **)(*piVar2 + 8))(piVar2,param_1);\n      puVar4 = *(undefined4 **)(this + 0x140);\n      if (puVar5 == puVar4) goto LAB_00120fe0;\n    }" ({ "{") (expression_statement "piVar2 = (int *)*puVar5;" (assignment_expression "piVar2 = (int *)*puVar5" (identifier "piVar2") (= "=") (cast_expression "(int *)*puVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (-1 < piVar2[0x26] << 4) break;" (if "if") (parenthesized_expression "(-1 < piVar2[0x26] << 4)" (( "(") (binary_expression "-1 < piVar2[0x26] << 4" (number_literal "-1") (< "<") (binary_expression "piVar2[0x26] << 4" (subscript_expression "piVar2[0x26]" (identifier "piVar2") ([ "[") (number_literal "0x26") (] "]")) (<< "<<") (number_literal "4"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "(**(code **)(*piVar2 + 8))(piVar2,param_1);" (call_expression "(**(code **)(*piVar2 + 8))(piVar2,param_1)" (parenthesized_expression "(**(code **)(*piVar2 + 8))" (( "(") (pointer_expression "**(code **)(*piVar2 + 8)" (* "*") (pointer_expression "*(code **)(*piVar2 + 8)" (* "*") (cast_expression "(code **)(*piVar2 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 8)" (( "(") (binary_expression "*piVar2 + 8" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(piVar2,param_1)" (( "(") (identifier "piVar2") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "puVar4 = *(undefined4 **)(this + 0x140);" (assignment_expression "puVar4 = *(undefined4 **)(this + 0x140)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined4 **)(this + 0x140)" (* "*") (cast_expression "(undefined4 **)(this + 0x140)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x140)" (( "(") (binary_expression "this + 0x140" (identifier "this") (+ "+") (number_literal "0x140")) () ")"))))) (; ";")) (if_statement "if (puVar5 == puVar4) goto LAB_00120fe0;" (if "if") (parenthesized_expression "(puVar5 == puVar4)" (( "(") (binary_expression "puVar5 == puVar4" (identifier "puVar5") (== "==") (identifier "puVar4")) () ")")) (goto_statement "goto LAB_00120fe0;" (goto "goto") (statement_identifier "LAB_00120fe0") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00120fe0:\n                    \n                    \n  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);" (statement_identifier "LAB_00120fe0") (: ":") (expression_statement "(**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);" (call_expression "(**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1)" (parenthesized_expression "(**(code **)(**(int **)(this + 0x16c) + 8))" (( "(") (pointer_expression "**(code **)(**(int **)(this + 0x16c) + 8)" (* "*") (pointer_expression "*(code **)(**(int **)(this + 0x16c) + 8)" (* "*") (cast_expression "(code **)(**(int **)(this + 0x16c) + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(this + 0x16c) + 8)" (( "(") (binary_expression "**(int **)(this + 0x16c) + 8" (pointer_expression "**(int **)(this + 0x16c)" (* "*") (pointer_expression "*(int **)(this + 0x16c)" (* "*") (cast_expression "(int **)(this + 0x16c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x16c)" (( "(") (binary_expression "this + 0x16c" (identifier "this") (+ "+") (number_literal "0x16c")) () ")"))))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(*(int **)(this + 0x16c),param_1)" (( "(") (pointer_expression "*(int **)(this + 0x16c)" (* "*") (cast_expression "(int **)(this + 0x16c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(this + 0x16c)" (( "(") (binary_expression "this + 0x16c" (identifier "this") (+ "+") (number_literal "0x16c")) () ")")))) (, ",") (identifier "param_1") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) (ms_call_modifier) (ERROR (identifier) (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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))))) (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))))) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) 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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (identifier)) (identifier) (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (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))))))) (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))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) consequence: (break_statement)) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (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: (identifier))) consequence: (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier))))) (return_statement))))

/* gold::Layout::MASKED(gold::Output_file*) */

void __thiscall gold::Layout::MASKED(Layout *this,Output_file *param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined8 uVar6;
  undefined4 uVar7;
  
  if (this[0x1d6] != (Layout)0x0) {
    set_section_offsets(this,param_1,*(undefined4 *)(this + 0x1c8),*(undefined4 *)(this + 0x1cc),1);
    uVar7 = 2;
    uVar6 = set_section_offsets(this);
    iVar1 = (int)((ulonglong)uVar6 >> 0x20);
    iVar3 = *(int *)(this + 0x1c8);
    if ((iVar3 < iVar1) || ((iVar3 == iVar1 && (*(uint *)(this + 0x1cc) < (uint)uVar6)))) {
      (*(code *)PTR_resize_00432f14)(param_1,iVar3 < iVar1,iVar1,(uint)uVar6,uVar7);
      *(undefined8 *)(this + 0x1c8) = uVar6;
    }
  }
  puVar5 = *(undefined4 **)(this + 0x13c);
  puVar4 = *(undefined4 **)(this + 0x140);
  while (puVar5 != puVar4) {
    while( true ) {
      piVar2 = (int *)*puVar5;
      puVar5 = puVar5 + 1;
      if (-1 < piVar2[0x26] << 4) break;
      (**(code **)(*piVar2 + 8))(piVar2,param_1);
      puVar4 = *(undefined4 **)(this + 0x140);
      if (puVar5 == puVar4) goto LAB_00120fe0;
    }
  }
LAB_00120fe0:
                    /* WARNING: Could not recover jumptable at 0x00121004. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(**(int **)(this + 0x16c) + 8))(*(int **)(this + 0x16c),param_1);
  return;
}

