
/* 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 layout_section(Sized_relobj_file<64,_true> * this, Layout *
   layout, uint shndx, char * name, Shdr * shdr, uint sh_type, uint reloc_shndx, uint reloc_type) */

void __thiscall
gold::Sized_relobj_file<64,_true>::layout_section
          (Sized_relobj_file<64,_true> *this,Layout *layout,uint shndx,char *name,Shdr *shdr,
          uint sh_type,uint reloc_shndx,uint reloc_type)

{
  Output_section *pOVar1;
  pointer puVar2;
  off_t offset;
  
  pOVar1 = Layout::layout<64,_true>
                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);
  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.
  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl._M_start
  [shndx] = pOVar1;
  puVar2 = (this->super_Sized_relobj<64,_true>).section_offsets_.
           super__Vector_base<long_long_unsigned_int,_std::allocator<long_long_unsigned_int>_>.
           _M_impl._M_start + shndx;
  if ((offset._0_4_ == -1) && (offset._4_4_ == -1)) {
    *(undefined4 *)((int)puVar2 + 4) = 0xffffffff;
    *(undefined4 *)puVar2 = 0xffffffff;
  }
  else {
    *(int *)puVar2 = offset._0_4_;
    *(int *)((int)puVar2 + 4) = offset._4_4_;
    if (offset._0_4_ != -1) {
      return;
    }
  }
  if ((offset._4_4_ == offset._0_4_) && (reloc_shndx != 0)) {
    (this->super_Sized_relobj<64,_true>).super_Relobj.relocs_must_follow_section_writes_ = true;
    return;
  }
  return;
}



void FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,
                 Shdr *param_5,uint param_6,uint param_7,uint param_8)

{
  Output_section *pOVar1;
  int *piVar2;
  int local_18;
  int local_14;
  
  pOVar1 = gold::Layout::layout<64,true>
                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,
                      (longlong *)&local_18);
  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;
  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);
  if ((local_18 == -1) && (local_14 == -1)) {
    piVar2[1] = -1;
    *piVar2 = -1;
  }
  else {
    *piVar2 = local_18;
    piVar2[1] = local_14;
    if (local_18 != -1) {
      return;
    }
  }
  if ((local_14 == local_18) && (param_7 != 0)) {
    param_1[0x4c] = (Sized_relobj_file)0x1;
    return;
  }
  return;
}


