
/* 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_2;
  int iVar1;
  uint uVar2;
  undefined4 uStack_74;
  undefined4 uStack_6c;
  uint local_50;
  undefined4 uStack_4c;
  
  iVar1 = (*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,(ulong)got_type,0);
  if ((char)iVar1 == '\0') {
    if ((symndx + 0x80000003 < 3) || (symndx != (symndx & 0x7fffffff))) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.h",0xa50,"Got_entry");
    }
    got_entry_2._8_8_ = CONCAT44(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff) | 0x80000000
    ;
    got_entry_2.u_.object = object;
    got_entry_2.addend_ = 0;
    uVar2 = add_got_entry_pair(this,(Got_entry)
                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<
                                    0x20),got_entry_2);
    (*(object->super_Object)._vptr_Object[0x2d])
              (object,(ulong)symndx,(ulong)got_type,(ulong)uVar2,0);
    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data[0x1b])(rel_dyn,object,0,(ulong)r_type,this,(ulong)uVar2,0);
  }
  return;
}



undefined8
FUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,
            undefined4 param_6)

{
  undefined4 uVar1;
  undefined8 uVar2;
  
  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);
  if ((char)uVar2 == '\0') {
    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");
    }
    uVar1 = FUN_00210430(param_1);
    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);
    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);
    uVar2 = 0;
  }
  return uVar2;
}


PUSH R15
MOV R15D,EDX
PUSH R14
MOV R14,RSI
PUSH R13
MOV R13D,R9D
PUSH R12
MOV R12,RDI
MOV RDI,R14
PUSH RBP
MOV RBP,R8
PUSH RBX
MOV EBX,ECX
XOR ECX,ECX
MOV EDX,EBX
SUB RSP,0x58
MOV RAX,qword ptr [RSI]
MOV ESI,R15D
CALL qword ptr [RAX + 0x158]
TEST AL,AL
JNZ 0x00210c4f
MOV qword ptr [RSP + 0x40],0x0
MOV EAX,dword ptr [RSP + 0x38]
MOV EDX,R15D
AND EDX,0x7fffffff
AND EAX,0x80000000
OR EAX,EDX
MOV dword ptr [RSP + 0x38],EAX
SHR EAX,0x18
OR EAX,0xffffff80
MOV byte ptr [RSP + 0x3b],AL
LEA EAX,[R15 + -0x7ffffffd]
CMP EAX,0x2
JBE 0x00210c5e
CMP R15D,EDX
JNZ 0x00210c5e
MOV qword ptr [RSP + 0x30],R14
MOV RDI,R12
MOV dword ptr [RSP + 0x18],0x7ffffffd
MOV qword ptr [RSP + 0x20],0x0
MOV dword ptr [RSP + 0x10],0x0
PUSH qword ptr [RSP + 0x40]
PUSH qword ptr [RSP + 0x40]
PUSH R14
PUSH qword ptr [RSP + 0x38]
PUSH qword ptr [RSP + 0x38]
PUSH qword ptr [RSP + 0x38]
CALL 0x00210430
MOV R9,qword ptr [R14]
ADD RSP,0x30
XOR R8D,R8D
MOV ECX,EAX
MOV dword ptr [RSP + 0xc],EAX
MOV EDX,EBX
MOV ESI,R15D
MOV RDI,R14
CALL qword ptr [R9 + 0x168]
MOV R10,qword ptr [RBP]
XOR EDX,EDX
MOV R8,R12
SUB RSP,0x8
MOV ECX,R13D
MOV RSI,R14
MOV RDI,RBP
PUSH 0x0
MOV R9D,dword ptr [RSP + 0x1c]
CALL qword ptr [R10 + 0xd8]
POP RAX
POP RDX
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RDX,[0x37ee78]
MOV ESI,0xa50
LEA RDI,[0x373454]
CALL 0x0017c650
(translation_unit "undefined8\nFUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  \n  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);\n  if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined8\nFUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  \n  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);\n  if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)" identifier (parameter_list "(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "long *param_5" (sized_type_specifier "long" long) (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  \n  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);\n  if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }\n  return uVar2;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (expression_statement "uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);" (assignment_expression "uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0)" identifier = (call_expression "(**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0)" (parenthesized_expression "(**(code **)(*param_2 + 0x158))" ( (pointer_expression "**(code **)(*param_2 + 0x158)" * (pointer_expression "*(code **)(*param_2 + 0x158)" * (cast_expression "(code **)(*param_2 + 0x158)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x158)" ( (binary_expression "*param_2 + 0x158" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,0)" ( identifier , identifier , identifier , number_literal )))) ;) (if_statement "if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }" if (parenthesized_expression "((char)uVar2 == '\0')" ( (binary_expression "(char)uVar2 == '\0'" (cast_expression "(char)uVar2" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }" { (if_statement "if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }" if (parenthesized_expression "((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff)))" ( (binary_expression "(param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))" (parenthesized_expression "(param_3 + 0x80000003 < 3)" ( (binary_expression "param_3 + 0x80000003 < 3" (binary_expression "param_3 + 0x80000003" identifier + number_literal) < number_literal) )) || (parenthesized_expression "(param_3 != (param_3 & 0x7fffffff))" ( (binary_expression "param_3 != (param_3 & 0x7fffffff)" identifier != (parenthesized_expression "(param_3 & 0x7fffffff)" ( (binary_expression "param_3 & 0x7fffffff" identifier & number_literal) ))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");" (call_expression "FUN_0017c650("../../gold/output.h",0xa50,"Got_entry")" identifier (argument_list "("../../gold/output.h",0xa50,"Got_entry")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""Got_entry"" " string_content ") ))) ;) })) (expression_statement "uVar1 = FUN_00210430(param_1);" (assignment_expression "uVar1 = FUN_00210430(param_1)" identifier = (call_expression "FUN_00210430(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);" (call_expression "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0)" (parenthesized_expression "(**(code **)(*param_2 + 0x168))" ( (pointer_expression "**(code **)(*param_2 + 0x168)" * (pointer_expression "*(code **)(*param_2 + 0x168)" * (cast_expression "(code **)(*param_2 + 0x168)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x168)" ( (binary_expression "*param_2 + 0x168" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,uVar1,0)" ( identifier , identifier , identifier , identifier , number_literal ))) ;) (expression_statement "(**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);" (call_expression "(**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1)" (parenthesized_expression "(**(code **)(*param_5 + 0xd8))" ( (pointer_expression "**(code **)(*param_5 + 0xd8)" * (pointer_expression "*(code **)(*param_5 + 0xd8)" * (cast_expression "(code **)(*param_5 + 0xd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0xd8)" ( (binary_expression "*param_5 + 0xd8" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5,param_2,0,param_6,param_1,uVar1)" ( identifier , identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "/* 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_2;\n  int iVar1;\n  uint uVar2;\n  undefined4 uStack_74;\n  undefined4 uStack_6c;\n  uint local_50;\n  undefined4 uStack_4c;\n  \n  iVar1 = (*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,(ulong)got_type,0);\n  if ((char)iVar1 == '\0') {\n    if ((symndx + 0x80000003 < 3) || (symndx != (symndx & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xa50,"Got_entry");\n    }\n    got_entry_2._8_8_ = CONCAT44(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff) | 0x80000000\n    ;\n    got_entry_2.u_.object = object;\n    got_entry_2.addend_ = 0;\n    uVar2 = add_got_entry_pair(this,(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20),got_entry_2);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,(ulong)symndx,(ulong)got_type,(ulong)uVar2,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,(ulong)r_type,this,(ulong)uVar2,0);\n  }\n  return;\n}\n\n" 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_2;" 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 "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uStack_74;" type_identifier identifier ;) (declaration "undefined4 uStack_6c;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (expression_statement "iVar1 = (*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,(ulong)got_type,0);" (assignment_expression "iVar1 = (*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,(ulong)got_type,0)" identifier = (call_expression "(*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,(ulong)got_type,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,(ulong)symndx,(ulong)got_type,0)" ( identifier , (cast_expression "(ulong)symndx" ( (type_descriptor "ulong" type_identifier) ) identifier) , (cast_expression "(ulong)got_type" ( (type_descriptor "ulong" type_identifier) ) identifier) , number_literal )))) ;) (if_statement "if ((char)iVar1 == '\0') {\n    if ((symndx + 0x80000003 < 3) || (symndx != (symndx & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xa50,"Got_entry");\n    }\n    got_entry_2._8_8_ = CONCAT44(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff) | 0x80000000\n    ;\n    got_entry_2.u_.object = object;\n    got_entry_2.addend_ = 0;\n    uVar2 = add_got_entry_pair(this,(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20),got_entry_2);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,(ulong)symndx,(ulong)got_type,(ulong)uVar2,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,(ulong)r_type,this,(ulong)uVar2,0);\n  }" if (parenthesized_expression "((char)iVar1 == '\0')" ( (binary_expression "(char)iVar1 == '\0'" (cast_expression "(char)iVar1" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((symndx + 0x80000003 < 3) || (symndx != (symndx & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xa50,"Got_entry");\n    }\n    got_entry_2._8_8_ = CONCAT44(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff) | 0x80000000\n    ;\n    got_entry_2.u_.object = object;\n    got_entry_2.addend_ = 0;\n    uVar2 = add_got_entry_pair(this,(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20),got_entry_2);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,(ulong)symndx,(ulong)got_type,(ulong)uVar2,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,(ulong)r_type,this,(ulong)uVar2,0);\n  }" { (if_statement "if ((symndx + 0x80000003 < 3) || (symndx != (symndx & 0x7fffffff))) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xa50,"Got_entry");\n    }" if (parenthesized_expression "((symndx + 0x80000003 < 3) || (symndx != (symndx & 0x7fffffff)))" ( (binary_expression "(symndx + 0x80000003 < 3) || (symndx != (symndx & 0x7fffffff))" (parenthesized_expression "(symndx + 0x80000003 < 3)" ( (binary_expression "symndx + 0x80000003 < 3" (binary_expression "symndx + 0x80000003" identifier + number_literal) < number_literal) )) || (parenthesized_expression "(symndx != (symndx & 0x7fffffff))" ( (binary_expression "symndx != (symndx & 0x7fffffff)" identifier != (parenthesized_expression "(symndx & 0x7fffffff)" ( (binary_expression "symndx & 0x7fffffff" identifier & number_literal) ))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.h",0xa50,"Got_entry");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xa50,"Got_entry");" (call_expression "do_gold_unreachable("../../gold/output.h",0xa50,"Got_entry")" identifier (argument_list "("../../gold/output.h",0xa50,"Got_entry")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""Got_entry"" " string_content ") ))) ;) })) (expression_statement "got_entry_2._8_8_ = CONCAT44(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff) | 0x80000000\n    ;" (assignment_expression "got_entry_2._8_8_ = CONCAT44(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff) | 0x80000000" (field_expression "got_entry_2._8_8_" identifier . field_identifier) = (binary_expression "CONCAT44(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff) | 0x80000000" (call_expression "CONCAT44(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff)" identifier (argument_list "(uStack_4c,local_50 & 0x80000000 | symndx & 0x7fffffff)" ( identifier , (binary_expression "local_50 & 0x80000000 | symndx & 0x7fffffff" (binary_expression "local_50 & 0x80000000" identifier & number_literal) | (binary_expression "symndx & 0x7fffffff" identifier & number_literal)) ))) | number_literal)) ;) (expression_statement "got_entry_2.u_.object = object;" (assignment_expression "got_entry_2.u_.object = object" (field_expression "got_entry_2.u_.object" (field_expression "got_entry_2.u_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "got_entry_2.addend_ = 0;" (assignment_expression "got_entry_2.addend_ = 0" (field_expression "got_entry_2.addend_" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar2 = add_got_entry_pair(this,(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20),got_entry_2);" (assignment_expression "uVar2 = add_got_entry_pair(this,(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20),got_entry_2)" identifier = (call_expression "add_got_entry_pair(this,(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20),got_entry_2)" identifier (argument_list "(this,(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20),got_entry_2)" ( identifier , (call_expression "(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20)" (parenthesized_expression "(Got_entry)" ( identifier )) (argument_list "(ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20)" ( (binary_expression "ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20" (call_expression "ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74))" identifier (argument_list "(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74))" ( (call_expression "CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)" identifier (argument_list "(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)" ( (call_expression "CONCAT44(uStack_6c,0x7ffffffd)" identifier (argument_list "(uStack_6c,0x7ffffffd)" ( identifier , number_literal ))) , identifier ))) ))) << number_literal) ))) , identifier )))) ;) (expression_statement "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,(ulong)symndx,(ulong)got_type,(ulong)uVar2,0);" (call_expression "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,(ulong)symndx,(ulong)got_type,(ulong)uVar2,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,(ulong)symndx,(ulong)got_type,(ulong)uVar2,0)" ( identifier , (cast_expression "(ulong)symndx" ( (type_descriptor "ulong" type_identifier) ) identifier) , (cast_expression "(ulong)got_type" ( (type_descriptor "ulong" type_identifier) ) identifier) , (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) , 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,(ulong)r_type,this,(ulong)uVar2,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,(ulong)r_type,this,(ulong)uVar2,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,(ulong)r_type,this,(ulong)uVar2,0)" ( identifier , identifier , number_literal , (cast_expression "(ulong)r_type" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier , (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) , number_literal ))) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "undefined8\nFUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  \n  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);\n  if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined8\nFUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  \n  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);\n  if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)" identifier (parameter_list "(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "long *param_5" (sized_type_specifier "long" long) (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  \n  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);\n  if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }\n  return uVar2;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (expression_statement "uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);" (assignment_expression "uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0)" identifier = (call_expression "(**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0)" (parenthesized_expression "(**(code **)(*param_2 + 0x158))" ( (pointer_expression "**(code **)(*param_2 + 0x158)" * (pointer_expression "*(code **)(*param_2 + 0x158)" * (cast_expression "(code **)(*param_2 + 0x158)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x158)" ( (binary_expression "*param_2 + 0x158" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,0)" ( identifier , identifier , identifier , number_literal )))) ;) (if_statement "if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }" if (parenthesized_expression "((char)uVar2 == '\0')" ( (binary_expression "(char)uVar2 == '\0'" (cast_expression "(char)uVar2" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }" { (if_statement "if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }" if (parenthesized_expression "((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff)))" ( (binary_expression "(param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))" (parenthesized_expression "(param_3 + 0x80000003 < 3)" ( (binary_expression "param_3 + 0x80000003 < 3" (binary_expression "param_3 + 0x80000003" identifier + number_literal) < number_literal) )) || (parenthesized_expression "(param_3 != (param_3 & 0x7fffffff))" ( (binary_expression "param_3 != (param_3 & 0x7fffffff)" identifier != (parenthesized_expression "(param_3 & 0x7fffffff)" ( (binary_expression "param_3 & 0x7fffffff" identifier & number_literal) ))) ))) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }" { (expression_statement "FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");" (call_expression "FUN_0017c650("../../gold/output.h",0xa50,"Got_entry")" identifier (argument_list "("../../gold/output.h",0xa50,"Got_entry")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""Got_entry"" " string_content ") ))) ;) })) (expression_statement "uVar1 = FUN_00210430(param_1);" (assignment_expression "uVar1 = FUN_00210430(param_1)" identifier = (call_expression "FUN_00210430(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);" (call_expression "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0)" (parenthesized_expression "(**(code **)(*param_2 + 0x168))" ( (pointer_expression "**(code **)(*param_2 + 0x168)" * (pointer_expression "*(code **)(*param_2 + 0x168)" * (cast_expression "(code **)(*param_2 + 0x168)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x168)" ( (binary_expression "*param_2 + 0x168" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,uVar1,0)" ( identifier , identifier , identifier , identifier , number_literal ))) ;) (expression_statement "(**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);" (call_expression "(**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1)" (parenthesized_expression "(**(code **)(*param_5 + 0xd8))" ( (pointer_expression "**(code **)(*param_5 + 0xd8)" * (pointer_expression "*(code **)(*param_5 + 0xd8)" * (cast_expression "(code **)(*param_5 + 0xd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0xd8)" ( (binary_expression "*param_5 + 0xd8" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5,param_2,0,param_6,param_1,uVar1)" ( identifier , identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT != (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , 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 , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined8\nFUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  \n  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);\n  if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }\n  return uVar2;\n}" (type_identifier "undefined8") (function_declarator "FUN_00210b50(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)" (identifier "FUN_00210b50") (parameter_list "(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,\n            undefined4 param_6)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "long *param_5" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  \n  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);\n  if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }\n  return uVar2;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (expression_statement "uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);" (assignment_expression "uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0)" (parenthesized_expression "(**(code **)(*param_2 + 0x158))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x158)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x158)" (* "*") (cast_expression "(code **)(*param_2 + 0x158)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x158)" (( "(") (binary_expression "*param_2 + 0x158" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x158")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_4,0)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((char)uVar2 == '\0') {\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }" (if "if") (parenthesized_expression "((char)uVar2 == '\0')" (( "(") (binary_expression "(char)uVar2 == '\0'" (cast_expression "(char)uVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }\n    uVar1 = FUN_00210430(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);\n    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);\n    uVar2 = 0;\n  }" ({ "{") (if_statement "if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }" (if "if") (parenthesized_expression "((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff)))" (( "(") (binary_expression "(param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))" (parenthesized_expression "(param_3 + 0x80000003 < 3)" (( "(") (binary_expression "param_3 + 0x80000003 < 3" (binary_expression "param_3 + 0x80000003" (identifier "param_3") (+ "+") (number_literal "0x80000003")) (< "<") (number_literal "3")) () ")")) (|| "||") (parenthesized_expression "(param_3 != (param_3 & 0x7fffffff))" (( "(") (binary_expression "param_3 != (param_3 & 0x7fffffff)" (identifier "param_3") (!= "!=") (parenthesized_expression "(param_3 & 0x7fffffff)" (( "(") (binary_expression "param_3 & 0x7fffffff" (identifier "param_3") (& "&") (number_literal "0x7fffffff")) () ")"))) () ")"))) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");" (call_expression "FUN_0017c650("../../gold/output.h",0xa50,"Got_entry")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.h",0xa50,"Got_entry")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xa50") (, ",") (string_literal ""Got_entry"" (" """) (string_content "Got_entry") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar1 = FUN_00210430(param_1);" (assignment_expression "uVar1 = FUN_00210430(param_1)" (identifier "uVar1") (= "=") (call_expression "FUN_00210430(param_1)" (identifier "FUN_00210430") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);" (call_expression "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0)" (parenthesized_expression "(**(code **)(*param_2 + 0x168))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x168)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x168)" (* "*") (cast_expression "(code **)(*param_2 + 0x168)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x168)" (( "(") (binary_expression "*param_2 + 0x168" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x168")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_4,uVar1,0)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "uVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "(**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);" (call_expression "(**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1)" (parenthesized_expression "(**(code **)(*param_5 + 0xd8))" (( "(") (pointer_expression "**(code **)(*param_5 + 0xd8)" (* "*") (pointer_expression "*(code **)(*param_5 + 0xd8)" (* "*") (cast_expression "(code **)(*param_5 + 0xd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0xd8)" (( "(") (binary_expression "*param_5 + 0xd8" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0xd8")) () ")"))))) () ")")) (argument_list "(param_5,param_2,0,param_6,param_1,uVar1)" (( "(") (identifier "param_5") (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (identifier "param_6") (, ",") (identifier "param_1") (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

/* 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,type_1 var_1,type_1 got_type,
          Output_data_reloc_generic *rel_dyn,type_1 r_type)

{
  Got_entry got_entry_2;
  int iVar1;
  type_1 uVar2;
  type_2 uStack_74;
  type_2 uStack_6c;
  type_1 var_4;
  type_2 uStack_4c;
  
  iVar1 = (*(object->super_Object)._vptr_Object[0x2b])(object,(type_3)var_1,(type_3)got_type,0);
  if ((char)iVar1 == '\0') {
    if ((var_1 + 0x80000003 < 3) || (var_1 != (var_1 & 0x7fffffff))) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/output.h",0xa50,"Got_entry");
    }
    got_entry_2._8_8_ = var_3(uStack_4c,var_4 & 0x80000000 | var_1 & 0x7fffffff) | 0x80000000
    ;
    got_entry_2.u_.object = object;
    got_entry_2.addend_ = 0;
    uVar2 = var_5(this,(Got_entry)
                                    (var_6(var_7(var_3(uStack_6c,0x7ffffffd),uStack_74)) <<
                                    0x20),got_entry_2);
    (*(object->super_Object)._vptr_Object[0x2d])
              (object,(type_3)var_1,(type_3)got_type,(type_3)uVar2,0);
    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data[0x1b])(rel_dyn,object,0,(type_3)r_type,this,(type_3)uVar2,0);
  }
  return;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (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) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (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: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (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) (number_literal) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (return_statement (identifier)))))

undefined8
MASKED(undefined8 param_1,long *param_2,uint param_3,undefined4 param_4,long *param_5,
            undefined4 param_6)

{
  undefined4 uVar1;
  undefined8 uVar2;
  
  uVar2 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_4,0);
  if ((char)uVar2 == '\0') {
    if ((param_3 + 0x80000003 < 3) || (param_3 != (param_3 & 0x7fffffff))) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/output.h",0xa50,"Got_entry");
    }
    uVar1 = FUN_00210430(param_1);
    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_4,uVar1,0);
    (**(code **)(*param_5 + 0xd8))(param_5,param_2,0,param_6,param_1,uVar1);
    uVar2 = 0;
  }
  return uVar2;
}

