
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* DWARF original prototype: void add_local_with_rel(Output_data_got<64,_true> * this, Relobj *
   object, uint symndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint r_type, uint64_t
   addend) */

void __thiscall
gold::Output_data_got<64,_true>::add_local_with_rel
          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type,
          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)

{
  Got_entry got_entry;
  undefined1 auVar1 [16];
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 in_stack_ffffffb8;
  undefined4 in_stack_ffffffbc;
  undefined4 local_2c;
  
  iVar2 = (*(object->super_Object)._vptr_Object[0x2b])
                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_);
  if (iVar2 == 0) {
    auVar1._8_4_ = 0xfffffffa;
    auVar1._12_4_ = local_2c;
    auVar1._0_8_ = 0;
    got_entry._0_16_ = auVar1 << 0x40;
    got_entry.addend_._0_4_ = in_stack_ffffffb8;
    got_entry.addend_._4_4_ = in_stack_ffffffbc;
    uVar3 = add_got_entry(this,got_entry);
    uVar4 = addend._4_4_;
    (*(object->super_Object)._vptr_Object[0x2d])
              (object,symndx,got_type,uVar3,addend._0_4_,addend._4_4_);
    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data[0x1b])
              (rel_dyn,object,symndx,r_type,this,uVar4,0,uVar3,addend._0_4_,addend._4_4_);
  }
  return;
}



/* gold::Output_data_got<64, true>::add_local_with_rel(gold::Relobj*, unsigned int, unsigned int,
   gold::Output_data_reloc_generic*, unsigned int, unsigned long long) */

void gold::Output_data_got<64,true>::add_local_with_rel
               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,
               uint param_5,ulonglong param_6)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 in_stack_00000014;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6);
  if (iVar1 == 0) {
    uVar4 = 0;
    uVar5 = 0;
    uVar2 = add_got_entry(param_1);
    uVar3 = param_6._4_4_;
    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);
    (**(code **)(*(int *)param_5 + 0x6c))
              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);
  }
  return;
}


