
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: void Got_entry(Got_entry * this, Relobj * object, uint local_sym_index,
   bool use_plt_or_tls_offset) */

void __thiscall
gold::Output_data_got<32,_true>::Got_entry::Got_entry
          (Got_entry *this,Relobj *object,uint param_2,bool use_plt_or_tls_offset)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined *puVar3;
  uint uVar4;
  undefined *puVar5;
  undefined4 uStack_c;
  
  uVar4 = (uint)use_plt_or_tls_offset;
  *(undefined4 *)((int)&this->addend_ + 4) = 0;
  *(uint *)&this->field_0x4 = param_2 << 1 | use_plt_or_tls_offset & 1;
  *(undefined4 *)&this->addend_ = 0;
  if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {
    (this->u_).object = object;
    return;
  }
  uVar2 = 0xa50;
  puVar3 = PTR_s_in_a_linker_script_004c191c + -0x4344;
  puVar1 = (undefined4 *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574);
  puVar5 = PTR_do_gold_unreachable_004c1a30;
  (*(code *)PTR_do_gold_unreachable_004c1a30)();
  puVar1[3] = uStack_c;
  puVar1[2] = 0x4c9240;
  puVar1[1] = (int)puVar3 << 1 | uVar4 & 1;
  if (((undefined *)0x2 < puVar3 + -0x7ffffffd) && (-1 < (int)puVar3)) {
    *puVar1 = uVar2;
    return;
  }
  uVar2 = 0xa5d;
  puVar1 = (undefined4 *)(*(int *)(puVar5 + 0x293298) + 0x3574);
  (**(code **)(puVar5 + 0x293a4c))(puVar1,0xa5d,*(int *)(puVar5 + 0x293938) + -0x4350);
  *puVar1 = uVar2;
  puVar1[1] = 0xfffffffc;
  return;
}



void FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)

{
  param_1[3] = 0;
  param_1[1] = param_3 << 1 | param_4 & 1;
  param_1[2] = 0;
  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {
    *param_1 = param_2;
    return;
  }
  (*(code *)PTR_do_gold_unreachable_004c1a30)
            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,
             PTR_s_in_a_linker_script_004c191c + -0x4344);
  return;
}


