
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* 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: bool add_local_plt(Output_data_got<64,_true> * this, Relobj * object,
   uint symndx, uint got_type) */

bool __thiscall
gold::Output_data_got<64,_true>::add_local_plt
          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type)

{
  Got_entry got_entry;
  undefined1 auVar1 [16];
  int iVar2;
  uint uVar3;
  bool bVar4;
  Output_data_got<64,_true> *this_00;
  Relobj *object_00;
  uint symndx_00;
  int iVar5;
  undefined4 in_stack_ffffffc4;
  undefined4 local_2c;
  
  iVar5 = 0x43a1d0;
  uVar3 = got_type;
  iVar2 = (*(object->super_Object)._vptr_Object[0x2b])(object,symndx,got_type,got_type,0,0);
  if (iVar2 != 0) {
    return false;
  }
  if ((2 < symndx + 0x80000003) && (-1 < (int)symndx)) {
    auVar1._0_8_ = 0;
    auVar1._8_8_ = CONCAT44(symndx << 1,local_2c) | 0x100000000;
    got_entry._0_16_ = auVar1 << 0x40;
    got_entry.addend_._0_4_ = iVar5;
    got_entry.addend_._4_4_ = in_stack_ffffffc4;
    uVar3 = add_got_entry(this,got_entry);
    (*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar3,0,0);
    return true;
  }
  object_00 = (Relobj *)&DAT_00000a50;
  symndx_00 = *(int *)(iVar5 + -0x7e1c) + 0x5e84;
  this_00 = (Output_data_got<64,_true> *)(*(int *)(iVar5 + -0x7e1c) + -0x4fe0);
  (**(code **)(iVar5 + -0x7e0c))();
  bVar4 = add_local_plt(this_00,object_00,symndx_00,uVar3);
  return bVar4;
}



/* gold::Output_data_got<64, true>::add_local_plt(gold::Relobj*, unsigned int, unsigned int) */

undefined4 __thiscall
gold::Output_data_got<64,true>::add_local_plt
          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0);
  if (iVar1 != 0) {
    return 0;
  }
  if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {
    uVar3 = 0;
    uVar4 = 0;
    uVar2 = add_got_entry(this);
    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);
    return 1;
  }
  uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)
                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,
                     PTR_s_alize_xindex_004323b4 + 0x5e84);
  return uVar2;
}


