
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void add_local_pair_with_rel(Output_data_got<64,_true> * 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<64,_true>::add_local_pair_with_rel
          (Output_data_got<64,_true> *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;
  Got_entry got_entry_1;
  Got_entry got_entry_2;
  int iVar2;
  uint uVar3;
  undefined4 local_2c;
  uint local_28;
  
  iVar2 = (*(object->super_Object)._vptr_Object[0x2b])
                    (object,symndx,got_type,(undefined4)addend,addend._4_4_);
  if ((char)iVar2 != '\0') {
    return;
  }
  local_28._0_3_ = (undefined3)(symndx & 0x7fffffff);
  local_28 = CONCAT13((char)(symndx >> 0x18),(undefined3)local_28) & 0x7fffffff;
  if ((2 < symndx + 0x80000003) && (symndx == (symndx & 0x7fffffff))) {
    got_entry_1.addend_ = 0;
    got_entry_1._0_12_ = ZEXT412(0x7ffffffd) << 0x40;
    got_entry_2.u_.constant._4_4_ = local_2c;
    got_entry_2.u_.object = object;
    got_entry_2._8_4_ = local_28;
    got_entry_2.addend_._0_4_ = (undefined4)addend;
    got_entry_2.addend_._4_4_ = addend._4_4_;
    uVar3 = add_got_entry_pair(this,got_entry_1,got_entry_2);
    (*(object->super_Object)._vptr_Object[0x2d])
              (object,symndx,got_type,uVar3,(undefined4)addend,addend._4_4_);
    p_Var1 = (object->super_Object)._vptr_Object[0x18];
    if (p_Var1 == Relobj::do_output_section) {
      if ((uint)((int)(object->output_sections_).
                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                      ._M_impl._M_finish -
                 (int)(object->output_sections_).
                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                      ._M_impl._M_start >> 2) <= shndx) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");
      }
    }
    else {
      (*p_Var1)(object,shndx);
    }
                    /* WARNING: Could not recover jumptable at 0x001030f3. 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])();
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0xa5d,"Got_entry");
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,
                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 extraout_EDX;
  undefined4 local_2c;
  uint local_28;
  
  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);
  if (cVar1 != '\0') {
    return;
  }
  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);
  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;
  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {
    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);
    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);
    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {
      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {
                    /* WARNING: Subroutine does not return */
        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);
      }
    }
    else {
      (**(code **)(*param_2 + 0x60))(param_2,param_4);
    }
                    /* WARNING: Could not recover jumptable at 0x001030f3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_6 + 0x74))();
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);
}


CALL 0x00058c42
ADD EAX,0x23c0bb
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x68
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x7c]
MOV EBX,dword ptr [ESP + 0x80]
MOV ECX,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x88]
MOV EBP,dword ptr [ESP + 0x84]
MOV ESI,dword ptr [ESP + 0x98]
MOV dword ptr [ESP + 0x1c],ECX
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x90]
MOV EDI,dword ptr [ESP + 0x9c]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x94]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [EBX]
PUSH EDI
PUSH ESI
PUSH ECX
PUSH EBP
PUSH EBX
CALL dword ptr [EAX + 0xac]
ADD ESP,0x20
TEST AL,AL
JNZ 0x001030f8
MOV EAX,dword ptr [ESP + 0x44]
MOV ECX,EBP
MOV dword ptr [ESP + 0x48],ESI
AND ECX,0x7fffffff
MOV dword ptr [ESP + 0x4c],EDI
AND EAX,0x80000000
OR EAX,ECX
MOV dword ptr [ESP + 0x44],EAX
SHR EAX,0x18
AND EAX,0x7f
MOV byte ptr [ESP + 0x47],AL
LEA EAX,[EBP + 0x80000003]
CMP EAX,0x2
JBE 0x00103117
CMP EBP,ECX
JNZ 0x00103117
MOV dword ptr [ESP + 0x3c],EBX
SUB ESP,0x4
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x34],0x7ffffffd
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x3c],0x0
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESP + 0x50]
PUSH EBX
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESP + 0x50]
PUSH 0x7ffffffd
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESP + 0x30]
CALL 0x00102930
ADD ESP,0x28
MOV ECX,EAX
MOV EAX,dword ptr [EBX]
PUSH EDI
PUSH ESI
PUSH ECX
MOV dword ptr [ESP + 0x30],ECX
PUSH dword ptr [ESP + 0x24]
PUSH EBP
PUSH EBX
CALL dword ptr [EAX + 0xb4]
MOV EAX,dword ptr [EBX]
MOV EDX,dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x3c]
ADD ESP,0x20
MOV EAX,dword ptr [EAX + 0x60]
LEA EDX,[EDX + 0xffd16640]
CMP EAX,EDX
JNZ 0x00103100
MOV EAX,dword ptr [EBX + 0x38]
MOV EDX,dword ptr [EBX + 0x3c]
SUB EDX,EAX
SAR EDX,0x2
CMP dword ptr [ESP + 0x8],EDX
JNC 0x00103134
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + EDX*0x4]
MOV EBX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [EBX]
MOV dword ptr [ESP + 0x8c],EDI
MOV EDI,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x88],ESI
MOV dword ptr [ESP + 0x70],EBX
MOV dword ptr [ESP + 0x7c],EDI
MOV EDI,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x80],ECX
MOV dword ptr [ESP + 0x78],EDI
MOV dword ptr [ESP + 0x84],0x0
MOV dword ptr [ESP + 0x74],EAX
MOV EAX,dword ptr [EDX + 0x74]
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
JMP EAX
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0xc],ECX
SUB ESP,0x8
PUSH dword ptr [ESP + 0x10]
PUSH EBX
CALL EAX
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
JMP 0x001030ab
PUSH EDX
MOV EBX,dword ptr [ESP + 0x10]
LEA EAX,[EBX + 0xfff1de28]
PUSH EAX
LEA EAX,[EBX + 0xfff0c35d]
PUSH 0xa5d
PUSH EAX
CALL 0x0008b620
PUSH EAX
MOV EBX,dword ptr [ESP + 0x10]
LEA EAX,[EBX + 0xfff1e6ec]
PUSH EAX
LEA EAX,[EBX + 0xfff0c385]
PUSH 0x5c8
PUSH EAX
CALL 0x0008b620
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 extraout_EDX;\n  undefined4 local_2c;\n  uint local_28;\n  \n  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);\n  if (cVar1 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);\n  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x001030f3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);\n}\n\n" comment (function_definition "void FUN_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 extraout_EDX;\n  undefined4 local_2c;\n  uint local_28;\n  \n  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);\n  if (cVar1 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);\n  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x001030f3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);\n}" primitive_type (function_declarator "FUN_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)" identifier (parameter_list "(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (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 "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 extraout_EDX;\n  undefined4 local_2c;\n  uint local_28;\n  \n  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);\n  if (cVar1 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);\n  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x001030f3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);" (assignment_expression "cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9)" identifier = (call_expression "(**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9)" (parenthesized_expression "(**(code **)(*param_2 + 0xac))" ( (pointer_expression "**(code **)(*param_2 + 0xac)" * (pointer_expression "*(code **)(*param_2 + 0xac)" * (cast_expression "(code **)(*param_2 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xac)" ( (binary_expression "*param_2 + 0xac" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_5,param_8,param_9)" ( identifier , 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 ;) })) (expression_statement "local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);" (assignment_expression "local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff)" (field_expression "local_28._0_3_" identifier . field_identifier) = (call_expression "(undefined3)(param_3 & 0x7fffffff)" (parenthesized_expression "(undefined3)" ( identifier )) (argument_list "(param_3 & 0x7fffffff)" ( (binary_expression "param_3 & 0x7fffffff" identifier & number_literal) )))) ;) (expression_statement "local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;" (assignment_expression "local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff" identifier = (binary_expression "CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff" (call_expression "CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28)" identifier (argument_list "((char)(param_3 >> 0x18),(undefined3)local_28)" ( (cast_expression "(char)(param_3 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_3 >> 0x18)" ( (binary_expression "param_3 >> 0x18" identifier >> number_literal) ))) , (cast_expression "(undefined3)local_28" ( (type_descriptor "undefined3" type_identifier) ) identifier) ))) & number_literal)) ;) (if_statement "if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x001030f3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0x74))();\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_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    /* WARNING: Could not recover jumptable at 0x001030f3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }" { (expression_statement "uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);" (assignment_expression "uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" identifier = (call_expression "FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" identifier (argument_list "(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" ( identifier , number_literal , number_literal , number_literal , number_literal , number_literal , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);" (call_expression "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9)" (parenthesized_expression "(**(code **)(*param_2 + 0xb4))" ( (pointer_expression "**(code **)(*param_2 + 0xb4)" * (pointer_expression "*(code **)(*param_2 + 0xb4)" * (cast_expression "(code **)(*param_2 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xb4)" ( (binary_expression "*param_2 + 0xb4" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_5,uVar2,param_8,param_9)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" if (parenthesized_expression "(*(code **)(*param_2 + 0x60) == FUN_00055640)" ( (binary_expression "*(code **)(*param_2 + 0x60) == FUN_00055640" (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }" { (if_statement "if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }" if (parenthesized_expression "((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4)" ( (binary_expression "(uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4" (call_expression "(uint)(param_2[0xf] - param_2[0xe] >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2[0xf] - param_2[0xe] >> 2)" ( (binary_expression "param_2[0xf] - param_2[0xe] >> 2" (binary_expression "param_2[0xf] - param_2[0xe]" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) - (subscript_expression "param_2[0xe]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }" { comment (expression_statement "FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);" (call_expression "FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe])" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe])" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") , (subscript_expression "param_2[0xe]" identifier [ number_literal ]) ))) ;) })) }) (else_clause "else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" else (compound_statement "{\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" { (expression_statement "(**(code **)(*param_2 + 0x60))(param_2,param_4);" (call_expression "(**(code **)(*param_2 + 0x60))(param_2,param_4)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" ( (pointer_expression "**(code **)(*param_2 + 0x60)" * (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_4)" ( identifier , identifier ))) ;) }))) comment comment (expression_statement "(**(code **)(*param_6 + 0x74))();" (call_expression "(**(code **)(*param_6 + 0x74))()" (parenthesized_expression "(**(code **)(*param_6 + 0x74))" ( (pointer_expression "**(code **)(*param_6 + 0x74)" * (pointer_expression "*(code **)(*param_6 + 0x74)" * (cast_expression "(code **)(*param_6 + 0x74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_6 + 0x74)" ( (binary_expression "*param_6 + 0x74" (pointer_expression "*param_6" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);" (call_expression "FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX)" identifier (argument_list "("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""Got_entry"" " string_content ") , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: void add_local_pair_with_rel(Output_data_got<64,_true> * this, Relobj *\n   object, uint symndx, uint shndx, uint got_type, Output_data_reloc_generic * rel_dyn, uint r_type,\n   uint64_t addend) */\n\nvoid __thiscall\ngold::Output_data_got<64,_true>::add_local_pair_with_rel\n          (Output_data_got<64,_true> *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  Got_entry got_entry_1;\n  Got_entry got_entry_2;\n  int iVar2;\n  uint uVar3;\n  undefined4 local_2c;\n  uint local_28;\n  \n  iVar2 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,(undefined4)addend,addend._4_4_);\n  if ((char)iVar2 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(symndx & 0x7fffffff);\n  local_28 = CONCAT13((char)(symndx >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < symndx + 0x80000003) && (symndx == (symndx & 0x7fffffff))) {\n    got_entry_1.addend_ = 0;\n    got_entry_1._0_12_ = ZEXT412(0x7ffffffd) << 0x40;\n    got_entry_2.u_.constant._4_4_ = local_2c;\n    got_entry_2.u_.object = object;\n    got_entry_2._8_4_ = local_28;\n    got_entry_2.addend_._0_4_ = (undefined4)addend;\n    got_entry_2.addend_._4_4_ = addend._4_4_;\n    uVar3 = add_got_entry_pair(this,got_entry_1,got_entry_2);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,(undefined4)addend,addend._4_4_);\n    p_Var1 = (object->super_Object)._vptr_Object[0x18];\n    if (p_Var1 == Relobj::do_output_section) {\n      if ((uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n    }\n    else {\n      (*p_Var1)(object,shndx);\n    }\n                    /* WARNING: Could not recover jumptable at 0x001030f3. 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])();\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xa5d,"Got_entry");\n}\n\n" comment comment (declaration "void __thiscall\ngold::Output_data_got<64,_true>::add_local_pair_with_rel\n          (Output_data_got<64,_true> *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 "<64" < number_literal) , (ERROR "_true>::add_local_pair_with_rel\n          (Output_data_got<64,_true> *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<64,_true> *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<64,_true> *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 "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relobj *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint symndx" type_identifier identifier) , (parameter_declaration "uint 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 "Got_entry got_entry_1;" type_identifier identifier ;) (declaration "Got_entry got_entry_2;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "iVar2 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,(undefined4)addend,addend._4_4_);" (assignment_expression "iVar2 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,(undefined4)addend,addend._4_4_)" identifier = (call_expression "(*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,(undefined4)addend,addend._4_4_)" (parenthesized_expression "(*(object->super_Object)._vptr_Object[0x2b])" ( (pointer_expression "*(object->super_Object)._vptr_Object[0x2b]" * (subscript_expression "(object->super_Object)._vptr_Object[0x2b]" (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(object,symndx,got_type,(undefined4)addend,addend._4_4_)" ( identifier , identifier , identifier , (cast_expression "(undefined4)addend" ( (type_descriptor "undefined4" type_identifier) ) identifier) , (field_expression "addend._4_4_" identifier . field_identifier) )))) ;) (if_statement "if ((char)iVar2 != '\0') {\n    return;\n  }" if (parenthesized_expression "((char)iVar2 != '\0')" ( (binary_expression "(char)iVar2 != '\0'" (cast_expression "(char)iVar2" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "local_28._0_3_ = (undefined3)(symndx & 0x7fffffff);" (assignment_expression "local_28._0_3_ = (undefined3)(symndx & 0x7fffffff)" (field_expression "local_28._0_3_" identifier . field_identifier) = (call_expression "(undefined3)(symndx & 0x7fffffff)" (parenthesized_expression "(undefined3)" ( identifier )) (argument_list "(symndx & 0x7fffffff)" ( (binary_expression "symndx & 0x7fffffff" identifier & number_literal) )))) ;) (expression_statement "local_28 = CONCAT13((char)(symndx >> 0x18),(undefined3)local_28) & 0x7fffffff;" (assignment_expression "local_28 = CONCAT13((char)(symndx >> 0x18),(undefined3)local_28) & 0x7fffffff" identifier = (binary_expression "CONCAT13((char)(symndx >> 0x18),(undefined3)local_28) & 0x7fffffff" (call_expression "CONCAT13((char)(symndx >> 0x18),(undefined3)local_28)" identifier (argument_list "((char)(symndx >> 0x18),(undefined3)local_28)" ( (cast_expression "(char)(symndx >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(symndx >> 0x18)" ( (binary_expression "symndx >> 0x18" identifier >> number_literal) ))) , (cast_expression "(undefined3)local_28" ( (type_descriptor "undefined3" type_identifier) ) identifier) ))) & number_literal)) ;) (if_statement "if ((2 < symndx + 0x80000003) && (symndx == (symndx & 0x7fffffff))) {\n    got_entry_1.addend_ = 0;\n    got_entry_1._0_12_ = ZEXT412(0x7ffffffd) << 0x40;\n    got_entry_2.u_.constant._4_4_ = local_2c;\n    got_entry_2.u_.object = object;\n    got_entry_2._8_4_ = local_28;\n    got_entry_2.addend_._0_4_ = (undefined4)addend;\n    got_entry_2.addend_._4_4_ = addend._4_4_;\n    uVar3 = add_got_entry_pair(this,got_entry_1,got_entry_2);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,(undefined4)addend,addend._4_4_);\n    p_Var1 = (object->super_Object)._vptr_Object[0x18];\n    if (p_Var1 == Relobj::do_output_section) {\n      if ((uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n    }\n    else {\n      (*p_Var1)(object,shndx);\n    }\n                    /* WARNING: Could not recover jumptable at 0x001030f3. 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])();\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_1.addend_ = 0;\n    got_entry_1._0_12_ = ZEXT412(0x7ffffffd) << 0x40;\n    got_entry_2.u_.constant._4_4_ = local_2c;\n    got_entry_2.u_.object = object;\n    got_entry_2._8_4_ = local_28;\n    got_entry_2.addend_._0_4_ = (undefined4)addend;\n    got_entry_2.addend_._4_4_ = addend._4_4_;\n    uVar3 = add_got_entry_pair(this,got_entry_1,got_entry_2);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,(undefined4)addend,addend._4_4_);\n    p_Var1 = (object->super_Object)._vptr_Object[0x18];\n    if (p_Var1 == Relobj::do_output_section) {\n      if ((uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n    }\n    else {\n      (*p_Var1)(object,shndx);\n    }\n                    /* WARNING: Could not recover jumptable at 0x001030f3. 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])();\n    return;\n  }" { (expression_statement "got_entry_1.addend_ = 0;" (assignment_expression "got_entry_1.addend_ = 0" (field_expression "got_entry_1.addend_" identifier . field_identifier) = number_literal) ;) (expression_statement "got_entry_1._0_12_ = ZEXT412(0x7ffffffd) << 0x40;" (assignment_expression "got_entry_1._0_12_ = ZEXT412(0x7ffffffd) << 0x40" (field_expression "got_entry_1._0_12_" identifier . field_identifier) = (binary_expression "ZEXT412(0x7ffffffd) << 0x40" (call_expression "ZEXT412(0x7ffffffd)" identifier (argument_list "(0x7ffffffd)" ( number_literal ))) << number_literal)) ;) (expression_statement "got_entry_2.u_.constant._4_4_ = local_2c;" (assignment_expression "got_entry_2.u_.constant._4_4_ = local_2c" (field_expression "got_entry_2.u_.constant._4_4_" (field_expression "got_entry_2.u_.constant" (field_expression "got_entry_2.u_" identifier . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (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._8_4_ = local_28;" (assignment_expression "got_entry_2._8_4_ = local_28" (field_expression "got_entry_2._8_4_" identifier . field_identifier) = identifier) ;) (expression_statement "got_entry_2.addend_._0_4_ = (undefined4)addend;" (assignment_expression "got_entry_2.addend_._0_4_ = (undefined4)addend" (field_expression "got_entry_2.addend_._0_4_" (field_expression "got_entry_2.addend_" identifier . field_identifier) . field_identifier) = (cast_expression "(undefined4)addend" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "got_entry_2.addend_._4_4_ = addend._4_4_;" (assignment_expression "got_entry_2.addend_._4_4_ = addend._4_4_" (field_expression "got_entry_2.addend_._4_4_" (field_expression "got_entry_2.addend_" identifier . field_identifier) . field_identifier) = (field_expression "addend._4_4_" identifier . field_identifier)) ;) (expression_statement "uVar3 = add_got_entry_pair(this,got_entry_1,got_entry_2);" (assignment_expression "uVar3 = add_got_entry_pair(this,got_entry_1,got_entry_2)" identifier = (call_expression "add_got_entry_pair(this,got_entry_1,got_entry_2)" identifier (argument_list "(this,got_entry_1,got_entry_2)" ( identifier , identifier , identifier )))) ;) (expression_statement "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,(undefined4)addend,addend._4_4_);" (call_expression "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar3,(undefined4)addend,addend._4_4_)" (parenthesized_expression "(*(object->super_Object)._vptr_Object[0x2d])" ( (pointer_expression "*(object->super_Object)._vptr_Object[0x2d]" * (subscript_expression "(object->super_Object)._vptr_Object[0x2d]" (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(object,symndx,got_type,uVar3,(undefined4)addend,addend._4_4_)" ( identifier , identifier , identifier , identifier , (cast_expression "(undefined4)addend" ( (type_descriptor "undefined4" type_identifier) ) identifier) , (field_expression "addend._4_4_" identifier . field_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      if ((uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n    }\n    else {\n      (*p_Var1)(object,shndx);\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      if ((uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }\n    }" { (if_statement "if ((uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2) <= shndx) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n      }" if (parenthesized_expression "((uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2) <= shndx)" ( (binary_expression "(uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2) <= shndx" (call_expression "(uint)((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2)" ( (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start >> 2" (field_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_start" (field_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base<gold" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish -\n                 (int)(object->output_sections_).\n                      super__Vector_base" (field_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish" (field_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold::Output_section*,_std" (binary_expression "(int)(object->output_sections_).\n                      super__Vector_base<gold" (cast_expression "(int)(object->output_sections_).\n                      super__Vector_base" ( (type_descriptor "int" primitive_type) ) (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 "(int)(object->output_sections_).\n                      super__Vector_base" ( (type_descriptor "int" primitive_type) ) (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) >> number_literal) ))) <= 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 ") ))) ;) })) }) (else_clause "else {\n      (*p_Var1)(object,shndx);\n    }" else (compound_statement "{\n      (*p_Var1)(object,shndx);\n    }" { (expression_statement "(*p_Var1)(object,shndx);" (call_expression "(*p_Var1)(object,shndx)" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "(object,shndx)" ( 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])();" (call_expression "(*(rel_dyn->super_Output_section_data_build).super_Output_section_data.super_Output_data.\n      _vptr_Output_data[0x1d])()" (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 "()" ( ))) ;) (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_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 extraout_EDX;\n  undefined4 local_2c;\n  uint local_28;\n  \n  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);\n  if (cVar1 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);\n  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);\n}\n\n" (function_definition "void FUN_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 extraout_EDX;\n  undefined4 local_2c;\n  uint local_28;\n  \n  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);\n  if (cVar1 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);\n  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);\n}" primitive_type (function_declarator "FUN_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)" identifier (parameter_list "(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (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 "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 extraout_EDX;\n  undefined4 local_2c;\n  uint local_28;\n  \n  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);\n  if (cVar1 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);\n  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);" (assignment_expression "cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9)" identifier = (call_expression "(**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9)" (parenthesized_expression "(**(code **)(*param_2 + 0xac))" ( (pointer_expression "**(code **)(*param_2 + 0xac)" * (pointer_expression "*(code **)(*param_2 + 0xac)" * (cast_expression "(code **)(*param_2 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xac)" ( (binary_expression "*param_2 + 0xac" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_5,param_8,param_9)" ( identifier , 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 ;) })) (expression_statement "local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);" (assignment_expression "local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff)" (field_expression "local_28._0_3_" identifier . field_identifier) = (call_expression "(undefined3)(param_3 & 0x7fffffff)" (parenthesized_expression "(undefined3)" ( identifier )) (argument_list "(param_3 & 0x7fffffff)" ( (binary_expression "param_3 & 0x7fffffff" identifier & number_literal) )))) ;) (expression_statement "local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;" (assignment_expression "local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff" identifier = (binary_expression "CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff" (call_expression "CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28)" identifier (argument_list "((char)(param_3 >> 0x18),(undefined3)local_28)" ( (cast_expression "(char)(param_3 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_3 >> 0x18)" ( (binary_expression "param_3 >> 0x18" identifier >> number_literal) ))) , (cast_expression "(undefined3)local_28" ( (type_descriptor "undefined3" type_identifier) ) identifier) ))) & number_literal)) ;) (if_statement "if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\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_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }" { (expression_statement "uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);" (assignment_expression "uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" identifier = (call_expression "FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" identifier (argument_list "(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" ( identifier , number_literal , number_literal , number_literal , number_literal , number_literal , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);" (call_expression "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9)" (parenthesized_expression "(**(code **)(*param_2 + 0xb4))" ( (pointer_expression "**(code **)(*param_2 + 0xb4)" * (pointer_expression "*(code **)(*param_2 + 0xb4)" * (cast_expression "(code **)(*param_2 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0xb4)" ( (binary_expression "*param_2 + 0xb4" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_5,uVar2,param_8,param_9)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" if (parenthesized_expression "(*(code **)(*param_2 + 0x60) == FUN_00055640)" ( (binary_expression "*(code **)(*param_2 + 0x60) == FUN_00055640" (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }" { (if_statement "if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }" if (parenthesized_expression "((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4)" ( (binary_expression "(uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4" (call_expression "(uint)(param_2[0xf] - param_2[0xe] >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2[0xf] - param_2[0xe] >> 2)" ( (binary_expression "param_2[0xf] - param_2[0xe] >> 2" (binary_expression "param_2[0xf] - param_2[0xe]" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) - (subscript_expression "param_2[0xe]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }" { (expression_statement "FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);" (call_expression "FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe])" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe])" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") , (subscript_expression "param_2[0xe]" identifier [ number_literal ]) ))) ;) })) }) (else_clause "else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" else (compound_statement "{\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" { (expression_statement "(**(code **)(*param_2 + 0x60))(param_2,param_4);" (call_expression "(**(code **)(*param_2 + 0x60))(param_2,param_4)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" ( (pointer_expression "**(code **)(*param_2 + 0x60)" * (pointer_expression "*(code **)(*param_2 + 0x60)" * (cast_expression "(code **)(*param_2 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x60)" ( (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "(param_2,param_4)" ( identifier , identifier ))) ;) }))) (expression_statement "(**(code **)(*param_6 + 0x74))();" (call_expression "(**(code **)(*param_6 + 0x74))()" (parenthesized_expression "(**(code **)(*param_6 + 0x74))" ( (pointer_expression "**(code **)(*param_6 + 0x74)" * (pointer_expression "*(code **)(*param_6 + 0x74)" * (cast_expression "(code **)(*param_6 + 0x74)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_6 + 0x74)" ( (binary_expression "*param_6 + 0x74" (pointer_expression "*param_6" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);" (call_expression "FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX)" identifier (argument_list "("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX)" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""Got_entry"" " string_content ") , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) & LIT)) ;) (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 , LIT , LIT , LIT , LIT , LIT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , 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) ))) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) })) }) (else_clause else (compound_statement { (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 ))) ;) }))) (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 ( ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })))
(function_definition "void FUN_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 extraout_EDX;\n  undefined4 local_2c;\n  uint local_28;\n  \n  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);\n  if (cVar1 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);\n  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);\n}" (primitive_type "void") (function_declarator "FUN_00102f40(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)" (identifier "FUN_00102f40") (parameter_list "(undefined4 param_1,int *param_2,uint param_3,uint param_4,undefined4 param_5,\n                 int *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "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 "int *param_6" (primitive_type "int") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 extraout_EDX;\n  undefined4 local_2c;\n  uint local_28;\n  \n  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);\n  if (cVar1 != '\0') {\n    return;\n  }\n  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);\n  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;\n  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }\n                    \n  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 extraout_EDX;" (type_identifier "undefined4") (identifier "extraout_EDX") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (expression_statement "cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);" (assignment_expression "cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9)" (identifier "cVar1") (= "=") (call_expression "(**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9)" (parenthesized_expression "(**(code **)(*param_2 + 0xac))" (( "(") (pointer_expression "**(code **)(*param_2 + 0xac)" (* "*") (pointer_expression "*(code **)(*param_2 + 0xac)" (* "*") (cast_expression "(code **)(*param_2 + 0xac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0xac)" (( "(") (binary_expression "*param_2 + 0xac" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0xac")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_5,param_8,param_9)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "param_8") (, ",") (identifier "param_9") () ")")))) (; ";")) (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") (; ";")) (} "}"))) (expression_statement "local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);" (assignment_expression "local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff)" (field_expression "local_28._0_3_" (identifier "local_28") (. ".") (field_identifier "_0_3_")) (= "=") (call_expression "(undefined3)(param_3 & 0x7fffffff)" (parenthesized_expression "(undefined3)" (( "(") (identifier "undefined3") () ")")) (argument_list "(param_3 & 0x7fffffff)" (( "(") (binary_expression "param_3 & 0x7fffffff" (identifier "param_3") (& "&") (number_literal "0x7fffffff")) () ")")))) (; ";")) (expression_statement "local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;" (assignment_expression "local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff" (identifier "local_28") (= "=") (binary_expression "CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff" (call_expression "CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28)" (identifier "CONCAT13") (argument_list "((char)(param_3 >> 0x18),(undefined3)local_28)" (( "(") (cast_expression "(char)(param_3 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(param_3 >> 0x18)" (( "(") (binary_expression "param_3 >> 0x18" (identifier "param_3") (>> ">>") (number_literal "0x18")) () ")"))) (, ",") (cast_expression "(undefined3)local_28" (( "(") (type_descriptor "undefined3" (type_identifier "undefined3")) () ")") (identifier "local_28")) () ")"))) (& "&") (number_literal "0x7fffffff"))) (; ";")) (if_statement "if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {\n    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\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_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);\n    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);\n    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }\n                    \n                    \n    (**(code **)(*param_6 + 0x74))();\n    return;\n  }" ({ "{") (expression_statement "uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);" (assignment_expression "uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" (identifier "uVar2") (= "=") (call_expression "FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" (identifier "FUN_00102930") (argument_list "(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0x7ffffffd") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "param_2") (, ",") (identifier "local_2c") (, ",") (identifier "local_28") (, ",") (identifier "param_8") (, ",") (identifier "param_9") () ")")))) (; ";")) (expression_statement "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);" (call_expression "(**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9)" (parenthesized_expression "(**(code **)(*param_2 + 0xb4))" (( "(") (pointer_expression "**(code **)(*param_2 + 0xb4)" (* "*") (pointer_expression "*(code **)(*param_2 + 0xb4)" (* "*") (cast_expression "(code **)(*param_2 + 0xb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0xb4)" (( "(") (binary_expression "*param_2 + 0xb4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0xb4")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_5,uVar2,param_8,param_9)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "uVar2") (, ",") (identifier "param_8") (, ",") (identifier "param_9") () ")"))) (; ";")) (if_statement "if (*(code **)(*param_2 + 0x60) == FUN_00055640) {\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }\n    else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" (if "if") (parenthesized_expression "(*(code **)(*param_2 + 0x60) == FUN_00055640)" (( "(") (binary_expression "*(code **)(*param_2 + 0x60) == FUN_00055640" (pointer_expression "*(code **)(*param_2 + 0x60)" (* "*") (cast_expression "(code **)(*param_2 + 0x60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x60)" (( "(") (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x60")) () ")")))) (== "==") (identifier "FUN_00055640")) () ")")) (compound_statement "{\n      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }\n    }" ({ "{") (if_statement "if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }" (if "if") (parenthesized_expression "((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4)" (( "(") (binary_expression "(uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4" (call_expression "(uint)(param_2[0xf] - param_2[0xe] >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2[0xf] - param_2[0xe] >> 2)" (( "(") (binary_expression "param_2[0xf] - param_2[0xe] >> 2" (binary_expression "param_2[0xf] - param_2[0xe]" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (- "-") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]"))) (>> ">>") (number_literal "2")) () ")"))) (<= "<=") (identifier "param_4")) () ")")) (compound_statement "{\n                    \n        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);\n      }" ({ "{") (expression_statement "FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);" (call_expression "FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe])" (identifier "FUN_0008b620") (argument_list "("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe])" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x5c8") (, ",") (string_literal ""do_output_section"" (" """) (string_content "do_output_section") (" """)) (, ",") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]")) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" (else "else") (compound_statement "{\n      (**(code **)(*param_2 + 0x60))(param_2,param_4);\n    }" ({ "{") (expression_statement "(**(code **)(*param_2 + 0x60))(param_2,param_4);" (call_expression "(**(code **)(*param_2 + 0x60))(param_2,param_4)" (parenthesized_expression "(**(code **)(*param_2 + 0x60))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x60)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x60)" (* "*") (cast_expression "(code **)(*param_2 + 0x60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x60)" (( "(") (binary_expression "*param_2 + 0x60" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x60")) () ")"))))) () ")")) (argument_list "(param_2,param_4)" (( "(") (identifier "param_2") (, ",") (identifier "param_4") () ")"))) (; ";")) (} "}")))) (expression_statement "(**(code **)(*param_6 + 0x74))();" (call_expression "(**(code **)(*param_6 + 0x74))()" (parenthesized_expression "(**(code **)(*param_6 + 0x74))" (( "(") (pointer_expression "**(code **)(*param_6 + 0x74)" (* "*") (pointer_expression "*(code **)(*param_6 + 0x74)" (* "*") (cast_expression "(code **)(*param_6 + 0x74)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_6 + 0x74)" (( "(") (binary_expression "*param_6 + 0x74" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (+ "+") (number_literal "0x74")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);" (call_expression "FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX)" (identifier "FUN_0008b620") (argument_list "("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX)" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xa5d") (, ",") (string_literal ""Got_entry"" (" """) (string_content "Got_entry") (" """)) (, ",") (identifier "extraout_EDX") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void add_local_pair_with_rel(Output_data_got<64,_true> * 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_5::Output_data_got<64,_true>::add_local_pair_with_rel
          (Output_data_got<64,_true> *this,Relobj *object,type_2 var_1,type_2 var_8,type_2 got_type,
          Output_data_reloc_generic *rel_dyn,type_2 r_type,uint64_t addend)

{
  _func_int_varargs *p_Var1;
  type_1 got_entry_1;
  type_1 got_entry_2;
  int iVar2;
  type_2 uVar3;
  type_3 local_2c;
  type_2 local_28;
  
  iVar2 = (*(object->super_Object)._vptr_Object[0x2b])
                    (object,var_1,got_type,(type_3)addend,addend._4_4_);
  if ((char)iVar2 != '\0') {
    return;
  }
  local_28._0_3_ = (type_4)(var_1 & 0x7fffffff);
  local_28 = var_2((char)(var_1 >> 0x18),(type_4)local_28) & 0x7fffffff;
  if ((2 < var_1 + 0x80000003) && (var_1 == (var_1 & 0x7fffffff))) {
    got_entry_1.addend_ = 0;
    got_entry_1._0_12_ = var_3(0x7ffffffd) << 0x40;
    got_entry_2.u_.constant._4_4_ = local_2c;
    got_entry_2.u_.object = object;
    got_entry_2._8_4_ = local_28;
    got_entry_2.addend_._0_4_ = (type_3)addend;
    got_entry_2.addend_._4_4_ = addend._4_4_;
    uVar3 = var_4(this,got_entry_1,got_entry_2);
    (*(object->super_Object)._vptr_Object[0x2d])
              (object,var_1,got_type,uVar3,(type_3)addend,addend._4_4_);
    p_Var1 = (object->super_Object)._vptr_Object[0x18];
    if (p_Var1 == Relobj::do_output_section) {
      if ((type_2)((int)(object->output_sections_).
                      super__Vector_base<var_5::Output_section*,var_6::allocator<var_5::Output_section*>var_7>
                      ._M_impl._M_finish -
                 (int)(object->output_sections_).
                      super__Vector_base<var_5::Output_section*,var_6::allocator<var_5::Output_section*>var_7>
                      ._M_impl._M_start >> 2) <= var_8) {
                    /* WARNING: Subroutine does not return */
        var_9("../../gold/object.h",0x5c8,"do_output_section");
      }
    }
    else {
      (*p_Var1)(object,var_8);
    }
                    /* WARNING: Could not recover jumptable at 0x001030f3. 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])();
    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: (primitive_type) 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: (primitive_type) 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)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (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) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (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) (number_literal) (number_literal) (number_literal) (number_literal) (number_literal) (identifier) (identifier) (identifier) (identifier) (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (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: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)))))))) alternative: (else_clause (compound_statement (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))))))) (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))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier)))))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  char cVar1;
  undefined4 uVar2;
  undefined4 extraout_EDX;
  undefined4 local_2c;
  uint local_28;
  
  cVar1 = (**(code **)(*param_2 + 0xac))(param_2,param_3,param_5,param_8,param_9);
  if (cVar1 != '\0') {
    return;
  }
  local_28._0_3_ = (undefined3)(param_3 & 0x7fffffff);
  local_28 = CONCAT13((char)(param_3 >> 0x18),(undefined3)local_28) & 0x7fffffff;
  if ((2 < param_3 + 0x80000003) && (param_3 == (param_3 & 0x7fffffff))) {
    uVar2 = FUN_00102930(param_1,0,0,0x7ffffffd,0,0,param_2,local_2c,local_28,param_8,param_9);
    (**(code **)(*param_2 + 0xb4))(param_2,param_3,param_5,uVar2,param_8,param_9);
    if (*(code **)(*param_2 + 0x60) == FUN_00055640) {
      if ((uint)(param_2[0xf] - param_2[0xe] >> 2) <= param_4) {
                    /* WARNING: Subroutine does not return */
        FUN_0008b620("../../gold/object.h",0x5c8,"do_output_section",param_2[0xe]);
      }
    }
    else {
      (**(code **)(*param_2 + 0x60))(param_2,param_4);
    }
                    /* WARNING: Could not recover jumptable at 0x001030f3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_6 + 0x74))();
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0008b620("../../gold/output.h",0xa5d,"Got_entry",extraout_EDX);
}

