
/* 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,_true> * this,
   Sized_relobj<64,_true> * relobj, uint local_sym_index, uint type, Output_data * od, Address
   address, bool is_relative, bool is_symbolless, bool is_section_symbol, bool use_plt_offset) */

void __thiscall
gold::Output_reloc<9,_false,_64,_true>::Output_reloc
          (Output_reloc<9,_false,_64,_true> *this,Sized_relobj<64,_true> *relobj,uint param_2,
          uint type,Output_data *od,Address address,bool is_relative,bool is_symbolless,
          bool is_section_symbol,bool use_plt_offset)

{
  undefined4 uVar1;
  
  this->local_sym_index_ = param_2;
  this->address_ = address;
  this->shndx_ = 0xfffffffc;
  *(uint *)&this->field_0x14 =
       type << 4 | (is_relative & 1) << 3 | (is_symbolless & 1) << 2 | (is_section_symbol & 1) << 1
       | use_plt_offset & 1;
  if ((param_2 != 0xffffffff) && (param_2 != 0xfffffffc)) {
    if (type == (type & 0xfffffff)) {
      (this->u1_).relobj = relobj;
      (this->u2_).od = od;
      return;
    }
    do {
      uVar1 = 0x311;
LAB_0019666c:
      (*(code *)PTR_do_gold_unreachable_004323c4)
                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);
    } while( true );
  }
  uVar1 = 0x30f;
  goto LAB_0019666c;
}



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

void gold::Output_reloc<9,false,64,true>::Output_reloc
               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,
               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)

{
  undefined4 uVar1;
  undefined3 in_stack_00000018;
  undefined3 in_stack_0000001c;
  byte in_stack_0000002b;
  byte in_stack_0000002f;
  
  *(uint *)(param_1 + 0x10) = param_3;
  *(undefined4 *)(param_1 + 8) = _in_stack_00000018;
  *(undefined4 *)(param_1 + 0xc) = _in_stack_0000001c;
  *(undefined4 *)(param_1 + 0x18) = 0xfffffffc;
  *(uint *)(param_1 + 0x14) =
       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |
       in_stack_0000002f & 1;
  if ((param_3 == 0xffffffff) || (param_3 == 0xfffffffc)) {
    uVar1 = 0x30f;
  }
  else {
    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {
      *(uint *)param_1 = param_2;
      *(undefined4 *)(param_1 + 4) = param_5._0_4_;
      return;
    }
    uVar1 = 0x311;
  }
  (*(code *)PTR_do_gold_unreachable_004323c4)
            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);
  return;
}


