
/* DWARF original prototype: void add_local_pair_with_rel(Output_data_got<32,_false> * this, Relobj
   * object, uint symndx, uint shndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint
   r_type, uint64_t addend) */

void __thiscall
gold::Output_data_got<32,_false>::add_local_pair_with_rel
          (Output_data_got<32,_false> *this,Relobj *object,uint symndx,uint shndx,uint got_type,
          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)

{
  _func_int_varargs *p_Var1;
  pointer ppOVar2;
  Got_entry got_entry_2;
  int iVar3;
  uint uVar4;
  Output_section *pOVar5;
  undefined4 uStack_74;
  undefined4 uStack_6c;
  undefined4 uStack_4c;
  undefined4 extraout_var;
  
  iVar3 = (*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,got_type,addend);
  if ((char)iVar3 != '\0') {
    return;
  }
  if ((2 < symndx + 0x80000003) && (symndx == (symndx & 0x7fffffff))) {
    got_entry_2._8_8_ = CONCAT44(uStack_4c,symndx) & 0xffffffff7fffffff;
    got_entry_2.u_.object = object;
    got_entry_2.addend_ = addend;
    uVar4 = 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)uVar4,addend);
    p_Var1 = (object->super_Object)._vptr_Object[0x18];
    if (p_Var1 == Relobj::do_output_section) {
      ppOVar2 = (object->output_sections_).
                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
                _M_impl._M_start;
      if ((ulong)((long)(object->output_sections_).
                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");
      }
      pOVar5 = ppOVar2[shndx];
    }
    else {
      iVar3 = (*p_Var1)(object,(ulong)shndx);
      pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3);
    }
                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data[0x1d])(rel_dyn,pOVar5,(ulong)r_type,this,(ulong)uVar4,addend);
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0xa5d,"Got_entry");
}



void FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,
                 long *param_6,undefined4 param_7,undefined8 param_8)

{
  char cVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  
  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);
  if (cVar1 != '\0') {
    return;
  }
  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {
    uVar2 = FUN_003e24f0(param_1);
    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);
    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {
      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {
                    /* WARNING: Subroutine does not return */
        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");
      }
      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);
    }
    else {
      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);
    }
                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");
}