lui gp,0x29
addiu gp,gp,-0x36d8
addu gp,gp,t9
addiu sp,sp,-0x68
lw v0,0x0(a1)
sw s3,0x58(sp)
sw s2,0x54(sp)
lw s3,0x84(sp)
lw s2,0x80(sp)
sw s1,0x50(sp)
or s1,a2,zero
sw s3,0x14(sp)
or a2,a3,zero
sw s2,0x10(sp)
sw s0,0x4c(sp)
or s0,a1,zero
sw gp,0x28(sp)
or a1,s1,zero
sw s5,0x60(sp)
or s5,a0,zero
sw s4,0x5c(sp)
or a0,s0,zero
sw ra,0x64(sp)
lw t9,0xac(v0)
jalr t9
_or s4,a3,zero
bne v0,zero,0x0023ca34
_lw gp,0x28(sp)
or v1,zero,zero
lw t9,-0x75e4(gp)
or v0,zero,zero
sw v1,0x44(sp)
or a0,s5,zero
sw v1,0x34(sp)
sw v0,0x40(sp)
lw v1,0x3c(sp)
lw a3,0x34(sp)
sw v0,0x30(sp)
li v0,-0x6
sw v1,0x14(sp)
lw v1,0x40(sp)
lw a2,0x30(sp)
sw v0,0x10(sp)
sw v1,0x18(sp)
sw v0,0x38(sp)
lw v1,0x44(sp)
bal 0x0023bb24
_sw v1,0x1c(sp)
or a2,s4,zero
lw v1,0x0(s0)
or a3,v0,zero
sw s3,0x14(sp)
or a1,s1,zero
sw s2,0x10(sp)
or a0,s0,zero
lw t9,0xb4(v1)
jalr t9
_or s4,v0,zero
or a2,s1,zero
lw v0,0x78(sp)
lw a3,0x7c(sp)
lw a0,0x78(sp)
lw v0,0x0(v0)
sw s3,0x24(sp)
sw s2,0x20(sp)
sw s4,0x1c(sp)
sw zero,0x18(sp)
sw s5,0x10(sp)
lw t9,0x6c(v0)
jalr t9
_or a1,s0,zero
lw ra,0x64(sp)
lw s5,0x60(sp)
lw s4,0x5c(sp)
lw s3,0x58(sp)
lw s2,0x54(sp)
lw s1,0x50(sp)
lw s0,0x4c(sp)
jr ra
_addiu sp,sp,0x68
(translation_unit "/* gold::Output_data_got<64, true>::add_local_with_rel(gold::Relobj*, unsigned int, unsigned int,\n   gold::Output_data_reloc_generic*, unsigned int, unsigned long long) */\n\nvoid gold::Output_data_got<64,true>::add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 in_stack_00000014;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n    uVar5 = 0;\n    uVar2 = add_got_entry(param_1);\n    uVar3 = param_6._4_4_;\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);\n    (**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);\n  }\n  return;\n}\n\n" comment (declaration "void gold::Output_data_got<64,true>::add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)\n\n{\n  int iVar1;" primitive_type (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "true>::add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)\n\n{\n  int" identifier > : : (function_declarator "add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)" identifier (parameter_list "(Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)" ( (parameter_declaration "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_reloc_generic *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "ulonglong param_6" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 in_stack_00000014;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (expression_statement "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6)" identifier = (call_expression "(**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xac))" ( (pointer_expression "**(code **)(*(int *)param_2 + 0xac)" * (pointer_expression "*(code **)(*(int *)param_2 + 0xac)" * (cast_expression "(code **)(*(int *)param_2 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + 0xac)" ( (binary_expression "*(int *)param_2 + 0xac" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,param_4,param_6)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    uVar4 = 0;\n    uVar5 = 0;\n    uVar2 = add_got_entry(param_1);\n    uVar3 = param_6._4_4_;\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);\n    (**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = 0;\n    uVar5 = 0;\n    uVar2 = add_got_entry(param_1);\n    uVar3 = param_6._4_4_;\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);\n    (**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = add_got_entry(param_1);" (assignment_expression "uVar2 = add_got_entry(param_1)" identifier = (call_expression "add_got_entry(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar3 = param_6._4_4_;" (assignment_expression "uVar3 = param_6._4_4_" identifier = (field_expression "param_6._4_4_" identifier . field_identifier)) ;) (expression_statement "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);" (call_expression "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xb4))" ( (pointer_expression "**(code **)(*(int *)param_2 + 0xb4)" * (pointer_expression "*(code **)(*(int *)param_2 + 0xb4)" * (cast_expression "(code **)(*(int *)param_2 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + 0xb4)" ( (binary_expression "*(int *)param_2 + 0xb4" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);" (call_expression "(**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6)" (parenthesized_expression "(**(code **)(*(int *)param_5 + 0x6c))" ( (pointer_expression "**(code **)(*(int *)param_5 + 0x6c)" * (pointer_expression "*(code **)(*(int *)param_5 + 0x6c)" * (cast_expression "(code **)(*(int *)param_5 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_5 + 0x6c)" ( (binary_expression "*(int *)param_5 + 0x6c" (pointer_expression "*(int *)param_5" * (cast_expression "(int *)param_5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal , identifier , identifier ))) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* DWARF original prototype: void add_local_with_rel(Output_data_got<64,_true> * this, Relobj *\n   object, uint symndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint r_type, uint64_t\n   addend) */\n\nvoid __thiscall\ngold::Output_data_got<64,_true>::add_local_with_rel\n          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)\n\n{\n  Got_entry got_entry;\n  undefined1 auVar1 [16];\n  int iVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  undefined4 in_stack_ffffffb8;\n  undefined4 in_stack_ffffffbc;\n  undefined4 local_2c;\n  \n  iVar2 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_);\n  if (iVar2 == 0) {\n    auVar1._8_4_ = 0xfffffffa;\n    auVar1._12_4_ = local_2c;\n    auVar1._0_8_ = 0;\n    got_entry._0_16_ = auVar1 << 0x40;\n    got_entry.addend_._0_4_ = in_stack_ffffffb8;\n    got_entry.addend_._4_4_ = in_stack_ffffffbc;\n    uVar3 = add_got_entry(this,got_entry);\n    uVar4 = addend._4_4_;\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,addend._0_4_,addend._4_4_);\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])\n              (rel_dyn,object,symndx,r_type,this,uVar4,0,uVar3,addend._0_4_,addend._4_4_);\n  }\n  return;\n}\n\n" comment comment comment (declaration "void __thiscall\ngold::Output_data_got<64,_true>::add_local_with_rel\n          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)\n\n{\n  Got_entry got_entry;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::add_local_with_rel\n          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)\n\n{\n  Got_entry" identifier > : : (function_declarator "add_local_with_rel\n          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)" identifier (parameter_list "(Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)" ( (parameter_declaration "Output_data_got" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relobj *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint symndx" type_identifier identifier) , (parameter_declaration "uint got_type" type_identifier identifier) , (parameter_declaration "Output_data_reloc_generic *rel_dyn" type_identifier (pointer_declarator "*rel_dyn" * identifier)) , (parameter_declaration "uint r_type" type_identifier identifier) , (parameter_declaration "uint64_t addend" primitive_type identifier) ))) { identifier) identifier ;) (declaration "undefined1 auVar1 [16];" type_identifier (array_declarator "auVar1 [16]" identifier [ number_literal ]) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 in_stack_ffffffb8;" type_identifier identifier ;) (declaration "undefined4 in_stack_ffffffbc;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (expression_statement "iVar2 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_);" (assignment_expression "iVar2 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_)" identifier = (call_expression "(*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_)" (parenthesized_expression "(*(object->super_Object)._vptr_Object[0x2b])" ( (pointer_expression "*(object->super_Object)._vptr_Object[0x2b]" * (subscript_expression "(object->super_Object)._vptr_Object[0x2b]" (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(object,symndx,got_type,got_type,addend._0_4_,addend._4_4_)" ( identifier , identifier , identifier , identifier , (field_expression "addend._0_4_" identifier . field_identifier) , (field_expression "addend._4_4_" identifier . field_identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    auVar1._8_4_ = 0xfffffffa;\n    auVar1._12_4_ = local_2c;\n    auVar1._0_8_ = 0;\n    got_entry._0_16_ = auVar1 << 0x40;\n    got_entry.addend_._0_4_ = in_stack_ffffffb8;\n    got_entry.addend_._4_4_ = in_stack_ffffffbc;\n    uVar3 = add_got_entry(this,got_entry);\n    uVar4 = addend._4_4_;\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,addend._0_4_,addend._4_4_);\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])\n              (rel_dyn,object,symndx,r_type,this,uVar4,0,uVar3,addend._0_4_,addend._4_4_);\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    auVar1._8_4_ = 0xfffffffa;\n    auVar1._12_4_ = local_2c;\n    auVar1._0_8_ = 0;\n    got_entry._0_16_ = auVar1 << 0x40;\n    got_entry.addend_._0_4_ = in_stack_ffffffb8;\n    got_entry.addend_._4_4_ = in_stack_ffffffbc;\n    uVar3 = add_got_entry(this,got_entry);\n    uVar4 = addend._4_4_;\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,addend._0_4_,addend._4_4_);\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])\n              (rel_dyn,object,symndx,r_type,this,uVar4,0,uVar3,addend._0_4_,addend._4_4_);\n  }" { (expression_statement "auVar1._8_4_ = 0xfffffffa;" (assignment_expression "auVar1._8_4_ = 0xfffffffa" (field_expression "auVar1._8_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar1._12_4_ = local_2c;" (assignment_expression "auVar1._12_4_ = local_2c" (field_expression "auVar1._12_4_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar1._0_8_ = 0;" (assignment_expression "auVar1._0_8_ = 0" (field_expression "auVar1._0_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "got_entry._0_16_ = auVar1 << 0x40;" (assignment_expression "got_entry._0_16_ = auVar1 << 0x40" (field_expression "got_entry._0_16_" identifier . field_identifier) = (binary_expression "auVar1 << 0x40" identifier << number_literal)) ;) (expression_statement "got_entry.addend_._0_4_ = in_stack_ffffffb8;" (assignment_expression "got_entry.addend_._0_4_ = in_stack_ffffffb8" (field_expression "got_entry.addend_._0_4_" (field_expression "got_entry.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "got_entry.addend_._4_4_ = in_stack_ffffffbc;" (assignment_expression "got_entry.addend_._4_4_ = in_stack_ffffffbc" (field_expression "got_entry.addend_._4_4_" (field_expression "got_entry.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "uVar3 = add_got_entry(this,got_entry);" (assignment_expression "uVar3 = add_got_entry(this,got_entry)" identifier = (call_expression "add_got_entry(this,got_entry)" identifier (argument_list "(this,got_entry)" ( identifier , identifier )))) ;) (expression_statement "uVar4 = addend._4_4_;" (assignment_expression "uVar4 = addend._4_4_" identifier = (field_expression "addend._4_4_" identifier . field_identifier)) ;) (expression_statement "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,addend._0_4_,addend._4_4_);" (call_expression "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,addend._0_4_,addend._4_4_)" (parenthesized_expression "(*(object->super_Object)._vptr_Object[0x2d])" ( (pointer_expression "*(object->super_Object)._vptr_Object[0x2d]" * (subscript_expression "(object->super_Object)._vptr_Object[0x2d]" (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(object,symndx,got_type,uVar3,addend._0_4_,addend._4_4_)" ( identifier , identifier , identifier , identifier , (field_expression "addend._0_4_" identifier . field_identifier) , (field_expression "addend._4_4_" identifier . field_identifier) ))) ;) (expression_statement "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])\n              (rel_dyn,object,symndx,r_type,this,uVar4,0,uVar3,addend._0_4_,addend._4_4_);" (call_expression "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])\n              (rel_dyn,object,symndx,r_type,this,uVar4,0,uVar3,addend._0_4_,addend._4_4_)" (parenthesized_expression "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])" ( (pointer_expression "*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b]" * (subscript_expression "(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b]" (field_expression "(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data" (field_expression "(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data" (field_expression "(rel_dyn->super_Output_section_data_build).super_Output_section_data" (parenthesized_expression "(rel_dyn->super_Output_section_data_build)" ( (field_expression "rel_dyn->super_Output_section_data_build" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(rel_dyn,object,symndx,r_type,this,uVar4,0,uVar3,addend._0_4_,addend._4_4_)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal , identifier , (field_expression "addend._0_4_" identifier . field_identifier) , (field_expression "addend._4_4_" identifier . field_identifier) ))) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void gold::Output_data_got<64,true>::add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 in_stack_00000014;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  \n  iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n    uVar5 = 0;\n    uVar2 = add_got_entry(param_1);\n    uVar3 = param_6._4_4_;\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);\n    (**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);\n  }\n  return;\n}\n\n" (declaration "void gold::Output_data_got<64,true>::add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)\n\n{\n  int iVar1;" primitive_type (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "true>::add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)\n\n{\n  int" identifier > : : (function_declarator "add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)" identifier (parameter_list "(Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)" ( (parameter_declaration "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_reloc_generic *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "ulonglong param_6" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 in_stack_00000014;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (expression_statement "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6)" identifier = (call_expression "(**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xac))" ( (pointer_expression "**(code **)(*(int *)param_2 + 0xac)" * (pointer_expression "*(code **)(*(int *)param_2 + 0xac)" * (cast_expression "(code **)(*(int *)param_2 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + 0xac)" ( (binary_expression "*(int *)param_2 + 0xac" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,param_4,param_6)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    uVar4 = 0;\n    uVar5 = 0;\n    uVar2 = add_got_entry(param_1);\n    uVar3 = param_6._4_4_;\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);\n    (**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = 0;\n    uVar5 = 0;\n    uVar2 = add_got_entry(param_1);\n    uVar3 = param_6._4_4_;\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);\n    (**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = add_got_entry(param_1);" (assignment_expression "uVar2 = add_got_entry(param_1)" identifier = (call_expression "add_got_entry(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar3 = param_6._4_4_;" (assignment_expression "uVar3 = param_6._4_4_" identifier = (field_expression "param_6._4_4_" identifier . field_identifier)) ;) (expression_statement "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);" (call_expression "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xb4))" ( (pointer_expression "**(code **)(*(int *)param_2 + 0xb4)" * (pointer_expression "*(code **)(*(int *)param_2 + 0xb4)" * (cast_expression "(code **)(*(int *)param_2 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + 0xb4)" ( (binary_expression "*(int *)param_2 + 0xb4" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);" (call_expression "(**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6)" (parenthesized_expression "(**(code **)(*(int *)param_5 + 0x6c))" ( (pointer_expression "**(code **)(*(int *)param_5 + 0x6c)" * (pointer_expression "*(code **)(*(int *)param_5 + 0x6c)" * (cast_expression "(code **)(*(int *)param_5 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_5 + 0x6c)" ( (binary_expression "*(int *)param_5 + 0x6c" (pointer_expression "*(int *)param_5" * (cast_expression "(int *)param_5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6)" ( identifier , identifier , identifier , identifier , identifier , identifier , number_literal , identifier , identifier ))) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ERROR IDENT : :) 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) ))) { TYPE) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT , IDENT ))) ;) })) (return_statement return ;) (ERROR }))
(declaration "void gold::Output_data_got<64,true>::add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)\n\n{\n  int iVar1;" (primitive_type "void") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Output_data_got") (ERROR "<64" (< "<") (number_literal "64")) (, ",") (ERROR "true>::add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)\n\n{\n  int" (identifier "true") (> ">") (: ":") (: ":") (function_declarator "add_local_with_rel\n               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)" (identifier "add_local_with_rel") (parameter_list "(Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,\n               uint param_5,ulonglong param_6)" (( "(") (parameter_declaration "Relobj *param_1" (type_identifier "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_reloc_generic *param_4" (type_identifier "Output_data_reloc_generic") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "ulonglong param_6" (type_identifier "ulonglong") (identifier "param_6")) () ")"))) ({ "{") (primitive_type "int")) (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 in_stack_00000014;" (type_identifier "undefined4") (identifier "in_stack_00000014") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (expression_statement "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xac))" (( "(") (pointer_expression "**(code **)(*(int *)param_2 + 0xac)" (* "*") (pointer_expression "*(code **)(*(int *)param_2 + 0xac)" (* "*") (cast_expression "(code **)(*(int *)param_2 + 0xac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_2 + 0xac)" (( "(") (binary_expression "*(int *)param_2 + 0xac" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (number_literal "0xac")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_4,param_4,param_6)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_4") (, ",") (identifier "param_6") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    uVar4 = 0;\n    uVar5 = 0;\n    uVar2 = add_got_entry(param_1);\n    uVar3 = param_6._4_4_;\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);\n    (**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = 0;\n    uVar5 = 0;\n    uVar2 = add_got_entry(param_1);\n    uVar3 = param_6._4_4_;\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);\n    (**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);\n  }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = add_got_entry(param_1);" (assignment_expression "uVar2 = add_got_entry(param_1)" (identifier "uVar2") (= "=") (call_expression "add_got_entry(param_1)" (identifier "add_got_entry") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar3 = param_6._4_4_;" (assignment_expression "uVar3 = param_6._4_4_" (identifier "uVar3") (= "=") (field_expression "param_6._4_4_" (identifier "param_6") (. ".") (field_identifier "_4_4_"))) (; ";")) (expression_statement "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);" (call_expression "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xb4))" (( "(") (pointer_expression "**(code **)(*(int *)param_2 + 0xb4)" (* "*") (pointer_expression "*(code **)(*(int *)param_2 + 0xb4)" (* "*") (cast_expression "(code **)(*(int *)param_2 + 0xb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_2 + 0xb4)" (( "(") (binary_expression "*(int *)param_2 + 0xb4" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (number_literal "0xb4")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "uVar2") (, ",") (identifier "param_6") (, ",") (identifier "uVar4") (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);" (call_expression "(**(code **)(*(int *)param_5 + 0x6c))\n              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6)" (parenthesized_expression "(**(code **)(*(int *)param_5 + 0x6c))" (( "(") (pointer_expression "**(code **)(*(int *)param_5 + 0x6c)" (* "*") (pointer_expression "*(code **)(*(int *)param_5 + 0x6c)" (* "*") (cast_expression "(code **)(*(int *)param_5 + 0x6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_5 + 0x6c)" (( "(") (binary_expression "*(int *)param_5 + 0x6c" (pointer_expression "*(int *)param_5" (* "*") (cast_expression "(int *)param_5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_5"))) (+ "+") (number_literal "0x6c")) () ")"))))) () ")")) (argument_list "(param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6)" (( "(") (identifier "param_5") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "in_stack_00000014") (, ",") (identifier "param_1") (, ",") (identifier "uVar3") (, ",") (number_literal "0") (, ",") (identifier "uVar2") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (ERROR "}" (} "}"))

/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* DWARF original prototype: void add_local_with_rel(Output_data_got<64,_true> * this, Relobj *
   object, uint symndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint r_type, uint64_t
   addend) */

void __thiscall
gold::Output_data_got<64,_true>::add_local_with_rel
          (Output_data_got<64,_true> *this,Relobj *object,type_2 symndx,type_2 got_type,
          Output_data_reloc_generic *rel_dyn,type_2 r_type,uint64_t addend)

{
  Got_entry got_entry;
  type_1 var_2 [16];
  int var_1;
  type_2 uVar3;
  type_3 uVar4;
  type_3 in_stack_ffffffb8;
  type_3 in_stack_ffffffbc;
  type_3 local_2c;
  
  var_1 = (*(object->super_Object)._vptr_Object[0x2b])
                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_);
  if (var_1 == 0) {
    var_2._8_4_ = 0xfffffffa;
    var_2._12_4_ = local_2c;
    var_2._0_8_ = 0;
    got_entry._0_16_ = var_2 << 0x40;
    got_entry.addend_._0_4_ = in_stack_ffffffb8;
    got_entry.addend_._4_4_ = in_stack_ffffffbc;
    uVar3 = var_3(this,got_entry);
    uVar4 = addend._4_4_;
    (*(object->super_Object)._vptr_Object[0x2d])
              (object,symndx,got_type,uVar3,addend._0_4_,addend._4_4_);
    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data[0x1b])
              (rel_dyn,object,symndx,r_type,this,uVar4,0,uVar3,addend._0_4_,addend._4_4_);
  }
  return;
}


(translation_unit (declaration type: (primitive_type) (ERROR (identifier)) 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: (type_identifier) declarator: (identifier)))) (primitive_type)) 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)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier) (identifier)))))) (return_statement) (ERROR))

/* gold::Output_data_got<64, true>::MASKED(gold::Relobj*, unsigned int, unsigned int,
   gold::Output_data_reloc_generic*, unsigned int, unsigned long long) */

void gold::Output_data_got<64,true>::MASKED
               (Relobj *param_1,uint param_2,uint param_3,Output_data_reloc_generic *param_4,
               uint param_5,ulonglong param_6)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 in_stack_00000014;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,param_4,param_4,param_6);
  if (iVar1 == 0) {
    uVar4 = 0;
    uVar5 = 0;
    uVar2 = add_got_entry(param_1);
    uVar3 = param_6._4_4_;
    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,param_4,uVar2,param_6,uVar4,uVar5);
    (**(code **)(*(int *)param_5 + 0x6c))
              (param_5,param_2,param_3,in_stack_00000014,param_1,uVar3,0,uVar2,param_6);
  }
  return;
}