lui gp,0x2f
addiu gp,gp,0x2eac
addu gp,gp,t9
addiu sp,sp,-0x48
lw t9,-0x5da0(gp)
addiu v0,sp,0x30
sw s2,0x40(sp)
sw v0,0x20(sp)
lw v0,0x64(sp)
lw s2,0x60(sp)
sw s1,0x3c(sp)
or s1,a0,zero
sw v0,0x1c(sp)
or a0,a1,zero
lw v0,0x5c(sp)
or a1,s1,zero
sw s0,0x38(sp)
or s0,a2,zero
sw gp,0x28(sp)
sw v0,0x14(sp)
sw ra,0x44(sp)
sw s2,0x18(sp)
lw v0,0x58(sp)
bal 0x0013a668
_sw v0,0x10(sp)
sll a3,s0,0x2
lw v1,0x38(s1)
sll s0,s0,0x3
lw a0,0x30(sp)
li a2,-0x1
lw a1,0x34(sp)
addu v1,v1,a3
sw v0,0x0(v1)
lw v0,0x84(s1)
beq a0,a2,0x001473e4
_addu s0,v0,s0
sw a0,0x0(s0)
li v1,-0x1
sw a1,0x4(s0)
lw v0,0x30(sp)
beq v0,v1,0x0014740c
_lw v1,0x34(sp)
lw ra,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x48
bne a1,a0,0x001473b4
_li v1,-0x1
li v0,-0x1
sw v1,0x4(s0)
li v1,-0x1
sw v0,0x0(s0)
lw v0,0x30(sp)
bne v0,v1,0x001473d0
_lw ra,0x44(sp)
lw v1,0x34(sp)
bne v1,v0,0x001473d0
_lw ra,0x44(sp)
beq s2,zero,0x001473d4
_lw s2,0x40(sp)
lw ra,0x44(sp)
li v0,0x1
lw s0,0x38(sp)
sb v0,0x4c(s1)
lw s1,0x3c(sp)
jr ra
_addiu sp,sp,0x48
(translation_unit "void FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)\n\n{\n  Output_section *pOVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  pOVar1 = gold::Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);\n  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;\n  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);\n  if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }\n  if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)\n\n{\n  Output_section *pOVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  pOVar1 = gold::Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);\n  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;\n  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);\n  if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }\n  if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)" identifier (parameter_list "(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)" ( (parameter_declaration "Sized_relobj_file *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "Layout *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "Shdr *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "uint param_8" type_identifier identifier) ))) (compound_statement "{\n  Output_section *pOVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  pOVar1 = gold::Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);\n  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;\n  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);\n  if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }\n  if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }\n  return;\n}" { (declaration "Output_section *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "int local_14;" primitive_type identifier ;) (ERROR "pOVar1 = gold::" (assignment_expression "pOVar1 = gold" identifier = identifier) : :) (labeled_statement "Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);" statement_identifier : (ERROR ":" :) (expression_statement "layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);" (comma_expression "layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" (binary_expression "layout<64" identifier < number_literal) , (binary_expression "true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" true > (parenthesized_expression "(param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" ( (comma_expression "param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_8,\n                      (longlong *)&local_18" identifier , (cast_expression "(longlong *)&local_18" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_18" & identifier)))))))))) )))) ;)) (expression_statement "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;" (assignment_expression "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1" (pointer_expression "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4)" * (cast_expression "(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4)" ( (type_descriptor "Output_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x38) + param_3 * 4)" ( (binary_expression "*(int *)(param_1 + 0x38) + param_3 * 4" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + (binary_expression "param_3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);" (assignment_expression "piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 0x84) + param_3 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x84) + param_3 * 8)" ( (binary_expression "*(int *)(param_1 + 0x84) + param_3 * 8" (pointer_expression "*(int *)(param_1 + 0x84)" * (cast_expression "(int *)(param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) + (binary_expression "param_3 * 8" identifier * number_literal)) )))) ;) (if_statement "if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" if (parenthesized_expression "((local_18 == -1) && (local_14 == -1))" ( (binary_expression "(local_18 == -1) && (local_14 == -1)" (parenthesized_expression "(local_18 == -1)" ( (binary_expression "local_18 == -1" identifier == number_literal) )) && (parenthesized_expression "(local_14 == -1)" ( (binary_expression "local_14 == -1" identifier == number_literal) ))) )) (compound_statement "{\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }" { (expression_statement "piVar2[1] = -1;" (assignment_expression "piVar2[1] = -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar2 = -1;" (assignment_expression "*piVar2 = -1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) }) (else_clause "else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" else (compound_statement "{\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" { (expression_statement "*piVar2 = local_18;" (assignment_expression "*piVar2 = local_18" (pointer_expression "*piVar2" * identifier) = identifier) ;) (expression_statement "piVar2[1] = local_14;" (assignment_expression "piVar2[1] = local_14" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_18 != -1) {\n      return;\n    }" if (parenthesized_expression "(local_18 != -1)" ( (binary_expression "local_18 != -1" identifier != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }))) (if_statement "if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }" if (parenthesized_expression "((local_14 == local_18) && (param_7 != 0))" ( (binary_expression "(local_14 == local_18) && (param_7 != 0)" (parenthesized_expression "(local_14 == local_18)" ( (binary_expression "local_14 == local_18" identifier == identifier) )) && (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }" { (expression_statement "param_1[0x4c] = (Sized_relobj_file)0x1;" (assignment_expression "param_1[0x4c] = (Sized_relobj_file)0x1" (subscript_expression "param_1[0x4c]" identifier [ number_literal ]) = (cast_expression "(Sized_relobj_file)0x1" ( (type_descriptor "Sized_relobj_file" type_identifier) ) number_literal)) ;) (return_statement "return;" return ;) })) (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 layout_section(Sized_relobj_file<64,_true> * this, Layout *\n   layout, uint shndx, char * name, Shdr * shdr, uint sh_type, uint reloc_shndx, uint reloc_type) */\n\nvoid __thiscall\ngold::Sized_relobj_file<64,_true>::layout_section\n          (Sized_relobj_file<64,_true> *this,Layout *layout,uint shndx,char *name,Shdr *shdr,\n          uint sh_type,uint reloc_shndx,uint reloc_type)\n\n{\n  Output_section *pOVar1;\n  pointer puVar2;\n  off_t offset;\n  \n  pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl._M_start\n  [shndx] = pOVar1;\n  puVar2 = (this->super_Sized_relobj<64,_true>).section_offsets_.\n           super__Vector_base<long_long_unsigned_int,_std::allocator<long_long_unsigned_int>_>.\n           _M_impl._M_start + shndx;\n  if ((offset._0_4_ == -1) && (offset._4_4_ == -1)) {\n    *(undefined4 *)((int)puVar2 + 4) = 0xffffffff;\n    *(undefined4 *)puVar2 = 0xffffffff;\n  }\n  else {\n    *(int *)puVar2 = offset._0_4_;\n    *(int *)((int)puVar2 + 4) = offset._4_4_;\n    if (offset._0_4_ != -1) {\n      return;\n    }\n  }\n  if ((offset._4_4_ == offset._0_4_) && (reloc_shndx != 0)) {\n    (this->super_Sized_relobj<64,_true>).super_Relobj.relocs_must_follow_section_writes_ = true;\n    return;\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment (declaration "void __thiscall\ngold::Sized_relobj_file<64,_true>::layout_section\n          (Sized_relobj_file<64,_true> *this,Layout *layout,uint shndx,char *name,Shdr *shdr,\n          uint sh_type,uint reloc_shndx,uint reloc_type)\n\n{\n  Output_section *pOVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::layout_section\n          (Sized_relobj_file<64,_true> *this,Layout *layout,uint shndx,char *name,Shdr *shdr,\n          uint sh_type,uint reloc_shndx,uint reloc_type)\n\n{\n  Output_section" identifier > : : (function_declarator "layout_section\n          (Sized_relobj_file<64,_true> *this,Layout *layout,uint shndx,char *name,Shdr *shdr,\n          uint sh_type,uint reloc_shndx,uint reloc_type)" identifier (parameter_list "(Sized_relobj_file<64,_true> *this,Layout *layout,uint shndx,char *name,Shdr *shdr,\n          uint sh_type,uint reloc_shndx,uint reloc_type)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "Shdr *shdr" type_identifier (pointer_declarator "*shdr" * identifier)) , (parameter_declaration "uint sh_type" type_identifier identifier) , (parameter_declaration "uint reloc_shndx" type_identifier identifier) , (parameter_declaration "uint reloc_type" type_identifier identifier) ))) { identifier) (pointer_declarator "*pOVar1" * identifier) ;) (declaration "pointer puVar2;" type_identifier identifier ;) (declaration "off_t offset;" type_identifier identifier ;) (expression_statement "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl._M_start\n  [shndx] = pOVar1;" (assignment_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl._M_start\n  [shndx] = pOVar1" (subscript_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl._M_start\n  [shndx]" (field_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl._M_start" (field_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold::Output_section*,_std" (binary_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base<gold" (field_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_.\n  super__Vector_base" (field_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj.output_sections_" (field_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>).super_Relobj" (call_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset);\n  (this->super_Sized_relobj<64,_true>)" (binary_expression "pOVar1 = Layout::layout<64,_true>\n                     (layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset)" (binary_expression "pOVar1 = Layout::layout<64" (assignment_expression "pOVar1 = Layout" identifier = identifier) (ERROR "::layout" : : identifier) < number_literal) (ERROR ",_true" , identifier) > (parenthesized_expression "(layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset)" ( (comma_expression "layout,this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset" identifier , (comma_expression "this,shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset" identifier , (comma_expression "shndx,name,shdr,sh_type,reloc_shndx,reloc_type,&offset" identifier , (comma_expression "name,shdr,sh_type,reloc_shndx,reloc_type,&offset" identifier , (comma_expression "shdr,sh_type,reloc_shndx,reloc_type,&offset" identifier , (comma_expression "sh_type,reloc_shndx,reloc_type,&offset" identifier , (comma_expression "reloc_shndx,reloc_type,&offset" identifier , (comma_expression "reloc_type,&offset" identifier , (pointer_expression "&offset" & identifier))))))))) ))) (ERROR ";" ;) (argument_list "(this->super_Sized_relobj<64,_true>)" ( (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier (ERROR ">" >) ))) . field_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) [ identifier ]) = identifier) ;) (expression_statement "puVar2 = (this->super_Sized_relobj<64,_true>).section_offsets_.\n           super__Vector_base<long_long_unsigned_int,_std::allocator<long_long_unsigned_int>_>.\n           _M_impl._M_start + shndx;" (assignment_expression "puVar2 = (this->super_Sized_relobj<64,_true>).section_offsets_.\n           super__Vector_base<long_long_unsigned_int,_std::allocator<long_long_unsigned_int>_>.\n           _M_impl._M_start + shndx" identifier = (parenthesized_expression "(this->super_Sized_relobj<64,_true>).section_offsets_.\n           super__Vector_base<long_long_unsigned_int,_std::allocator<long_long_unsigned_int>_>.\n           _M_impl._M_start + shndx" ( (ERROR "this->super_Sized_relobj<64,_true>).section_offsets_.\n           super__Vector_base<long_long_unsigned_int,_std::" (comma_expression "this->super_Sized_relobj<64,_true>).section_offsets_.\n           super__Vector_base<long_long_unsigned_int,_std" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , (comma_expression "_true>).section_offsets_.\n           super__Vector_base<long_long_unsigned_int,_std" (binary_expression "_true>).section_offsets_.\n           super__Vector_base<long_long_unsigned_int" (field_expression "_true>).section_offsets_.\n           super__Vector_base" (field_expression "_true>).section_offsets_" identifier (ERROR ">)" > )) . field_identifier) . field_identifier) < identifier) , identifier)) : :) (binary_expression "allocator<long_long_unsigned_int>_>.\n           _M_impl._M_start + shndx" (field_expression "allocator<long_long_unsigned_int>_>.\n           _M_impl._M_start" (field_expression "allocator<long_long_unsigned_int>_>.\n           _M_impl" (binary_expression "allocator<long_long_unsigned_int>_" (binary_expression "allocator<long_long_unsigned_int" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) + identifier) ))) ;) (if_statement "if ((offset._0_4_ == -1) && (offset._4_4_ == -1)) {\n    *(undefined4 *)((int)puVar2 + 4) = 0xffffffff;\n    *(undefined4 *)puVar2 = 0xffffffff;\n  }\n  else {\n    *(int *)puVar2 = offset._0_4_;\n    *(int *)((int)puVar2 + 4) = offset._4_4_;\n    if (offset._0_4_ != -1) {\n      return;\n    }\n  }" if (parenthesized_expression "((offset._0_4_ == -1) && (offset._4_4_ == -1))" ( (binary_expression "(offset._0_4_ == -1) && (offset._4_4_ == -1)" (parenthesized_expression "(offset._0_4_ == -1)" ( (binary_expression "offset._0_4_ == -1" (field_expression "offset._0_4_" identifier . field_identifier) == number_literal) )) && (parenthesized_expression "(offset._4_4_ == -1)" ( (binary_expression "offset._4_4_ == -1" (field_expression "offset._4_4_" identifier . field_identifier) == number_literal) ))) )) (compound_statement "{\n    *(undefined4 *)((int)puVar2 + 4) = 0xffffffff;\n    *(undefined4 *)puVar2 = 0xffffffff;\n  }" { (expression_statement "*(undefined4 *)((int)puVar2 + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)puVar2 + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)puVar2 + 4)" * (cast_expression "(undefined4 *)((int)puVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 4)" ( (binary_expression "(int)puVar2 + 4" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)puVar2 = 0xffffffff;" (assignment_expression "*(undefined4 *)puVar2 = 0xffffffff" (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) }) (else_clause "else {\n    *(int *)puVar2 = offset._0_4_;\n    *(int *)((int)puVar2 + 4) = offset._4_4_;\n    if (offset._0_4_ != -1) {\n      return;\n    }\n  }" else (compound_statement "{\n    *(int *)puVar2 = offset._0_4_;\n    *(int *)((int)puVar2 + 4) = offset._4_4_;\n    if (offset._0_4_ != -1) {\n      return;\n    }\n  }" { (expression_statement "*(int *)puVar2 = offset._0_4_;" (assignment_expression "*(int *)puVar2 = offset._0_4_" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (field_expression "offset._0_4_" identifier . field_identifier)) ;) (expression_statement "*(int *)((int)puVar2 + 4) = offset._4_4_;" (assignment_expression "*(int *)((int)puVar2 + 4) = offset._4_4_" (pointer_expression "*(int *)((int)puVar2 + 4)" * (cast_expression "(int *)((int)puVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 4)" ( (binary_expression "(int)puVar2 + 4" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (field_expression "offset._4_4_" identifier . field_identifier)) ;) (if_statement "if (offset._0_4_ != -1) {\n      return;\n    }" if (parenthesized_expression "(offset._0_4_ != -1)" ( (binary_expression "offset._0_4_ != -1" (field_expression "offset._0_4_" identifier . field_identifier) != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }))) (if_statement "if ((offset._4_4_ == offset._0_4_) && (reloc_shndx != 0)) {\n    (this->super_Sized_relobj<64,_true>).super_Relobj.relocs_must_follow_section_writes_ = true;\n    return;\n  }" if (parenthesized_expression "((offset._4_4_ == offset._0_4_) && (reloc_shndx != 0))" ( (binary_expression "(offset._4_4_ == offset._0_4_) && (reloc_shndx != 0)" (parenthesized_expression "(offset._4_4_ == offset._0_4_)" ( (binary_expression "offset._4_4_ == offset._0_4_" (field_expression "offset._4_4_" identifier . field_identifier) == (field_expression "offset._0_4_" identifier . field_identifier)) )) && (parenthesized_expression "(reloc_shndx != 0)" ( (binary_expression "reloc_shndx != 0" identifier != number_literal) ))) )) (compound_statement "{\n    (this->super_Sized_relobj<64,_true>).super_Relobj.relocs_must_follow_section_writes_ = true;\n    return;\n  }" { (expression_statement "(this->super_Sized_relobj<64,_true>).super_Relobj.relocs_must_follow_section_writes_ = true;" (assignment_expression "(this->super_Sized_relobj<64,_true>).super_Relobj.relocs_must_follow_section_writes_ = true" (field_expression "(this->super_Sized_relobj<64,_true>).super_Relobj.relocs_must_follow_section_writes_" (field_expression "(this->super_Sized_relobj<64,_true>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_true>)" ( (comma_expression "this->super_Sized_relobj<64,_true" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) = true) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)\n\n{\n  Output_section *pOVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  pOVar1 = gold::Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);\n  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;\n  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);\n  if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }\n  if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)\n\n{\n  Output_section *pOVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  pOVar1 = gold::Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);\n  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;\n  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);\n  if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }\n  if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)" identifier (parameter_list "(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)" ( (parameter_declaration "Sized_relobj_file *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "Layout *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "char *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "Shdr *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "uint param_8" type_identifier identifier) ))) (compound_statement "{\n  Output_section *pOVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  pOVar1 = gold::Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);\n  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;\n  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);\n  if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }\n  if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }\n  return;\n}" { (declaration "Output_section *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "int local_14;" primitive_type identifier ;) (ERROR "pOVar1 = gold::" (assignment_expression "pOVar1 = gold" identifier = identifier) : :) (labeled_statement "Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);" statement_identifier : (ERROR ":" :) (expression_statement "layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);" (comma_expression "layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" (binary_expression "layout<64" identifier < number_literal) , (binary_expression "true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" true > (parenthesized_expression "(param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" ( (comma_expression "param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_6,param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_7,param_8,\n                      (longlong *)&local_18" identifier , (comma_expression "param_8,\n                      (longlong *)&local_18" identifier , (cast_expression "(longlong *)&local_18" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_18" & identifier)))))))))) )))) ;)) (expression_statement "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;" (assignment_expression "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1" (pointer_expression "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4)" * (cast_expression "(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4)" ( (type_descriptor "Output_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x38) + param_3 * 4)" ( (binary_expression "*(int *)(param_1 + 0x38) + param_3 * 4" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + (binary_expression "param_3 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);" (assignment_expression "piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 0x84) + param_3 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x84) + param_3 * 8)" ( (binary_expression "*(int *)(param_1 + 0x84) + param_3 * 8" (pointer_expression "*(int *)(param_1 + 0x84)" * (cast_expression "(int *)(param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) + (binary_expression "param_3 * 8" identifier * number_literal)) )))) ;) (if_statement "if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" if (parenthesized_expression "((local_18 == -1) && (local_14 == -1))" ( (binary_expression "(local_18 == -1) && (local_14 == -1)" (parenthesized_expression "(local_18 == -1)" ( (binary_expression "local_18 == -1" identifier == number_literal) )) && (parenthesized_expression "(local_14 == -1)" ( (binary_expression "local_14 == -1" identifier == number_literal) ))) )) (compound_statement "{\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }" { (expression_statement "piVar2[1] = -1;" (assignment_expression "piVar2[1] = -1" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar2 = -1;" (assignment_expression "*piVar2 = -1" (pointer_expression "*piVar2" * identifier) = number_literal) ;) }) (else_clause "else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" else (compound_statement "{\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" { (expression_statement "*piVar2 = local_18;" (assignment_expression "*piVar2 = local_18" (pointer_expression "*piVar2" * identifier) = identifier) ;) (expression_statement "piVar2[1] = local_14;" (assignment_expression "piVar2[1] = local_14" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_18 != -1) {\n      return;\n    }" if (parenthesized_expression "(local_18 != -1)" ( (binary_expression "local_18 != -1" identifier != number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }))) (if_statement "if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }" if (parenthesized_expression "((local_14 == local_18) && (param_7 != 0))" ( (binary_expression "(local_14 == local_18) && (param_7 != 0)" (parenthesized_expression "(local_14 == local_18)" ( (binary_expression "local_14 == local_18" identifier == identifier) )) && (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }" { (expression_statement "param_1[0x4c] = (Sized_relobj_file)0x1;" (assignment_expression "param_1[0x4c] = (Sized_relobj_file)0x1" (subscript_expression "param_1[0x4c]" identifier [ number_literal ]) = (cast_expression "(Sized_relobj_file)0x1" ( (type_descriptor "Sized_relobj_file" type_identifier) ) number_literal)) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (ERROR (assignment_expression IDENT = IDENT) : :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (comma_expression (binary_expression IDENT < LIT) , (binary_expression BOOL > (parenthesized_expression ( (comma_expression IDENT , (comma_expression IDENT , (comma_expression IDENT , (comma_expression IDENT , (comma_expression IDENT , (comma_expression IDENT , (comma_expression IDENT , (comma_expression IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)))))))))) )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)\n\n{\n  Output_section *pOVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  pOVar1 = gold::Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);\n  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;\n  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);\n  if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }\n  if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00147324(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)" (identifier "FUN_00147324") (parameter_list "(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,\n                 Shdr *param_5,uint param_6,uint param_7,uint param_8)" (( "(") (parameter_declaration "Sized_relobj_file *param_1" (type_identifier "Sized_relobj_file") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "Layout *param_2" (type_identifier "Layout") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "char *param_4" (primitive_type "char") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "Shdr *param_5" (type_identifier "Shdr") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) (, ",") (parameter_declaration "uint param_8" (type_identifier "uint") (identifier "param_8")) () ")"))) (compound_statement "{\n  Output_section *pOVar1;\n  int *piVar2;\n  int local_18;\n  int local_14;\n  \n  pOVar1 = gold::Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);\n  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;\n  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);\n  if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }\n  if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }\n  return;\n}" ({ "{") (declaration "Output_section *pOVar1;" (type_identifier "Output_section") (pointer_declarator "*pOVar1" (* "*") (identifier "pOVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int local_18;" (primitive_type "int") (identifier "local_18") (; ";")) (declaration "int local_14;" (primitive_type "int") (identifier "local_14") (; ";")) (ERROR "pOVar1 = gold::" (assignment_expression "pOVar1 = gold" (identifier "pOVar1") (= "=") (identifier "gold")) (: ":") (: ":")) (labeled_statement "Layout::layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);" (statement_identifier "Layout") (: ":") (ERROR ":" (: ":")) (expression_statement "layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18);" (comma_expression "layout<64,true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" (binary_expression "layout<64" (identifier "layout") (< "<") (number_literal "64")) (, ",") (binary_expression "true>\n                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" (true "true") (> ">") (parenthesized_expression "(param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18)" (( "(") (comma_expression "param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" (identifier "param_2") (, ",") (comma_expression "param_1,param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" (identifier "param_1") (, ",") (comma_expression "param_3,param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" (identifier "param_3") (, ",") (comma_expression "param_4,param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" (identifier "param_4") (, ",") (comma_expression "param_5,param_6,param_7,param_8,\n                      (longlong *)&local_18" (identifier "param_5") (, ",") (comma_expression "param_6,param_7,param_8,\n                      (longlong *)&local_18" (identifier "param_6") (, ",") (comma_expression "param_7,param_8,\n                      (longlong *)&local_18" (identifier "param_7") (, ",") (comma_expression "param_8,\n                      (longlong *)&local_18" (identifier "param_8") (, ",") (cast_expression "(longlong *)&local_18" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_18" (& "&") (identifier "local_18"))))))))))) () ")")))) (; ";"))) (expression_statement "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;" (assignment_expression "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1" (pointer_expression "*(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4)" (* "*") (cast_expression "(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4)" (( "(") (type_descriptor "Output_section **" (type_identifier "Output_section") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x38) + param_3 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x38) + param_3 * 4" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "pOVar1")) (; ";")) (expression_statement "piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);" (assignment_expression "piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8)" (identifier "piVar2") (= "=") (cast_expression "(int *)(*(int *)(param_1 + 0x84) + param_3 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x84) + param_3 * 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x84) + param_3 * 8" (pointer_expression "*(int *)(param_1 + 0x84)" (* "*") (cast_expression "(int *)(param_1 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x84)" (( "(") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) () ")")))) (+ "+") (binary_expression "param_3 * 8" (identifier "param_3") (* "*") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if ((local_18 == -1) && (local_14 == -1)) {\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }\n  else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" (if "if") (parenthesized_expression "((local_18 == -1) && (local_14 == -1))" (( "(") (binary_expression "(local_18 == -1) && (local_14 == -1)" (parenthesized_expression "(local_18 == -1)" (( "(") (binary_expression "local_18 == -1" (identifier "local_18") (== "==") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(local_14 == -1)" (( "(") (binary_expression "local_14 == -1" (identifier "local_14") (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n    piVar2[1] = -1;\n    *piVar2 = -1;\n  }" ({ "{") (expression_statement "piVar2[1] = -1;" (assignment_expression "piVar2[1] = -1" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "*piVar2 = -1;" (assignment_expression "*piVar2 = -1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (number_literal "-1")) (; ";")) (} "}")) (else_clause "else {\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" (else "else") (compound_statement "{\n    *piVar2 = local_18;\n    piVar2[1] = local_14;\n    if (local_18 != -1) {\n      return;\n    }\n  }" ({ "{") (expression_statement "*piVar2 = local_18;" (assignment_expression "*piVar2 = local_18" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "local_18")) (; ";")) (expression_statement "piVar2[1] = local_14;" (assignment_expression "piVar2[1] = local_14" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_14")) (; ";")) (if_statement "if (local_18 != -1) {\n      return;\n    }" (if "if") (parenthesized_expression "(local_18 != -1)" (( "(") (binary_expression "local_18 != -1" (identifier "local_18") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (if_statement "if ((local_14 == local_18) && (param_7 != 0)) {\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }" (if "if") (parenthesized_expression "((local_14 == local_18) && (param_7 != 0))" (( "(") (binary_expression "(local_14 == local_18) && (param_7 != 0)" (parenthesized_expression "(local_14 == local_18)" (( "(") (binary_expression "local_14 == local_18" (identifier "local_14") (== "==") (identifier "local_18")) () ")")) (&& "&&") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    param_1[0x4c] = (Sized_relobj_file)0x1;\n    return;\n  }" ({ "{") (expression_statement "param_1[0x4c] = (Sized_relobj_file)0x1;" (assignment_expression "param_1[0x4c] = (Sized_relobj_file)0x1" (subscript_expression "param_1[0x4c]" (identifier "param_1") ([ "[") (number_literal "0x4c") (] "]")) (= "=") (cast_expression "(Sized_relobj_file)0x1" (( "(") (type_descriptor "Sized_relobj_file" (type_identifier "Sized_relobj_file")) () ")") (number_literal "0x1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (ERROR (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (comma_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (true) right: (parenthesized_expression (comma_expression left: (identifier) right: (comma_expression left: (identifier) right: (comma_expression left: (identifier) right: (comma_expression left: (identifier) right: (comma_expression left: (identifier) right: (comma_expression left: (identifier) right: (comma_expression left: (identifier) right: (comma_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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))))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (number_literal)))) (return_statement))) (return_statement))))

void MASKED(Sized_relobj_file *param_1,Layout *param_2,uint param_3,char *param_4,
                 Shdr *param_5,uint param_6,uint param_7,uint param_8)

{
  Output_section *pOVar1;
  int *piVar2;
  int local_18;
  int local_14;
  
  pOVar1 = gold::Layout::layout<64,true>
                     (param_2,param_1,param_3,param_4,param_5,param_6,param_7,param_8,
                      (longlong *)&local_18);
  *(Output_section **)(*(int *)(param_1 + 0x38) + param_3 * 4) = pOVar1;
  piVar2 = (int *)(*(int *)(param_1 + 0x84) + param_3 * 8);
  if ((local_18 == -1) && (local_14 == -1)) {
    piVar2[1] = -1;
    *piVar2 = -1;
  }
  else {
    *piVar2 = local_18;
    piVar2[1] = local_14;
    if (local_18 != -1) {
      return;
    }
  }
  if ((local_14 == local_18) && (param_7 != 0)) {
    param_1[0x4c] = (Sized_relobj_file)0x1;
    return;
  }
  return;
}

