
/* 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: void add_local_tls_pair(Output_data_got<32,_true> * this, Relobj *
   object, uint symndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint r_type) */

void __thiscall
gold::Output_data_got<32,_true>::add_local_tls_pair
          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,
          Output_data_reloc_generic *rel_dyn,uint r_type)

{
  Got_entry got_entry_1;
  Got_entry got_entry_2;
  Got_entry got_entry_1_00;
  Got_entry got_entry_2_00;
  int iVar1;
  uint uVar2;
  Output_data_got<32,_true> *this_00;
  code *pcVar3;
  undefined4 in_stack_ffffff64;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 uVar4;
  int iVar5;
  undefined4 in_stack_ffffffbc;
  
  iVar5 = 0x4c9240;
  iVar1 = (*(object->super_Object)._vptr_Object[0x2b])(object,symndx,got_type,got_type,0,0);
  if (iVar1 == 0) {
    if ((symndx + 0x80000003 < 3) || ((int)symndx < 0)) {
      pcVar3 = *(code **)(iVar5 + -0x7810);
      iVar1 = *(int *)(iVar5 + -0x7924) + -0x4344;
      this_00 = (Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574);
      (*pcVar3)(this_00,0xa50);
      got_entry_1.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_80;
      got_entry_1._4_4_ = uStack_7c;
      got_entry_1.addend_._0_4_ = iVar1;
      got_entry_1.addend_._4_4_ = 0xfffffffc;
      got_entry_2.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_90;
      got_entry_2._4_4_ = uStack_8c;
      got_entry_2.addend_._0_4_ = pcVar3 + 0x28ff68;
      got_entry_2.addend_._4_4_ = in_stack_ffffff64;
      add_got_entry_pair(this_00,got_entry_1,got_entry_2);
      return;
    }
    got_entry_1_00._0_8_ = 0;
    got_entry_1_00.addend_ = CONCAT44(object,symndx << 1) | 1;
    got_entry_2_00.addend_._0_4_ = iVar5;
    got_entry_2_00.addend_._4_4_ = in_stack_ffffffbc;
    got_entry_2_00._0_8_ = 0;
    uVar2 = add_got_entry_pair(this,got_entry_1_00,got_entry_2_00);
    uVar4 = 0;
    (*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar2,0,0);
    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data[0x1b])(rel_dyn,object,0,r_type,this,uVar4,0,uVar2,0,0);
  }
  return;
}



void FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,
                 undefined4 param_6)

{
  int iVar1;
  undefined4 uVar2;
  uint uVar3;
  undefined4 uVar4;
  int *piVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  
  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);
  if (iVar1 == 0) {
    uVar3 = param_3 << 1 | 1;
    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {
      (*(code *)PTR_do_gold_unreachable_004c1a30)
                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,
                 PTR_s_in_a_linker_script_004c191c + -0x4344);
      return;
    }
    uVar6 = 0;
    uVar7 = 0;
    piVar5 = param_2;
    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);
    uVar4 = 0;
    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);
    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);
  }
  return;
}