lui gp,0x2a
addiu gp,gp,0x3bf4
addu gp,gp,t9
addiu sp,sp,-0x20
lw v0,0x14(a0)
li v1,-0x4
li t2,-0x1
lbu t0,0x43(sp)
ins v0,a3,0x4,0x1c
sw gp,0x10(sp)
sw ra,0x1c(sp)
ins v0,t0,0x3,0x1
lw t0,0x38(sp)
lw t1,0x3c(sp)
sw a2,0x10(a0)
sw t0,0x8(a0)
lbu t0,0x47(sp)
sw t1,0xc(a0)
sw v1,0x18(a0)
ins v0,t0,0x2,0x1
lbu t0,0x4b(sp)
ins v0,t0,0x1,0x1
lbu t0,0x4f(sp)
ins v0,t0,0x0,0x1
beq a2,t2,0x00196668
_sw v0,0x14(a0)
beq a2,v1,0x00196668
_ext v0,a3,0x0,0x1c
bne a3,v0,0x00196684
_lw v0,0x30(sp)
lw ra,0x1c(sp)
sw a1,0x0(a0)
sw v0,0x4(a0)
jr ra
_addiu sp,sp,0x20
li a1,0x30f
lw a2,-0x7e1c(gp)
lw a0,-0x7e1c(gp)
lw t9,-0x7e0c(gp)
addiu a2,a2,0x6a68
jalr t9
_addiu a0,a0,0x59f0
b 0x0019666c
_li a1,0x311
(translation_unit "/* gold::Output_reloc<9, false, 64, true>::Output_reloc(gold::Sized_relobj<64, true>*, unsigned int,\n   unsigned int, gold::Output_data*, unsigned long long, bool, bool, bool, bool) */\n\nvoid gold::Output_reloc<9,false,64,true>::Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)\n\n{\n  undefined4 uVar1;\n  undefined3 in_stack_00000018;\n  undefined3 in_stack_0000001c;\n  byte in_stack_0000002b;\n  byte in_stack_0000002f;\n  \n  *(uint *)(param_1 + 0x10) = param_3;\n  *(undefined4 *)(param_1 + 8) = _in_stack_00000018;\n  *(undefined4 *)(param_1 + 0xc) = _in_stack_0000001c;\n  *(undefined4 *)(param_1 + 0x18) = 0xfffffffc;\n  *(uint *)(param_1 + 0x14) =\n       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1;\n  if ((param_3 == 0xffffffff) || (param_3 == 0xfffffffc)) {\n    uVar1 = 0x30f;\n  }\n  else {\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);\n  return;\n}\n\n" comment (declaration "void gold::Output_reloc<9,false,64,true>::Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)\n\n{\n  undefined4 uVar1;" primitive_type (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier (ERROR ",64" , number_literal) , (ERROR "true>::Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)\n\n{\n  undefined4" identifier > : : (function_declarator "Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)" identifier (parameter_list "(Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)" ( (parameter_declaration "Sized_relobj *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "Output_data *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "ulonglong param_5" type_identifier identifier) , (parameter_declaration "bool param_6" primitive_type identifier) , (parameter_declaration "bool param_7" primitive_type identifier) , (parameter_declaration "bool param_8" primitive_type identifier) , (parameter_declaration "bool param_9" primitive_type identifier) ))) { identifier) identifier ;) (declaration "undefined3 in_stack_00000018;" type_identifier identifier ;) (declaration "undefined3 in_stack_0000001c;" type_identifier identifier ;) (declaration "byte in_stack_0000002b;" type_identifier identifier ;) (declaration "byte in_stack_0000002f;" type_identifier identifier ;) (expression_statement "*(uint *)(param_1 + 0x10) = param_3;" (assignment_expression "*(uint *)(param_1 + 0x10) = param_3" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (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) ;) (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 "*(undefined4 *)(param_1 + 0x18) = 0xfffffffc;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = 0xfffffffc" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(param_1 + 0x14) =\n       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1;" (assignment_expression "*(uint *)(param_1 + 0x14) =\n       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1" (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) )))) = (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3" (binary_expression "(int)param_4 << 4" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) | (binary_expression "(param_8 & 1) << 3" (parenthesized_expression "(param_8 & 1)" ( (binary_expression "param_8 & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "(param_9 & 1) << 2" (parenthesized_expression "(param_9 & 1)" ( (binary_expression "param_9 & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "(in_stack_0000002b & 1) << 1" (parenthesized_expression "(in_stack_0000002b & 1)" ( (binary_expression "in_stack_0000002b & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "in_stack_0000002f & 1" identifier & number_literal))) ;) (if_statement "if ((param_3 == 0xffffffff) || (param_3 == 0xfffffffc)) {\n    uVar1 = 0x30f;\n  }\n  else {\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" if (parenthesized_expression "((param_3 == 0xffffffff) || (param_3 == 0xfffffffc))" ( (binary_expression "(param_3 == 0xffffffff) || (param_3 == 0xfffffffc)" (parenthesized_expression "(param_3 == 0xffffffff)" ( (binary_expression "param_3 == 0xffffffff" identifier == number_literal) )) || (parenthesized_expression "(param_3 == 0xfffffffc)" ( (binary_expression "param_3 == 0xfffffffc" identifier == number_literal) ))) )) (compound_statement "{\n    uVar1 = 0x30f;\n  }" { (expression_statement "uVar1 = 0x30f;" (assignment_expression "uVar1 = 0x30f" identifier = number_literal) ;) }) (else_clause "else {\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" else (compound_statement "{\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" { (if_statement "if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }" if (parenthesized_expression "(param_4 == (Output_data *)((uint)param_4 & 0xfffffff))" ( (binary_expression "param_4 == (Output_data *)((uint)param_4 & 0xfffffff)" identifier == (cast_expression "(Output_data *)((uint)param_4 & 0xfffffff)" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_4 & 0xfffffff)" ( (binary_expression "(uint)param_4 & 0xfffffff" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) )) (compound_statement "{\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\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 "*(undefined4 *)(param_1 + 4) = param_5._0_4_;" (assignment_expression "*(undefined4 *)(param_1 + 4) = param_5._0_4_" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (field_expression "param_5._0_4_" identifier . field_identifier)) ;) (return_statement "return;" return ;) })) (expression_statement "uVar1 = 0x311;" (assignment_expression "uVar1 = 0x311" identifier = number_literal) ;) }))) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + 0x59f0" identifier + number_literal) , identifier , (binary_expression "PTR_s_alize_xindex_004323b4 + 0x6a68" identifier + number_literal) ))) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: void Output_reloc(Output_reloc<9,_false,_64,_true> * this,\n   Sized_relobj<64,_true> * relobj, uint local_sym_index, uint type, Output_data * od, Address\n   address, bool is_relative, bool is_symbolless, bool is_section_symbol, bool use_plt_offset) */\n\nvoid __thiscall\ngold::Output_reloc<9,_false,_64,_true>::Output_reloc\n          (Output_reloc<9,_false,_64,_true> *this,Sized_relobj<64,_true> *relobj,uint param_2,\n          uint type,Output_data *od,Address address,bool is_relative,bool is_symbolless,\n          bool is_section_symbol,bool use_plt_offset)\n\n{\n  undefined4 uVar1;\n  \n  this->local_sym_index_ = param_2;\n  this->address_ = address;\n  this->shndx_ = 0xfffffffc;\n  *(uint *)&this->field_0x14 =\n       type << 4 | (is_relative & 1) << 3 | (is_symbolless & 1) << 2 | (is_section_symbol & 1) << 1\n       | use_plt_offset & 1;\n  if ((param_2 != 0xffffffff) && (param_2 != 0xfffffffc)) {\n    if (type == (type & 0xfffffff)) {\n      (this->u1_).relobj = relobj;\n      (this->u2_).od = od;\n      return;\n    }\n    do {\n      uVar1 = 0x311;\nLAB_0019666c:\n      (*(code *)PTR_do_gold_unreachable_004323c4)\n                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);\n    } while( true );\n  }\n  uVar1 = 0x30f;\n  goto LAB_0019666c;\n}\n\n" comment comment comment (declaration "void __thiscall\ngold::Output_reloc<9,_false,_64,_true>::Output_reloc\n          (Output_reloc<9,_false,_64,_true> *this,Sized_relobj<64,_true> *relobj,uint param_2,\n          uint type,Output_data *od,Address address,bool is_relative,bool is_symbolless,\n          bool is_section_symbol,bool use_plt_offset)\n\n{\n  undefined4 uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , (ERROR "_true>::Output_reloc\n          (Output_reloc<9,_false,_64,_true> *this,Sized_relobj<64,_true> *relobj,uint param_2,\n          uint type,Output_data *od,Address address,bool is_relative,bool is_symbolless,\n          bool is_section_symbol,bool use_plt_offset)\n\n{\n  undefined4" identifier > : : (function_declarator "Output_reloc\n          (Output_reloc<9,_false,_64,_true> *this,Sized_relobj<64,_true> *relobj,uint param_2,\n          uint type,Output_data *od,Address address,bool is_relative,bool is_symbolless,\n          bool is_section_symbol,bool use_plt_offset)" identifier (parameter_list "(Output_reloc<9,_false,_64,_true> *this,Sized_relobj<64,_true> *relobj,uint param_2,\n          uint type,Output_data *od,Address address,bool is_relative,bool is_symbolless,\n          bool is_section_symbol,bool use_plt_offset)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Sized_relobj" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *relobj" type_identifier (ERROR ">" >) (pointer_declarator "*relobj" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint type" type_identifier identifier) , (parameter_declaration "Output_data *od" type_identifier (pointer_declarator "*od" * identifier)) , (parameter_declaration "Address address" type_identifier identifier) , (parameter_declaration "bool is_relative" primitive_type identifier) , (parameter_declaration "bool is_symbolless" primitive_type identifier) , (parameter_declaration "bool is_section_symbol" primitive_type identifier) , (parameter_declaration "bool use_plt_offset" primitive_type identifier) ))) { identifier) identifier ;) (expression_statement "this->local_sym_index_ = param_2;" (assignment_expression "this->local_sym_index_ = param_2" (field_expression "this->local_sym_index_" identifier -> field_identifier) = identifier) ;) (expression_statement "this->address_ = address;" (assignment_expression "this->address_ = address" (field_expression "this->address_" identifier -> field_identifier) = identifier) ;) (expression_statement "this->shndx_ = 0xfffffffc;" (assignment_expression "this->shndx_ = 0xfffffffc" (field_expression "this->shndx_" identifier -> field_identifier) = number_literal) ;) (expression_statement "*(uint *)&this->field_0x14 =\n       type << 4 | (is_relative & 1) << 3 | (is_symbolless & 1) << 2 | (is_section_symbol & 1) << 1\n       | use_plt_offset & 1;" (assignment_expression "*(uint *)&this->field_0x14 =\n       type << 4 | (is_relative & 1) << 3 | (is_symbolless & 1) << 2 | (is_section_symbol & 1) << 1\n       | use_plt_offset & 1" (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)))) = (binary_expression "type << 4 | (is_relative & 1) << 3 | (is_symbolless & 1) << 2 | (is_section_symbol & 1) << 1\n       | use_plt_offset & 1" (binary_expression "type << 4 | (is_relative & 1) << 3 | (is_symbolless & 1) << 2 | (is_section_symbol & 1) << 1" (binary_expression "type << 4 | (is_relative & 1) << 3 | (is_symbolless & 1) << 2" (binary_expression "type << 4 | (is_relative & 1) << 3" (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_symbolless & 1) << 2" (parenthesized_expression "(is_symbolless & 1)" ( (binary_expression "is_symbolless & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "(is_section_symbol & 1) << 1" (parenthesized_expression "(is_section_symbol & 1)" ( (binary_expression "is_section_symbol & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "use_plt_offset & 1" identifier & number_literal))) ;) (if_statement "if ((param_2 != 0xffffffff) && (param_2 != 0xfffffffc)) {\n    if (type == (type & 0xfffffff)) {\n      (this->u1_).relobj = relobj;\n      (this->u2_).od = od;\n      return;\n    }\n    do {\n      uVar1 = 0x311;\nLAB_0019666c:\n      (*(code *)PTR_do_gold_unreachable_004323c4)\n                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);\n    } while( true );\n  }" if (parenthesized_expression "((param_2 != 0xffffffff) && (param_2 != 0xfffffffc))" ( (binary_expression "(param_2 != 0xffffffff) && (param_2 != 0xfffffffc)" (parenthesized_expression "(param_2 != 0xffffffff)" ( (binary_expression "param_2 != 0xffffffff" identifier != number_literal) )) && (parenthesized_expression "(param_2 != 0xfffffffc)" ( (binary_expression "param_2 != 0xfffffffc" identifier != number_literal) ))) )) (compound_statement "{\n    if (type == (type & 0xfffffff)) {\n      (this->u1_).relobj = relobj;\n      (this->u2_).od = od;\n      return;\n    }\n    do {\n      uVar1 = 0x311;\nLAB_0019666c:\n      (*(code *)PTR_do_gold_unreachable_004323c4)\n                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);\n    } while( true );\n  }" { (if_statement "if (type == (type & 0xfffffff)) {\n      (this->u1_).relobj = relobj;\n      (this->u2_).od = od;\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_).relobj = relobj;\n      (this->u2_).od = od;\n      return;\n    }" { (expression_statement "(this->u1_).relobj = relobj;" (assignment_expression "(this->u1_).relobj = relobj" (field_expression "(this->u1_).relobj" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->u2_).od = od;" (assignment_expression "(this->u2_).od = od" (field_expression "(this->u2_).od" (parenthesized_expression "(this->u2_)" ( (field_expression "this->u2_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (do_statement "do {\n      uVar1 = 0x311;\nLAB_0019666c:\n      (*(code *)PTR_do_gold_unreachable_004323c4)\n                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);\n    } while( true );" do (compound_statement "{\n      uVar1 = 0x311;\nLAB_0019666c:\n      (*(code *)PTR_do_gold_unreachable_004323c4)\n                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);\n    }" { (expression_statement "uVar1 = 0x311;" (assignment_expression "uVar1 = 0x311" identifier = number_literal) ;) (labeled_statement "LAB_0019666c:\n      (*(code *)PTR_do_gold_unreachable_004323c4)\n                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);" statement_identifier : (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)\n                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + 0x59f0" identifier + number_literal) , identifier , (binary_expression "PTR_s_alize_xindex_004323b4 + 0x6a68" identifier + number_literal) ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar1 = 0x30f;" (assignment_expression "uVar1 = 0x30f" identifier = number_literal) ;) (goto_statement "goto LAB_0019666c;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit "void gold::Output_reloc<9,false,64,true>::Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)\n\n{\n  undefined4 uVar1;\n  undefined3 in_stack_00000018;\n  undefined3 in_stack_0000001c;\n  byte in_stack_0000002b;\n  byte in_stack_0000002f;\n  \n  *(uint *)(param_1 + 0x10) = param_3;\n  *(undefined4 *)(param_1 + 8) = _in_stack_00000018;\n  *(undefined4 *)(param_1 + 0xc) = _in_stack_0000001c;\n  *(undefined4 *)(param_1 + 0x18) = 0xfffffffc;\n  *(uint *)(param_1 + 0x14) =\n       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1;\n  if ((param_3 == 0xffffffff) || (param_3 == 0xfffffffc)) {\n    uVar1 = 0x30f;\n  }\n  else {\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }\n  (*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);\n  return;\n}\n\n" (declaration "void gold::Output_reloc<9,false,64,true>::Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)\n\n{\n  undefined4 uVar1;" primitive_type (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier (ERROR ",64" , number_literal) , (ERROR "true>::Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)\n\n{\n  undefined4" identifier > : : (function_declarator "Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)" identifier (parameter_list "(Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)" ( (parameter_declaration "Sized_relobj *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "Output_data *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "ulonglong param_5" type_identifier identifier) , (parameter_declaration "bool param_6" primitive_type identifier) , (parameter_declaration "bool param_7" primitive_type identifier) , (parameter_declaration "bool param_8" primitive_type identifier) , (parameter_declaration "bool param_9" primitive_type identifier) ))) { identifier) identifier ;) (declaration "undefined3 in_stack_00000018;" type_identifier identifier ;) (declaration "undefined3 in_stack_0000001c;" type_identifier identifier ;) (declaration "byte in_stack_0000002b;" type_identifier identifier ;) (declaration "byte in_stack_0000002f;" type_identifier identifier ;) (expression_statement "*(uint *)(param_1 + 0x10) = param_3;" (assignment_expression "*(uint *)(param_1 + 0x10) = param_3" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (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) ;) (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 "*(undefined4 *)(param_1 + 0x18) = 0xfffffffc;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = 0xfffffffc" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(param_1 + 0x14) =\n       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1;" (assignment_expression "*(uint *)(param_1 + 0x14) =\n       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1" (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) )))) = (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3" (binary_expression "(int)param_4 << 4" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) | (binary_expression "(param_8 & 1) << 3" (parenthesized_expression "(param_8 & 1)" ( (binary_expression "param_8 & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "(param_9 & 1) << 2" (parenthesized_expression "(param_9 & 1)" ( (binary_expression "param_9 & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "(in_stack_0000002b & 1) << 1" (parenthesized_expression "(in_stack_0000002b & 1)" ( (binary_expression "in_stack_0000002b & 1" identifier & number_literal) )) << number_literal)) | (binary_expression "in_stack_0000002f & 1" identifier & number_literal))) ;) (if_statement "if ((param_3 == 0xffffffff) || (param_3 == 0xfffffffc)) {\n    uVar1 = 0x30f;\n  }\n  else {\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" if (parenthesized_expression "((param_3 == 0xffffffff) || (param_3 == 0xfffffffc))" ( (binary_expression "(param_3 == 0xffffffff) || (param_3 == 0xfffffffc)" (parenthesized_expression "(param_3 == 0xffffffff)" ( (binary_expression "param_3 == 0xffffffff" identifier == number_literal) )) || (parenthesized_expression "(param_3 == 0xfffffffc)" ( (binary_expression "param_3 == 0xfffffffc" identifier == number_literal) ))) )) (compound_statement "{\n    uVar1 = 0x30f;\n  }" { (expression_statement "uVar1 = 0x30f;" (assignment_expression "uVar1 = 0x30f" identifier = number_literal) ;) }) (else_clause "else {\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" else (compound_statement "{\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" { (if_statement "if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }" if (parenthesized_expression "(param_4 == (Output_data *)((uint)param_4 & 0xfffffff))" ( (binary_expression "param_4 == (Output_data *)((uint)param_4 & 0xfffffff)" identifier == (cast_expression "(Output_data *)((uint)param_4 & 0xfffffff)" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_4 & 0xfffffff)" ( (binary_expression "(uint)param_4 & 0xfffffff" (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) )) (compound_statement "{\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\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 "*(undefined4 *)(param_1 + 4) = param_5._0_4_;" (assignment_expression "*(undefined4 *)(param_1 + 4) = param_5._0_4_" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (field_expression "param_5._0_4_" identifier . field_identifier)) ;) (return_statement "return;" return ;) })) (expression_statement "uVar1 = 0x311;" (assignment_expression "uVar1 = 0x311" identifier = number_literal) ;) }))) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + 0x59f0" identifier + number_literal) , identifier , (binary_expression "PTR_s_alize_xindex_004323b4 + 0x6a68" identifier + number_literal) ))) ;) (return_statement "return;" return ;) (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 IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE 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 (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 (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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (binary_expression (binary_expression (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)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << 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 IDENT = LIT) ;) }) (else_clause else (compound_statement { (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) )))) = (field_expression IDENT . field_identifier)) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (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) ))) ;) (return_statement return ;) (ERROR }))
(declaration "void gold::Output_reloc<9,false,64,true>::Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)\n\n{\n  undefined4 uVar1;" (primitive_type "void") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Output_reloc") (ERROR "<9" (< "<") (number_literal "9")) (, ",") (identifier "false") (ERROR ",64" (, ",") (number_literal "64")) (, ",") (ERROR "true>::Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)\n\n{\n  undefined4" (identifier "true") (> ">") (: ":") (: ":") (function_declarator "Output_reloc\n               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)" (identifier "Output_reloc") (parameter_list "(Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,\n               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)" (( "(") (parameter_declaration "Sized_relobj *param_1" (type_identifier "Sized_relobj") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "Output_data *param_4" (type_identifier "Output_data") (pointer_declarator "*param_4" (* "*") (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")) (, ",") (parameter_declaration "bool param_7" (primitive_type "bool") (identifier "param_7")) (, ",") (parameter_declaration "bool param_8" (primitive_type "bool") (identifier "param_8")) (, ",") (parameter_declaration "bool param_9" (primitive_type "bool") (identifier "param_9")) () ")"))) ({ "{") (identifier "undefined4")) (identifier "uVar1") (; ";")) (declaration "undefined3 in_stack_00000018;" (type_identifier "undefined3") (identifier "in_stack_00000018") (; ";")) (declaration "undefined3 in_stack_0000001c;" (type_identifier "undefined3") (identifier "in_stack_0000001c") (; ";")) (declaration "byte in_stack_0000002b;" (type_identifier "byte") (identifier "in_stack_0000002b") (; ";")) (declaration "byte in_stack_0000002f;" (type_identifier "byte") (identifier "in_stack_0000002f") (; ";")) (expression_statement "*(uint *)(param_1 + 0x10) = param_3;" (assignment_expression "*(uint *)(param_1 + 0x10) = param_3" (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (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")) (; ";")) (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 "*(undefined4 *)(param_1 + 0x18) = 0xfffffffc;" (assignment_expression "*(undefined4 *)(param_1 + 0x18) = 0xfffffffc" (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0xfffffffc")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x14) =\n       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1;" (assignment_expression "*(uint *)(param_1 + 0x14) =\n       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1" (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")) () ")")))) (= "=") (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |\n       in_stack_0000002f & 1" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2" (binary_expression "(int)param_4 << 4 | (param_8 & 1) << 3" (binary_expression "(int)param_4 << 4" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (<< "<<") (number_literal "4")) (| "|") (binary_expression "(param_8 & 1) << 3" (parenthesized_expression "(param_8 & 1)" (( "(") (binary_expression "param_8 & 1" (identifier "param_8") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "3"))) (| "|") (binary_expression "(param_9 & 1) << 2" (parenthesized_expression "(param_9 & 1)" (( "(") (binary_expression "param_9 & 1" (identifier "param_9") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "2"))) (| "|") (binary_expression "(in_stack_0000002b & 1) << 1" (parenthesized_expression "(in_stack_0000002b & 1)" (( "(") (binary_expression "in_stack_0000002b & 1" (identifier "in_stack_0000002b") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "1"))) (| "|") (binary_expression "in_stack_0000002f & 1" (identifier "in_stack_0000002f") (& "&") (number_literal "1")))) (; ";")) (if_statement "if ((param_3 == 0xffffffff) || (param_3 == 0xfffffffc)) {\n    uVar1 = 0x30f;\n  }\n  else {\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" (if "if") (parenthesized_expression "((param_3 == 0xffffffff) || (param_3 == 0xfffffffc))" (( "(") (binary_expression "(param_3 == 0xffffffff) || (param_3 == 0xfffffffc)" (parenthesized_expression "(param_3 == 0xffffffff)" (( "(") (binary_expression "param_3 == 0xffffffff" (identifier "param_3") (== "==") (number_literal "0xffffffff")) () ")")) (|| "||") (parenthesized_expression "(param_3 == 0xfffffffc)" (( "(") (binary_expression "param_3 == 0xfffffffc" (identifier "param_3") (== "==") (number_literal "0xfffffffc")) () ")"))) () ")")) (compound_statement "{\n    uVar1 = 0x30f;\n  }" ({ "{") (expression_statement "uVar1 = 0x30f;" (assignment_expression "uVar1 = 0x30f" (identifier "uVar1") (= "=") (number_literal "0x30f")) (; ";")) (} "}")) (else_clause "else {\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" (else "else") (compound_statement "{\n    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }\n    uVar1 = 0x311;\n  }" ({ "{") (if_statement "if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\n      return;\n    }" (if "if") (parenthesized_expression "(param_4 == (Output_data *)((uint)param_4 & 0xfffffff))" (( "(") (binary_expression "param_4 == (Output_data *)((uint)param_4 & 0xfffffff)" (identifier "param_4") (== "==") (cast_expression "(Output_data *)((uint)param_4 & 0xfffffff)" (( "(") (type_descriptor "Output_data *" (type_identifier "Output_data") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_4 & 0xfffffff)" (( "(") (binary_expression "(uint)param_4 & 0xfffffff" (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4")) (& "&") (number_literal "0xfffffff")) () ")")))) () ")")) (compound_statement "{\n      *(uint *)param_1 = param_2;\n      *(undefined4 *)(param_1 + 4) = param_5._0_4_;\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 "*(undefined4 *)(param_1 + 4) = param_5._0_4_;" (assignment_expression "*(undefined4 *)(param_1 + 4) = param_5._0_4_" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (field_expression "param_5._0_4_" (identifier "param_5") (. ".") (field_identifier "_0_4_"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar1 = 0x311;" (assignment_expression "uVar1 = 0x311" (identifier "uVar1") (= "=") (number_literal "0x311")) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004323c4"))) () ")")) (argument_list "(PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68)" (( "(") (binary_expression "PTR_s_alize_xindex_004323b4 + 0x59f0" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "0x59f0")) (, ",") (identifier "uVar1") (, ",") (binary_expression "PTR_s_alize_xindex_004323b4 + 0x6a68" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "0x6a68")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (ERROR "}" (} "}"))
(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: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) 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: (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: (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: (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: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (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))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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: (field_expression argument: (identifier) field: (field_identifier)))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (return_statement) (ERROR))

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

void gold::MASKED<9,false,64,true>::MASKED
               (Sized_relobj *param_1,uint param_2,uint param_3,Output_data *param_4,
               ulonglong param_5,bool param_6,bool param_7,bool param_8,bool param_9)

{
  undefined4 uVar1;
  undefined3 in_stack_00000018;
  undefined3 in_stack_0000001c;
  byte in_stack_0000002b;
  byte in_stack_0000002f;
  
  *(uint *)(param_1 + 0x10) = param_3;
  *(undefined4 *)(param_1 + 8) = _in_stack_00000018;
  *(undefined4 *)(param_1 + 0xc) = _in_stack_0000001c;
  *(undefined4 *)(param_1 + 0x18) = 0xfffffffc;
  *(uint *)(param_1 + 0x14) =
       (int)param_4 << 4 | (param_8 & 1) << 3 | (param_9 & 1) << 2 | (in_stack_0000002b & 1) << 1 |
       in_stack_0000002f & 1;
  if ((param_3 == 0xffffffff) || (param_3 == 0xfffffffc)) {
    uVar1 = 0x30f;
  }
  else {
    if (param_4 == (Output_data *)((uint)param_4 & 0xfffffff)) {
      *(uint *)param_1 = param_2;
      *(undefined4 *)(param_1 + 4) = param_5._0_4_;
      return;
    }
    uVar1 = 0x311;
  }
  (*(code *)PTR_do_gold_unreachable_004323c4)
            (PTR_s_alize_xindex_004323b4 + 0x59f0,uVar1,PTR_s_alize_xindex_004323b4 + 0x6a68);
  return;
}

