
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Mips_address output_address(Mips16_stub_section<64,_false> * this,
   Mips16_stub_section<64,_false> * this) */

Mips_address __thiscall
anon_unknown.dwarf_ead2ad::Mips16_stub_section<64,_false>::output_address
          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)

{
  _func_int_varargs *p_Var1;
  pointer ppOVar2;
  uint64_t uVar3;
  pointer puVar4;
  int iVar5;
  Output_section *pOVar6;
  undefined4 extraout_var_00;
  Mips_symbol<64> *sym;
  Mips_relobj<64,_false> *pMVar7;
  undefined4 extraout_var;
  
  pMVar7 = this->object_;
  sym = (Mips_symbol<64> *)(ulong)*(uint *)&this_1->object_;
  p_Var1 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.
           super_Object._vptr_Object[0x18];
  if (p_Var1 == gold::Relobj::do_output_section) {
    ppOVar2 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.
              super_Relobj.output_sections_.
              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
              _M_impl._M_start;
    if ((Mips_symbol<64> *)
        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.
               super_Relobj.output_sections_.
               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
               _M_impl._M_finish - (long)ppOVar2 >> 3) <= sym) {
                    /* WARNING: Subroutine does not return */
      gold::do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");
    }
    pOVar6 = ppOVar2[(long)sym];
  }
  else {
    iVar5 = (*p_Var1)();
    pOVar6 = (Output_section *)CONCAT44(extraout_var,iVar5);
  }
  if (((pOVar6->super_Output_data).field_0x20 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    Mips_output_data_plt<64,_false>::mips_entry_address
              ((Mips_output_data_plt<64,_false> *)pMVar7,sym);
  }
  pMVar7 = this->object_;
  uVar3 = (pOVar6->super_Output_data).address_;
  p_Var1 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.
           super_Object._vptr_Object[0x1a];
  if (p_Var1 != gold::Sized_relobj<64,_false>::do_output_section_offset) {
    iVar5 = (*p_Var1)();
    return uVar3 + CONCAT44(extraout_var_00,iVar5);
  }
  puVar4 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.
           section_offsets_.
           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.
           _M_start;
  if ((ulong)*(uint *)&this_1->object_ <
      (ulong)((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.
                    section_offsets_.
                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.
                    _M_impl._M_finish - (long)puVar4 >> 3)) {
    return uVar3 + puVar4[*(uint *)&this_1->object_];
  }
                    /* WARNING: Subroutine does not return */
  gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");
}



long FUN_00298290(long *param_1,uint *param_2)

{
  long *plVar1;
  long lVar2;
  long lVar3;
  
  plVar1 = (long *)*param_1;
  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {
    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");
    }
    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);
  }
  else {
    lVar2 = (**(code **)(*plVar1 + 0xc0))();
  }
  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00291e90();
  }
  param_1 = (long *)*param_1;
  lVar2 = *(long *)(lVar2 + 8);
  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {
    lVar3 = (**(code **)(*param_1 + 0xd0))();
    return lVar3 + lVar2;
  }
  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {
    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");
}