lui gp,0x29
addiu gp,gp,0x104
addu gp,gp,t9
addiu sp,sp,-0x70
sw s5,0x68(sp)
or s5,zero,zero
sw s4,0x64(sp)
or s4,zero,zero
sw s5,0x14(sp)
sw s4,0x10(sp)
lw v0,0x0(a1)
sw s1,0x58(sp)
or s1,a2,zero
sw s0,0x54(sp)
or s0,a1,zero
sw gp,0x28(sp)
or a2,a3,zero
sw s3,0x60(sp)
or a1,s1,zero
sw s2,0x5c(sp)
or s3,a0,zero
sw ra,0x6c(sp)
or a0,s0,zero
lw t9,0xac(v0)
jalr t9
_or s2,a3,zero
bne v0,zero,0x00239298
_lw gp,0x28(sp)
lw v1,0x34(sp)
lui v0,0x8000
li a0,0x1
sw zero,0x40(sp)
addiu v0,v0,0x3
sw s5,0x4c(sp)
ins v1,s1,0x1,0x1f
sw s4,0x48(sp)
addu v0,s1,v0
sw s5,0x3c(sp)
ins v1,a0,0x0,0x1
sw s4,0x38(sp)
li a0,-0x6
sltiu v0,v0,0x3
sw v1,0x34(sp)
bne v0,zero,0x002392bc
_sw a0,0x44(sp)
bltz s1,0x002392bc
_lw v0,0x38(sp)
or a2,zero,zero
lw t9,-0x5004(gp)
li a3,-0x6
or s5,zero,zero
sw v1,0x1c(sp)
sw v0,0x20(sp)
or s4,zero,zero
lw v0,0x3c(sp)
or a0,s3,zero
sw s0,0x18(sp)
sw s0,0x30(sp)
sw v0,0x24(sp)
lw v0,0x48(sp)
sw v0,0x10(sp)
lw v0,0x4c(sp)
bal 0x00238810
_sw v0,0x14(sp)
or a2,s2,zero
sw s5,0x14(sp)
or a3,v0,zero
sw s4,0x10(sp)
or a1,s1,zero
lw v1,0x0(s0)
or a0,s0,zero
lw t9,0xb4(v1)
jalr t9
_or s2,v0,zero
or a2,zero,zero
lw v0,0x80(sp)
sw s5,0x24(sp)
sw s4,0x20(sp)
lw a3,0x84(sp)
lw v0,0x0(v0)
lw a0,0x80(sp)
sw s2,0x1c(sp)
sw zero,0x18(sp)
sw s3,0x10(sp)
lw t9,0x6c(v0)
jalr t9
_or a1,s0,zero
lw ra,0x6c(sp)
lw s5,0x68(sp)
lw s4,0x64(sp)
lw s3,0x60(sp)
lw s2,0x5c(sp)
lw s1,0x58(sp)
lw s0,0x54(sp)
jr ra
_addiu sp,sp,0x70
lw a2,-0x7924(gp)
li a1,0xa50
lw a0,-0x7fc4(gp)
lw t9,-0x7810(gp)
addiu a2,a2,-0x4344
jalr t9
_addiu a0,a0,0x3574
(translation_unit "void FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);\n  if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);\n  if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)" identifier (parameter_list "(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);\n  if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (expression_statement "iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);" (assignment_expression "iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0)" identifier = (call_expression "(**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0)" (parenthesized_expression "(**(code **)(*param_2 + 0xac))" ( (pointer_expression "**(code **)(*param_2 + 0xac)" * (pointer_expression "*(code **)(*param_2 + 0xac)" * (cast_expression "(code **)(*param_2 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xac)" ( (binary_expression "*param_2 + 0xac" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,param_4,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }" { (expression_statement "uVar3 = param_3 << 1 | 1;" (assignment_expression "uVar3 = param_3 << 1 | 1" identifier = (binary_expression "param_3 << 1 | 1" (binary_expression "param_3 << 1" identifier << number_literal) | number_literal)) ;) (if_statement "if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }" if (parenthesized_expression "((param_3 + 0x80000003U < 3) || (param_3 < 0))" ( (binary_expression "(param_3 + 0x80000003U < 3) || (param_3 < 0)" (parenthesized_expression "(param_3 + 0x80000003U < 3)" ( (binary_expression "param_3 + 0x80000003U < 3" (binary_expression "param_3 + 0x80000003U" identifier + number_literal) < number_literal) )) || (parenthesized_expression "(param_3 < 0)" ( (binary_expression "param_3 < 0" identifier < number_literal) ))) )) (compound_statement "{\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }" { (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier + number_literal) , number_literal , (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4344" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (ERROR "uVar2 = gold::" (assignment_expression "uVar2 = gold" identifier = identifier) : :) (expression_statement "Output_data_got<32,true>::add_got_entry_pair(param_1);" (comma_expression "Output_data_got<32,true>::add_got_entry_pair(param_1)" (binary_expression "Output_data_got<32" identifier < number_literal) , (binary_expression "true>::add_got_entry_pair(param_1)" true > (ERROR "::" : :) (call_expression "add_got_entry_pair(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);" (call_expression "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7)" (parenthesized_expression "(**(code **)(*param_2 + 0xb4))" ( (pointer_expression "**(code **)(*param_2 + 0xb4)" * (pointer_expression "*(code **)(*param_2 + 0xb4)" * (cast_expression "(code **)(*param_2 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xb4)" ( (binary_expression "*param_2 + 0xb4" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);" (call_expression "(**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0)" (parenthesized_expression "(**(code **)(*param_5 + 0x6c))" ( (pointer_expression "**(code **)(*param_5 + 0x6c)" * (pointer_expression "*(code **)(*param_5 + 0x6c)" * (cast_expression "(code **)(*param_5 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x6c)" ( (binary_expression "*param_5 + 0x6c" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0)" ( identifier , identifier , number_literal , identifier , identifier , identifier , number_literal , identifier , number_literal , number_literal ))) ;) })) (return_statement "return;" return ;) })))
(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: void add_local_tls_pair(Output_data_got<32,_true> * this, Relobj *\n   object, uint symndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint r_type) */\n\nvoid __thiscall\ngold::Output_data_got<32,_true>::add_local_tls_pair\n          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type)\n\n{\n  Got_entry got_entry_1;\n  Got_entry got_entry_2;\n  Got_entry got_entry_1_00;\n  Got_entry got_entry_2_00;\n  int iVar1;\n  uint uVar2;\n  Output_data_got<32,_true> *this_00;\n  code *pcVar3;\n  undefined4 in_stack_ffffff64;\n  undefined4 uStack_90;\n  undefined4 uStack_8c;\n  undefined4 uStack_80;\n  undefined4 uStack_7c;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 in_stack_ffffffbc;\n  \n  iVar5 = 0x4c9240;\n  iVar1 = (*(object->super_Object)._vptr_Object[0x2b])(object,symndx,got_type,got_type,0,0);\n  if (iVar1 == 0) {\n    if ((symndx + 0x80000003 < 3) || ((int)symndx < 0)) {\n      pcVar3 = *(code **)(iVar5 + -0x7810);\n      iVar1 = *(int *)(iVar5 + -0x7924) + -0x4344;\n      this_00 = (Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574);\n      (*pcVar3)(this_00,0xa50);\n      got_entry_1.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_80;\n      got_entry_1._4_4_ = uStack_7c;\n      got_entry_1.addend_._0_4_ = iVar1;\n      got_entry_1.addend_._4_4_ = 0xfffffffc;\n      got_entry_2.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_90;\n      got_entry_2._4_4_ = uStack_8c;\n      got_entry_2.addend_._0_4_ = pcVar3 + 0x28ff68;\n      got_entry_2.addend_._4_4_ = in_stack_ffffff64;\n      add_got_entry_pair(this_00,got_entry_1,got_entry_2);\n      return;\n    }\n    got_entry_1_00._0_8_ = 0;\n    got_entry_1_00.addend_ = CONCAT44(object,symndx << 1) | 1;\n    got_entry_2_00.addend_._0_4_ = iVar5;\n    got_entry_2_00.addend_._4_4_ = in_stack_ffffffbc;\n    got_entry_2_00._0_8_ = 0;\n    uVar2 = add_got_entry_pair(this,got_entry_1_00,got_entry_2_00);\n    uVar4 = 0;\n    (*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar2,0,0);\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])(rel_dyn,object,0,r_type,this,uVar4,0,uVar2,0,0);\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment (declaration "void __thiscall\ngold::Output_data_got<32,_true>::add_local_tls_pair\n          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type)\n\n{\n  Got_entry got_entry_1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::add_local_tls_pair\n          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type)\n\n{\n  Got_entry" identifier > : : (function_declarator "add_local_tls_pair\n          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type)" identifier (parameter_list "(Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type)" ( (parameter_declaration "Output_data_got" type_identifier) (ERROR "<32" < 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) ))) { identifier) identifier ;) (declaration "Got_entry got_entry_2;" type_identifier identifier ;) (declaration "Got_entry got_entry_1_00;" type_identifier identifier ;) (declaration "Got_entry got_entry_2_00;" type_identifier identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (expression_statement "Output_data_got<32,_true> *this_00;" (update_expression "Output_data_got<32,_true> *this_00" (binary_expression "Output_data_got<32,_true> *this_00" (binary_expression "Output_data_got<32" identifier < number_literal) (ERROR ",_true" , identifier) > (pointer_expression "*this_00" * identifier)) --) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 in_stack_ffffff64;" type_identifier identifier ;) (declaration "undefined4 uStack_90;" type_identifier identifier ;) (declaration "undefined4 uStack_8c;" type_identifier identifier ;) (declaration "undefined4 uStack_80;" type_identifier identifier ;) (declaration "undefined4 uStack_7c;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 in_stack_ffffffbc;" type_identifier identifier ;) (expression_statement "iVar5 = 0x4c9240;" (assignment_expression "iVar5 = 0x4c9240" identifier = number_literal) ;) (expression_statement "iVar1 = (*(object->super_Object)._vptr_Object[0x2b])(object,symndx,got_type,got_type,0,0);" (assignment_expression "iVar1 = (*(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 (iVar1 == 0) {\n    if ((symndx + 0x80000003 < 3) || ((int)symndx < 0)) {\n      pcVar3 = *(code **)(iVar5 + -0x7810);\n      iVar1 = *(int *)(iVar5 + -0x7924) + -0x4344;\n      this_00 = (Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574);\n      (*pcVar3)(this_00,0xa50);\n      got_entry_1.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_80;\n      got_entry_1._4_4_ = uStack_7c;\n      got_entry_1.addend_._0_4_ = iVar1;\n      got_entry_1.addend_._4_4_ = 0xfffffffc;\n      got_entry_2.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_90;\n      got_entry_2._4_4_ = uStack_8c;\n      got_entry_2.addend_._0_4_ = pcVar3 + 0x28ff68;\n      got_entry_2.addend_._4_4_ = in_stack_ffffff64;\n      add_got_entry_pair(this_00,got_entry_1,got_entry_2);\n      return;\n    }\n    got_entry_1_00._0_8_ = 0;\n    got_entry_1_00.addend_ = CONCAT44(object,symndx << 1) | 1;\n    got_entry_2_00.addend_._0_4_ = iVar5;\n    got_entry_2_00.addend_._4_4_ = in_stack_ffffffbc;\n    got_entry_2_00._0_8_ = 0;\n    uVar2 = add_got_entry_pair(this,got_entry_1_00,got_entry_2_00);\n    uVar4 = 0;\n    (*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar2,0,0);\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])(rel_dyn,object,0,r_type,this,uVar4,0,uVar2,0,0);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((symndx + 0x80000003 < 3) || ((int)symndx < 0)) {\n      pcVar3 = *(code **)(iVar5 + -0x7810);\n      iVar1 = *(int *)(iVar5 + -0x7924) + -0x4344;\n      this_00 = (Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574);\n      (*pcVar3)(this_00,0xa50);\n      got_entry_1.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_80;\n      got_entry_1._4_4_ = uStack_7c;\n      got_entry_1.addend_._0_4_ = iVar1;\n      got_entry_1.addend_._4_4_ = 0xfffffffc;\n      got_entry_2.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_90;\n      got_entry_2._4_4_ = uStack_8c;\n      got_entry_2.addend_._0_4_ = pcVar3 + 0x28ff68;\n      got_entry_2.addend_._4_4_ = in_stack_ffffff64;\n      add_got_entry_pair(this_00,got_entry_1,got_entry_2);\n      return;\n    }\n    got_entry_1_00._0_8_ = 0;\n    got_entry_1_00.addend_ = CONCAT44(object,symndx << 1) | 1;\n    got_entry_2_00.addend_._0_4_ = iVar5;\n    got_entry_2_00.addend_._4_4_ = in_stack_ffffffbc;\n    got_entry_2_00._0_8_ = 0;\n    uVar2 = add_got_entry_pair(this,got_entry_1_00,got_entry_2_00);\n    uVar4 = 0;\n    (*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar2,0,0);\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])(rel_dyn,object,0,r_type,this,uVar4,0,uVar2,0,0);\n  }" { (if_statement "if ((symndx + 0x80000003 < 3) || ((int)symndx < 0)) {\n      pcVar3 = *(code **)(iVar5 + -0x7810);\n      iVar1 = *(int *)(iVar5 + -0x7924) + -0x4344;\n      this_00 = (Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574);\n      (*pcVar3)(this_00,0xa50);\n      got_entry_1.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_80;\n      got_entry_1._4_4_ = uStack_7c;\n      got_entry_1.addend_._0_4_ = iVar1;\n      got_entry_1.addend_._4_4_ = 0xfffffffc;\n      got_entry_2.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_90;\n      got_entry_2._4_4_ = uStack_8c;\n      got_entry_2.addend_._0_4_ = pcVar3 + 0x28ff68;\n      got_entry_2.addend_._4_4_ = in_stack_ffffff64;\n      add_got_entry_pair(this_00,got_entry_1,got_entry_2);\n      return;\n    }" if (parenthesized_expression "((symndx + 0x80000003 < 3) || ((int)symndx < 0))" ( (binary_expression "(symndx + 0x80000003 < 3) || ((int)symndx < 0)" (parenthesized_expression "(symndx + 0x80000003 < 3)" ( (binary_expression "symndx + 0x80000003 < 3" (binary_expression "symndx + 0x80000003" identifier + number_literal) < number_literal) )) || (parenthesized_expression "((int)symndx < 0)" ( (binary_expression "(int)symndx < 0" (cast_expression "(int)symndx" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))) )) (compound_statement "{\n      pcVar3 = *(code **)(iVar5 + -0x7810);\n      iVar1 = *(int *)(iVar5 + -0x7924) + -0x4344;\n      this_00 = (Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574);\n      (*pcVar3)(this_00,0xa50);\n      got_entry_1.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_80;\n      got_entry_1._4_4_ = uStack_7c;\n      got_entry_1.addend_._0_4_ = iVar1;\n      got_entry_1.addend_._4_4_ = 0xfffffffc;\n      got_entry_2.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_90;\n      got_entry_2._4_4_ = uStack_8c;\n      got_entry_2.addend_._0_4_ = pcVar3 + 0x28ff68;\n      got_entry_2.addend_._4_4_ = in_stack_ffffff64;\n      add_got_entry_pair(this_00,got_entry_1,got_entry_2);\n      return;\n    }" { (expression_statement "pcVar3 = *(code **)(iVar5 + -0x7810);" (assignment_expression "pcVar3 = *(code **)(iVar5 + -0x7810)" identifier = (pointer_expression "*(code **)(iVar5 + -0x7810)" * (cast_expression "(code **)(iVar5 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + -0x7810)" ( (binary_expression "iVar5 + -0x7810" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(iVar5 + -0x7924) + -0x4344;" (assignment_expression "iVar1 = *(int *)(iVar5 + -0x7924) + -0x4344" identifier = (binary_expression "*(int *)(iVar5 + -0x7924) + -0x4344" (pointer_expression "*(int *)(iVar5 + -0x7924)" * (cast_expression "(int *)(iVar5 + -0x7924)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7924)" ( (binary_expression "iVar5 + -0x7924" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "this_00 = (Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574);" (assignment_expression "this_00 = (Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574)" identifier = (call_expression "(Output_data_got<32,_true> *)(*(int *)(iVar5 + -0x7fc4) + 0x3574)" (parenthesized_expression "(Output_data_got<32,_true> *)" ( (comma_expression "Output_data_got<32,_true> *" (binary_expression "Output_data_got<32" identifier < number_literal) , (binary_expression "_true> *" identifier > (pointer_expression "*" * identifier))) )) (argument_list "(*(int *)(iVar5 + -0x7fc4) + 0x3574)" ( (binary_expression "*(int *)(iVar5 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar5 + -0x7fc4)" * (cast_expression "(int *)(iVar5 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x7fc4)" ( (binary_expression "iVar5 + -0x7fc4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar3)(this_00,0xa50);" (call_expression "(*pcVar3)(this_00,0xa50)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(this_00,0xa50)" ( identifier , number_literal ))) ;) (expression_statement "got_entry_1.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_80;" (assignment_expression "got_entry_1.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_80" (field_expression "got_entry_1.u_" identifier . field_identifier) = (cast_expression "(anon_union_4_3_9d565b01_for_u_)uStack_80" ( (type_descriptor "anon_union_4_3_9d565b01_for_u_" type_identifier) ) identifier)) ;) (expression_statement "got_entry_1._4_4_ = uStack_7c;" (assignment_expression "got_entry_1._4_4_ = uStack_7c" (field_expression "got_entry_1._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "got_entry_1.addend_._0_4_ = iVar1;" (assignment_expression "got_entry_1.addend_._0_4_ = iVar1" (field_expression "got_entry_1.addend_._0_4_" (field_expression "got_entry_1.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "got_entry_1.addend_._4_4_ = 0xfffffffc;" (assignment_expression "got_entry_1.addend_._4_4_ = 0xfffffffc" (field_expression "got_entry_1.addend_._4_4_" (field_expression "got_entry_1.addend_" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "got_entry_2.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_90;" (assignment_expression "got_entry_2.u_ = (anon_union_4_3_9d565b01_for_u_)uStack_90" (field_expression "got_entry_2.u_" identifier . field_identifier) = (cast_expression "(anon_union_4_3_9d565b01_for_u_)uStack_90" ( (type_descriptor "anon_union_4_3_9d565b01_for_u_" type_identifier) ) identifier)) ;) (expression_statement "got_entry_2._4_4_ = uStack_8c;" (assignment_expression "got_entry_2._4_4_ = uStack_8c" (field_expression "got_entry_2._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "got_entry_2.addend_._0_4_ = pcVar3 + 0x28ff68;" (assignment_expression "got_entry_2.addend_._0_4_ = pcVar3 + 0x28ff68" (field_expression "got_entry_2.addend_._0_4_" (field_expression "got_entry_2.addend_" identifier . field_identifier) . field_identifier) = (binary_expression "pcVar3 + 0x28ff68" identifier + number_literal)) ;) (expression_statement "got_entry_2.addend_._4_4_ = in_stack_ffffff64;" (assignment_expression "got_entry_2.addend_._4_4_ = in_stack_ffffff64" (field_expression "got_entry_2.addend_._4_4_" (field_expression "got_entry_2.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "add_got_entry_pair(this_00,got_entry_1,got_entry_2);" (call_expression "add_got_entry_pair(this_00,got_entry_1,got_entry_2)" identifier (argument_list "(this_00,got_entry_1,got_entry_2)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "got_entry_1_00._0_8_ = 0;" (assignment_expression "got_entry_1_00._0_8_ = 0" (field_expression "got_entry_1_00._0_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "got_entry_1_00.addend_ = CONCAT44(object,symndx << 1) | 1;" (assignment_expression "got_entry_1_00.addend_ = CONCAT44(object,symndx << 1) | 1" (field_expression "got_entry_1_00.addend_" identifier . field_identifier) = (binary_expression "CONCAT44(object,symndx << 1) | 1" (call_expression "CONCAT44(object,symndx << 1)" identifier (argument_list "(object,symndx << 1)" ( identifier , (binary_expression "symndx << 1" identifier << number_literal) ))) | number_literal)) ;) (expression_statement "got_entry_2_00.addend_._0_4_ = iVar5;" (assignment_expression "got_entry_2_00.addend_._0_4_ = iVar5" (field_expression "got_entry_2_00.addend_._0_4_" (field_expression "got_entry_2_00.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "got_entry_2_00.addend_._4_4_ = in_stack_ffffffbc;" (assignment_expression "got_entry_2_00.addend_._4_4_ = in_stack_ffffffbc" (field_expression "got_entry_2_00.addend_._4_4_" (field_expression "got_entry_2_00.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "got_entry_2_00._0_8_ = 0;" (assignment_expression "got_entry_2_00._0_8_ = 0" (field_expression "got_entry_2_00._0_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar2 = add_got_entry_pair(this,got_entry_1_00,got_entry_2_00);" (assignment_expression "uVar2 = add_got_entry_pair(this,got_entry_1_00,got_entry_2_00)" identifier = (call_expression "add_got_entry_pair(this,got_entry_1_00,got_entry_2_00)" identifier (argument_list "(this,got_entry_1_00,got_entry_2_00)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "(*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar2,0,0);" (call_expression "(*(object->super_Object)._vptr_Object[0x2d])(object,symndx,got_type,uVar2,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,uVar2,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])(rel_dyn,object,0,r_type,this,uVar4,0,uVar2,0,0);" (call_expression "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1b])(rel_dyn,object,0,r_type,this,uVar4,0,uVar2,0,0)" (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,0,r_type,this,uVar4,0,uVar2,0,0)" ( identifier , identifier , number_literal , identifier , identifier , identifier , number_literal , identifier , number_literal , number_literal ))) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);\n  if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);\n  if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)" identifier (parameter_list "(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);\n  if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (expression_statement "iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);" (assignment_expression "iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0)" identifier = (call_expression "(**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0)" (parenthesized_expression "(**(code **)(*param_2 + 0xac))" ( (pointer_expression "**(code **)(*param_2 + 0xac)" * (pointer_expression "*(code **)(*param_2 + 0xac)" * (cast_expression "(code **)(*param_2 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xac)" ( (binary_expression "*param_2 + 0xac" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,param_4,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }" { (expression_statement "uVar3 = param_3 << 1 | 1;" (assignment_expression "uVar3 = param_3 << 1 | 1" identifier = (binary_expression "param_3 << 1 | 1" (binary_expression "param_3 << 1" identifier << number_literal) | number_literal)) ;) (if_statement "if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }" if (parenthesized_expression "((param_3 + 0x80000003U < 3) || (param_3 < 0))" ( (binary_expression "(param_3 + 0x80000003U < 3) || (param_3 < 0)" (parenthesized_expression "(param_3 + 0x80000003U < 3)" ( (binary_expression "param_3 + 0x80000003U < 3" (binary_expression "param_3 + 0x80000003U" identifier + number_literal) < number_literal) )) || (parenthesized_expression "(param_3 < 0)" ( (binary_expression "param_3 < 0" identifier < number_literal) ))) )) (compound_statement "{\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }" { (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier + number_literal) , number_literal , (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4344" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (ERROR "uVar2 = gold::" (assignment_expression "uVar2 = gold" identifier = identifier) : :) (expression_statement "Output_data_got<32,true>::add_got_entry_pair(param_1);" (comma_expression "Output_data_got<32,true>::add_got_entry_pair(param_1)" (binary_expression "Output_data_got<32" identifier < number_literal) , (binary_expression "true>::add_got_entry_pair(param_1)" true > (ERROR "::" : :) (call_expression "add_got_entry_pair(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);" (call_expression "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7)" (parenthesized_expression "(**(code **)(*param_2 + 0xb4))" ( (pointer_expression "**(code **)(*param_2 + 0xb4)" * (pointer_expression "*(code **)(*param_2 + 0xb4)" * (cast_expression "(code **)(*param_2 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xb4)" ( (binary_expression "*param_2 + 0xb4" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7)" ( identifier , identifier , identifier , identifier , number_literal , number_literal , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);" (call_expression "(**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0)" (parenthesized_expression "(**(code **)(*param_5 + 0x6c))" ( (pointer_expression "**(code **)(*param_5 + 0x6c)" * (pointer_expression "*(code **)(*param_5 + 0x6c)" * (cast_expression "(code **)(*param_5 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x6c)" ( (binary_expression "*param_5 + 0x6c" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0)" ( identifier , identifier , number_literal , identifier , identifier , identifier , number_literal , identifier , number_literal , number_literal ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (ERROR (assignment_expression IDENT = IDENT) : :) (expression_statement (comma_expression (binary_expression IDENT < LIT) , (binary_expression BOOL > (ERROR : :) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT , LIT , 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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , IDENT , LIT , IDENT , LIT , LIT ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);\n  if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0023913c(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)" (identifier "FUN_0023913c") (parameter_list "(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,int *param_5,\n                 undefined4 param_6)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  \n  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);\n  if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (expression_statement "iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);" (assignment_expression "iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0)" (parenthesized_expression "(**(code **)(*param_2 + 0xac))" (( "(") (pointer_expression "**(code **)(*param_2 + 0xac)" (* "*") (pointer_expression "*(code **)(*param_2 + 0xac)" (* "*") (cast_expression "(code **)(*param_2 + 0xac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0xac)" (( "(") (binary_expression "*param_2 + 0xac" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0xac")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_4,param_4,0,0)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_4") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = param_3 << 1 | 1;\n    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }\n    uVar6 = 0;\n    uVar7 = 0;\n    piVar5 = param_2;\n    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);\n    uVar4 = 0;\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);\n    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);\n  }" ({ "{") (expression_statement "uVar3 = param_3 << 1 | 1;" (assignment_expression "uVar3 = param_3 << 1 | 1" (identifier "uVar3") (= "=") (binary_expression "param_3 << 1 | 1" (binary_expression "param_3 << 1" (identifier "param_3") (<< "<<") (number_literal "1")) (| "|") (number_literal "1"))) (; ";")) (if_statement "if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }" (if "if") (parenthesized_expression "((param_3 + 0x80000003U < 3) || (param_3 < 0))" (( "(") (binary_expression "(param_3 + 0x80000003U < 3) || (param_3 < 0)" (parenthesized_expression "(param_3 + 0x80000003U < 3)" (( "(") (binary_expression "param_3 + 0x80000003U < 3" (binary_expression "param_3 + 0x80000003U" (identifier "param_3") (+ "+") (number_literal "0x80000003U")) (< "<") (number_literal "3")) () ")")) (|| "||") (parenthesized_expression "(param_3 < 0)" (( "(") (binary_expression "param_3 < 0" (identifier "param_3") (< "<") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      (*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);\n      return;\n    }" ({ "{") (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)\n                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004c1a30"))) () ")")) (argument_list "(PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,\n                 PTR_s_in_a_linker_script_004c191c + -0x4344)" (( "(") (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" (identifier "PTR_s_ral_options14Struct_no_crefE_004c127c") (+ "+") (number_literal "0x3574")) (, ",") (number_literal "0xa50") (, ",") (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4344" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "-0x4344")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" (identifier "piVar5") (= "=") (identifier "param_2")) (; ";")) (ERROR "uVar2 = gold::" (assignment_expression "uVar2 = gold" (identifier "uVar2") (= "=") (identifier "gold")) (: ":") (: ":")) (expression_statement "Output_data_got<32,true>::add_got_entry_pair(param_1);" (comma_expression "Output_data_got<32,true>::add_got_entry_pair(param_1)" (binary_expression "Output_data_got<32" (identifier "Output_data_got") (< "<") (number_literal "32")) (, ",") (binary_expression "true>::add_got_entry_pair(param_1)" (true "true") (> ">") (ERROR "::" (: ":") (: ":")) (call_expression "add_got_entry_pair(param_1)" (identifier "add_got_entry_pair") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);" (call_expression "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7)" (parenthesized_expression "(**(code **)(*param_2 + 0xb4))" (( "(") (pointer_expression "**(code **)(*param_2 + 0xb4)" (* "*") (pointer_expression "*(code **)(*param_2 + 0xb4)" (* "*") (cast_expression "(code **)(*param_2 + 0xb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0xb4)" (( "(") (binary_expression "*param_2 + 0xb4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0xb4")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "uVar2") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "piVar5") (, ",") (identifier "uVar3") (, ",") (identifier "uVar6") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "(**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);" (call_expression "(**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0)" (parenthesized_expression "(**(code **)(*param_5 + 0x6c))" (( "(") (pointer_expression "**(code **)(*param_5 + 0x6c)" (* "*") (pointer_expression "*(code **)(*param_5 + 0x6c)" (* "*") (cast_expression "(code **)(*param_5 + 0x6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0x6c)" (( "(") (binary_expression "*param_5 + 0x6c" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x6c")) () ")"))))) () ")")) (argument_list "(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0)" (( "(") (identifier "param_5") (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (identifier "param_6") (, ",") (identifier "param_1") (, ",") (identifier "uVar4") (, ",") (number_literal "0") (, ",") (identifier "uVar2") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* 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: void add_local_tls_pair(Output_data_got<32,_true> * this, Relobj *
   object, uint symndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint r_type) */

void __thiscall
gold::var_1<32,var_5>::add_local_tls_pair
          (var_1<32,var_5> *this,Relobj *object,type_2 var_3,type_2 got_type,
          Output_data_reloc_generic *rel_dyn,type_2 r_type)

{
  type_1 got_entry_1;
  type_1 got_entry_2;
  type_1 got_entry_1_00;
  type_1 got_entry_2_00;
  int var_2;
  type_2 uVar2;
  var_1<32,var_5> *this_00;
  type_3 *var_6;
  type_4 in_stack_ffffff64;
  type_4 uStack_90;
  type_4 uStack_8c;
  type_4 uStack_80;
  type_4 uStack_7c;
  type_4 uVar4;
  int var_4;
  type_4 in_stack_ffffffbc;
  
  var_4 = 0x4c9240;
  var_2 = (*(object->super_Object)._vptr_Object[0x2b])(object,var_3,got_type,got_type,0,0);
  if (var_2 == 0) {
    if ((var_3 + 0x80000003 < 3) || ((int)var_3 < 0)) {
      var_6 = *(type_3 **)(var_4 + -0x7810);
      var_2 = *(int *)(var_4 + -0x7924) + -0x4344;
      this_00 = (var_1<32,var_5> *)(*(int *)(var_4 + -0x7fc4) + 0x3574);
      (*var_6)(this_00,0xa50);
      got_entry_1.u_ = (type_5)uStack_80;
      got_entry_1._4_4_ = uStack_7c;
      got_entry_1.addend_._0_4_ = var_2;
      got_entry_1.addend_._4_4_ = 0xfffffffc;
      got_entry_2.u_ = (type_5)uStack_90;
      got_entry_2._4_4_ = uStack_8c;
      got_entry_2.addend_._0_4_ = var_6 + 0x28ff68;
      got_entry_2.addend_._4_4_ = in_stack_ffffff64;
      var_7(this_00,got_entry_1,got_entry_2);
      return;
    }
    got_entry_1_00._0_8_ = 0;
    got_entry_1_00.addend_ = var_8(object,var_3 << 1) | 1;
    got_entry_2_00.addend_._0_4_ = var_4;
    got_entry_2_00.addend_._4_4_ = in_stack_ffffffbc;
    got_entry_2_00._0_8_ = 0;
    uVar2 = var_7(this,got_entry_1_00,got_entry_2_00);
    uVar4 = 0;
    (*(object->super_Object)._vptr_Object[0x2d])(object,var_3,got_type,uVar2,0,0);
    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data[0x1b])(rel_dyn,object,0,r_type,this,uVar4,0,uVar2,0,0);
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (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 (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))) (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: (identifier))) (ERROR (assignment_expression left: (identifier) right: (identifier))) (expression_statement (comma_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (true) (ERROR) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (number_literal) (number_literal) (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: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (number_literal) (identifier) (identifier) (identifier) (number_literal) (identifier) (number_literal) (number_literal)))))) (return_statement))))

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

{
  int iVar1;
  undefined4 uVar2;
  uint uVar3;
  undefined4 uVar4;
  int *piVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  
  iVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_4,param_4,0,0);
  if (iVar1 == 0) {
    uVar3 = param_3 << 1 | 1;
    if ((param_3 + 0x80000003U < 3) || (param_3 < 0)) {
      (*(code *)PTR_do_gold_unreachable_004c1a30)
                (PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574,0xa50,
                 PTR_s_in_a_linker_script_004c191c + -0x4344);
      return;
    }
    uVar6 = 0;
    uVar7 = 0;
    piVar5 = param_2;
    uVar2 = gold::Output_data_got<32,true>::add_got_entry_pair(param_1);
    uVar4 = 0;
    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_4,uVar2,0,0,piVar5,uVar3,uVar6,uVar7);
    (**(code **)(*param_5 + 0x6c))(param_5,param_2,0,param_6,param_1,uVar4,0,uVar2,0,0);
  }
  return;
}