lui gp,0x29
addiu gp,gp,-0x2f04
addu gp,gp,t9
addiu sp,sp,-0x60
sw s5,0x58(sp)
or s5,zero,zero
sw s4,0x54(sp)
or s4,zero,zero
sw s5,0x14(sp)
sw s4,0x10(sp)
lw v0,0x0(a1)
sw s1,0x48(sp)
or s1,a2,zero
sw s0,0x44(sp)
or s0,a1,zero
sw gp,0x20(sp)
or a2,a3,zero
sw s3,0x50(sp)
or a1,s1,zero
sw s2,0x4c(sp)
or s3,a0,zero
sw ra,0x5c(sp)
or a0,s0,zero
lw t9,0xac(v0)
jalr t9
_or s2,a3,zero
bne v0,zero,0x001ad200
_lw gp,0x20(sp)
lw v1,0x30(sp)
lui v0,0x8000
li a0,0x1
sw s5,0x3c(sp)
addiu v0,v0,0x3
sw s4,0x38(sp)
ins v1,s1,0x1,0x1f
addu v0,s1,v0
ins v1,a0,0x0,0x1
sltiu v0,v0,0x3
bne v0,zero,0x001ad228
_sw v1,0x30(sp)
bltz s1,0x001ad228
_lw v0,0x34(sp)
or a2,s0,zero
lw t9,-0x5718(gp)
or a0,s3,zero
lw a3,0x2c(sp)
sw v0,0x14(sp)
lw v0,0x38(sp)
sw v1,0x10(sp)
sw s0,0x28(sp)
sw v0,0x18(sp)
lw v0,0x3c(sp)
bal 0x001ac5a0
_sw v0,0x1c(sp)
or a1,zero,zero
or a0,zero,zero
sw a1,0x14(sp)
or a2,s2,zero
sw a0,0x10(sp)
or a3,v0,zero
lw v1,0x0(s0)
or a1,s1,zero
lw t9,0xb4(v1)
jalr t9
_or a0,s0,zero
li v0,0x1
lw ra,0x5c(sp)
lw s5,0x58(sp)
lw s4,0x54(sp)
lw s3,0x50(sp)
lw s2,0x4c(sp)
lw s1,0x48(sp)
lw s0,0x44(sp)
jr ra
_addiu sp,sp,0x60
lw ra,0x5c(sp)
or v0,zero,zero
lw s5,0x58(sp)
lw s4,0x54(sp)
lw s3,0x50(sp)
lw s2,0x4c(sp)
lw s1,0x48(sp)
lw s0,0x44(sp)
jr ra
_addiu sp,sp,0x60
lw a2,-0x7e1c(gp)
li a1,0xa50
lw a0,-0x7e1c(gp)
lw t9,-0x7e0c(gp)
addiu a2,a2,0x5e84
jalr t9
_addiu a0,a0,-0x4fe0
(translation_unit "/* gold::Output_data_got<64, true>::add_local_plt(gold::Relobj*, unsigned int, unsigned int) */\n\nundefined4 __thiscall\ngold::Output_data_got<64,true>::add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  \n  iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0);\n  if (iVar1 != 0) {\n    return 0;\n  }\n  if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {\n    uVar3 = 0;\n    uVar4 = 0;\n    uVar2 = add_got_entry(this);\n    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84);\n  return uVar2;\n}\n\n" comment (declaration "undefined4 __thiscall\ngold::Output_data_got<64,true>::add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)\n\n{\n  int iVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "true>::add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)\n\n{\n  int" identifier > : : (function_declarator "add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)" identifier (parameter_list "(Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)" ( (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 *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) ))) { primitive_type) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (expression_statement "iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0)" identifier = (call_expression "(**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0)" (parenthesized_expression "(**(code **)(*(int *)param_1 + 0xac))" ( (pointer_expression "**(code **)(*(int *)param_1 + 0xac)" * (pointer_expression "*(code **)(*(int *)param_1 + 0xac)" * (cast_expression "(code **)(*(int *)param_1 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1 + 0xac)" ( (binary_expression "*(int *)param_1 + 0xac" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_1,param_2,param_3,param_3,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {\n    uVar3 = 0;\n    uVar4 = 0;\n    uVar2 = add_got_entry(this);\n    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);\n    return 1;\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    uVar3 = 0;\n    uVar4 = 0;\n    uVar2 = add_got_entry(this);\n    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);\n    return 1;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = add_got_entry(this);" (assignment_expression "uVar2 = add_got_entry(this)" identifier = (call_expression "add_got_entry(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "(**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);" (call_expression "(**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4)" (parenthesized_expression "(**(code **)(*(int *)param_1 + 0xb4))" ( (pointer_expression "**(code **)(*(int *)param_1 + 0xb4)" * (pointer_expression "*(code **)(*(int *)param_1 + 0xb4)" * (cast_expression "(code **)(*(int *)param_1 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1 + 0xb4)" ( (binary_expression "*(int *)param_1 + 0xb4" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84);" (assignment_expression "uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" identifier = (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" (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 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x4fe0" identifier + number_literal) , number_literal , (binary_expression "PTR_s_alize_xindex_004323b4 + 0x5e84" identifier + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) (ERROR "}" }))
(translation_unit "/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\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: bool add_local_plt(Output_data_got<64,_true> * this, Relobj * object,\n   uint symndx, uint got_type) */\n\nbool __thiscall\ngold::Output_data_got<64,_true>::add_local_plt\n          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type)\n\n{\n  Got_entry got_entry;\n  undefined1 auVar1 [16];\n  int iVar2;\n  uint uVar3;\n  bool bVar4;\n  Output_data_got<64,_true> *this_00;\n  Relobj *object_00;\n  uint symndx_00;\n  int iVar5;\n  undefined4 in_stack_ffffffc4;\n  undefined4 local_2c;\n  \n  iVar5 = 0x43a1d0;\n  uVar3 = got_type;\n  iVar2 = (*(object->super_Object)._vptr_Object[0x2b])(object,symndx,got_type,got_type,0,0);\n  if (iVar2 != 0) {\n    return false;\n  }\n  if ((2 < symndx + 0x80000003) && (-1 < (int)symndx)) {\n    auVar1._0_8_ = 0;\n    auVar1._8_8_ = CONCAT44(symndx << 1,local_2c) | 0x100000000;\n    got_entry._0_16_ = auVar1 << 0x40;\n    got_entry.addend_._0_4_ = iVar5;\n    got_entry.addend_._4_4_ = in_stack_ffffffc4;\n    uVar3 = add_got_entry(this,got_entry);\n    (*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar3,0,0);\n    return true;\n  }\n  object_00 = (Relobj *)&DAT_00000a50;\n  symndx_00 = *(int *)(iVar5 + -0x7e1c) + 0x5e84;\n  this_00 = (Output_data_got<64,_true> *)(*(int *)(iVar5 + -0x7e1c) + -0x4fe0);\n  (**(code **)(iVar5 + -0x7e0c))();\n  bVar4 = add_local_plt(this_00,object_00,symndx_00,uVar3);\n  return bVar4;\n}\n\n" comment comment comment comment comment comment comment (declaration "bool __thiscall\ngold::Output_data_got<64,_true>::add_local_plt\n          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type)\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_plt\n          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type)\n\n{\n  Got_entry" identifier > : : (function_declarator "add_local_plt\n          (Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type)" identifier (parameter_list "(Output_data_got<64,_true> *this,Relobj *object,uint symndx,uint got_type)" ( (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) ))) { 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 "bool bVar4;" primitive_type identifier ;) (expression_statement "Output_data_got<64,_true> *this_00;" (update_expression "Output_data_got<64,_true> *this_00" (binary_expression "Output_data_got<64,_true> *this_00" (binary_expression "Output_data_got<64" identifier < number_literal) (ERROR ",_true" , identifier) > (pointer_expression "*this_00" * identifier)) --) ;) (declaration "Relobj *object_00;" type_identifier (pointer_declarator "*object_00" * identifier) ;) (declaration "uint symndx_00;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 in_stack_ffffffc4;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (expression_statement "iVar5 = 0x43a1d0;" (assignment_expression "iVar5 = 0x43a1d0" identifier = number_literal) ;) (expression_statement "uVar3 = got_type;" (assignment_expression "uVar3 = got_type" identifier = identifier) ;) (expression_statement "iVar2 = (*(object->super_Object)._vptr_Object[0x2b])(object,symndx,got_type,got_type,0,0);" (assignment_expression "iVar2 = (*(object->super_Object)._vptr_Object[0x2b])(object,symndx,got_type,got_type,0,0)" identifier = (call_expression "(*(object->super_Object)._vptr_Object[0x2b])(object,symndx,got_type,got_type,0,0)" (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,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar2 != 0) {\n    return false;\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if ((2 < symndx + 0x80000003) && (-1 < (int)symndx)) {\n    auVar1._0_8_ = 0;\n    auVar1._8_8_ = CONCAT44(symndx << 1,local_2c) | 0x100000000;\n    got_entry._0_16_ = auVar1 << 0x40;\n    got_entry.addend_._0_4_ = iVar5;\n    got_entry.addend_._4_4_ = in_stack_ffffffc4;\n    uVar3 = add_got_entry(this,got_entry);\n    (*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar3,0,0);\n    return true;\n  }" if (parenthesized_expression "((2 < symndx + 0x80000003) && (-1 < (int)symndx))" ( (binary_expression "(2 < symndx + 0x80000003) && (-1 < (int)symndx)" (parenthesized_expression "(2 < symndx + 0x80000003)" ( (binary_expression "2 < symndx + 0x80000003" number_literal < (binary_expression "symndx + 0x80000003" identifier + number_literal)) )) && (parenthesized_expression "(-1 < (int)symndx)" ( (binary_expression "-1 < (int)symndx" number_literal < (cast_expression "(int)symndx" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    auVar1._0_8_ = 0;\n    auVar1._8_8_ = CONCAT44(symndx << 1,local_2c) | 0x100000000;\n    got_entry._0_16_ = auVar1 << 0x40;\n    got_entry.addend_._0_4_ = iVar5;\n    got_entry.addend_._4_4_ = in_stack_ffffffc4;\n    uVar3 = add_got_entry(this,got_entry);\n    (*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar3,0,0);\n    return true;\n  }" { (expression_statement "auVar1._0_8_ = 0;" (assignment_expression "auVar1._0_8_ = 0" (field_expression "auVar1._0_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar1._8_8_ = CONCAT44(symndx << 1,local_2c) | 0x100000000;" (assignment_expression "auVar1._8_8_ = CONCAT44(symndx << 1,local_2c) | 0x100000000" (field_expression "auVar1._8_8_" identifier . field_identifier) = (binary_expression "CONCAT44(symndx << 1,local_2c) | 0x100000000" (call_expression "CONCAT44(symndx << 1,local_2c)" identifier (argument_list "(symndx << 1,local_2c)" ( (binary_expression "symndx << 1" identifier << number_literal) , 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_ = iVar5;" (assignment_expression "got_entry.addend_._0_4_ = iVar5" (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_ffffffc4;" (assignment_expression "got_entry.addend_._4_4_ = in_stack_ffffffc4" (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 "(*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar3,0,0);" (call_expression "(*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar3,0,0)" (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,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (return_statement "return true;" return true ;) })) (expression_statement "object_00 = (Relobj *)&DAT_00000a50;" (assignment_expression "object_00 = (Relobj *)&DAT_00000a50" identifier = (cast_expression "(Relobj *)&DAT_00000a50" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000a50" & identifier))) ;) (expression_statement "symndx_00 = *(int *)(iVar5 + -0x7e1c) + 0x5e84;" (assignment_expression "symndx_00 = *(int *)(iVar5 + -0x7e1c) + 0x5e84" identifier = (binary_expression "*(int *)(iVar5 + -0x7e1c) + 0x5e84" (pointer_expression "*(int *)(iVar5 + -0x7e1c)" * (cast_expression "(int *)(iVar5 + -0x7e1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7e1c)" ( (binary_expression "iVar5 + -0x7e1c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "this_00 = (Output_data_got<64,_true> *)(*(int *)(iVar5 + -0x7e1c) + -0x4fe0);" (assignment_expression "this_00 = (Output_data_got<64,_true> *)(*(int *)(iVar5 + -0x7e1c) + -0x4fe0)" identifier = (call_expression "(Output_data_got<64,_true> *)(*(int *)(iVar5 + -0x7e1c) + -0x4fe0)" (parenthesized_expression "(Output_data_got<64,_true> *)" ( (comma_expression "Output_data_got<64,_true> *" (binary_expression "Output_data_got<64" identifier < number_literal) , (binary_expression "_true> *" identifier > (pointer_expression "*" * identifier))) )) (argument_list "(*(int *)(iVar5 + -0x7e1c) + -0x4fe0)" ( (binary_expression "*(int *)(iVar5 + -0x7e1c) + -0x4fe0" (pointer_expression "*(int *)(iVar5 + -0x7e1c)" * (cast_expression "(int *)(iVar5 + -0x7e1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7e1c)" ( (binary_expression "iVar5 + -0x7e1c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(iVar5 + -0x7e0c))();" (call_expression "(**(code **)(iVar5 + -0x7e0c))()" (parenthesized_expression "(**(code **)(iVar5 + -0x7e0c))" ( (pointer_expression "**(code **)(iVar5 + -0x7e0c)" * (pointer_expression "*(code **)(iVar5 + -0x7e0c)" * (cast_expression "(code **)(iVar5 + -0x7e0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7e0c)" ( (binary_expression "iVar5 + -0x7e0c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "bVar4 = add_local_plt(this_00,object_00,symndx_00,uVar3);" (assignment_expression "bVar4 = add_local_plt(this_00,object_00,symndx_00,uVar3)" identifier = (call_expression "add_local_plt(this_00,object_00,symndx_00,uVar3)" identifier (argument_list "(this_00,object_00,symndx_00,uVar3)" ( identifier , identifier , identifier , identifier )))) ;) (return_statement "return bVar4;" return identifier ;) (ERROR "}" }))
(translation_unit "undefined4 __thiscall\ngold::Output_data_got<64,true>::add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  \n  iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0);\n  if (iVar1 != 0) {\n    return 0;\n  }\n  if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {\n    uVar3 = 0;\n    uVar4 = 0;\n    uVar2 = add_got_entry(this);\n    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84);\n  return uVar2;\n}\n\n" (declaration "undefined4 __thiscall\ngold::Output_data_got<64,true>::add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)\n\n{\n  int iVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "true>::add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)\n\n{\n  int" identifier > : : (function_declarator "add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)" identifier (parameter_list "(Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)" ( (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 *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) ))) { primitive_type) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (expression_statement "iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0)" identifier = (call_expression "(**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0)" (parenthesized_expression "(**(code **)(*(int *)param_1 + 0xac))" ( (pointer_expression "**(code **)(*(int *)param_1 + 0xac)" * (pointer_expression "*(code **)(*(int *)param_1 + 0xac)" * (cast_expression "(code **)(*(int *)param_1 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1 + 0xac)" ( (binary_expression "*(int *)param_1 + 0xac" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_1,param_2,param_3,param_3,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {\n    uVar3 = 0;\n    uVar4 = 0;\n    uVar2 = add_got_entry(this);\n    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);\n    return 1;\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    uVar3 = 0;\n    uVar4 = 0;\n    uVar2 = add_got_entry(this);\n    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);\n    return 1;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = add_got_entry(this);" (assignment_expression "uVar2 = add_got_entry(this)" identifier = (call_expression "add_got_entry(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "(**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);" (call_expression "(**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4)" (parenthesized_expression "(**(code **)(*(int *)param_1 + 0xb4))" ( (pointer_expression "**(code **)(*(int *)param_1 + 0xb4)" * (pointer_expression "*(code **)(*(int *)param_1 + 0xb4)" * (cast_expression "(code **)(*(int *)param_1 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1 + 0xb4)" ( (binary_expression "*(int *)param_1 + 0xb4" (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , identifier , identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84);" (assignment_expression "uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" identifier = (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" (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 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x4fe0" identifier + number_literal) , number_literal , (binary_expression "PTR_s_alize_xindex_004323b4 + 0x5e84" identifier + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ms_call_modifier __thiscall) (ERROR IDENT : :) IDENT (ERROR < LIT) , (ERROR IDENT > : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) (ERROR < LIT) , (parameter_declaration TYPE (ERROR >) (pointer_declarator * 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 ;) (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 , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (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 (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 , LIT , LIT , IDENT , IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (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 IDENT ;) (ERROR }))
(declaration "undefined4 __thiscall\ngold::Output_data_got<64,true>::add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)\n\n{\n  int iVar1;" (type_identifier "undefined4") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Output_data_got") (ERROR "<64" (< "<") (number_literal "64")) (, ",") (ERROR "true>::add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)\n\n{\n  int" (identifier "true") (> ">") (: ":") (: ":") (function_declarator "add_local_plt\n          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)" (identifier "add_local_plt") (parameter_list "(Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)" (( "(") (parameter_declaration "Output_data_got" (type_identifier "Output_data_got")) (ERROR "<64" (< "<") (number_literal "64")) (, ",") (parameter_declaration "true> *this" (type_identifier "true") (ERROR ">" (> ">")) (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (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")) () ")"))) ({ "{") (primitive_type "int")) (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (expression_statement "iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0)" (parenthesized_expression "(**(code **)(*(int *)param_1 + 0xac))" (( "(") (pointer_expression "**(code **)(*(int *)param_1 + 0xac)" (* "*") (pointer_expression "*(code **)(*(int *)param_1 + 0xac)" (* "*") (cast_expression "(code **)(*(int *)param_1 + 0xac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_1 + 0xac)" (( "(") (binary_expression "*(int *)param_1 + 0xac" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (+ "+") (number_literal "0xac")) () ")"))))) () ")")) (argument_list "(param_1,param_2,param_3,param_3,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {\n    uVar3 = 0;\n    uVar4 = 0;\n    uVar2 = add_got_entry(this);\n    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);\n    return 1;\n  }" (if "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 "2") (< "<") (binary_expression "param_2 + 0x80000003" (identifier "param_2") (+ "+") (number_literal "0x80000003"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < (int)param_2)" (( "(") (binary_expression "-1 < (int)param_2" (number_literal "-1") (< "<") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) () ")")) (compound_statement "{\n    uVar3 = 0;\n    uVar4 = 0;\n    uVar2 = add_got_entry(this);\n    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);\n    return 1;\n  }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = add_got_entry(this);" (assignment_expression "uVar2 = add_got_entry(this)" (identifier "uVar2") (= "=") (call_expression "add_got_entry(this)" (identifier "add_got_entry") (argument_list "(this)" (( "(") (identifier "this") () ")")))) (; ";")) (expression_statement "(**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);" (call_expression "(**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4)" (parenthesized_expression "(**(code **)(*(int *)param_1 + 0xb4))" (( "(") (pointer_expression "**(code **)(*(int *)param_1 + 0xb4)" (* "*") (pointer_expression "*(code **)(*(int *)param_1 + 0xb4)" (* "*") (cast_expression "(code **)(*(int *)param_1 + 0xb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_1 + 0xb4)" (( "(") (binary_expression "*(int *)param_1 + 0xb4" (pointer_expression "*(int *)param_1" (* "*") (cast_expression "(int *)param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (+ "+") (number_literal "0xb4")) () ")"))))) () ")")) (argument_list "(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "uVar2") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar3") (, ",") (identifier "uVar4") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84);" (assignment_expression "uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" (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 + -0x4fe0,0xa50,\n                     PTR_s_alize_xindex_004323b4 + 0x5e84)" (( "(") (binary_expression "PTR_s_alize_xindex_004323b4 + -0x4fe0" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "-0x4fe0")) (, ",") (number_literal "0xa50") (, ",") (binary_expression "PTR_s_alize_xindex_004323b4 + 0x5e84" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "0x5e84")) () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (ERROR "}" (} "}"))
(translation_unit (declaration type: (type_identifier) declarator: (ms_call_modifier) (ERROR (identifier)) declarator: (identifier) (ERROR (number_literal)) (ERROR (identifier) (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier)) (ERROR (number_literal)) (parameter_declaration type: (type_identifier) (ERROR) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) (primitive_type)) 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) (number_literal) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) 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 (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) (number_literal) (number_literal) (identifier) (identifier)))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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 (identifier)) (ERROR))

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

undefined4 __thiscall
gold::Output_data_got<64,true>::MASKED
          (Output_data_got<64,true> *this,Relobj *param_1,uint param_2,uint param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  iVar1 = (**(code **)(*(int *)param_1 + 0xac))(param_1,param_2,param_3,param_3,0,0);
  if (iVar1 != 0) {
    return 0;
  }
  if ((2 < param_2 + 0x80000003) && (-1 < (int)param_2)) {
    uVar3 = 0;
    uVar4 = 0;
    uVar2 = add_got_entry(this);
    (**(code **)(*(int *)param_1 + 0xb4))(param_1,param_2,param_3,uVar2,0,0,uVar3,uVar4);
    return 1;
  }
  uVar2 = (*(code *)PTR_do_gold_unreachable_004323c4)
                    (PTR_s_alize_xindex_004323b4 + -0x4fe0,0xa50,
                     PTR_s_alize_xindex_004323b4 + 0x5e84);
  return uVar2;
}