PUSH R15
MOV R15D,EDX
MOV EDX,R8D
PUSH R14
MOV R14,RDI
PUSH R13
MOV R13,R9
PUSH R12
MOV R12D,R8D
PUSH RBP
PUSH RBX
MOV RBX,RSI
MOV RDI,RBX
SUB RSP,0x58
MOV EAX,dword ptr [RSP + 0x90]
MOV RBP,qword ptr [RSP + 0x98]
MOV dword ptr [RSP + 0x8],ECX
MOV dword ptr [RSP + 0x4],EAX
MOV RAX,qword ptr [RSI]
MOV RCX,RBP
MOV ESI,R15D
CALL qword ptr [RAX + 0x158]
TEST AL,AL
JNZ 0x003e2ba8
MOV EAX,dword ptr [RSP + 0x38]
MOV EDX,R15D
MOV qword ptr [RSP + 0x40],RBP
AND EDX,0x7fffffff
AND EAX,0x80000000
OR EAX,EDX
MOV dword ptr [RSP + 0x38],EAX
SHR EAX,0x18
AND EAX,0x7f
MOV byte ptr [RSP + 0x3b],AL
LEA EAX,[R15 + -0x7ffffffd]
CMP EAX,0x2
JBE 0x003e2bd8
CMP R15D,EDX
JNZ 0x003e2bd8
MOV qword ptr [RSP + 0x30],RBX
MOV RDI,R14
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 RBX
PUSH qword ptr [RSP + 0x38]
PUSH qword ptr [RSP + 0x38]
PUSH qword ptr [RSP + 0x38]
CALL 0x003e24f0
ADD RSP,0x30
MOV EDX,R12D
MOV R8,RBP
MOV R11D,EAX
MOV RAX,qword ptr [RBX]
MOV ESI,R15D
MOV RDI,RBX
MOV ECX,R11D
MOV dword ptr [RSP + 0xc],R11D
CALL qword ptr [RAX + 0x168]
MOV RAX,qword ptr [RBX]
MOV R11D,dword ptr [RSP + 0xc]
LEA RDX,[0x1a5070]
MOV RAX,qword ptr [RAX + 0xc0]
CMP RAX,RDX
JNZ 0x003e2bc0
MOV RDX,qword ptr [RBX + 0x50]
MOV RAX,qword ptr [RBX + 0x58]
MOV ECX,dword ptr [RSP + 0x8]
SUB RAX,RDX
SAR RAX,0x3
CMP RCX,RAX
JNC 0x003e2bf0
MOV RSI,qword ptr [RDX + RCX*0x8]
MOV RDX,qword ptr [R13]
MOV R9,RBP
MOV RCX,R14
MOV RDI,R13
MOV R8D,R11D
MOV R10,qword ptr [RDX + 0xe8]
MOV EDX,dword ptr [RSP + 0x4]
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP R10
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV dword ptr [RSP + 0xc],R11D
MOV ESI,dword ptr [RSP + 0x8]
MOV RDI,RBX
CALL RAX
MOV R11D,dword ptr [RSP + 0xc]
MOV RSI,RAX
JMP 0x003e2b77
LEA RDX,[0x579bc8]
MOV ESI,0xa5d
LEA RDI,[0x533384]
CALL 0x00352af0
LEA RDX,[0x57adf0]
MOV ESI,0x5c8
LEA RDI,[0x5333ac]
CALL 0x00352af0
(translation_unit "void FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);\n  if (cVar1 != '\0') {\n    return;\n  }\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");\n}\n\n" (function_definition "void FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);\n  if (cVar1 != '\0') {\n    return;\n  }\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");\n}" primitive_type (function_declarator "FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)" identifier (parameter_list "(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)" ( (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 "uint param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "long *param_6" (sized_type_specifier "long" long) (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined8 param_8" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);\n  if (cVar1 != '\0') {\n    return;\n  }\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (expression_statement "cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);" (assignment_expression "cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8)" identifier = (call_expression "(**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8)" (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_5,param_8)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar1 != '\0') {\n    return;\n  }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }" if (parenthesized_expression "((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff)))" ( (binary_expression "(2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))" (parenthesized_expression "(2 < param_3 + 0x80000003)" ( (binary_expression "2 < param_3 + 0x80000003" number_literal < (binary_expression "param_3 + 0x80000003" identifier + 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    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }" { (expression_statement "uVar2 = FUN_003e24f0(param_1);" (assignment_expression "uVar2 = FUN_003e24f0(param_1)" identifier = (call_expression "FUN_003e24f0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);" (call_expression "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8)" (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_5,uVar2,param_8)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" if (parenthesized_expression "(*(code **)(*param_2 + 0xc0) == FUN_001a5070)" ( (binary_expression "*(code **)(*param_2 + 0xc0) == FUN_001a5070" (pointer_expression "*(code **)(*param_2 + 0xc0)" * (cast_expression "(code **)(*param_2 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc0)" ( (binary_expression "*param_2 + 0xc0" (pointer_expression "*param_2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }" { (if_statement "if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }" if (parenthesized_expression "((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4)" ( (binary_expression "(ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4" (call_expression "(ulong)(param_2[0xb] - param_2[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_2[0xb] - param_2[10] >> 3)" ( (binary_expression "param_2[0xb] - param_2[10] >> 3" (binary_expression "param_2[0xb] - param_2[10]" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) - (subscript_expression "param_2[10]" identifier [ number_literal ])) >> number_literal) ))) <= (cast_expression "(ulong)param_4" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }" { comment (expression_statement "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" identifier = (pointer_expression "*(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" * (cast_expression "(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[10] + (ulong)param_4 * 8)" ( (binary_expression "param_2[10] + (ulong)param_4 * 8" (subscript_expression "param_2[10]" identifier [ number_literal ]) + (binary_expression "(ulong)param_4 * 8" (cast_expression "(ulong)param_4" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) }) (else_clause "else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" else (compound_statement "{\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" { (expression_statement "uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4)" identifier = (call_expression "(**(code **)(*param_2 + 0xc0))(param_2,param_4)" (parenthesized_expression "(**(code **)(*param_2 + 0xc0))" ( (pointer_expression "**(code **)(*param_2 + 0xc0)" * (pointer_expression "*(code **)(*param_2 + 0xc0)" * (cast_expression "(code **)(*param_2 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc0)" ( (binary_expression "*param_2 + 0xc0" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_4)" ( identifier , identifier )))) ;) }))) comment comment (expression_statement "(**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);" (call_expression "(**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8)" (parenthesized_expression "(**(code **)(*param_6 + 0xe8))" ( (pointer_expression "**(code **)(*param_6 + 0xe8)" * (pointer_expression "*(code **)(*param_6 + 0xe8)" * (cast_expression "(code **)(*param_6 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_6 + 0xe8)" ( (binary_expression "*param_6 + 0xe8" (pointer_expression "*param_6" * identifier) + number_literal) ))))) )) (argument_list "(param_6,uVar3,param_7,param_1,uVar2,param_8)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");" (call_expression "FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry")" identifier (argument_list "("../../gold/output.h",0xa5d,"Got_entry")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""Got_entry"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: void add_local_pair_with_rel(Output_data_got<32,_false> * this, Relobj\n   * object, uint symndx, uint shndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint\n   r_type, uint64_t addend) */\n\nvoid __thiscall\ngold::Output_data_got<32,_false>::add_local_pair_with_rel\n          (Output_data_got<32,_false> *this,Relobj *object,uint symndx,uint shndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)\n\n{\n  _func_int_varargs *p_Var1;\n  pointer ppOVar2;\n  Got_entry got_entry_2;\n  int iVar3;\n  uint uVar4;\n  Output_section *pOVar5;\n  undefined4 uStack_74;\n  undefined4 uStack_6c;\n  undefined4 uStack_4c;\n  undefined4 extraout_var;\n  \n  iVar3 = (*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,got_type,addend);\n  if ((char)iVar3 != '\0') {\n    return;\n  }\n  if ((2 < symndx + 0x80000003) && (symndx == (symndx & 0x7fffffff))) {\n    got_entry_2._8_8_ = CONCAT44(uStack_4c,symndx) & 0xffffffff7fffffff;\n    got_entry_2.u_.object = object;\n    got_entry_2.addend_ = addend;\n    uVar4 = 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)uVar4,addend);\n    p_Var1 = (object->super_Object)._vptr_Object[0x18];\n    if (p_Var1 == Relobj::do_output_section) {\n      ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_start;\n      if ((ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      pOVar5 = ppOVar2[shndx];\n    }\n    else {\n      iVar3 = (*p_Var1)(object,(ulong)shndx);\n      pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3);\n    }\n                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d])(rel_dyn,pOVar5,(ulong)r_type,this,(ulong)uVar4,addend);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xa5d,"Got_entry");\n}\n\n" comment (declaration "void __thiscall\ngold::Output_data_got<32,_false>::add_local_pair_with_rel\n          (Output_data_got<32,_false> *this,Relobj *object,uint symndx,uint shndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)\n\n{\n  _func_int_varargs *p_Var1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>::add_local_pair_with_rel\n          (Output_data_got<32,_false> *this,Relobj *object,uint symndx,uint shndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)\n\n{\n  _func_int_varargs" identifier > : : (function_declarator "add_local_pair_with_rel\n          (Output_data_got<32,_false> *this,Relobj *object,uint symndx,uint shndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)" identifier (parameter_list "(Output_data_got<32,_false> *this,Relobj *object,uint symndx,uint shndx,uint got_type,\n          Output_data_reloc_generic *rel_dyn,uint r_type,uint64_t addend)" ( (parameter_declaration "Output_data_got" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *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 shndx" type_identifier identifier) , (parameter_declaration "uint got_type" type_identifier identifier) , (parameter_declaration "Output_data_reloc_generic *rel_dyn" type_identifier (pointer_declarator "*rel_dyn" * identifier)) , (parameter_declaration "uint r_type" type_identifier identifier) , (parameter_declaration "uint64_t addend" primitive_type identifier) ))) { identifier) (pointer_declarator "*p_Var1" * identifier) ;) (declaration "pointer ppOVar2;" type_identifier identifier ;) (declaration "Got_entry got_entry_2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "Output_section *pOVar5;" type_identifier (pointer_declarator "*pOVar5" * identifier) ;) (declaration "undefined4 uStack_74;" type_identifier identifier ;) (declaration "undefined4 uStack_6c;" type_identifier identifier ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (expression_statement "iVar3 = (*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,got_type,addend);" (assignment_expression "iVar3 = (*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,got_type,addend)" identifier = (call_expression "(*(object->super_Object)._vptr_Object[0x2b])(object,(ulong)symndx,got_type,addend)" (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,got_type,addend)" ( identifier , (cast_expression "(ulong)symndx" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier , identifier )))) ;) (if_statement "if ((char)iVar3 != '\0') {\n    return;\n  }" if (parenthesized_expression "((char)iVar3 != '\0')" ( (binary_expression "(char)iVar3 != '\0'" (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((2 < symndx + 0x80000003) && (symndx == (symndx & 0x7fffffff))) {\n    got_entry_2._8_8_ = CONCAT44(uStack_4c,symndx) & 0xffffffff7fffffff;\n    got_entry_2.u_.object = object;\n    got_entry_2.addend_ = addend;\n    uVar4 = 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)uVar4,addend);\n    p_Var1 = (object->super_Object)._vptr_Object[0x18];\n    if (p_Var1 == Relobj::do_output_section) {\n      ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_start;\n      if ((ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      pOVar5 = ppOVar2[shndx];\n    }\n    else {\n      iVar3 = (*p_Var1)(object,(ulong)shndx);\n      pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3);\n    }\n                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d])(rel_dyn,pOVar5,(ulong)r_type,this,(ulong)uVar4,addend);\n    return;\n  }" if (parenthesized_expression "((2 < symndx + 0x80000003) && (symndx == (symndx & 0x7fffffff)))" ( (binary_expression "(2 < symndx + 0x80000003) && (symndx == (symndx & 0x7fffffff))" (parenthesized_expression "(2 < symndx + 0x80000003)" ( (binary_expression "2 < symndx + 0x80000003" number_literal < (binary_expression "symndx + 0x80000003" identifier + 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    got_entry_2._8_8_ = CONCAT44(uStack_4c,symndx) & 0xffffffff7fffffff;\n    got_entry_2.u_.object = object;\n    got_entry_2.addend_ = addend;\n    uVar4 = 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)uVar4,addend);\n    p_Var1 = (object->super_Object)._vptr_Object[0x18];\n    if (p_Var1 == Relobj::do_output_section) {\n      ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_start;\n      if ((ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      pOVar5 = ppOVar2[shndx];\n    }\n    else {\n      iVar3 = (*p_Var1)(object,(ulong)shndx);\n      pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3);\n    }\n                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d])(rel_dyn,pOVar5,(ulong)r_type,this,(ulong)uVar4,addend);\n    return;\n  }" { (expression_statement "got_entry_2._8_8_ = CONCAT44(uStack_4c,symndx) & 0xffffffff7fffffff;" (assignment_expression "got_entry_2._8_8_ = CONCAT44(uStack_4c,symndx) & 0xffffffff7fffffff" (field_expression "got_entry_2._8_8_" identifier . field_identifier) = (binary_expression "CONCAT44(uStack_4c,symndx) & 0xffffffff7fffffff" (call_expression "CONCAT44(uStack_4c,symndx)" identifier (argument_list "(uStack_4c,symndx)" ( identifier , identifier ))) & 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_ = addend;" (assignment_expression "got_entry_2.addend_ = addend" (field_expression "got_entry_2.addend_" identifier . field_identifier) = identifier) ;) (expression_statement "uVar4 = add_got_entry_pair(this,(Got_entry)\n                                    (ZEXT1224(CONCAT84(CONCAT44(uStack_6c,0x7ffffffd),uStack_74)) <<\n                                    0x20),got_entry_2);" (assignment_expression "uVar4 = 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)uVar4,addend);" (call_expression "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,(ulong)symndx,(ulong)got_type,(ulong)uVar4,addend)" (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)uVar4,addend)" ( 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)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier ))) ;) (expression_statement "p_Var1 = (object->super_Object)._vptr_Object[0x18];" (assignment_expression "p_Var1 = (object->super_Object)._vptr_Object[0x18]" identifier = (subscript_expression "(object->super_Object)._vptr_Object[0x18]" (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var1 == Relobj::do_output_section) {\n      ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_start;\n      if ((ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      pOVar5 = ppOVar2[shndx];\n    }\n    else {\n      iVar3 = (*p_Var1)(object,(ulong)shndx);\n      pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3);\n    }" if (parenthesized_expression "(p_Var1 == Relobj::do_output_section)" ( (ERROR "p_Var1 == Relobj::" (binary_expression "p_Var1 == Relobj" identifier == identifier) : :) identifier )) (compound_statement "{\n      ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_start;\n      if ((ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      pOVar5 = ppOVar2[shndx];\n    }" { (expression_statement "ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_start;" (field_expression "ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl._M_start" (field_expression "ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n                _M_impl" (binary_expression "ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar2 = (object->output_sections_).\n                super__Vector_base<gold" identifier = (binary_expression "(object->output_sections_).\n                super__Vector_base<gold" (field_expression "(object->output_sections_).\n                super__Vector_base" (parenthesized_expression "(object->output_sections_)" ( (field_expression "object->output_sections_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if ((ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }" if (parenthesized_expression "((ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx)" ( (binary_expression "(ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (ulong)shndx" (call_expression "(ulong)((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3)" ( (binary_expression "(long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2 >> 3" (binary_expression "(long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish - (long)ppOVar2" (field_expression "(long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl._M_finish" (field_expression "(long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                        ._M_impl" (binary_expression "(long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(long)(object->output_sections_).\n                        super__Vector_base<gold::Output_section*,_std" (binary_expression "(long)(object->output_sections_).\n                        super__Vector_base<gold" (cast_expression "(long)(object->output_sections_).\n                        super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(object->output_sections_).\n                        super__Vector_base" (parenthesized_expression "(object->output_sections_)" ( (field_expression "object->output_sections_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)ppOVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) <= (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "pOVar5 = ppOVar2[shndx];" (assignment_expression "pOVar5 = ppOVar2[shndx]" identifier = (subscript_expression "ppOVar2[shndx]" identifier [ identifier ])) ;) }) (else_clause "else {\n      iVar3 = (*p_Var1)(object,(ulong)shndx);\n      pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3);\n    }" else (compound_statement "{\n      iVar3 = (*p_Var1)(object,(ulong)shndx);\n      pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3);\n    }" { (expression_statement "iVar3 = (*p_Var1)(object,(ulong)shndx);" (assignment_expression "iVar3 = (*p_Var1)(object,(ulong)shndx)" identifier = (call_expression "(*p_Var1)(object,(ulong)shndx)" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "(object,(ulong)shndx)" ( identifier , (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) )))) ;) (expression_statement "pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3);" (assignment_expression "pOVar5 = (Output_section *)CONCAT44(extraout_var,iVar3)" identifier = (cast_expression "(Output_section *)CONCAT44(extraout_var,iVar3)" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var,iVar3)" identifier (argument_list "(extraout_var,iVar3)" ( identifier , identifier ))))) ;) }))) comment comment (expression_statement "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d])(rel_dyn,pOVar5,(ulong)r_type,this,(ulong)uVar4,addend);" (call_expression "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d])(rel_dyn,pOVar5,(ulong)r_type,this,(ulong)uVar4,addend)" (parenthesized_expression "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d])" ( (pointer_expression "*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d]" * (subscript_expression "(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d]" (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,pOVar5,(ulong)r_type,this,(ulong)uVar4,addend)" ( identifier , identifier , (cast_expression "(ulong)r_type" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier , (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xa5d,"Got_entry");" (call_expression "do_gold_unreachable("../../gold/output.h",0xa5d,"Got_entry")" identifier (argument_list "("../../gold/output.h",0xa5d,"Got_entry")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""Got_entry"" " string_content ") ))) ;) (ERROR "}" }))
(translation_unit "void FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);\n  if (cVar1 != '\0') {\n    return;\n  }\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");\n}\n\n" (function_definition "void FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);\n  if (cVar1 != '\0') {\n    return;\n  }\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");\n}" primitive_type (function_declarator "FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)" identifier (parameter_list "(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)" ( (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 "uint param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "long *param_6" (sized_type_specifier "long" long) (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined8 param_8" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);\n  if (cVar1 != '\0') {\n    return;\n  }\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (expression_statement "cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);" (assignment_expression "cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8)" identifier = (call_expression "(**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8)" (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_5,param_8)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar1 != '\0') {\n    return;\n  }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }" if (parenthesized_expression "((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff)))" ( (binary_expression "(2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))" (parenthesized_expression "(2 < param_3 + 0x80000003)" ( (binary_expression "2 < param_3 + 0x80000003" number_literal < (binary_expression "param_3 + 0x80000003" identifier + 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    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }" { (expression_statement "uVar2 = FUN_003e24f0(param_1);" (assignment_expression "uVar2 = FUN_003e24f0(param_1)" identifier = (call_expression "FUN_003e24f0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);" (call_expression "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8)" (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_5,uVar2,param_8)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" if (parenthesized_expression "(*(code **)(*param_2 + 0xc0) == FUN_001a5070)" ( (binary_expression "*(code **)(*param_2 + 0xc0) == FUN_001a5070" (pointer_expression "*(code **)(*param_2 + 0xc0)" * (cast_expression "(code **)(*param_2 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc0)" ( (binary_expression "*param_2 + 0xc0" (pointer_expression "*param_2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }" { (if_statement "if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }" if (parenthesized_expression "((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4)" ( (binary_expression "(ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4" (call_expression "(ulong)(param_2[0xb] - param_2[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_2[0xb] - param_2[10] >> 3)" ( (binary_expression "param_2[0xb] - param_2[10] >> 3" (binary_expression "param_2[0xb] - param_2[10]" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) - (subscript_expression "param_2[10]" identifier [ number_literal ])) >> number_literal) ))) <= (cast_expression "(ulong)param_4" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }" { (expression_statement "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" identifier = (pointer_expression "*(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" * (cast_expression "(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[10] + (ulong)param_4 * 8)" ( (binary_expression "param_2[10] + (ulong)param_4 * 8" (subscript_expression "param_2[10]" identifier [ number_literal ]) + (binary_expression "(ulong)param_4 * 8" (cast_expression "(ulong)param_4" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) }) (else_clause "else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" else (compound_statement "{\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" { (expression_statement "uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4)" identifier = (call_expression "(**(code **)(*param_2 + 0xc0))(param_2,param_4)" (parenthesized_expression "(**(code **)(*param_2 + 0xc0))" ( (pointer_expression "**(code **)(*param_2 + 0xc0)" * (pointer_expression "*(code **)(*param_2 + 0xc0)" * (cast_expression "(code **)(*param_2 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xc0)" ( (binary_expression "*param_2 + 0xc0" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_4)" ( identifier , identifier )))) ;) }))) (expression_statement "(**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);" (call_expression "(**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8)" (parenthesized_expression "(**(code **)(*param_6 + 0xe8))" ( (pointer_expression "**(code **)(*param_6 + 0xe8)" * (pointer_expression "*(code **)(*param_6 + 0xe8)" * (cast_expression "(code **)(*param_6 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_6 + 0xe8)" ( (binary_expression "*param_6 + 0xe8" (pointer_expression "*param_6" * identifier) + number_literal) ))))) )) (argument_list "(param_6,uVar3,param_7,param_1,uVar2,param_8)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");" (call_expression "FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry")" identifier (argument_list "("../../gold/output.h",0xa5d,"Got_entry")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""Got_entry"" " string_content ") ))) ;) })))
(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 TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) && (parenthesized_expression ( (binary_expression IDENT == (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) )) (compound_statement { (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 , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) >> LIT) ))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) }) (else_clause else (compound_statement { (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 )))) ;) }))) (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 , IDENT , IDENT ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);\n  if (cVar1 != '\0') {\n    return;\n  }\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");\n}" (primitive_type "void") (function_declarator "FUN_003e2a50(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)" (identifier "FUN_003e2a50") (parameter_list "(undefined8 param_1,long *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 long *param_6,undefined4 param_7,undefined8 param_8)" (( "(") (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 "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "long *param_6" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined8 param_8" (type_identifier "undefined8") (identifier "param_8")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined8 uVar3;\n  \n  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);\n  if (cVar1 != '\0') {\n    return;\n  }\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (expression_statement "cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);" (assignment_expression "cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8)" (identifier "cVar1") (= "=") (call_expression "(**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8)" (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_5,param_8)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "param_8") () ")")))) (; ";")) (if_statement "if (cVar1 != '\0') {\n    return;\n  }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }" (if "if") (parenthesized_expression "((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff)))" (( "(") (binary_expression "(2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))" (parenthesized_expression "(2 < param_3 + 0x80000003)" (( "(") (binary_expression "2 < param_3 + 0x80000003" (number_literal "2") (< "<") (binary_expression "param_3 + 0x80000003" (identifier "param_3") (+ "+") (number_literal "0x80000003"))) () ")")) (&& "&&") (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    uVar2 = FUN_003e24f0(param_1);\n    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);\n    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);\n    return;\n  }" ({ "{") (expression_statement "uVar2 = FUN_003e24f0(param_1);" (assignment_expression "uVar2 = FUN_003e24f0(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_003e24f0(param_1)" (identifier "FUN_003e24f0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);" (call_expression "(**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8)" (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_5,uVar2,param_8)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "uVar2") (, ",") (identifier "param_8") () ")"))) (; ";")) (if_statement "if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }\n    else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" (if "if") (parenthesized_expression "(*(code **)(*param_2 + 0xc0) == FUN_001a5070)" (( "(") (binary_expression "*(code **)(*param_2 + 0xc0) == FUN_001a5070" (pointer_expression "*(code **)(*param_2 + 0xc0)" (* "*") (cast_expression "(code **)(*param_2 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0xc0)" (( "(") (binary_expression "*param_2 + 0xc0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0xc0")) () ")")))) (== "==") (identifier "FUN_001a5070")) () ")")) (compound_statement "{\n      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }\n      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);\n    }" ({ "{") (if_statement "if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }" (if "if") (parenthesized_expression "((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4)" (( "(") (binary_expression "(ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4" (call_expression "(ulong)(param_2[0xb] - param_2[10] >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_2[0xb] - param_2[10] >> 3)" (( "(") (binary_expression "param_2[0xb] - param_2[10] >> 3" (binary_expression "param_2[0xb] - param_2[10]" (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (- "-") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))) (>> ">>") (number_literal "3")) () ")"))) (<= "<=") (cast_expression "(ulong)param_4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_4"))) () ")")) (compound_statement "{\n                    \n        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n      }" ({ "{") (expression_statement "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section")" (identifier "FUN_00352af0") (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x5c8") (, ",") (string_literal ""do_output_section"" (" """) (string_content "do_output_section") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" (* "*") (cast_expression "(undefined8 *)(param_2[10] + (ulong)param_4 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[10] + (ulong)param_4 * 8)" (( "(") (binary_expression "param_2[10] + (ulong)param_4 * 8" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (+ "+") (binary_expression "(ulong)param_4 * 8" (cast_expression "(ulong)param_4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_4")) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" (else "else") (compound_statement "{\n      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);\n    }" ({ "{") (expression_statement "uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*param_2 + 0xc0))(param_2,param_4)" (parenthesized_expression "(**(code **)(*param_2 + 0xc0))" (( "(") (pointer_expression "**(code **)(*param_2 + 0xc0)" (* "*") (pointer_expression "*(code **)(*param_2 + 0xc0)" (* "*") (cast_expression "(code **)(*param_2 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0xc0)" (( "(") (binary_expression "*param_2 + 0xc0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0xc0")) () ")"))))) () ")")) (argument_list "(param_2,param_4)" (( "(") (identifier "param_2") (, ",") (identifier "param_4") () ")")))) (; ";")) (} "}")))) (expression_statement "(**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);" (call_expression "(**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8)" (parenthesized_expression "(**(code **)(*param_6 + 0xe8))" (( "(") (pointer_expression "**(code **)(*param_6 + 0xe8)" (* "*") (pointer_expression "*(code **)(*param_6 + 0xe8)" (* "*") (cast_expression "(code **)(*param_6 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_6 + 0xe8)" (( "(") (binary_expression "*param_6 + 0xe8" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(param_6,uVar3,param_7,param_1,uVar2,param_8)" (( "(") (identifier "param_6") (, ",") (identifier "uVar3") (, ",") (identifier "param_7") (, ",") (identifier "param_1") (, ",") (identifier "uVar2") (, ",") (identifier "param_8") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");" (call_expression "FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry")" (identifier "FUN_00352af0") (argument_list "("../../gold/output.h",0xa5d,"Got_entry")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xa5d") (, ",") (string_literal ""Got_entry"" (" """) (string_content "Got_entry") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: void add_local_pair_with_rel(Output_data_got<32,_false> * this, Relobj
   * object, uint symndx, uint shndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint
   r_type, uint64_t addend) */

void __thiscall
var_6::Output_data_got<32,_false>::add_local_pair_with_rel
          (Output_data_got<32,_false> *this,Relobj *object,type_3 var_1,type_3 shndx,type_3 got_type,
          Output_data_reloc_generic *rel_dyn,type_3 r_type,uint64_t addend)

{
  _func_int_varargs *p_Var1;
  type_1 ppOVar2;
  type_2 got_entry_2;
  int iVar3;
  type_3 uVar4;
  type_4 *pOVar5;
  type_5 uStack_74;
  type_5 uStack_6c;
  type_5 uStack_4c;
  type_5 extraout_var;
  
  iVar3 = (*(object->super_Object)._vptr_Object[0x2b])(object,(type_6)var_1,got_type,addend);
  if ((char)iVar3 != '\0') {
    return;
  }
  if ((2 < var_1 + 0x80000003) && (var_1 == (var_1 & 0x7fffffff))) {
    got_entry_2._8_8_ = var_2(uStack_4c,var_1) & 0xffffffff7fffffff;
    got_entry_2.u_.object = object;
    got_entry_2.addend_ = addend;
    uVar4 = var_3(this,(type_2)
                                    (var_4(var_5(var_2(uStack_6c,0x7ffffffd),uStack_74)) <<
                                    0x20),got_entry_2);
    (*(object->super_Object)._vptr_Object[0x2d])
              (object,(type_6)var_1,(type_6)got_type,(type_6)uVar4,addend);
    p_Var1 = (object->super_Object)._vptr_Object[0x18];
    if (p_Var1 == Relobj::do_output_section) {
      ppOVar2 = (object->output_sections_).
                super__Vector_base<var_6::type_4*,var_7::allocator<var_6::type_4*>var_8>.
                _M_impl._M_start;
      if ((type_6)((long)(object->output_sections_).
                        super__Vector_base<var_6::type_4*,var_7::allocator<var_6::type_4*>var_8>
                        ._M_impl._M_finish - (long)ppOVar2 >> 3) <= (type_6)shndx) {
                    /* WARNING: Subroutine does not return */
        var_9("../../gold/object.h",0x5c8,"do_output_section");
      }
      pOVar5 = ppOVar2[shndx];
    }
    else {
      iVar3 = (*p_Var1)(object,(type_6)shndx);
      pOVar5 = (type_4 *)var_2(extraout_var,iVar3);
    }
                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.
      _vptr_Output_data[0x1d])(rel_dyn,pOVar5,(type_6)r_type,this,(type_6)uVar4,addend);
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_9("../../gold/output.h",0xa5d,"Got_entry");
}


(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: (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: (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)))) body: (compound_statement (declaration type: (primitive_type) 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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (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) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))))) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))))) alternative: (else_clause (compound_statement (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)))))))) (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) (identifier) (identifier)))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))))

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

{
  char cVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  
  cVar1 = (**(code **)(*param_2 + 0x158))(param_2,param_3,param_5,param_8);
  if (cVar1 != '\0') {
    return;
  }
  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {
    uVar2 = FUN_003e24f0(param_1);
    (**(code **)(*param_2 + 0x168))(param_2,param_3,param_5,uVar2,param_8);
    if (*(code **)(*param_2 + 0xc0) == FUN_001a5070) {
      if ((ulong)(param_2[0xb] - param_2[10] >> 3) <= (ulong)param_4) {
                    /* WARNING: Subroutine does not return */
        FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");
      }
      uVar3 = *(undefined8 *)(param_2[10] + (ulong)param_4 * 8);
    }
    else {
      uVar3 = (**(code **)(*param_2 + 0xc0))(param_2,param_4);
    }
                    /* WARNING: Could not recover jumptable at 0x003e2ba0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_6 + 0xe8))(param_6,uVar3,param_7,param_1,uVar2,param_8);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00352af0("../../gold/output.h",0xa5d,"Got_entry");
}

