
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: void Output_reloc(Output_reloc<9,_false,_64,_false> * this,
   Output_section * os, uint type, Sized_relobj<64,_false> * relobj, uint shndx, Address address,
   bool is_relative) */

void __thiscall
gold::Output_reloc<9,_false,_64,_false>::Output_reloc
          (Output_reloc<9,_false,_64,_false> *this,Output_section *os,uint type,
          Sized_relobj<64,_false> *relobj,uint shndx,Address address,bool is_relative)

{
  uint uVar1;
  undefined4 uVar2;
  
  uVar1 = *(uint *)&this->field_0x14 & 3 | type << 4 | (is_relative & 1) << 3 |
          (is_relative & 1) << 2;
  this->local_sym_index_ = 0xfffffffe;
  this->shndx_ = shndx;
  *(undefined4 *)((int)&this->address_ + 4) = address._4_4_;
  *(uint *)&this->field_0x14 = uVar1;
  this->field_0x17 = (byte)uVar1 & 0xfc | 2;
  *(undefined4 *)&this->address_ = address._0_4_;
  if (shndx == 0xfffffffc) {
    uVar2 = 0x356;
    goto LAB_00224fb4;
  }
  if (type == (type & 0xfffffff)) {
    (this->u1_).os = os;
    (this->u2_).relobj = relobj;
    *(uint *)&os->field_0x98 = *(uint *)&os->field_0x98 & 0x7fffffff | 0x80000000;
    return;
  }
  do {
    uVar2 = 0x358;
LAB_00224fb4:
    (*(code *)PTR_do_gold_unreachable_004c1a30)
              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,
               PTR_s_in_a_linker_script_004c191c + -0x36b4);
  } while( true );
}



/* gold::Output_reloc<9, false, 64, false>::Output_reloc(gold::Output_section*, unsigned int,
   gold::Sized_relobj<64, false>*, unsigned int, unsigned long long, bool) */

void gold::Output_reloc<9,false,64,false>::Output_reloc
               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,
               ulonglong param_5,bool param_6)

{
  uint uVar1;
  undefined4 uVar2;
  undefined3 in_stack_00000018;
  undefined4 in_stack_0000001c;
  byte in_stack_00000023;
  
  uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |
          (in_stack_00000023 & 1) << 2;
  *(undefined4 *)(param_1 + 0x10) = 0xfffffffe;
  *(int *)(param_1 + 0x18) = param_5._0_4_;
  *(undefined4 *)(param_1 + 0xc) = in_stack_0000001c;
  *(uint *)(param_1 + 0x14) = uVar1;
  param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2);
  *(undefined4 *)(param_1 + 8) = _in_stack_00000018;
  if (param_5._0_4_ == -4) {
    uVar2 = 0x356;
    goto LAB_00224fb4;
  }
  if (param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)) {
    *(uint *)param_1 = param_2;
    *(uint *)(param_1 + 4) = param_4;
    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;
    return;
  }
  do {
    uVar2 = 0x358;
LAB_00224fb4:
    (*(code *)PTR_do_gold_unreachable_004c1a30)
              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,
               PTR_s_in_a_linker_script_004c191c + -0x36b4);
  } while( true );
}