PUSH R12
MOV R12,RDI
LEA RDX,[0x1a5070]
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RDI,qword ptr [RDI]
MOV ESI,dword ptr [RSI]
MOV RAX,qword ptr [RDI]
MOV RAX,qword ptr [RAX + 0xc0]
CMP RAX,RDX
JNZ 0x00298320
MOV RDX,qword ptr [RDI + 0x50]
MOV RAX,qword ptr [RDI + 0x58]
SUB RAX,RDX
SAR RAX,0x3
CMP RSI,RAX
JNC 0x0029834f
MOV RAX,qword ptr [RDX + RSI*0x8]
TEST byte ptr [RAX + 0x20],0x1
JZ 0x00298332
MOV RDI,qword ptr [R12]
MOV RBX,qword ptr [RAX + 0x8]
LEA RDX,[0x228370]
MOV ESI,dword ptr [RBP]
MOV RAX,qword ptr [RDI]
MOV RAX,qword ptr [RAX + 0xd0]
CMP RAX,RDX
JNZ 0x00298328
MOV RAX,qword ptr [RDI + 0xe0]
MOV RDX,qword ptr [RDI + 0xe8]
SUB RDX,RAX
SAR RDX,0x3
CMP RSI,RDX
JNC 0x00298337
MOV RAX,qword ptr [RAX + RSI*0x8]
ADD RAX,RBX
POP RBX
POP RBP
POP R12
RET
CALL RAX
JMP 0x002982d1
CALL RAX
ADD RAX,RBX
POP RBX
POP RBP
POP R12
RET
CALL 0x00291e90
LEA RDX,[0x560c90]
MOV ESI,0x7f7
LEA RDI,[0x5333ac]
CALL 0x00352af0
LEA RDX,[0x561110]
MOV ESI,0x5c8
LEA RDI,[0x5333ac]
CALL 0x00352af0
(translation_unit "long FUN_00298290(long *param_1,uint *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  \n  plVar1 = (long *)*param_1;\n  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }\n  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00291e90();\n  }\n  param_1 = (long *)*param_1;\n  lVar2 = *(long *)(lVar2 + 8);\n  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }\n  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n}\n\n" (function_definition "long FUN_00298290(long *param_1,uint *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  \n  plVar1 = (long *)*param_1;\n  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }\n  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00291e90();\n  }\n  param_1 = (long *)*param_1;\n  lVar2 = *(long *)(lVar2 + 8);\n  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }\n  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00298290(long *param_1,uint *param_2)" identifier (parameter_list "(long *param_1,uint *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  \n  plVar1 = (long *)*param_1;\n  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }\n  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00291e90();\n  }\n  param_1 = (long *)*param_1;\n  lVar2 = *(long *)(lVar2 + 8);\n  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }\n  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar1 = (long *)*param_1;" (assignment_expression "plVar1 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" if (parenthesized_expression "(*(code **)(*plVar1 + 0xc0) == FUN_001a5070)" ( (binary_expression "*(code **)(*plVar1 + 0xc0) == FUN_001a5070" (pointer_expression "*(code **)(*plVar1 + 0xc0)" * (cast_expression "(code **)(*plVar1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xc0)" ( (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }" { (if_statement "if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }" if (parenthesized_expression "((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2)" ( (binary_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2" (call_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(plVar1[0xb] - plVar1[10] >> 3)" ( (binary_expression "plVar1[0xb] - plVar1[10] >> 3" (binary_expression "plVar1[0xb] - plVar1[10]" (subscript_expression "plVar1[0xb]" identifier [ number_literal ]) - (subscript_expression "plVar1[10]" identifier [ number_literal ])) >> number_literal) ))) <= (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }" { comment (expression_statement "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);" (assignment_expression "lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8)" identifier = (pointer_expression "*(long *)(plVar1[10] + (ulong)*param_2 * 8)" * (cast_expression "(long *)(plVar1[10] + (ulong)*param_2 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar1[10] + (ulong)*param_2 * 8)" ( (binary_expression "plVar1[10] + (ulong)*param_2 * 8" (subscript_expression "plVar1[10]" identifier [ number_literal ]) + (binary_expression "(ulong)*param_2 * 8" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) ))))) ;) }) (else_clause "else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" else (compound_statement "{\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" { (expression_statement "lVar2 = (**(code **)(*plVar1 + 0xc0))();" (assignment_expression "lVar2 = (**(code **)(*plVar1 + 0xc0))()" identifier = (call_expression "(**(code **)(*plVar1 + 0xc0))()" (parenthesized_expression "(**(code **)(*plVar1 + 0xc0))" ( (pointer_expression "**(code **)(*plVar1 + 0xc0)" * (pointer_expression "*(code **)(*plVar1 + 0xc0)" * (cast_expression "(code **)(*plVar1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xc0)" ( (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }))) (if_statement "if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00291e90();\n  }" if (parenthesized_expression "((*(byte *)(lVar2 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar2 + 0x20) & 1" (pointer_expression "*(byte *)(lVar2 + 0x20)" * (cast_expression "(byte *)(lVar2 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00291e90();\n  }" { comment (expression_statement "FUN_00291e90();" (call_expression "FUN_00291e90()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "lVar2 = *(long *)(lVar2 + 8);" (assignment_expression "lVar2 = *(long *)(lVar2 + 8)" identifier = (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0xd0) != FUN_00228370)" ( (binary_expression "*(code **)(*param_1 + 0xd0) != FUN_00228370" (pointer_expression "*(code **)(*param_1 + 0xd0)" * (cast_expression "(code **)(*param_1 + 0xd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xd0)" ( (binary_expression "*param_1 + 0xd0" (pointer_expression "*param_1" * identifier) + number_literal) )))) != identifier) )) (compound_statement "{\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }" { (expression_statement "lVar3 = (**(code **)(*param_1 + 0xd0))();" (assignment_expression "lVar3 = (**(code **)(*param_1 + 0xd0))()" identifier = (call_expression "(**(code **)(*param_1 + 0xd0))()" (parenthesized_expression "(**(code **)(*param_1 + 0xd0))" ( (pointer_expression "**(code **)(*param_1 + 0xd0)" * (pointer_expression "*(code **)(*param_1 + 0xd0)" * (cast_expression "(code **)(*param_1 + 0xd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xd0)" ( (binary_expression "*param_1 + 0xd0" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return lVar3 + lVar2;" return (binary_expression "lVar3 + lVar2" identifier + identifier) ;) })) (if_statement "if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }" if (parenthesized_expression "((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3))" ( (binary_expression "(ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" ( identifier )) * identifier) < (call_expression "(ulong)(param_1[0x1d] - param_1[0x1c] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[0x1d] - param_1[0x1c] >> 3)" ( (binary_expression "param_1[0x1d] - param_1[0x1c] >> 3" (binary_expression "param_1[0x1d] - param_1[0x1c]" (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) - (subscript_expression "param_1[0x1c]" identifier [ number_literal ])) >> number_literal) )))) )) (compound_statement "{\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }" { (return_statement "return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;" return (binary_expression "*(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2" (pointer_expression "*(long *)(param_1[0x1c] + (ulong)*param_2 * 8)" * (cast_expression "(long *)(param_1[0x1c] + (ulong)*param_2 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x1c] + (ulong)*param_2 * 8)" ( (binary_expression "param_1[0x1c] + (ulong)*param_2 * 8" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) + (binary_expression "(ulong)*param_2 * 8" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) + identifier) ;) })) comment (expression_statement "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Mips_address output_address(Mips16_stub_section<64,_false> * this,\n   Mips16_stub_section<64,_false> * this) */\n\nMips_address __thiscall\nanon_unknown.dwarf_ead2ad::Mips16_stub_section<64,_false>::output_address\n          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)\n\n{\n  _func_int_varargs *p_Var1;\n  pointer ppOVar2;\n  uint64_t uVar3;\n  pointer puVar4;\n  int iVar5;\n  Output_section *pOVar6;\n  undefined4 extraout_var_00;\n  Mips_symbol<64> *sym;\n  Mips_relobj<64,_false> *pMVar7;\n  undefined4 extraout_var;\n  \n  pMVar7 = this->object_;\n  sym = (Mips_symbol<64> *)(ulong)*(uint *)&this_1->object_;\n  p_Var1 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x18];\n  if (p_Var1 == gold::Relobj::do_output_section) {\n    ppOVar2 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n              super_Relobj.output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_start;\n    if ((Mips_symbol<64> *)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3) <= sym) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    pOVar6 = ppOVar2[(long)sym];\n  }\n  else {\n    iVar5 = (*p_Var1)();\n    pOVar6 = (Output_section *)CONCAT44(extraout_var,iVar5);\n  }\n  if (((pOVar6->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    Mips_output_data_plt<64,_false>::mips_entry_address\n              ((Mips_output_data_plt<64,_false> *)pMVar7,sym);\n  }\n  pMVar7 = this->object_;\n  uVar3 = (pOVar6->super_Output_data).address_;\n  p_Var1 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x1a];\n  if (p_Var1 != gold::Sized_relobj<64,_false>::do_output_section_offset) {\n    iVar5 = (*p_Var1)();\n    return uVar3 + CONCAT44(extraout_var_00,iVar5);\n  }\n  puVar4 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.\n           _M_start;\n  if ((ulong)*(uint *)&this_1->object_ <\n      (ulong)((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3)) {\n    return uVar3 + puVar4[*(uint *)&this_1->object_];\n  }\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n}\n\n" comment comment comment (declaration "Mips_address __thiscall\nanon_unknown.dwarf_ead2ad::Mips16_stub_section<64,_false>::output_address\n          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)\n\n{\n  _func_int_varargs *p_Var1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_ead2ad::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::output_address\n          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)\n\n{\n  _func_int_varargs" identifier > : : (function_declarator "output_address\n          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)" identifier (parameter_list "(Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)" ( (parameter_declaration "Mips16_stub_section" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Mips16_stub_section" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this_1" type_identifier (ERROR ">" >) (pointer_declarator "*this_1" * identifier)) ))) { identifier) (pointer_declarator "*p_Var1" * identifier) ;) (declaration "pointer ppOVar2;" type_identifier identifier ;) (declaration "uint64_t uVar3;" primitive_type identifier ;) (declaration "pointer puVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "Output_section *pOVar6;" type_identifier (pointer_declarator "*pOVar6" * identifier) ;) (declaration "undefined4 extraout_var_00;" type_identifier identifier ;) (expression_statement "Mips_symbol<64> *sym;" (update_expression "Mips_symbol<64> *sym" (binary_expression "Mips_symbol<64> *sym" (binary_expression "Mips_symbol<64" identifier < number_literal) > (pointer_expression "*sym" * identifier)) --) ;) (expression_statement "Mips_relobj<64,_false> *pMVar7;" (update_expression "Mips_relobj<64,_false> *pMVar7" (binary_expression "Mips_relobj<64,_false> *pMVar7" (binary_expression "Mips_relobj<64" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*pMVar7" * identifier)) --) ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (expression_statement "pMVar7 = this->object_;" (assignment_expression "pMVar7 = this->object_" identifier = (field_expression "this->object_" identifier -> field_identifier)) ;) (expression_statement "sym = (Mips_symbol<64> *)(ulong)*(uint *)&this_1->object_;" (assignment_expression "sym = (Mips_symbol<64> *)(ulong)*(uint *)&this_1->object_" identifier = (binary_expression "(Mips_symbol<64> *)(ulong)*(uint *)&this_1->object_" (call_expression "(Mips_symbol<64> *)(ulong)" (parenthesized_expression "(Mips_symbol<64> *)" ( (binary_expression "Mips_symbol<64> *" (binary_expression "Mips_symbol<64" identifier < number_literal) > (pointer_expression "*" * identifier)) )) (argument_list "(ulong)" ( identifier ))) * (cast_expression "(uint *)&this_1->object_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_1->object_" & (field_expression "this_1->object_" identifier -> field_identifier))))) ;) (expression_statement "p_Var1 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x18];" (assignment_expression "p_Var1 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x18]" identifier = (parenthesized_expression "(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x18]" ( (comma_expression "pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x18]" (binary_expression "pMVar7->super_Sized_relobj_file<64" (field_expression "pMVar7->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , (comma_expression "_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x18]" (binary_expression "_false>).super_Sized_relobj<64" (field_expression "_false>).super_Sized_relobj" identifier (ERROR ">)" > )) . field_identifier) < number_literal) , (subscript_expression "_false>.super_Relobj.\n           super_Object._vptr_Object[0x18]" (field_expression "_false>.super_Relobj.\n           super_Object._vptr_Object" (field_expression "_false>.super_Relobj.\n           super_Object" (field_expression "_false>.super_Relobj" identifier (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]))) ))) ;) (if_statement "if (p_Var1 == gold::Relobj::do_output_section) {\n    ppOVar2 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n              super_Relobj.output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_start;\n    if ((Mips_symbol<64> *)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3) <= sym) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    pOVar6 = ppOVar2[(long)sym];\n  }\n  else {\n    iVar5 = (*p_Var1)();\n    pOVar6 = (Output_section *)CONCAT44(extraout_var,iVar5);\n  }" if (parenthesized_expression "(p_Var1 == gold::Relobj::do_output_section)" ( (ERROR "p_Var1 == gold::Relobj::" (binary_expression "p_Var1 == gold" identifier == identifier) : : identifier : :) identifier )) (compound_statement "{\n    ppOVar2 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n              super_Relobj.output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_start;\n    if ((Mips_symbol<64> *)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3) <= sym) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    pOVar6 = ppOVar2[(long)sym];\n  }" { (ERROR "ppOVar2 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n              super_Relobj.output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>." (comma_expression "ppOVar2 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n              super_Relobj.output_sections_.\n              super__Vector_base<gold" (assignment_expression "ppOVar2 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64" identifier = (binary_expression "(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64" (field_expression "(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj" (parenthesized_expression "(pMVar7->super_Sized_relobj_file<64,_false>)" ( (comma_expression "pMVar7->super_Sized_relobj_file<64,_false" (binary_expression "pMVar7->super_Sized_relobj_file<64" (field_expression "pMVar7->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) < number_literal)) , (binary_expression "_false>.\n              super_Relobj.output_sections_.\n              super__Vector_base<gold" (field_expression "_false>.\n              super_Relobj.output_sections_.\n              super__Vector_base" (field_expression "_false>.\n              super_Relobj.output_sections_" (field_expression "_false>.\n              super_Relobj" identifier (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) < identifier)) : : identifier * , identifier : : identifier < identifier : : identifier * > identifier > .) (expression_statement "_M_impl._M_start;" (field_expression "_M_impl._M_start" identifier . field_identifier) ;) (if_statement "if ((Mips_symbol<64> *)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3) <= sym) {\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }" if (parenthesized_expression "((Mips_symbol<64> *)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3) <= sym)" ( (parenthesized_expression "(Mips_symbol<64> *)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3) <= sym)" ( (binary_expression "Mips_symbol<64> *)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3) <= sym" (binary_expression "Mips_symbol<64> *)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3)" (binary_expression "Mips_symbol<64" identifier < number_literal) > (pointer_expression "*)\n        ((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3)" * (ERROR ")" )) (parenthesized_expression "((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n               _M_impl._M_finish - (long)ppOVar2 >> 3)" ( (ERROR "(long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>." (comma_expression "(long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold" (binary_expression "(long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64" (cast_expression "(long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj" (parenthesized_expression "(pMVar7->super_Sized_relobj_file<64,_false>)" ( (comma_expression "pMVar7->super_Sized_relobj_file<64,_false" (binary_expression "pMVar7->super_Sized_relobj_file<64" (field_expression "pMVar7->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier)) < number_literal) , (binary_expression "_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base<gold" (field_expression "_false>.\n               super_Relobj.output_sections_.\n               super__Vector_base" (field_expression "_false>.\n               super_Relobj.output_sections_" (field_expression "_false>.\n               super_Relobj" identifier (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) < identifier)) : : identifier * , identifier : : identifier < identifier : : identifier * > identifier > .) (binary_expression "_M_impl._M_finish - (long)ppOVar2 >> 3" (binary_expression "_M_impl._M_finish - (long)ppOVar2" (field_expression "_M_impl._M_finish" identifier . field_identifier) - (cast_expression "(long)ppOVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) <= identifier) )) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;)) })) (expression_statement "pOVar6 = ppOVar2[(long)sym];" (assignment_expression "pOVar6 = ppOVar2[(long)sym]" identifier = (subscript_expression "ppOVar2[(long)sym]" identifier [ (cast_expression "(long)sym" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ])) ;) }) (else_clause "else {\n    iVar5 = (*p_Var1)();\n    pOVar6 = (Output_section *)CONCAT44(extraout_var,iVar5);\n  }" else (compound_statement "{\n    iVar5 = (*p_Var1)();\n    pOVar6 = (Output_section *)CONCAT44(extraout_var,iVar5);\n  }" { (expression_statement "iVar5 = (*p_Var1)();" (assignment_expression "iVar5 = (*p_Var1)()" identifier = (call_expression "(*p_Var1)()" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pOVar6 = (Output_section *)CONCAT44(extraout_var,iVar5);" (assignment_expression "pOVar6 = (Output_section *)CONCAT44(extraout_var,iVar5)" identifier = (cast_expression "(Output_section *)CONCAT44(extraout_var,iVar5)" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var,iVar5)" identifier (argument_list "(extraout_var,iVar5)" ( identifier , identifier ))))) ;) }))) (if_statement "if (((pOVar6->super_Output_data).field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    Mips_output_data_plt<64,_false>::mips_entry_address\n              ((Mips_output_data_plt<64,_false> *)pMVar7,sym);\n  }" if (parenthesized_expression "(((pOVar6->super_Output_data).field_0x20 & 1) == 0)" ( (binary_expression "((pOVar6->super_Output_data).field_0x20 & 1) == 0" (parenthesized_expression "((pOVar6->super_Output_data).field_0x20 & 1)" ( (binary_expression "(pOVar6->super_Output_data).field_0x20 & 1" (field_expression "(pOVar6->super_Output_data).field_0x20" (parenthesized_expression "(pOVar6->super_Output_data)" ( (field_expression "pOVar6->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    Mips_output_data_plt<64,_false>::mips_entry_address\n              ((Mips_output_data_plt<64,_false> *)pMVar7,sym);\n  }" { comment (expression_statement "Mips_output_data_plt<64,_false>::mips_entry_address\n              ((Mips_output_data_plt<64,_false> *)pMVar7,sym);" (comma_expression "Mips_output_data_plt<64,_false>::mips_entry_address\n              ((Mips_output_data_plt<64,_false> *)pMVar7,sym)" (binary_expression "Mips_output_data_plt<64" identifier < number_literal) , (binary_expression "_false>::mips_entry_address\n              ((Mips_output_data_plt<64,_false> *)pMVar7,sym)" identifier > (ERROR "::" : :) (call_expression "mips_entry_address\n              ((Mips_output_data_plt<64,_false> *)pMVar7,sym)" identifier (argument_list "((Mips_output_data_plt<64,_false> *)pMVar7,sym)" ( (parenthesized_expression "(Mips_output_data_plt<64,_false> *)pMVar7,sym)" ( (comma_expression "Mips_output_data_plt<64,_false> *)pMVar7,sym" (binary_expression "Mips_output_data_plt<64" identifier < number_literal) , (comma_expression "_false> *)pMVar7,sym" (binary_expression "_false> *)pMVar7" identifier > (pointer_expression "*)pMVar7" * (ERROR ")" )) identifier)) , identifier)) )) ))))) ;) })) (expression_statement "pMVar7 = this->object_;" (assignment_expression "pMVar7 = this->object_" identifier = (field_expression "this->object_" identifier -> field_identifier)) ;) (expression_statement "uVar3 = (pOVar6->super_Output_data).address_;" (assignment_expression "uVar3 = (pOVar6->super_Output_data).address_" identifier = (field_expression "(pOVar6->super_Output_data).address_" (parenthesized_expression "(pOVar6->super_Output_data)" ( (field_expression "pOVar6->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var1 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x1a];" (assignment_expression "p_Var1 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x1a]" identifier = (parenthesized_expression "(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x1a]" ( (comma_expression "pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x1a]" (binary_expression "pMVar7->super_Sized_relobj_file<64" (field_expression "pMVar7->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , (comma_expression "_false>).super_Sized_relobj<64,_false>.super_Relobj.\n           super_Object._vptr_Object[0x1a]" (binary_expression "_false>).super_Sized_relobj<64" (field_expression "_false>).super_Sized_relobj" identifier (ERROR ">)" > )) . field_identifier) < number_literal) , (subscript_expression "_false>.super_Relobj.\n           super_Object._vptr_Object[0x1a]" (field_expression "_false>.super_Relobj.\n           super_Object._vptr_Object" (field_expression "_false>.super_Relobj.\n           super_Object" (field_expression "_false>.super_Relobj" identifier (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]))) ))) ;) (if_statement "if (p_Var1 != gold::Sized_relobj<64,_false>::do_output_section_offset) {\n    iVar5 = (*p_Var1)();\n    return uVar3 + CONCAT44(extraout_var_00,iVar5);\n  }" if (parenthesized_expression "(p_Var1 != gold::Sized_relobj<64,_false>::do_output_section_offset)" ( (comma_expression "p_Var1 != gold::Sized_relobj<64,_false>::do_output_section_offset" (binary_expression "p_Var1 != gold::Sized_relobj<64" (binary_expression "p_Var1 != gold" identifier != identifier) (ERROR "::Sized_relobj" : : identifier) < number_literal) , (binary_expression "_false>::do_output_section_offset" identifier > (ERROR "::" : :) identifier)) )) (compound_statement "{\n    iVar5 = (*p_Var1)();\n    return uVar3 + CONCAT44(extraout_var_00,iVar5);\n  }" { (expression_statement "iVar5 = (*p_Var1)();" (assignment_expression "iVar5 = (*p_Var1)()" identifier = (call_expression "(*p_Var1)()" (parenthesized_expression "(*p_Var1)" ( (pointer_expression "*p_Var1" * identifier) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3 + CONCAT44(extraout_var_00,iVar5);" return (binary_expression "uVar3 + CONCAT44(extraout_var_00,iVar5)" identifier + (call_expression "CONCAT44(extraout_var_00,iVar5)" identifier (argument_list "(extraout_var_00,iVar5)" ( identifier , identifier )))) ;) })) (expression_statement "puVar4 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.\n           _M_start;" (assignment_expression "puVar4 = (pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.\n           _M_start" identifier = (parenthesized_expression "(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.\n           _M_start" ( (ERROR "pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::" (comma_expression "pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int,_std" (binary_expression "pMVar7->super_Sized_relobj_file<64" (field_expression "pMVar7->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , (comma_expression "_false>).super_Sized_relobj<64,_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int,_std" (binary_expression "_false>).super_Sized_relobj<64" (field_expression "_false>).super_Sized_relobj" identifier (ERROR ">)" > )) . field_identifier) < number_literal) , (comma_expression "_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int,_std" (binary_expression "_false>.\n           section_offsets_.\n           super__Vector_base<long_unsigned_int" (field_expression "_false>.\n           section_offsets_.\n           super__Vector_base" (field_expression "_false>.\n           section_offsets_" identifier (ERROR ">" >) . field_identifier) . field_identifier) < identifier) , identifier))) : :) (field_expression "allocator<long_unsigned_int>_>._M_impl.\n           _M_start" (field_expression "allocator<long_unsigned_int>_>._M_impl" (binary_expression "allocator<long_unsigned_int>_" (binary_expression "allocator<long_unsigned_int" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ))) ;) (if_statement "if ((ulong)*(uint *)&this_1->object_ <\n      (ulong)((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3)) {\n    return uVar3 + puVar4[*(uint *)&this_1->object_];\n  }" if (parenthesized_expression "((ulong)*(uint *)&this_1->object_ <\n      (ulong)((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3))" ( (binary_expression "(ulong)*(uint *)&this_1->object_ <\n      (ulong)((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3)" (binary_expression "(ulong)*(uint *)&this_1->object_" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)&this_1->object_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_1->object_" & (field_expression "this_1->object_" identifier -> field_identifier)))) < (call_expression "(ulong)((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64,_false>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3)" ( (binary_expression "(long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj<64" (cast_expression "(long)(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(pMVar7->super_Sized_relobj_file<64,_false>).super_Sized_relobj" (parenthesized_expression "(pMVar7->super_Sized_relobj_file<64,_false>)" ( (comma_expression "pMVar7->super_Sized_relobj_file<64,_false" (binary_expression "pMVar7->super_Sized_relobj_file<64" (field_expression "pMVar7->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier)) < number_literal) , (binary_expression "_false>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int" (field_expression "_false>.\n                    section_offsets_.\n                    super__Vector_base" (field_expression "_false>.\n                    section_offsets_" identifier (ERROR ">" >) . field_identifier) . field_identifier) < identifier) , (ERROR "_std::" identifier : :) (binary_expression "allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3" (binary_expression "allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4" (field_expression "allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish" (field_expression "allocator<long_unsigned_int>_>.\n                    _M_impl" (binary_expression "allocator<long_unsigned_int>_" (binary_expression "allocator<long_unsigned_int" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    return uVar3 + puVar4[*(uint *)&this_1->object_];\n  }" { (return_statement "return uVar3 + puVar4[*(uint *)&this_1->object_];" return (binary_expression "uVar3 + puVar4[*(uint *)&this_1->object_]" identifier + (subscript_expression "puVar4[*(uint *)&this_1->object_]" identifier [ (pointer_expression "*(uint *)&this_1->object_" * (cast_expression "(uint *)&this_1->object_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this_1->object_" & (field_expression "this_1->object_" identifier -> field_identifier)))) ])) ;) })) comment (labeled_statement "gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;)) (ERROR "}" }))
(translation_unit "long FUN_00298290(long *param_1,uint *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  \n  plVar1 = (long *)*param_1;\n  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }\n  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    \n    FUN_00291e90();\n  }\n  param_1 = (long *)*param_1;\n  lVar2 = *(long *)(lVar2 + 8);\n  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }\n  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }\n                    \n  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n}\n\n" (function_definition "long FUN_00298290(long *param_1,uint *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  \n  plVar1 = (long *)*param_1;\n  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }\n  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    \n    FUN_00291e90();\n  }\n  param_1 = (long *)*param_1;\n  lVar2 = *(long *)(lVar2 + 8);\n  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }\n  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }\n                    \n  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00298290(long *param_1,uint *param_2)" identifier (parameter_list "(long *param_1,uint *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  \n  plVar1 = (long *)*param_1;\n  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }\n  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    \n    FUN_00291e90();\n  }\n  param_1 = (long *)*param_1;\n  lVar2 = *(long *)(lVar2 + 8);\n  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }\n  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }\n                    \n  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar1 = (long *)*param_1;" (assignment_expression "plVar1 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" if (parenthesized_expression "(*(code **)(*plVar1 + 0xc0) == FUN_001a5070)" ( (binary_expression "*(code **)(*plVar1 + 0xc0) == FUN_001a5070" (pointer_expression "*(code **)(*plVar1 + 0xc0)" * (cast_expression "(code **)(*plVar1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xc0)" ( (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }" { (if_statement "if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }" if (parenthesized_expression "((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2)" ( (binary_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2" (call_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(plVar1[0xb] - plVar1[10] >> 3)" ( (binary_expression "plVar1[0xb] - plVar1[10] >> 3" (binary_expression "plVar1[0xb] - plVar1[10]" (subscript_expression "plVar1[0xb]" identifier [ number_literal ]) - (subscript_expression "plVar1[10]" identifier [ number_literal ])) >> number_literal) ))) <= (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) )) (compound_statement "{\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }" { (expression_statement "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);" (assignment_expression "lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8)" identifier = (pointer_expression "*(long *)(plVar1[10] + (ulong)*param_2 * 8)" * (cast_expression "(long *)(plVar1[10] + (ulong)*param_2 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar1[10] + (ulong)*param_2 * 8)" ( (binary_expression "plVar1[10] + (ulong)*param_2 * 8" (subscript_expression "plVar1[10]" identifier [ number_literal ]) + (binary_expression "(ulong)*param_2 * 8" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) ))))) ;) }) (else_clause "else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" else (compound_statement "{\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" { (expression_statement "lVar2 = (**(code **)(*plVar1 + 0xc0))();" (assignment_expression "lVar2 = (**(code **)(*plVar1 + 0xc0))()" identifier = (call_expression "(**(code **)(*plVar1 + 0xc0))()" (parenthesized_expression "(**(code **)(*plVar1 + 0xc0))" ( (pointer_expression "**(code **)(*plVar1 + 0xc0)" * (pointer_expression "*(code **)(*plVar1 + 0xc0)" * (cast_expression "(code **)(*plVar1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0xc0)" ( (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }))) (if_statement "if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    \n    FUN_00291e90();\n  }" if (parenthesized_expression "((*(byte *)(lVar2 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar2 + 0x20) & 1" (pointer_expression "*(byte *)(lVar2 + 0x20)" * (cast_expression "(byte *)(lVar2 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_00291e90();\n  }" { (expression_statement "FUN_00291e90();" (call_expression "FUN_00291e90()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "lVar2 = *(long *)(lVar2 + 8);" (assignment_expression "lVar2 = *(long *)(lVar2 + 8)" identifier = (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0xd0) != FUN_00228370)" ( (binary_expression "*(code **)(*param_1 + 0xd0) != FUN_00228370" (pointer_expression "*(code **)(*param_1 + 0xd0)" * (cast_expression "(code **)(*param_1 + 0xd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xd0)" ( (binary_expression "*param_1 + 0xd0" (pointer_expression "*param_1" * identifier) + number_literal) )))) != identifier) )) (compound_statement "{\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }" { (expression_statement "lVar3 = (**(code **)(*param_1 + 0xd0))();" (assignment_expression "lVar3 = (**(code **)(*param_1 + 0xd0))()" identifier = (call_expression "(**(code **)(*param_1 + 0xd0))()" (parenthesized_expression "(**(code **)(*param_1 + 0xd0))" ( (pointer_expression "**(code **)(*param_1 + 0xd0)" * (pointer_expression "*(code **)(*param_1 + 0xd0)" * (cast_expression "(code **)(*param_1 + 0xd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xd0)" ( (binary_expression "*param_1 + 0xd0" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return lVar3 + lVar2;" return (binary_expression "lVar3 + lVar2" identifier + identifier) ;) })) (if_statement "if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }" if (parenthesized_expression "((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3))" ( (binary_expression "(ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" ( identifier )) * identifier) < (call_expression "(ulong)(param_1[0x1d] - param_1[0x1c] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[0x1d] - param_1[0x1c] >> 3)" ( (binary_expression "param_1[0x1d] - param_1[0x1c] >> 3" (binary_expression "param_1[0x1d] - param_1[0x1c]" (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) - (subscript_expression "param_1[0x1c]" identifier [ number_literal ])) >> number_literal) )))) )) (compound_statement "{\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }" { (return_statement "return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;" return (binary_expression "*(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2" (pointer_expression "*(long *)(param_1[0x1c] + (ulong)*param_2 * 8)" * (cast_expression "(long *)(param_1[0x1c] + (ulong)*param_2 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x1c] + (ulong)*param_2 * 8)" ( (binary_expression "param_1[0x1c] + (ulong)*param_2 * 8" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) + (binary_expression "(ulong)*param_2 * 8" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" ( identifier )) * identifier) * number_literal)) )))) + identifier) ;) })) (expression_statement "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * 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) ))) <= (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 { (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 ( )))) ;) (return_statement return (binary_expression IDENT + IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) >> LIT) )))) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) + IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "long FUN_00298290(long *param_1,uint *param_2)\n\n{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  \n  plVar1 = (long *)*param_1;\n  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }\n  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    \n    FUN_00291e90();\n  }\n  param_1 = (long *)*param_1;\n  lVar2 = *(long *)(lVar2 + 8);\n  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }\n  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }\n                    \n  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_00298290(long *param_1,uint *param_2)" (identifier "FUN_00298290") (parameter_list "(long *param_1,uint *param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  long *plVar1;\n  long lVar2;\n  long lVar3;\n  \n  plVar1 = (long *)*param_1;\n  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }\n  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    \n    FUN_00291e90();\n  }\n  param_1 = (long *)*param_1;\n  lVar2 = *(long *)(lVar2 + 8);\n  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }\n  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }\n                    \n  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (expression_statement "plVar1 = (long *)*param_1;" (assignment_expression "plVar1 = (long *)*param_1" (identifier "plVar1") (= "=") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }\n  else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar1 + 0xc0) == FUN_001a5070)" (( "(") (binary_expression "*(code **)(*plVar1 + 0xc0) == FUN_001a5070" (pointer_expression "*(code **)(*plVar1 + 0xc0)" (* "*") (cast_expression "(code **)(*plVar1 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0xc0)" (( "(") (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0xc0")) () ")")))) (== "==") (identifier "FUN_001a5070")) () ")")) (compound_statement "{\n    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);\n  }" ({ "{") (if_statement "if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }" (if "if") (parenthesized_expression "((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2)" (( "(") (binary_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2" (call_expression "(ulong)(plVar1[0xb] - plVar1[10] >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(plVar1[0xb] - plVar1[10] >> 3)" (( "(") (binary_expression "plVar1[0xb] - plVar1[10] >> 3" (binary_expression "plVar1[0xb] - plVar1[10]" (subscript_expression "plVar1[0xb]" (identifier "plVar1") ([ "[") (number_literal "0xb") (] "]")) (- "-") (subscript_expression "plVar1[10]" (identifier "plVar1") ([ "[") (number_literal "10") (] "]"))) (>> ">>") (number_literal "3")) () ")"))) (<= "<=") (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n                    \n      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");\n    }" ({ "{") (expression_statement "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section")" (identifier "FUN_00352af0") (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x5c8") (, ",") (string_literal ""do_output_section"" (" """) (string_content "do_output_section") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);" (assignment_expression "lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(plVar1[10] + (ulong)*param_2 * 8)" (* "*") (cast_expression "(long *)(plVar1[10] + (ulong)*param_2 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar1[10] + (ulong)*param_2 * 8)" (( "(") (binary_expression "plVar1[10] + (ulong)*param_2 * 8" (subscript_expression "plVar1[10]" (identifier "plVar1") ([ "[") (number_literal "10") (] "]")) (+ "+") (binary_expression "(ulong)*param_2 * 8" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_2")) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" (else "else") (compound_statement "{\n    lVar2 = (**(code **)(*plVar1 + 0xc0))();\n  }" ({ "{") (expression_statement "lVar2 = (**(code **)(*plVar1 + 0xc0))();" (assignment_expression "lVar2 = (**(code **)(*plVar1 + 0xc0))()" (identifier "lVar2") (= "=") (call_expression "(**(code **)(*plVar1 + 0xc0))()" (parenthesized_expression "(**(code **)(*plVar1 + 0xc0))" (( "(") (pointer_expression "**(code **)(*plVar1 + 0xc0)" (* "*") (pointer_expression "*(code **)(*plVar1 + 0xc0)" (* "*") (cast_expression "(code **)(*plVar1 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0xc0)" (( "(") (binary_expression "*plVar1 + 0xc0" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0xc0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (if_statement "if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {\n                    \n    FUN_00291e90();\n  }" (if "if") (parenthesized_expression "((*(byte *)(lVar2 + 0x20) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(lVar2 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(lVar2 + 0x20) & 1" (pointer_expression "*(byte *)(lVar2 + 0x20)" (* "*") (cast_expression "(byte *)(lVar2 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x20)" (( "(") (binary_expression "lVar2 + 0x20" (identifier "lVar2") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00291e90();\n  }" ({ "{") (expression_statement "FUN_00291e90();" (call_expression "FUN_00291e90()" (identifier "FUN_00291e90") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" (identifier "param_1") (= "=") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "lVar2 = *(long *)(lVar2 + 8);" (assignment_expression "lVar2 = *(long *)(lVar2 + 8)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0xd0) != FUN_00228370)" (( "(") (binary_expression "*(code **)(*param_1 + 0xd0) != FUN_00228370" (pointer_expression "*(code **)(*param_1 + 0xd0)" (* "*") (cast_expression "(code **)(*param_1 + 0xd0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xd0)" (( "(") (binary_expression "*param_1 + 0xd0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xd0")) () ")")))) (!= "!=") (identifier "FUN_00228370")) () ")")) (compound_statement "{\n    lVar3 = (**(code **)(*param_1 + 0xd0))();\n    return lVar3 + lVar2;\n  }" ({ "{") (expression_statement "lVar3 = (**(code **)(*param_1 + 0xd0))();" (assignment_expression "lVar3 = (**(code **)(*param_1 + 0xd0))()" (identifier "lVar3") (= "=") (call_expression "(**(code **)(*param_1 + 0xd0))()" (parenthesized_expression "(**(code **)(*param_1 + 0xd0))" (( "(") (pointer_expression "**(code **)(*param_1 + 0xd0)" (* "*") (pointer_expression "*(code **)(*param_1 + 0xd0)" (* "*") (cast_expression "(code **)(*param_1 + 0xd0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xd0)" (( "(") (binary_expression "*param_1 + 0xd0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xd0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return lVar3 + lVar2;" (return "return") (binary_expression "lVar3 + lVar2" (identifier "lVar3") (+ "+") (identifier "lVar2")) (; ";")) (} "}"))) (if_statement "if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }" (if "if") (parenthesized_expression "((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3))" (( "(") (binary_expression "(ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_2")) (< "<") (call_expression "(ulong)(param_1[0x1d] - param_1[0x1c] >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1[0x1d] - param_1[0x1c] >> 3)" (( "(") (binary_expression "param_1[0x1d] - param_1[0x1c] >> 3" (binary_expression "param_1[0x1d] - param_1[0x1c]" (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")) (- "-") (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]"))) (>> ">>") (number_literal "3")) () ")")))) () ")")) (compound_statement "{\n    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;\n  }" ({ "{") (return_statement "return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;" (return "return") (binary_expression "*(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2" (pointer_expression "*(long *)(param_1[0x1c] + (ulong)*param_2 * 8)" (* "*") (cast_expression "(long *)(param_1[0x1c] + (ulong)*param_2 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[0x1c] + (ulong)*param_2 * 8)" (( "(") (binary_expression "param_1[0x1c] + (ulong)*param_2 * 8" (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]")) (+ "+") (binary_expression "(ulong)*param_2 * 8" (binary_expression "(ulong)*param_2" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_2")) (* "*") (number_literal "8"))) () ")")))) (+ "+") (identifier "lVar2")) (; ";")) (} "}"))) (expression_statement "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset")" (identifier "FUN_00352af0") (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x7f7") (, ",") (string_literal ""get_output_section_offset"" (" """) (string_content "get_output_section_offset") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Mips_address output_address(Mips16_stub_section<64,_false> * this,
   Mips16_stub_section<64,_false> * this) */

type_1 __thiscall
anon_unknown.dwarf_ead2ad::Mips16_stub_section<64,var_7>::output_address
          (Mips16_stub_section<64,var_7> *this,Mips16_stub_section<64,var_7> *this_1)

{
  _func_int_varargs *var_9;
  type_2 ppOVar2;
  uint64_t var_12;
  type_2 puVar4;
  int iVar5;
  type_3 *pOVar6;
  type_4 extraout_var_00;
  var_1<64> *var_3;
  var_2<64,var_7> *pMVar7;
  type_4 extraout_var;
  
  pMVar7 = this->object_;
  var_3 = (var_1<64> *)(ulong)*(type_5 *)&this_1->object_;
  var_9 = (pMVar7->super_Sized_relobj_file<64,var_7>).super_Sized_relobj<64,var_7>.super_Relobj.
           super_Object._vptr_Object[0x18];
  if (var_9 == var_10::Relobj::do_output_section) {
    ppOVar2 = (pMVar7->super_Sized_relobj_file<64,var_7>).super_Sized_relobj<64,var_7>.
              super_Relobj.output_sections_.
              super__Vector_base<var_10::type_3*,_std::var_13<var_10::type_3*>var_15>.
              _M_impl._M_start;
    if ((var_1<64> *)
        ((long)(pMVar7->super_Sized_relobj_file<64,var_7>).super_Sized_relobj<64,var_7>.
               super_Relobj.output_sections_.
               super__Vector_base<var_10::type_3*,_std::var_13<var_10::type_3*>var_15>.
               _M_impl._M_finish - (long)ppOVar2 >> 3) <= var_3) {
                    /* WARNING: Subroutine does not return */
      gold::var_4("../../gold/object.h",0x5c8,"do_output_section");
    }
    pOVar6 = ppOVar2[(long)var_3];
  }
  else {
    iVar5 = (*var_9)();
    pOVar6 = (type_3 *)var_5(extraout_var,iVar5);
  }
  if (((pOVar6->super_Output_data).field_0x20 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    var_6<64,var_7>::var_8
              ((var_6<64,var_7> *)pMVar7,var_3);
  }
  pMVar7 = this->object_;
  var_12 = (pOVar6->super_Output_data).address_;
  var_9 = (pMVar7->super_Sized_relobj_file<64,var_7>).super_Sized_relobj<64,var_7>.super_Relobj.
           super_Object._vptr_Object[0x1a];
  if (var_9 != var_10::Sized_relobj<64,var_7>::var_11) {
    iVar5 = (*var_9)();
    return var_12 + var_5(extraout_var_00,iVar5);
  }
  puVar4 = (pMVar7->super_Sized_relobj_file<64,var_7>).super_Sized_relobj<64,var_7>.
           section_offsets_.
           super__Vector_base<var_14,_std::var_13<var_14>var_15>._M_impl.
           _M_start;
  if ((ulong)*(type_5 *)&this_1->object_ <
      (ulong)((long)(pMVar7->super_Sized_relobj_file<64,var_7>).super_Sized_relobj<64,var_7>.
                    section_offsets_.
                    super__Vector_base<var_14,_std::var_13<var_14>var_15>.
                    _M_impl._M_finish - (long)puVar4 >> 3)) {
    return var_12 + puVar4[*(type_5 *)&this_1->object_];
  }
                    /* WARNING: Subroutine does not return */
  gold::var_4("../../gold/object.h",0x7f7,"get_output_section_offset");
}


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

long MASKED(long *param_1,uint *param_2)

{
  long *plVar1;
  long lVar2;
  long lVar3;
  
  plVar1 = (long *)*param_1;
  if (*(code **)(*plVar1 + 0xc0) == FUN_001a5070) {
    if ((ulong)(plVar1[0xb] - plVar1[10] >> 3) <= (ulong)*param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/object.h",0x5c8,"do_output_section");
    }
    lVar2 = *(long *)(plVar1[10] + (ulong)*param_2 * 8);
  }
  else {
    lVar2 = (**(code **)(*plVar1 + 0xc0))();
  }
  if ((*(byte *)(lVar2 + 0x20) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00291e90();
  }
  param_1 = (long *)*param_1;
  lVar2 = *(long *)(lVar2 + 8);
  if (*(code **)(*param_1 + 0xd0) != FUN_00228370) {
    lVar3 = (**(code **)(*param_1 + 0xd0))();
    return lVar3 + lVar2;
  }
  if ((ulong)*param_2 < (ulong)(param_1[0x1d] - param_1[0x1c] >> 3)) {
    return *(long *)(param_1[0x1c] + (ulong)*param_2 * 8) + lVar2;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");
}