lui gp,0x2a
addiu gp,gp,-0x4d2c
addu gp,gp,t9
lw v1,0x4(a0)
lui v0,0x8000
or t1,zero,zero
addiu v0,v0,0x3
ins v1,a2,0x1,0x1f
sw t1,0xc(a0)
addu v0,a2,v0
ins v1,a3,0x0,0x1
or t0,zero,zero
sltiu v0,v0,0x3
sw v1,0x4(a0)
bne v0,zero,0x0022dfbc
_sw t0,0x8(a0)
bltz a2,0x0022dfbc
_nop
jr ra
_sw a1,0x0(a0)
lw a2,-0x7924(gp)
addiu sp,sp,-0x20
lw a0,-0x7fc4(gp)
li a1,0xa50
lw t9,-0x7810(gp)
addiu a2,a2,-0x4344
sw gp,0x10(sp)
sw ra,0x1c(sp)
jalr t9
_addiu a0,a0,0x3574
(translation_unit "void FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)\n\n{\n  param_1[3] = 0;\n  param_1[1] = param_3 << 1 | param_4 & 1;\n  param_1[2] = 0;\n  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);\n  return;\n}\n\n" (function_definition "void FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)\n\n{\n  param_1[3] = 0;\n  param_1[1] = param_3 << 1 | param_4 & 1;\n  param_1[2] = 0;\n  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);\n  return;\n}" primitive_type (function_declarator "FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  param_1[3] = 0;\n  param_1[1] = param_3 << 1 | param_4 & 1;\n  param_1[2] = 0;\n  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);\n  return;\n}" { (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = param_3 << 1 | param_4 & 1;" (assignment_expression "param_1[1] = param_3 << 1 | param_4 & 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_3 << 1 | param_4 & 1" (binary_expression "param_3 << 1" identifier << number_literal) | (binary_expression "param_4 & 1" identifier & number_literal))) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }" if (parenthesized_expression "((2 < param_3 + 0x80000003U) && (-1 < param_3))" ( (binary_expression "(2 < param_3 + 0x80000003U) && (-1 < param_3)" (parenthesized_expression "(2 < param_3 + 0x80000003U)" ( (binary_expression "2 < param_3 + 0x80000003U" number_literal < (binary_expression "param_3 + 0x80000003U" identifier + number_literal)) )) && (parenthesized_expression "(-1 < param_3)" ( (binary_expression "-1 < param_3" number_literal < identifier) ))) )) (compound_statement "{\n    *param_1 = param_2;\n    return;\n  }" { (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344)" (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_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier + number_literal) , number_literal , (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4344" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original prototype: void Got_entry(Got_entry * this, Relobj * object, uint local_sym_index,\n   bool use_plt_or_tls_offset) */\n\nvoid __thiscall\ngold::Output_data_got<32,_true>::Got_entry::Got_entry\n          (Got_entry *this,Relobj *object,uint param_2,bool use_plt_or_tls_offset)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined *puVar3;\n  uint uVar4;\n  undefined *puVar5;\n  undefined4 uStack_c;\n  \n  uVar4 = (uint)use_plt_or_tls_offset;\n  *(undefined4 *)((int)&this->addend_ + 4) = 0;\n  *(uint *)&this->field_0x4 = param_2 << 1 | use_plt_or_tls_offset & 1;\n  *(undefined4 *)&this->addend_ = 0;\n  if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {\n    (this->u_).object = object;\n    return;\n  }\n  uVar2 = 0xa50;\n  puVar3 = PTR_s_in_a_linker_script_004c191c + -0x4344;\n  puVar1 = (undefined4 *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574);\n  puVar5 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)();\n  puVar1[3] = uStack_c;\n  puVar1[2] = 0x4c9240;\n  puVar1[1] = (int)puVar3 << 1 | uVar4 & 1;\n  if (((undefined *)0x2 < puVar3 + -0x7ffffffd) && (-1 < (int)puVar3)) {\n    *puVar1 = uVar2;\n    return;\n  }\n  uVar2 = 0xa5d;\n  puVar1 = (undefined4 *)(*(int *)(puVar5 + 0x293298) + 0x3574);\n  (**(code **)(puVar5 + 0x293a4c))(puVar1,0xa5d,*(int *)(puVar5 + 0x293938) + -0x4350);\n  *puVar1 = uVar2;\n  puVar1[1] = 0xfffffffc;\n  return;\n}\n\n" comment comment comment comment comment comment comment (declaration "void __thiscall\ngold::Output_data_got<32,_true>::Got_entry::Got_entry\n          (Got_entry *this,Relobj *object,uint param_2,bool use_plt_or_tls_offset)\n\n{\n  undefined4 *puVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::Got_entry::Got_entry\n          (Got_entry *this,Relobj *object,uint param_2,bool use_plt_or_tls_offset)\n\n{\n  undefined4" identifier > : : identifier : : (function_declarator "Got_entry\n          (Got_entry *this,Relobj *object,uint param_2,bool use_plt_or_tls_offset)" identifier (parameter_list "(Got_entry *this,Relobj *object,uint param_2,bool use_plt_or_tls_offset)" ( (parameter_declaration "Got_entry *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relobj *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "bool use_plt_or_tls_offset" primitive_type identifier) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uStack_c;" type_identifier identifier ;) (expression_statement "uVar4 = (uint)use_plt_or_tls_offset;" (assignment_expression "uVar4 = (uint)use_plt_or_tls_offset" identifier = (cast_expression "(uint)use_plt_or_tls_offset" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(undefined4 *)((int)&this->addend_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->addend_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->addend_ + 4)" * (cast_expression "(undefined4 *)((int)&this->addend_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->addend_ + 4)" ( (binary_expression "(int)&this->addend_ + 4" (cast_expression "(int)&this->addend_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->addend_" & (field_expression "this->addend_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)&this->field_0x4 = param_2 << 1 | use_plt_or_tls_offset & 1;" (assignment_expression "*(uint *)&this->field_0x4 = param_2 << 1 | use_plt_or_tls_offset & 1" (pointer_expression "*(uint *)&this->field_0x4" * (cast_expression "(uint *)&this->field_0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x4" & (field_expression "this->field_0x4" identifier -> field_identifier)))) = (binary_expression "param_2 << 1 | use_plt_or_tls_offset & 1" (binary_expression "param_2 << 1" identifier << number_literal) | (binary_expression "use_plt_or_tls_offset & 1" identifier & number_literal))) ;) (expression_statement "*(undefined4 *)&this->addend_ = 0;" (assignment_expression "*(undefined4 *)&this->addend_ = 0" (pointer_expression "*(undefined4 *)&this->addend_" * (cast_expression "(undefined4 *)&this->addend_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->addend_" & (field_expression "this->addend_" identifier -> field_identifier)))) = number_literal) ;) (if_statement "if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {\n    (this->u_).object = object;\n    return;\n  }" if (parenthesized_expression "((2 < param_2 + 0x80000003) && (-1 < (int)param_2))" ( (binary_expression "(2 < param_2 + 0x80000003) && (-1 < (int)param_2)" (parenthesized_expression "(2 < param_2 + 0x80000003)" ( (binary_expression "2 < param_2 + 0x80000003" number_literal < (binary_expression "param_2 + 0x80000003" identifier + number_literal)) )) && (parenthesized_expression "(-1 < (int)param_2)" ( (binary_expression "-1 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    (this->u_).object = object;\n    return;\n  }" { (expression_statement "(this->u_).object = object;" (assignment_expression "(this->u_).object = object" (field_expression "(this->u_).object" (parenthesized_expression "(this->u_)" ( (field_expression "this->u_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "uVar2 = 0xa50;" (assignment_expression "uVar2 = 0xa50" identifier = number_literal) ;) (expression_statement "puVar3 = PTR_s_in_a_linker_script_004c191c + -0x4344;" (assignment_expression "puVar3 = PTR_s_in_a_linker_script_004c191c + -0x4344" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4344" identifier + number_literal)) ;) (expression_statement "puVar1 = (undefined4 *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574);" (assignment_expression "puVar1 = (undefined4 *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574)" identifier = (cast_expression "(undefined4 *)(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier + number_literal) )))) ;) (expression_statement "puVar5 = PTR_do_gold_unreachable_004c1a30;" (assignment_expression "puVar5 = PTR_do_gold_unreachable_004c1a30" identifier = identifier) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)();" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)()" (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 "()" ( ))) ;) (expression_statement "puVar1[3] = uStack_c;" (assignment_expression "puVar1[3] = uStack_c" (subscript_expression "puVar1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = 0x4c9240;" (assignment_expression "puVar1[2] = 0x4c9240" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[1] = (int)puVar3 << 1 | uVar4 & 1;" (assignment_expression "puVar1[1] = (int)puVar3 << 1 | uVar4 & 1" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (binary_expression "(int)puVar3 << 1 | uVar4 & 1" (binary_expression "(int)puVar3 << 1" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) | (binary_expression "uVar4 & 1" identifier & number_literal))) ;) (if_statement "if (((undefined *)0x2 < puVar3 + -0x7ffffffd) && (-1 < (int)puVar3)) {\n    *puVar1 = uVar2;\n    return;\n  }" if (parenthesized_expression "(((undefined *)0x2 < puVar3 + -0x7ffffffd) && (-1 < (int)puVar3))" ( (binary_expression "((undefined *)0x2 < puVar3 + -0x7ffffffd) && (-1 < (int)puVar3)" (parenthesized_expression "((undefined *)0x2 < puVar3 + -0x7ffffffd)" ( (binary_expression "(undefined *)0x2 < puVar3 + -0x7ffffffd" (cast_expression "(undefined *)0x2" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (binary_expression "puVar3 + -0x7ffffffd" identifier + number_literal)) )) && (parenthesized_expression "(-1 < (int)puVar3)" ( (binary_expression "-1 < (int)puVar3" number_literal < (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    *puVar1 = uVar2;\n    return;\n  }" { (expression_statement "*puVar1 = uVar2;" (assignment_expression "*puVar1 = uVar2" (pointer_expression "*puVar1" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "uVar2 = 0xa5d;" (assignment_expression "uVar2 = 0xa5d" identifier = number_literal) ;) (expression_statement "puVar1 = (undefined4 *)(*(int *)(puVar5 + 0x293298) + 0x3574);" (assignment_expression "puVar1 = (undefined4 *)(*(int *)(puVar5 + 0x293298) + 0x3574)" identifier = (cast_expression "(undefined4 *)(*(int *)(puVar5 + 0x293298) + 0x3574)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar5 + 0x293298) + 0x3574)" ( (binary_expression "*(int *)(puVar5 + 0x293298) + 0x3574" (pointer_expression "*(int *)(puVar5 + 0x293298)" * (cast_expression "(int *)(puVar5 + 0x293298)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x293298)" ( (binary_expression "puVar5 + 0x293298" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar5 + 0x293a4c))(puVar1,0xa5d,*(int *)(puVar5 + 0x293938) + -0x4350);" (call_expression "(**(code **)(puVar5 + 0x293a4c))(puVar1,0xa5d,*(int *)(puVar5 + 0x293938) + -0x4350)" (parenthesized_expression "(**(code **)(puVar5 + 0x293a4c))" ( (pointer_expression "**(code **)(puVar5 + 0x293a4c)" * (pointer_expression "*(code **)(puVar5 + 0x293a4c)" * (cast_expression "(code **)(puVar5 + 0x293a4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 0x293a4c)" ( (binary_expression "puVar5 + 0x293a4c" identifier + number_literal) ))))) )) (argument_list "(puVar1,0xa5d,*(int *)(puVar5 + 0x293938) + -0x4350)" ( identifier , number_literal , (binary_expression "*(int *)(puVar5 + 0x293938) + -0x4350" (pointer_expression "*(int *)(puVar5 + 0x293938)" * (cast_expression "(int *)(puVar5 + 0x293938)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x293938)" ( (binary_expression "puVar5 + 0x293938" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "*puVar1 = uVar2;" (assignment_expression "*puVar1 = uVar2" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = 0xfffffffc;" (assignment_expression "puVar1[1] = 0xfffffffc" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)\n\n{\n  param_1[3] = 0;\n  param_1[1] = param_3 << 1 | param_4 & 1;\n  param_1[2] = 0;\n  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);\n  return;\n}\n\n" (function_definition "void FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)\n\n{\n  param_1[3] = 0;\n  param_1[1] = param_3 << 1 | param_4 & 1;\n  param_1[2] = 0;\n  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);\n  return;\n}" primitive_type (function_declarator "FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  param_1[3] = 0;\n  param_1[1] = param_3 << 1 | param_4 & 1;\n  param_1[2] = 0;\n  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);\n  return;\n}" { (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[1] = param_3 << 1 | param_4 & 1;" (assignment_expression "param_1[1] = param_3 << 1 | param_4 & 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_3 << 1 | param_4 & 1" (binary_expression "param_3 << 1" identifier << number_literal) | (binary_expression "param_4 & 1" identifier & number_literal))) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }" if (parenthesized_expression "((2 < param_3 + 0x80000003U) && (-1 < param_3))" ( (binary_expression "(2 < param_3 + 0x80000003U) && (-1 < param_3)" (parenthesized_expression "(2 < param_3 + 0x80000003U)" ( (binary_expression "2 < param_3 + 0x80000003U" number_literal < (binary_expression "param_3 + 0x80000003U" identifier + number_literal)) )) && (parenthesized_expression "(-1 < param_3)" ( (binary_expression "-1 < param_3" number_literal < identifier) ))) )) (compound_statement "{\n    *param_1 = param_2;\n    return;\n  }" { (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344)" (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_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier + number_literal) , number_literal , (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4344" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)\n\n{\n  param_1[3] = 0;\n  param_1[1] = param_3 << 1 | param_4 & 1;\n  param_1[2] = 0;\n  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0022df6c(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)" (identifier "FUN_0022df6c") (parameter_list "(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  param_1[3] = 0;\n  param_1[1] = param_3 << 1 | param_4 & 1;\n  param_1[2] = 0;\n  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }\n  (*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);\n  return;\n}" ({ "{") (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[1] = param_3 << 1 | param_4 & 1;" (assignment_expression "param_1[1] = param_3 << 1 | param_4 & 1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_3 << 1 | param_4 & 1" (binary_expression "param_3 << 1" (identifier "param_3") (<< "<<") (number_literal "1")) (| "|") (binary_expression "param_4 & 1" (identifier "param_4") (& "&") (number_literal "1")))) (; ";")) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {\n    *param_1 = param_2;\n    return;\n  }" (if "if") (parenthesized_expression "((2 < param_3 + 0x80000003U) && (-1 < param_3))" (( "(") (binary_expression "(2 < param_3 + 0x80000003U) && (-1 < param_3)" (parenthesized_expression "(2 < param_3 + 0x80000003U)" (( "(") (binary_expression "2 < param_3 + 0x80000003U" (number_literal "2") (< "<") (binary_expression "param_3 + 0x80000003U" (identifier "param_3") (+ "+") (number_literal "0x80000003U"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < param_3)" (( "(") (binary_expression "-1 < param_3" (number_literal "-1") (< "<") (identifier "param_3")) () ")"))) () ")")) (compound_statement "{\n    *param_1 = param_2;\n    return;\n  }" ({ "{") (expression_statement "*param_1 = param_2;" (assignment_expression "*param_1 = param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344)" (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_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n             PTR_s_in_a_linker_script_004c191c + -0x4344)" (( "(") (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" (identifier "PTR_s_ral_options14Struct_no_crefE_004c127c") (+ "+") (number_literal "0x3574")) (, ",") (number_literal "0xa50") (, ",") (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4344" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "-0x4344")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: void Got_entry(Got_entry * this, Relobj * object, uint local_sym_index,
   bool use_plt_or_tls_offset) */

void __thiscall
gold::Output_data_got<32,_true>::Got_entry::Got_entry
          (Got_entry *this,Relobj *object,type_3 var_1,bool var_2)

{
  type_1 *puVar1;
  type_1 uVar2;
  type_2 *var_6;
  type_3 var_5;
  type_2 *var_7;
  type_1 uStack_c;
  
  var_5 = (type_3)var_2;
  *(type_1 *)((int)&this->addend_ + 4) = 0;
  *(type_3 *)&this->field_0x4 = var_1 << 1 | var_2 & 1;
  *(type_1 *)&this->addend_ = 0;
  if ((2 < var_1 + 0x80000003) && (-1 < (int)var_1)) {
    (this->u_).object = object;
    return;
  }
  uVar2 = 0xa50;
  var_6 = var_3 + -0x4344;
  puVar1 = (type_1 *)(var_4 + 0x3574);
  var_7 = PTR_do_gold_unreachable_004c1a30;
  (*(type_4 *)PTR_do_gold_unreachable_004c1a30)();
  puVar1[3] = uStack_c;
  puVar1[2] = 0x4c9240;
  puVar1[1] = (int)var_6 << 1 | var_5 & 1;
  if (((type_2 *)0x2 < var_6 + -0x7ffffffd) && (-1 < (int)var_6)) {
    *puVar1 = uVar2;
    return;
  }
  uVar2 = 0xa5d;
  puVar1 = (type_1 *)(*(int *)(var_7 + 0x293298) + 0x3574);
  (**(type_4 **)(var_7 + 0x293a4c))(puVar1,0xa5d,*(int *)(var_7 + 0x293938) + -0x4350);
  *puVar1 = uVar2;
  puVar1[1] = 0xfffffffc;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))))

void MASKED(undefined4 *param_1,undefined4 param_2,int param_3,uint param_4)

{
  param_1[3] = 0;
  param_1[1] = param_3 << 1 | param_4 & 1;
  param_1[2] = 0;
  if ((2 < param_3 + 0x80000003U) && (-1 < param_3)) {
    *param_1 = param_2;
    return;
  }
  (*(code *)PTR_do_gold_unreachable_004c1a30)
            (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,
             PTR_s_in_a_linker_script_004c191c + -0x4344);
  return;
}