lui gp,0x2a
addiu gp,gp,0x4320
addu gp,gp,t9
addiu sp,sp,-0x20
lw v0,0x14(a0)
li t2,-0x2
li t0,-0x4
lbu v1,0x43(sp)
ins v0,a2,0x4,0x1c
lw t1,0x30(sp)
lw t3,0x3c(sp)
ins v0,v1,0x3,0x1
sw gp,0x10(sp)
sw ra,0x1c(sp)
ins v0,v1,0x2,0x1
sw t2,0x10(a0)
sw t1,0x18(a0)
sw t3,0xc(a0)
and v1,v0,t0
lw t2,0x38(sp)
sw v0,0x14(a0)
ori v0,v1,0x2
sb v0,0x17(a0)
beq t1,t0,0x00224fb0
_sw t2,0x8(a0)
ext v0,a2,0x0,0x1c
bne a2,v0,0x00224fcc
_li v1,0x1
sw a1,0x0(a0)
sw a3,0x4(a0)
lw v0,0x98(a1)
ins v0,v1,0x1f,0x1
sw v0,0x98(a1)
lw ra,0x1c(sp)
jr ra
_addiu sp,sp,0x20
li a1,0x356
lw a2,-0x7924(gp)
lw a0,-0x7924(gp)
lw t9,-0x7810(gp)
addiu a2,a2,-0x36b4
jalr t9
_addiu a0,a0,-0x48b4
b 0x00224fb4
_li a1,0x358
(translation_unit "/* gold::Output_reloc<9, false, 64, false>::Output_reloc(gold::Output_section*, unsigned int,\n   gold::Sized_relobj<64, false>*, unsigned int, unsigned long long, bool) */\n\nvoid gold::Output_reloc<9,false,64,false>::Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  undefined3 in_stack_00000018;\n  undefined4 in_stack_0000001c;\n  byte in_stack_00000023;\n  \n  uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2;\n  *(undefined4 *)(param_1 + 0x10) = 0xfffffffe;\n  *(int *)(param_1 + 0x18) = param_5._0_4_;\n  *(undefined4 *)(param_1 + 0xc) = in_stack_0000001c;\n  *(uint *)(param_1 + 0x14) = uVar1;\n  param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2);\n  *(undefined4 *)(param_1 + 8) = _in_stack_00000018;\n  if (param_5._0_4_ == -4) {\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }\n  if (param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)) {\n    *(uint *)param_1 = param_2;\n    *(uint *)(param_1 + 4) = param_4;\n    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;\n    return;\n  }\n  do {\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  } while( true );\n}\n\n" comment (declaration "void gold::Output_reloc<9,false,64,false>::Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)\n\n{\n  uint uVar1;" primitive_type (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier (ERROR ",64" , number_literal) , (ERROR "false>::Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)\n\n{\n  uint" identifier > : : (function_declarator "Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)" identifier (parameter_list "(Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)" ( (parameter_declaration "Output_section *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "Sized_relobj *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "ulonglong param_5" type_identifier identifier) , (parameter_declaration "bool param_6" primitive_type identifier) ))) { identifier) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined3 in_stack_00000018;" type_identifier identifier ;) (declaration "undefined4 in_stack_0000001c;" type_identifier identifier ;) (declaration "byte in_stack_00000023;" type_identifier identifier ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2;" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2" identifier = (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2" (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3" (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4" (binary_expression "*(uint *)(param_1 + 0x14) & 3" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) | (binary_expression "(int)param_3 << 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) | (binary_expression "(in_stack_00000023 & 1) << 3" (parenthesized_expression "(in_stack_00000023 & 1)" ( (binary_expression "in_stack_00000023 & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "(in_stack_00000023 & 1) << 2" (parenthesized_expression "(in_stack_00000023 & 1)" ( (binary_expression "in_stack_00000023 & 1" identifier & number_literal) )) << number_literal))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0xfffffffe;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0xfffffffe" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x18) = param_5._0_4_;" (assignment_expression "*(int *)(param_1 + 0x18) = param_5._0_4_" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (field_expression "param_5._0_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)(param_1 + 0xc) = in_stack_0000001c;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = in_stack_0000001c" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x14) = uVar1;" (assignment_expression "*(uint *)(param_1 + 0x14) = uVar1" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2);" (assignment_expression "param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2)" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = (call_expression "(Output_section)((byte)uVar1 & 0xfc | 2)" (parenthesized_expression "(Output_section)" ( identifier )) (argument_list "((byte)uVar1 & 0xfc | 2)" ( (binary_expression "(byte)uVar1 & 0xfc | 2" (binary_expression "(byte)uVar1 & 0xfc" (cast_expression "(byte)uVar1" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) | number_literal) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = _in_stack_00000018;" (assignment_expression "*(undefined4 *)(param_1 + 8) = _in_stack_00000018" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_5._0_4_ == -4) {\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }" if (parenthesized_expression "(param_5._0_4_ == -4)" ( (binary_expression "param_5._0_4_ == -4" (field_expression "param_5._0_4_" identifier . field_identifier) == number_literal) )) (compound_statement "{\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }" { (expression_statement "uVar2 = 0x356;" (assignment_expression "uVar2 = 0x356" identifier = number_literal) ;) (goto_statement "goto LAB_00224fb4;" goto statement_identifier ;) })) (if_statement "if (param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)) {\n    *(uint *)param_1 = param_2;\n    *(uint *)(param_1 + 4) = param_4;\n    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;\n    return;\n  }" if (parenthesized_expression "(param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff))" ( (binary_expression "param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)" identifier == (cast_expression "(Sized_relobj *)((uint)param_3 & 0xfffffff)" ( (type_descriptor "Sized_relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_3 & 0xfffffff)" ( (binary_expression "(uint)param_3 & 0xfffffff" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) )) (compound_statement "{\n    *(uint *)param_1 = param_2;\n    *(uint *)(param_1 + 4) = param_4;\n    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;\n    return;\n  }" { (expression_statement "*(uint *)param_1 = param_2;" (assignment_expression "*(uint *)param_1 = param_2" (pointer_expression "*(uint *)param_1" * (cast_expression "(uint *)param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(uint *)(param_1 + 4) = param_4;" (assignment_expression "*(uint *)(param_1 + 4) = param_4" (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;" (assignment_expression "*(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000" (pointer_expression "*(uint *)(param_2 + 0x98)" * (cast_expression "(uint *)(param_2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x98)" ( (binary_expression "param_2 + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000" (binary_expression "*(uint *)(param_2 + 0x98) & 0x7fffffff" (pointer_expression "*(uint *)(param_2 + 0x98)" * (cast_expression "(uint *)(param_2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x98)" ( (binary_expression "param_2 + 0x98" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (return_statement "return;" return ;) })) (do_statement "do {\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  } while( true );" do (compound_statement "{\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  }" { (expression_statement "uVar2 = 0x358;" (assignment_expression "uVar2 = 0x358" identifier = number_literal) ;) (labeled_statement "LAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);" statement_identifier : (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4)" ( (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x48b4" identifier + number_literal) , identifier , (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x36b4" identifier + number_literal) ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) (ERROR "}" }))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: void Output_reloc(Output_reloc<9,_false,_64,_false> * this,\n   Output_section * os, uint type, Sized_relobj<64,_false> * relobj, uint shndx, Address address,\n   bool is_relative) */\n\nvoid __thiscall\ngold::Output_reloc<9,_false,_64,_false>::Output_reloc\n          (Output_reloc<9,_false,_64,_false> *this,Output_section *os,uint type,\n          Sized_relobj<64,_false> *relobj,uint shndx,Address address,bool is_relative)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  \n  uVar1 = *(uint *)&this->field_0x14 & 3 | type << 4 | (is_relative & 1) << 3 |\n          (is_relative & 1) << 2;\n  this->local_sym_index_ = 0xfffffffe;\n  this->shndx_ = shndx;\n  *(undefined4 *)((int)&this->address_ + 4) = address._4_4_;\n  *(uint *)&this->field_0x14 = uVar1;\n  this->field_0x17 = (byte)uVar1 & 0xfc | 2;\n  *(undefined4 *)&this->address_ = address._0_4_;\n  if (shndx == 0xfffffffc) {\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }\n  if (type == (type & 0xfffffff)) {\n    (this->u1_).os = os;\n    (this->u2_).relobj = relobj;\n    *(uint *)&os->field_0x98 = *(uint *)&os->field_0x98 & 0x7fffffff | 0x80000000;\n    return;\n  }\n  do {\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  } while( true );\n}\n\n" comment comment comment (declaration "void __thiscall\ngold::Output_reloc<9,_false,_64,_false>::Output_reloc\n          (Output_reloc<9,_false,_64,_false> *this,Output_section *os,uint type,\n          Sized_relobj<64,_false> *relobj,uint shndx,Address address,bool is_relative)\n\n{\n  uint uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , (ERROR "_false>::Output_reloc\n          (Output_reloc<9,_false,_64,_false> *this,Output_section *os,uint type,\n          Sized_relobj<64,_false> *relobj,uint shndx,Address address,bool is_relative)\n\n{\n  uint" identifier > : : (function_declarator "Output_reloc\n          (Output_reloc<9,_false,_64,_false> *this,Output_section *os,uint type,\n          Sized_relobj<64,_false> *relobj,uint shndx,Address address,bool is_relative)" identifier (parameter_list "(Output_reloc<9,_false,_64,_false> *this,Output_section *os,uint type,\n          Sized_relobj<64,_false> *relobj,uint shndx,Address address,bool is_relative)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_section *os" type_identifier (pointer_declarator "*os" * identifier)) , (parameter_declaration "uint type" type_identifier identifier) , (parameter_declaration "Sized_relobj" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *relobj" type_identifier (ERROR ">" >) (pointer_declarator "*relobj" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "Address address" type_identifier identifier) , (parameter_declaration "bool is_relative" primitive_type identifier) ))) { identifier) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (expression_statement "uVar1 = *(uint *)&this->field_0x14 & 3 | type << 4 | (is_relative & 1) << 3 |\n          (is_relative & 1) << 2;" (assignment_expression "uVar1 = *(uint *)&this->field_0x14 & 3 | type << 4 | (is_relative & 1) << 3 |\n          (is_relative & 1) << 2" identifier = (binary_expression "*(uint *)&this->field_0x14 & 3 | type << 4 | (is_relative & 1) << 3 |\n          (is_relative & 1) << 2" (binary_expression "*(uint *)&this->field_0x14 & 3 | type << 4 | (is_relative & 1) << 3" (binary_expression "*(uint *)&this->field_0x14 & 3 | type << 4" (binary_expression "*(uint *)&this->field_0x14 & 3" (pointer_expression "*(uint *)&this->field_0x14" * (cast_expression "(uint *)&this->field_0x14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x14" & (field_expression "this->field_0x14" identifier -> field_identifier)))) & number_literal) | (binary_expression "type << 4" identifier << number_literal)) | (binary_expression "(is_relative & 1) << 3" (parenthesized_expression "(is_relative & 1)" ( (binary_expression "is_relative & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "(is_relative & 1) << 2" (parenthesized_expression "(is_relative & 1)" ( (binary_expression "is_relative & 1" identifier & number_literal) )) << number_literal))) ;) (expression_statement "this->local_sym_index_ = 0xfffffffe;" (assignment_expression "this->local_sym_index_ = 0xfffffffe" (field_expression "this->local_sym_index_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->shndx_ = shndx;" (assignment_expression "this->shndx_ = shndx" (field_expression "this->shndx_" identifier -> field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)((int)&this->address_ + 4) = address._4_4_;" (assignment_expression "*(undefined4 *)((int)&this->address_ + 4) = address._4_4_" (pointer_expression "*(undefined4 *)((int)&this->address_ + 4)" * (cast_expression "(undefined4 *)((int)&this->address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->address_ + 4)" ( (binary_expression "(int)&this->address_ + 4" (cast_expression "(int)&this->address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->address_" & (field_expression "this->address_" identifier -> field_identifier))) + number_literal) )))) = (field_expression "address._4_4_" identifier . field_identifier)) ;) (expression_statement "*(uint *)&this->field_0x14 = uVar1;" (assignment_expression "*(uint *)&this->field_0x14 = uVar1" (pointer_expression "*(uint *)&this->field_0x14" * (cast_expression "(uint *)&this->field_0x14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x14" & (field_expression "this->field_0x14" identifier -> field_identifier)))) = identifier) ;) (expression_statement "this->field_0x17 = (byte)uVar1 & 0xfc | 2;" (assignment_expression "this->field_0x17 = (byte)uVar1 & 0xfc | 2" (field_expression "this->field_0x17" identifier -> field_identifier) = (binary_expression "(byte)uVar1 & 0xfc | 2" (binary_expression "(byte)uVar1 & 0xfc" (cast_expression "(byte)uVar1" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) | number_literal)) ;) (expression_statement "*(undefined4 *)&this->address_ = address._0_4_;" (assignment_expression "*(undefined4 *)&this->address_ = address._0_4_" (pointer_expression "*(undefined4 *)&this->address_" * (cast_expression "(undefined4 *)&this->address_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->address_" & (field_expression "this->address_" identifier -> field_identifier)))) = (field_expression "address._0_4_" identifier . field_identifier)) ;) (if_statement "if (shndx == 0xfffffffc) {\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }" if (parenthesized_expression "(shndx == 0xfffffffc)" ( (binary_expression "shndx == 0xfffffffc" identifier == number_literal) )) (compound_statement "{\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }" { (expression_statement "uVar2 = 0x356;" (assignment_expression "uVar2 = 0x356" identifier = number_literal) ;) (goto_statement "goto LAB_00224fb4;" goto statement_identifier ;) })) (if_statement "if (type == (type & 0xfffffff)) {\n    (this->u1_).os = os;\n    (this->u2_).relobj = relobj;\n    *(uint *)&os->field_0x98 = *(uint *)&os->field_0x98 & 0x7fffffff | 0x80000000;\n    return;\n  }" if (parenthesized_expression "(type == (type & 0xfffffff))" ( (binary_expression "type == (type & 0xfffffff)" identifier == (parenthesized_expression "(type & 0xfffffff)" ( (binary_expression "type & 0xfffffff" identifier & number_literal) ))) )) (compound_statement "{\n    (this->u1_).os = os;\n    (this->u2_).relobj = relobj;\n    *(uint *)&os->field_0x98 = *(uint *)&os->field_0x98 & 0x7fffffff | 0x80000000;\n    return;\n  }" { (expression_statement "(this->u1_).os = os;" (assignment_expression "(this->u1_).os = os" (field_expression "(this->u1_).os" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->u2_).relobj = relobj;" (assignment_expression "(this->u2_).relobj = relobj" (field_expression "(this->u2_).relobj" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "*(uint *)&os->field_0x98 = *(uint *)&os->field_0x98 & 0x7fffffff | 0x80000000;" (assignment_expression "*(uint *)&os->field_0x98 = *(uint *)&os->field_0x98 & 0x7fffffff | 0x80000000" (pointer_expression "*(uint *)&os->field_0x98" * (cast_expression "(uint *)&os->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&os->field_0x98" & (field_expression "os->field_0x98" identifier -> field_identifier)))) = (binary_expression "*(uint *)&os->field_0x98 & 0x7fffffff | 0x80000000" (binary_expression "*(uint *)&os->field_0x98 & 0x7fffffff" (pointer_expression "*(uint *)&os->field_0x98" * (cast_expression "(uint *)&os->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&os->field_0x98" & (field_expression "os->field_0x98" identifier -> field_identifier)))) & number_literal) | number_literal)) ;) (return_statement "return;" return ;) })) (do_statement "do {\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  } while( true );" do (compound_statement "{\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  }" { (expression_statement "uVar2 = 0x358;" (assignment_expression "uVar2 = 0x358" identifier = number_literal) ;) (labeled_statement "LAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);" statement_identifier : (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4)" ( (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x48b4" identifier + number_literal) , identifier , (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x36b4" identifier + number_literal) ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) (ERROR "}" }))
(translation_unit "void gold::Output_reloc<9,false,64,false>::Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  undefined3 in_stack_00000018;\n  undefined4 in_stack_0000001c;\n  byte in_stack_00000023;\n  \n  uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2;\n  *(undefined4 *)(param_1 + 0x10) = 0xfffffffe;\n  *(int *)(param_1 + 0x18) = param_5._0_4_;\n  *(undefined4 *)(param_1 + 0xc) = in_stack_0000001c;\n  *(uint *)(param_1 + 0x14) = uVar1;\n  param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2);\n  *(undefined4 *)(param_1 + 8) = _in_stack_00000018;\n  if (param_5._0_4_ == -4) {\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }\n  if (param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)) {\n    *(uint *)param_1 = param_2;\n    *(uint *)(param_1 + 4) = param_4;\n    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;\n    return;\n  }\n  do {\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  } while( true );\n}\n\n" (declaration "void gold::Output_reloc<9,false,64,false>::Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)\n\n{\n  uint uVar1;" primitive_type (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier (ERROR ",64" , number_literal) , (ERROR "false>::Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)\n\n{\n  uint" identifier > : : (function_declarator "Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)" identifier (parameter_list "(Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)" ( (parameter_declaration "Output_section *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "Sized_relobj *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "ulonglong param_5" type_identifier identifier) , (parameter_declaration "bool param_6" primitive_type identifier) ))) { identifier) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined3 in_stack_00000018;" type_identifier identifier ;) (declaration "undefined4 in_stack_0000001c;" type_identifier identifier ;) (declaration "byte in_stack_00000023;" type_identifier identifier ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2;" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2" identifier = (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2" (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3" (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4" (binary_expression "*(uint *)(param_1 + 0x14) & 3" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) | (binary_expression "(int)param_3 << 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) | (binary_expression "(in_stack_00000023 & 1) << 3" (parenthesized_expression "(in_stack_00000023 & 1)" ( (binary_expression "in_stack_00000023 & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "(in_stack_00000023 & 1) << 2" (parenthesized_expression "(in_stack_00000023 & 1)" ( (binary_expression "in_stack_00000023 & 1" identifier & number_literal) )) << number_literal))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0xfffffffe;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0xfffffffe" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x18) = param_5._0_4_;" (assignment_expression "*(int *)(param_1 + 0x18) = param_5._0_4_" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (field_expression "param_5._0_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)(param_1 + 0xc) = in_stack_0000001c;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = in_stack_0000001c" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x14) = uVar1;" (assignment_expression "*(uint *)(param_1 + 0x14) = uVar1" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2);" (assignment_expression "param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2)" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = (call_expression "(Output_section)((byte)uVar1 & 0xfc | 2)" (parenthesized_expression "(Output_section)" ( identifier )) (argument_list "((byte)uVar1 & 0xfc | 2)" ( (binary_expression "(byte)uVar1 & 0xfc | 2" (binary_expression "(byte)uVar1 & 0xfc" (cast_expression "(byte)uVar1" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) | number_literal) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 8) = _in_stack_00000018;" (assignment_expression "*(undefined4 *)(param_1 + 8) = _in_stack_00000018" (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (param_5._0_4_ == -4) {\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }" if (parenthesized_expression "(param_5._0_4_ == -4)" ( (binary_expression "param_5._0_4_ == -4" (field_expression "param_5._0_4_" identifier . field_identifier) == number_literal) )) (compound_statement "{\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }" { (expression_statement "uVar2 = 0x356;" (assignment_expression "uVar2 = 0x356" identifier = number_literal) ;) (goto_statement "goto LAB_00224fb4;" goto statement_identifier ;) })) (if_statement "if (param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)) {\n    *(uint *)param_1 = param_2;\n    *(uint *)(param_1 + 4) = param_4;\n    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;\n    return;\n  }" if (parenthesized_expression "(param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff))" ( (binary_expression "param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)" identifier == (cast_expression "(Sized_relobj *)((uint)param_3 & 0xfffffff)" ( (type_descriptor "Sized_relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_3 & 0xfffffff)" ( (binary_expression "(uint)param_3 & 0xfffffff" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) )) (compound_statement "{\n    *(uint *)param_1 = param_2;\n    *(uint *)(param_1 + 4) = param_4;\n    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;\n    return;\n  }" { (expression_statement "*(uint *)param_1 = param_2;" (assignment_expression "*(uint *)param_1 = param_2" (pointer_expression "*(uint *)param_1" * (cast_expression "(uint *)param_1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(uint *)(param_1 + 4) = param_4;" (assignment_expression "*(uint *)(param_1 + 4) = param_4" (pointer_expression "*(uint *)(param_1 + 4)" * (cast_expression "(uint *)(param_1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;" (assignment_expression "*(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000" (pointer_expression "*(uint *)(param_2 + 0x98)" * (cast_expression "(uint *)(param_2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x98)" ( (binary_expression "param_2 + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000" (binary_expression "*(uint *)(param_2 + 0x98) & 0x7fffffff" (pointer_expression "*(uint *)(param_2 + 0x98)" * (cast_expression "(uint *)(param_2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x98)" ( (binary_expression "param_2 + 0x98" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (return_statement "return;" return ;) })) (do_statement "do {\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  } while( true );" do (compound_statement "{\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  }" { (expression_statement "uVar2 = 0x358;" (assignment_expression "uVar2 = 0x358" identifier = number_literal) ;) (labeled_statement "LAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);" statement_identifier : (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4)" ( (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x48b4" identifier + number_literal) , identifier , (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x36b4" identifier + number_literal) ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ERROR IDENT : :) IDENT (ERROR < LIT) , IDENT (ERROR , LIT) , (ERROR IDENT > : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) { IDENT) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (field_expression IDENT . field_identifier)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) | LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + LIT) ))) ;)) }) while (parenthesized_expression ( BOOL )) ;) (ERROR }))
(declaration "void gold::Output_reloc<9,false,64,false>::Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)\n\n{\n  uint uVar1;" (primitive_type "void") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Output_reloc") (ERROR "<9" (< "<") (number_literal "9")) (, ",") (identifier "false") (ERROR ",64" (, ",") (number_literal "64")) (, ",") (ERROR "false>::Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)\n\n{\n  uint" (identifier "false") (> ">") (: ":") (: ":") (function_declarator "Output_reloc\n               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)" (identifier "Output_reloc") (parameter_list "(Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,\n               ulonglong param_5,bool param_6)" (( "(") (parameter_declaration "Output_section *param_1" (type_identifier "Output_section") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "Sized_relobj *param_3" (type_identifier "Sized_relobj") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "ulonglong param_5" (type_identifier "ulonglong") (identifier "param_5")) (, ",") (parameter_declaration "bool param_6" (primitive_type "bool") (identifier "param_6")) () ")"))) ({ "{") (identifier "uint")) (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined3 in_stack_00000018;" (type_identifier "undefined3") (identifier "in_stack_00000018") (; ";")) (declaration "undefined4 in_stack_0000001c;" (type_identifier "undefined4") (identifier "in_stack_0000001c") (; ";")) (declaration "byte in_stack_00000023;" (type_identifier "byte") (identifier "in_stack_00000023") (; ";")) (expression_statement "uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2;" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2" (identifier "uVar1") (= "=") (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |\n          (in_stack_00000023 & 1) << 2" (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3" (binary_expression "*(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4" (binary_expression "*(uint *)(param_1 + 0x14) & 3" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "3")) (| "|") (binary_expression "(int)param_3 << 4" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (<< "<<") (number_literal "4"))) (| "|") (binary_expression "(in_stack_00000023 & 1) << 3" (parenthesized_expression "(in_stack_00000023 & 1)" (( "(") (binary_expression "in_stack_00000023 & 1" (identifier "in_stack_00000023") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "3"))) (| "|") (binary_expression "(in_stack_00000023 & 1) << 2" (parenthesized_expression "(in_stack_00000023 & 1)" (( "(") (binary_expression "in_stack_00000023 & 1" (identifier "in_stack_00000023") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "2")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0xfffffffe;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0xfffffffe" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0xfffffffe")) (; ";")) (expression_statement "*(int *)(param_1 + 0x18) = param_5._0_4_;" (assignment_expression "*(int *)(param_1 + 0x18) = param_5._0_4_" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (field_expression "param_5._0_4_" (identifier "param_5") (. ".") (field_identifier "_0_4_"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xc) = in_stack_0000001c;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = in_stack_0000001c" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "in_stack_0000001c")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x14) = uVar1;" (assignment_expression "*(uint *)(param_1 + 0x14) = uVar1" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2);" (assignment_expression "param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2)" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (= "=") (call_expression "(Output_section)((byte)uVar1 & 0xfc | 2)" (parenthesized_expression "(Output_section)" (( "(") (identifier "Output_section") () ")")) (argument_list "((byte)uVar1 & 0xfc | 2)" (( "(") (binary_expression "(byte)uVar1 & 0xfc | 2" (binary_expression "(byte)uVar1 & 0xfc" (cast_expression "(byte)uVar1" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar1")) (& "&") (number_literal "0xfc")) (| "|") (number_literal "2")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 8) = _in_stack_00000018;" (assignment_expression "*(undefined4 *)(param_1 + 8) = _in_stack_00000018" (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "_in_stack_00000018")) (; ";")) (if_statement "if (param_5._0_4_ == -4) {\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }" (if "if") (parenthesized_expression "(param_5._0_4_ == -4)" (( "(") (binary_expression "param_5._0_4_ == -4" (field_expression "param_5._0_4_" (identifier "param_5") (. ".") (field_identifier "_0_4_")) (== "==") (number_literal "-4")) () ")")) (compound_statement "{\n    uVar2 = 0x356;\n    goto LAB_00224fb4;\n  }" ({ "{") (expression_statement "uVar2 = 0x356;" (assignment_expression "uVar2 = 0x356" (identifier "uVar2") (= "=") (number_literal "0x356")) (; ";")) (goto_statement "goto LAB_00224fb4;" (goto "goto") (statement_identifier "LAB_00224fb4") (; ";")) (} "}"))) (if_statement "if (param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)) {\n    *(uint *)param_1 = param_2;\n    *(uint *)(param_1 + 4) = param_4;\n    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff))" (( "(") (binary_expression "param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)" (identifier "param_3") (== "==") (cast_expression "(Sized_relobj *)((uint)param_3 & 0xfffffff)" (( "(") (type_descriptor "Sized_relobj *" (type_identifier "Sized_relobj") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_3 & 0xfffffff)" (( "(") (binary_expression "(uint)param_3 & 0xfffffff" (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3")) (& "&") (number_literal "0xfffffff")) () ")")))) () ")")) (compound_statement "{\n    *(uint *)param_1 = param_2;\n    *(uint *)(param_1 + 4) = param_4;\n    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;\n    return;\n  }" ({ "{") (expression_statement "*(uint *)param_1 = param_2;" (assignment_expression "*(uint *)param_1 = param_2" (pointer_expression "*(uint *)param_1" (* "*") (cast_expression "(uint *)param_1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(uint *)(param_1 + 4) = param_4;" (assignment_expression "*(uint *)(param_1 + 4) = param_4" (pointer_expression "*(uint *)(param_1 + 4)" (* "*") (cast_expression "(uint *)(param_1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;" (assignment_expression "*(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000" (pointer_expression "*(uint *)(param_2 + 0x98)" (* "*") (cast_expression "(uint *)(param_2 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x98)" (( "(") (binary_expression "param_2 + 0x98" (identifier "param_2") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (binary_expression "*(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000" (binary_expression "*(uint *)(param_2 + 0x98) & 0x7fffffff" (pointer_expression "*(uint *)(param_2 + 0x98)" (* "*") (cast_expression "(uint *)(param_2 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x98)" (( "(") (binary_expression "param_2 + 0x98" (identifier "param_2") (+ "+") (number_literal "0x98")) () ")")))) (& "&") (number_literal "0x7fffffff")) (| "|") (number_literal "0x80000000"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  } while( true );" (do "do") (compound_statement "{\n    uVar2 = 0x358;\nLAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);\n  }" ({ "{") (expression_statement "uVar2 = 0x358;" (assignment_expression "uVar2 = 0x358" (identifier "uVar2") (= "=") (number_literal "0x358")) (; ";")) (labeled_statement "LAB_00224fb4:\n    (*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);" (statement_identifier "LAB_00224fb4") (: ":") (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004c1a30"))) () ")")) (argument_list "(PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,\n               PTR_s_in_a_linker_script_004c191c + -0x36b4)" (( "(") (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x48b4" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "-0x48b4")) (, ",") (identifier "uVar2") (, ",") (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x36b4" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "-0x36b4")) () ")"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (ERROR "}" (} "}"))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: void Output_reloc(Output_reloc<9,_false,_64,_false> * this,
   Output_section * os, uint type, Sized_relobj<64,_false> * relobj, uint shndx, Address address,
   bool is_relative) */

void __thiscall
gold::Output_reloc<9,_false,_64,_false>::Output_reloc
          (Output_reloc<9,_false,_64,_false> *this,Output_section *os,type_2 var_1,
          Sized_relobj<64,_false> *relobj,type_2 var_3,Address address,bool var_2)

{
  type_2 uVar1;
  type_1 uVar2;
  
  uVar1 = *(type_2 *)&this->field_0x14 & 3 | var_1 << 4 | (var_2 & 1) << 3 |
          (var_2 & 1) << 2;
  this->local_sym_index_ = 0xfffffffe;
  this->shndx_ = var_3;
  *(type_1 *)((int)&this->address_ + 4) = address._4_4_;
  *(type_2 *)&this->field_0x14 = uVar1;
  this->field_0x17 = (type_3)uVar1 & 0xfc | 2;
  *(type_1 *)&this->address_ = address._0_4_;
  if (var_3 == 0xfffffffc) {
    uVar2 = 0x356;
    goto LAB_00224fb4;
  }
  if (var_1 == (var_1 & 0xfffffff)) {
    (this->u1_).os = os;
    (this->u2_).relobj = relobj;
    *(type_2 *)&os->field_0x98 = *(type_2 *)&os->field_0x98 & 0x7fffffff | 0x80000000;
    return;
  }
  do {
    uVar2 = 0x358;
LAB_00224fb4:
    (*(type_4 *)PTR_do_gold_unreachable_004c1a30)
              (var_4 + -0x48b4,uVar2,
               var_4 + -0x36b4);
  } while( true );
}


(translation_unit (declaration type: (primitive_type) (ERROR (identifier)) declarator: (identifier) (ERROR (number_literal)) declarator: (identifier) (ERROR (number_literal)) (ERROR (identifier) (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) 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: (primitive_type) declarator: (identifier)))) (identifier)) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) (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: (number_literal))) (expression_statement (assignment_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: (field_expression argument: (identifier) field: (field_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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (number_literal)))))) (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)))) (return_statement))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (true))) (ERROR))

/* gold::MASKED<9, false, 64, false>::MASKED(gold::Output_section*, unsigned int,
   gold::Sized_relobj<64, false>*, unsigned int, unsigned long long, bool) */

void gold::MASKED<9,false,64,false>::MASKED
               (Output_section *param_1,uint param_2,Sized_relobj *param_3,uint param_4,
               ulonglong param_5,bool param_6)

{
  uint uVar1;
  undefined4 uVar2;
  undefined3 in_stack_00000018;
  undefined4 in_stack_0000001c;
  byte in_stack_00000023;
  
  uVar1 = *(uint *)(param_1 + 0x14) & 3 | (int)param_3 << 4 | (in_stack_00000023 & 1) << 3 |
          (in_stack_00000023 & 1) << 2;
  *(undefined4 *)(param_1 + 0x10) = 0xfffffffe;
  *(int *)(param_1 + 0x18) = param_5._0_4_;
  *(undefined4 *)(param_1 + 0xc) = in_stack_0000001c;
  *(uint *)(param_1 + 0x14) = uVar1;
  param_1[0x17] = (Output_section)((byte)uVar1 & 0xfc | 2);
  *(undefined4 *)(param_1 + 8) = _in_stack_00000018;
  if (param_5._0_4_ == -4) {
    uVar2 = 0x356;
    goto LAB_00224fb4;
  }
  if (param_3 == (Sized_relobj *)((uint)param_3 & 0xfffffff)) {
    *(uint *)param_1 = param_2;
    *(uint *)(param_1 + 4) = param_4;
    *(uint *)(param_2 + 0x98) = *(uint *)(param_2 + 0x98) & 0x7fffffff | 0x80000000;
    return;
  }
  do {
    uVar2 = 0x358;
LAB_00224fb4:
    (*(code *)PTR_do_gold_unreachable_004c1a30)
              (PTR_s_in_a_linker_script_004c191c + -0x48b4,uVar2,
               PTR_s_in_a_linker_script_004c191c + -0x36b4);
  } while( true );
}

