
/* DWARF original prototype: uint64_t do_output_section_address(Sized_relobj<32,_true> * this, uint
   shndx) */

uint64_t __thiscall
gold::Sized_relobj<32,_true>::do_output_section_address(Sized_relobj<32,_true> *this,uint shndx)

{
  Input_file *this_00;
  _func_int_varargs **pp_Var1;
  _func_int_varargs *UNRECOVERED_JUMPTABLE;
  pointer ppOVar2;
  ulong uVar3;
  bool bVar4;
  Elf_Addr EVar5;
  int iVar6;
  undefined4 extraout_var;
  undefined4 extraout_var_00;
  Output_section *pOVar7;
  
  this_00 = (this->super_Relobj).super_Object.input_file_;
  if (this_00 == (Input_file *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/object.h",0x1ea,"input_file");
  }
  uVar3 = (ulong)shndx;
  bVar4 = Input_file::just_symbols(this_00);
  pp_Var1 = (this->super_Relobj).super_Object._vptr_Object;
  if (bVar4) {
    UNRECOVERED_JUMPTABLE = pp_Var1[0x13];
    if (UNRECOVERED_JUMPTABLE == Sized_relobj_file<32,_true>::do_section_address) {
      EVar5 = elfcpp::Elf_file<32,_true,_gold::Object>::section_addr
                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx);
      return (ulong)EVar5;
    }
                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);
    return CONCAT44(extraout_var_00,iVar6);
  }
  UNRECOVERED_JUMPTABLE = pp_Var1[0x18];
  if (UNRECOVERED_JUMPTABLE == Relobj::do_output_section) {
    ppOVar2 = (this->super_Relobj).output_sections_.
              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
              _M_impl._M_start;
    if ((ulong)((long)(this->super_Relobj).output_sections_.
                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
                      ._M_impl._M_finish - (long)ppOVar2 >> 3) <= uVar3) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");
    }
    pOVar7 = ppOVar2[uVar3];
  }
  else {
    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);
    pOVar7 = (Output_section *)CONCAT44(extraout_var,iVar6);
  }
  if (pOVar7 != (Output_section *)0x0) {
    if (((pOVar7->super_Output_data).field_0x20 & 1) != 0) {
      return (pOVar7->super_Output_data).address_;
    }
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xc5,"address");
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/object.cc",0x1c5,"do_output_section_address");
}



ulong FUN_001c8f10(long *param_1,ulong param_2)

{
  code *UNRECOVERED_JUMPTABLE;
  char cVar1;
  uint uVar2;
  long lVar3;
  ulong uVar4;
  
  if (param_1[5] == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");
  }
  param_2 = param_2 & 0xffffffff;
  cVar1 = FUN_0017a850();
  if (cVar1 != '\0') {
    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);
    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {
      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);
      return (ulong)uVar2;
    }
                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);
    return uVar4;
  }
  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);
  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {
    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");
    }
    lVar3 = *(long *)(param_1[10] + param_2 * 8);
  }
  else {
    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);
  }
  if (lVar3 != 0) {
    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {
      return *(ulong *)(lVar3 + 8);
    }
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/output.h",0xc5,"address");
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");
}


PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
MOV RDI,qword ptr [RDI + 0x28]
TEST RDI,RDI
JZ 0x001c8fd5
MOV EBP,ESI
CALL 0x0017a850
TEST AL,AL
MOV RAX,qword ptr [RBX]
JNZ 0x001c8f88
MOV RAX,qword ptr [RAX + 0xc0]
LEA RDX,[0x156120]
CMP RAX,RDX
JNZ 0x001c8fb8
MOV RDX,qword ptr [RBX + 0x50]
MOV RAX,qword ptr [RBX + 0x58]
SUB RAX,RDX
SAR RAX,0x3
CMP RBP,RAX
JNC 0x001c8fed
MOV RAX,qword ptr [RDX + RBP*0x8]
TEST RAX,RAX
JZ 0x001c9005
TEST byte ptr [RAX + 0x20],0x1
JZ 0x001c901d
MOV RAX,qword ptr [RAX + 0x8]
ADD RSP,0x8
POP RBX
POP RBP
RET
MOV RAX,qword ptr [RAX + 0x98]
LEA RDX,[0x1c8ef0]
CMP RAX,RDX
JNZ 0x001c8fc8
LEA RDI,[RBX + 0xf8]
MOV ESI,EBP
CALL 0x001c8e50
ADD RSP,0x8
MOV EAX,EAX
POP RBX
POP RBP
RET
MOV ESI,EBP
MOV RDI,RBX
CALL RAX
JMP 0x001c8f63
ADD RSP,0x8
MOV ESI,EBP
MOV RDI,RBX
POP RBX
POP RBP
JMP RAX
LEA RDX,[0x379700]
MOV ESI,0x1ea
LEA RDI,[0x36b016]
CALL 0x0017c650
LEA RDX,[0x3797b0]
MOV ESI,0x5c8
LEA RDI,[0x36b016]
CALL 0x0017c650
LEA RDX,[0x379150]
MOV ESI,0x1c5
LEA RDI,[0x377f68]
CALL 0x0017c650
LEA RDX,[0x3796f8]
MOV ESI,0xc5
LEA RDI,[0x373454]
CALL 0x0017c650
(translation_unit "ulong FUN_001c8f10(long *param_1,ulong param_2)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  char cVar1;\n  uint uVar2;\n  long lVar3;\n  ulong uVar4;\n  \n  if (param_1[5] == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }\n  param_2 = param_2 & 0xffffffff;\n  cVar1 = FUN_0017a850();\n  if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }\n  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);\n  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }\n  if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");\n}\n\n" (function_definition "ulong FUN_001c8f10(long *param_1,ulong param_2)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  char cVar1;\n  uint uVar2;\n  long lVar3;\n  ulong uVar4;\n  \n  if (param_1[5] == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }\n  param_2 = param_2 & 0xffffffff;\n  cVar1 = FUN_0017a850();\n  if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }\n  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);\n  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }\n  if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");\n}" type_identifier (function_declarator "FUN_001c8f10(long *param_1,ulong param_2)" identifier (parameter_list "(long *param_1,ulong param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) ))) (compound_statement "{\n  code *UNRECOVERED_JUMPTABLE;\n  char cVar1;\n  uint uVar2;\n  long lVar3;\n  ulong uVar4;\n  \n  if (param_1[5] == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }\n  param_2 = param_2 & 0xffffffff;\n  cVar1 = FUN_0017a850();\n  if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }\n  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);\n  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }\n  if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");\n}" { (declaration "code *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (declaration "char cVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (if_statement "if (param_1[5] == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }" if (parenthesized_expression "(param_1[5] == 0)" ( (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/object.h",0x1ea,"input_file");" (call_expression "FUN_0017c650("../../gold/object.h",0x1ea,"input_file")" identifier (argument_list "("../../gold/object.h",0x1ea,"input_file")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""input_file"" " string_content ") ))) ;) })) (expression_statement "param_2 = param_2 & 0xffffffff;" (assignment_expression "param_2 = param_2 & 0xffffffff" identifier = (binary_expression "param_2 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "cVar1 = FUN_0017a850();" (assignment_expression "cVar1 = FUN_0017a850()" identifier = (call_expression "FUN_0017a850()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }" { (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98)" identifier = (pointer_expression "*(code **)(*param_1 + 0x98)" * (cast_expression "(code **)(*param_1 + 0x98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x98)" ( (binary_expression "*param_1 + 0x98" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE == FUN_001c8ef0)" ( (binary_expression "UNRECOVERED_JUMPTABLE == FUN_001c8ef0" identifier == identifier) )) (compound_statement "{\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }" { (expression_statement "uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);" (assignment_expression "uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2)" identifier = (call_expression "FUN_001c8e50(param_1 + 0x1f,param_2)" identifier (argument_list "(param_1 + 0x1f,param_2)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) , identifier )))) ;) (return_statement "return (ulong)uVar2;" return (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) ;) })) comment comment (expression_statement "uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);" (assignment_expression "uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2)" identifier = (call_expression "(*UNRECOVERED_JUMPTABLE)(param_1,param_2)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (return_statement "return uVar4;" return identifier ;) })) (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0)" identifier = (pointer_expression "*(code **)(*param_1 + 0xc0)" * (cast_expression "(code **)(*param_1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xc0)" ( (binary_expression "*param_1 + 0xc0" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE == FUN_00156120)" ( (binary_expression "UNRECOVERED_JUMPTABLE == FUN_00156120" identifier == identifier) )) (compound_statement "{\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }" { (if_statement "if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }" if (parenthesized_expression "((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2)" ( (binary_expression "(ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2" (call_expression "(ulong)(param_1[0xb] - param_1[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[0xb] - param_1[10] >> 3)" ( (binary_expression "param_1[0xb] - param_1[10] >> 3" (binary_expression "param_1[0xb] - param_1[10]" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) - (subscript_expression "param_1[10]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0017c650("../../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 "lVar3 = *(long *)(param_1[10] + param_2 * 8);" (assignment_expression "lVar3 = *(long *)(param_1[10] + param_2 * 8)" identifier = (pointer_expression "*(long *)(param_1[10] + param_2 * 8)" * (cast_expression "(long *)(param_1[10] + param_2 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + param_2 * 8)" ( (binary_expression "param_1[10] + param_2 * 8" (subscript_expression "param_1[10]" identifier [ number_literal ]) + (binary_expression "param_2 * 8" identifier * number_literal)) ))))) ;) }) (else_clause "else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" else (compound_statement "{\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" { (expression_statement "lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);" (assignment_expression "lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2)" identifier = (call_expression "(*UNRECOVERED_JUMPTABLE)(param_1,param_2)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) }))) (if_statement "if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }" { (if_statement "if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }" if (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar3 + 0x20) & 1" (pointer_expression "*(byte *)(lVar3 + 0x20)" * (cast_expression "(byte *)(lVar3 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return *(ulong *)(lVar3 + 8);\n    }" { (return_statement "return *(ulong *)(lVar3 + 8);" return (pointer_expression "*(ulong *)(lVar3 + 8)" * (cast_expression "(ulong *)(lVar3 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) ;) })) comment (expression_statement "FUN_0017c650("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0017c650("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) comment (expression_statement "FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");" (call_expression "FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address")" identifier (argument_list "("../../gold/object.cc",0x1c5,"do_output_section_address")" ( (string_literal ""../../gold/object.cc"" " string_content ") , number_literal , (string_literal ""do_output_section_address"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: uint64_t do_output_section_address(Sized_relobj<32,_true> * this, uint\n   shndx) */\n\nuint64_t __thiscall\ngold::Sized_relobj<32,_true>::do_output_section_address(Sized_relobj<32,_true> *this,uint shndx)\n\n{\n  Input_file *this_00;\n  _func_int_varargs **pp_Var1;\n  _func_int_varargs *UNRECOVERED_JUMPTABLE;\n  pointer ppOVar2;\n  ulong uVar3;\n  bool bVar4;\n  Elf_Addr EVar5;\n  int iVar6;\n  undefined4 extraout_var;\n  undefined4 extraout_var_00;\n  Output_section *pOVar7;\n  \n  this_00 = (this->super_Relobj).super_Object.input_file_;\n  if (this_00 == (Input_file *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/object.h",0x1ea,"input_file");\n  }\n  uVar3 = (ulong)shndx;\n  bVar4 = Input_file::just_symbols(this_00);\n  pp_Var1 = (this->super_Relobj).super_Object._vptr_Object;\n  if (bVar4) {\n    UNRECOVERED_JUMPTABLE = pp_Var1[0x13];\n    if (UNRECOVERED_JUMPTABLE == Sized_relobj_file<32,_true>::do_section_address) {\n      EVar5 = elfcpp::Elf_file<32,_true,_gold::Object>::section_addr\n                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx);\n      return (ulong)EVar5;\n    }\n                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);\n    return CONCAT44(extraout_var_00,iVar6);\n  }\n  UNRECOVERED_JUMPTABLE = pp_Var1[0x18];\n  if (UNRECOVERED_JUMPTABLE == Relobj::do_output_section) {\n    ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_start;\n    if ((ulong)((long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish - (long)ppOVar2 >> 3) <= uVar3) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    pOVar7 = ppOVar2[uVar3];\n  }\n  else {\n    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);\n    pOVar7 = (Output_section *)CONCAT44(extraout_var,iVar6);\n  }\n  if (pOVar7 != (Output_section *)0x0) {\n    if (((pOVar7->super_Output_data).field_0x20 & 1) != 0) {\n      return (pOVar7->super_Output_data).address_;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/object.cc",0x1c5,"do_output_section_address");\n}\n\n" comment (declaration "uint64_t __thiscall\ngold::Sized_relobj<32,_true>::do_output_section_address(Sized_relobj<32,_true> *this,uint shndx)\n\n{\n  Input_file *this_00;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::do_output_section_address(Sized_relobj<32,_true> *this,uint shndx)\n\n{\n  Input_file" identifier > : : (function_declarator "do_output_section_address(Sized_relobj<32,_true> *this,uint shndx)" identifier (parameter_list "(Sized_relobj<32,_true> *this,uint shndx)" ( (parameter_declaration "Sized_relobj" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) ))) { identifier) (pointer_declarator "*this_00" * identifier) ;) (declaration "_func_int_varargs **pp_Var1;" type_identifier (pointer_declarator "**pp_Var1" * (pointer_declarator "*pp_Var1" * identifier)) ;) (declaration "_func_int_varargs *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (declaration "pointer ppOVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "Elf_Addr EVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "undefined4 extraout_var_00;" type_identifier identifier ;) (declaration "Output_section *pOVar7;" type_identifier (pointer_declarator "*pOVar7" * identifier) ;) (expression_statement "this_00 = (this->super_Relobj).super_Object.input_file_;" (assignment_expression "this_00 = (this->super_Relobj).super_Object.input_file_" identifier = (field_expression "(this->super_Relobj).super_Object.input_file_" (field_expression "(this->super_Relobj).super_Object" (parenthesized_expression "(this->super_Relobj)" ( (field_expression "this->super_Relobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (this_00 == (Input_file *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/object.h",0x1ea,"input_file");\n  }" if (parenthesized_expression "(this_00 == (Input_file *)0x0)" ( (binary_expression "this_00 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/object.h",0x1ea,"input_file");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x1ea,"input_file");" (call_expression "do_gold_unreachable("../../gold/object.h",0x1ea,"input_file")" identifier (argument_list "("../../gold/object.h",0x1ea,"input_file")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""input_file"" " string_content ") ))) ;) })) (expression_statement "uVar3 = (ulong)shndx;" (assignment_expression "uVar3 = (ulong)shndx" identifier = (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (ERROR "bVar4 = Input_file::" (assignment_expression "bVar4 = Input_file" identifier = identifier) : :) (expression_statement "just_symbols(this_00);" (call_expression "just_symbols(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;) (expression_statement "pp_Var1 = (this->super_Relobj).super_Object._vptr_Object;" (assignment_expression "pp_Var1 = (this->super_Relobj).super_Object._vptr_Object" identifier = (field_expression "(this->super_Relobj).super_Object._vptr_Object" (field_expression "(this->super_Relobj).super_Object" (parenthesized_expression "(this->super_Relobj)" ( (field_expression "this->super_Relobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (bVar4) {\n    UNRECOVERED_JUMPTABLE = pp_Var1[0x13];\n    if (UNRECOVERED_JUMPTABLE == Sized_relobj_file<32,_true>::do_section_address) {\n      EVar5 = elfcpp::Elf_file<32,_true,_gold::Object>::section_addr\n                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx);\n      return (ulong)EVar5;\n    }\n                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);\n    return CONCAT44(extraout_var_00,iVar6);\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    UNRECOVERED_JUMPTABLE = pp_Var1[0x13];\n    if (UNRECOVERED_JUMPTABLE == Sized_relobj_file<32,_true>::do_section_address) {\n      EVar5 = elfcpp::Elf_file<32,_true,_gold::Object>::section_addr\n                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx);\n      return (ulong)EVar5;\n    }\n                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);\n    return CONCAT44(extraout_var_00,iVar6);\n  }" { (expression_statement "UNRECOVERED_JUMPTABLE = pp_Var1[0x13];" (assignment_expression "UNRECOVERED_JUMPTABLE = pp_Var1[0x13]" identifier = (subscript_expression "pp_Var1[0x13]" identifier [ number_literal ])) ;) (if_statement "if (UNRECOVERED_JUMPTABLE == Sized_relobj_file<32,_true>::do_section_address) {\n      EVar5 = elfcpp::Elf_file<32,_true,_gold::Object>::section_addr\n                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx);\n      return (ulong)EVar5;\n    }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE == Sized_relobj_file<32,_true>::do_section_address)" ( (comma_expression "UNRECOVERED_JUMPTABLE == Sized_relobj_file<32,_true>::do_section_address" (binary_expression "UNRECOVERED_JUMPTABLE == Sized_relobj_file<32" identifier == (binary_expression "Sized_relobj_file<32" identifier < number_literal)) , (binary_expression "_true>::do_section_address" identifier > (ERROR "::" : :) identifier)) )) (compound_statement "{\n      EVar5 = elfcpp::Elf_file<32,_true,_gold::Object>::section_addr\n                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx);\n      return (ulong)EVar5;\n    }" { (ERROR "EVar5 = elfcpp::Elf_file<32,_true,_gold::" (comma_expression "EVar5 = elfcpp::Elf_file<32,_true,_gold" (binary_expression "EVar5 = elfcpp::Elf_file<32" (assignment_expression "EVar5 = elfcpp" identifier = identifier) (ERROR "::Elf_file" : : identifier) < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : :) (expression_statement "Object>::section_addr\n                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx);" (binary_expression "Object>::section_addr\n                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx)" identifier > (ERROR "::" : :) (call_expression "section_addr\n                        ((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx)" identifier (argument_list "((Elf_file<32,_true,_gold::Object> *)(this + 1),shndx)" ( (call_expression "(Elf_file<32,_true,_gold::Object> *)(this + 1)" (parenthesized_expression "(Elf_file<32,_true,_gold::Object> *)" ( (ERROR "Elf_file<32,_true,_gold::" (comma_expression "Elf_file<32,_true,_gold" (binary_expression "Elf_file<32" identifier < number_literal) , (comma_expression "_true,_gold" identifier , identifier)) : :) (binary_expression "Object> *" identifier > (pointer_expression "*" * identifier)) )) (argument_list "(this + 1)" ( (binary_expression "this + 1" identifier + number_literal) ))) , identifier )))) ;) (return_statement "return (ulong)EVar5;" return (cast_expression "(ulong)EVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) ;) })) comment comment (expression_statement "iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);" (assignment_expression "iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3)" identifier = (call_expression "(*UNRECOVERED_JUMPTABLE)(this,uVar3)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(this,uVar3)" ( identifier , identifier )))) ;) (return_statement "return CONCAT44(extraout_var_00,iVar6);" return (call_expression "CONCAT44(extraout_var_00,iVar6)" identifier (argument_list "(extraout_var_00,iVar6)" ( identifier , identifier ))) ;) })) (expression_statement "UNRECOVERED_JUMPTABLE = pp_Var1[0x18];" (assignment_expression "UNRECOVERED_JUMPTABLE = pp_Var1[0x18]" identifier = (subscript_expression "pp_Var1[0x18]" identifier [ number_literal ])) ;) (if_statement "if (UNRECOVERED_JUMPTABLE == Relobj::do_output_section) {\n    ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_start;\n    if ((ulong)((long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish - (long)ppOVar2 >> 3) <= uVar3) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    pOVar7 = ppOVar2[uVar3];\n  }\n  else {\n    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);\n    pOVar7 = (Output_section *)CONCAT44(extraout_var,iVar6);\n  }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE == Relobj::do_output_section)" ( (binary_expression "UNRECOVERED_JUMPTABLE == Relobj" identifier == identifier) (ERROR "::do_output_section" : : identifier) )) (compound_statement "{\n    ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_start;\n    if ((ulong)((long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish - (long)ppOVar2 >> 3) <= uVar3) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    pOVar7 = ppOVar2[uVar3];\n  }" { (expression_statement "ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_start;" (field_expression "ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl._M_start" (field_expression "ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n              _M_impl" (binary_expression "ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar2 = (this->super_Relobj).output_sections_.\n              super__Vector_base<gold" identifier = (binary_expression "(this->super_Relobj).output_sections_.\n              super__Vector_base<gold" (field_expression "(this->super_Relobj).output_sections_.\n              super__Vector_base" (field_expression "(this->super_Relobj).output_sections_" (parenthesized_expression "(this->super_Relobj)" ( (field_expression "this->super_Relobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if ((ulong)((long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish - (long)ppOVar2 >> 3) <= uVar3) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }" if (parenthesized_expression "((ulong)((long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish - (long)ppOVar2 >> 3) <= uVar3)" ( (binary_expression "(ulong)((long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish - (long)ppOVar2 >> 3) <= uVar3" (call_expression "(ulong)((long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish - (long)ppOVar2 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(this->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 "(long)(this->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 "(long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish - (long)ppOVar2" (field_expression "(long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl._M_finish" (field_expression "(long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n                      ._M_impl" (binary_expression "(long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold::Output_section*,_std" (binary_expression "(long)(this->super_Relobj).output_sections_.\n                      super__Vector_base<gold" (cast_expression "(long)(this->super_Relobj).output_sections_.\n                      super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->super_Relobj).output_sections_.\n                      super__Vector_base" (field_expression "(this->super_Relobj).output_sections_" (parenthesized_expression "(this->super_Relobj)" ( (field_expression "this->super_Relobj" identifier -> field_identifier) )) . field_identifier) . field_identifier)) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)ppOVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "do_gold_unreachable("../../gold/object.h",0x5c8,"do_output_section")" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") ))) ;) })) (expression_statement "pOVar7 = ppOVar2[uVar3];" (assignment_expression "pOVar7 = ppOVar2[uVar3]" identifier = (subscript_expression "ppOVar2[uVar3]" identifier [ identifier ])) ;) }) (else_clause "else {\n    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);\n    pOVar7 = (Output_section *)CONCAT44(extraout_var,iVar6);\n  }" else (compound_statement "{\n    iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);\n    pOVar7 = (Output_section *)CONCAT44(extraout_var,iVar6);\n  }" { (expression_statement "iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3);" (assignment_expression "iVar6 = (*UNRECOVERED_JUMPTABLE)(this,uVar3)" identifier = (call_expression "(*UNRECOVERED_JUMPTABLE)(this,uVar3)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(this,uVar3)" ( identifier , identifier )))) ;) (expression_statement "pOVar7 = (Output_section *)CONCAT44(extraout_var,iVar6);" (assignment_expression "pOVar7 = (Output_section *)CONCAT44(extraout_var,iVar6)" identifier = (cast_expression "(Output_section *)CONCAT44(extraout_var,iVar6)" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var,iVar6)" identifier (argument_list "(extraout_var,iVar6)" ( identifier , identifier ))))) ;) }))) (if_statement "if (pOVar7 != (Output_section *)0x0) {\n    if (((pOVar7->super_Output_data).field_0x20 & 1) != 0) {\n      return (pOVar7->super_Output_data).address_;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "(pOVar7 != (Output_section *)0x0)" ( (binary_expression "pOVar7 != (Output_section *)0x0" identifier != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((pOVar7->super_Output_data).field_0x20 & 1) != 0) {\n      return (pOVar7->super_Output_data).address_;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" { (if_statement "if (((pOVar7->super_Output_data).field_0x20 & 1) != 0) {\n      return (pOVar7->super_Output_data).address_;\n    }" if (parenthesized_expression "(((pOVar7->super_Output_data).field_0x20 & 1) != 0)" ( (binary_expression "((pOVar7->super_Output_data).field_0x20 & 1) != 0" (parenthesized_expression "((pOVar7->super_Output_data).field_0x20 & 1)" ( (binary_expression "(pOVar7->super_Output_data).field_0x20 & 1" (field_expression "(pOVar7->super_Output_data).field_0x20" (parenthesized_expression "(pOVar7->super_Output_data)" ( (field_expression "pOVar7->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return (pOVar7->super_Output_data).address_;\n    }" { (return_statement "return (pOVar7->super_Output_data).address_;" return (field_expression "(pOVar7->super_Output_data).address_" (parenthesized_expression "(pOVar7->super_Output_data)" ( (field_expression "pOVar7->super_Output_data" identifier -> field_identifier) )) . field_identifier) ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) comment (expression_statement "do_gold_unreachable("../../gold/object.cc",0x1c5,"do_output_section_address");" (call_expression "do_gold_unreachable("../../gold/object.cc",0x1c5,"do_output_section_address")" identifier (argument_list "("../../gold/object.cc",0x1c5,"do_output_section_address")" ( (string_literal ""../../gold/object.cc"" " string_content ") , number_literal , (string_literal ""do_output_section_address"" " string_content ") ))) ;) (ERROR "}" }))
(translation_unit "ulong FUN_001c8f10(long *param_1,ulong param_2)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  char cVar1;\n  uint uVar2;\n  long lVar3;\n  ulong uVar4;\n  \n  if (param_1[5] == 0) {\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }\n  param_2 = param_2 & 0xffffffff;\n  cVar1 = FUN_0017a850();\n  if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }\n  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);\n  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }\n  if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }\n                    \n  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");\n}\n\n" (function_definition "ulong FUN_001c8f10(long *param_1,ulong param_2)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  char cVar1;\n  uint uVar2;\n  long lVar3;\n  ulong uVar4;\n  \n  if (param_1[5] == 0) {\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }\n  param_2 = param_2 & 0xffffffff;\n  cVar1 = FUN_0017a850();\n  if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }\n  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);\n  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }\n  if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }\n                    \n  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");\n}" type_identifier (function_declarator "FUN_001c8f10(long *param_1,ulong param_2)" identifier (parameter_list "(long *param_1,ulong param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) ))) (compound_statement "{\n  code *UNRECOVERED_JUMPTABLE;\n  char cVar1;\n  uint uVar2;\n  long lVar3;\n  ulong uVar4;\n  \n  if (param_1[5] == 0) {\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }\n  param_2 = param_2 & 0xffffffff;\n  cVar1 = FUN_0017a850();\n  if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }\n  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);\n  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }\n  if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }\n                    \n  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");\n}" { (declaration "code *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (declaration "char cVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (if_statement "if (param_1[5] == 0) {\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }" if (parenthesized_expression "(param_1[5] == 0)" ( (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }" { (expression_statement "FUN_0017c650("../../gold/object.h",0x1ea,"input_file");" (call_expression "FUN_0017c650("../../gold/object.h",0x1ea,"input_file")" identifier (argument_list "("../../gold/object.h",0x1ea,"input_file")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""input_file"" " string_content ") ))) ;) })) (expression_statement "param_2 = param_2 & 0xffffffff;" (assignment_expression "param_2 = param_2 & 0xffffffff" identifier = (binary_expression "param_2 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "cVar1 = FUN_0017a850();" (assignment_expression "cVar1 = FUN_0017a850()" identifier = (call_expression "FUN_0017a850()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }" { (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98)" identifier = (pointer_expression "*(code **)(*param_1 + 0x98)" * (cast_expression "(code **)(*param_1 + 0x98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x98)" ( (binary_expression "*param_1 + 0x98" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE == FUN_001c8ef0)" ( (binary_expression "UNRECOVERED_JUMPTABLE == FUN_001c8ef0" identifier == identifier) )) (compound_statement "{\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }" { (expression_statement "uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);" (assignment_expression "uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2)" identifier = (call_expression "FUN_001c8e50(param_1 + 0x1f,param_2)" identifier (argument_list "(param_1 + 0x1f,param_2)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) , identifier )))) ;) (return_statement "return (ulong)uVar2;" return (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) ;) })) (expression_statement "uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);" (assignment_expression "uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2)" identifier = (call_expression "(*UNRECOVERED_JUMPTABLE)(param_1,param_2)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (return_statement "return uVar4;" return identifier ;) })) (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0)" identifier = (pointer_expression "*(code **)(*param_1 + 0xc0)" * (cast_expression "(code **)(*param_1 + 0xc0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xc0)" ( (binary_expression "*param_1 + 0xc0" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" if (parenthesized_expression "(UNRECOVERED_JUMPTABLE == FUN_00156120)" ( (binary_expression "UNRECOVERED_JUMPTABLE == FUN_00156120" identifier == identifier) )) (compound_statement "{\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }" { (if_statement "if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }" if (parenthesized_expression "((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2)" ( (binary_expression "(ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2" (call_expression "(ulong)(param_1[0xb] - param_1[10] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[0xb] - param_1[10] >> 3)" ( (binary_expression "param_1[0xb] - param_1[10] >> 3" (binary_expression "param_1[0xb] - param_1[10]" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) - (subscript_expression "param_1[10]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }" { (expression_statement "FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0017c650("../../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 "lVar3 = *(long *)(param_1[10] + param_2 * 8);" (assignment_expression "lVar3 = *(long *)(param_1[10] + param_2 * 8)" identifier = (pointer_expression "*(long *)(param_1[10] + param_2 * 8)" * (cast_expression "(long *)(param_1[10] + param_2 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + param_2 * 8)" ( (binary_expression "param_1[10] + param_2 * 8" (subscript_expression "param_1[10]" identifier [ number_literal ]) + (binary_expression "param_2 * 8" identifier * number_literal)) ))))) ;) }) (else_clause "else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" else (compound_statement "{\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" { (expression_statement "lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);" (assignment_expression "lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2)" identifier = (call_expression "(*UNRECOVERED_JUMPTABLE)(param_1,param_2)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) }))) (if_statement "if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }" { (if_statement "if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }" if (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 1)" ( (binary_expression "*(byte *)(lVar3 + 0x20) & 1" (pointer_expression "*(byte *)(lVar3 + 0x20)" * (cast_expression "(byte *)(lVar3 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x20)" ( (binary_expression "lVar3 + 0x20" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return *(ulong *)(lVar3 + 8);\n    }" { (return_statement "return *(ulong *)(lVar3 + 8);" return (pointer_expression "*(ulong *)(lVar3 + 8)" * (cast_expression "(ulong *)(lVar3 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) ;) })) (expression_statement "FUN_0017c650("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0017c650("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");" (call_expression "FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address")" identifier (argument_list "("../../gold/object.cc",0x1c5,"do_output_section_address")" ( (string_literal ""../../gold/object.cc"" " string_content ") , number_literal , (string_literal ""do_output_section_address"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) >> LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (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 IDENT * LIT)) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "ulong FUN_001c8f10(long *param_1,ulong param_2)\n\n{\n  code *UNRECOVERED_JUMPTABLE;\n  char cVar1;\n  uint uVar2;\n  long lVar3;\n  ulong uVar4;\n  \n  if (param_1[5] == 0) {\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }\n  param_2 = param_2 & 0xffffffff;\n  cVar1 = FUN_0017a850();\n  if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }\n  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);\n  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }\n  if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }\n                    \n  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");\n}" (type_identifier "ulong") (function_declarator "FUN_001c8f10(long *param_1,ulong param_2)" (identifier "FUN_001c8f10") (parameter_list "(long *param_1,ulong param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) () ")"))) (compound_statement "{\n  code *UNRECOVERED_JUMPTABLE;\n  char cVar1;\n  uint uVar2;\n  long lVar3;\n  ulong uVar4;\n  \n  if (param_1[5] == 0) {\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }\n  param_2 = param_2 & 0xffffffff;\n  cVar1 = FUN_0017a850();\n  if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }\n  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);\n  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }\n  if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }\n                    \n  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");\n}" ({ "{") (declaration "code *UNRECOVERED_JUMPTABLE;" (type_identifier "code") (pointer_declarator "*UNRECOVERED_JUMPTABLE" (* "*") (identifier "UNRECOVERED_JUMPTABLE")) (; ";")) (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (if_statement "if (param_1[5] == 0) {\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }" (if "if") (parenthesized_expression "(param_1[5] == 0)" (( "(") (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/object.h",0x1ea,"input_file");" (call_expression "FUN_0017c650("../../gold/object.h",0x1ea,"input_file")" (identifier "FUN_0017c650") (argument_list "("../../gold/object.h",0x1ea,"input_file")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x1ea") (, ",") (string_literal ""input_file"" (" """) (string_content "input_file") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "param_2 = param_2 & 0xffffffff;" (assignment_expression "param_2 = param_2 & 0xffffffff" (identifier "param_2") (= "=") (binary_expression "param_2 & 0xffffffff" (identifier "param_2") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "cVar1 = FUN_0017a850();" (assignment_expression "cVar1 = FUN_0017a850()" (identifier "cVar1") (= "=") (call_expression "FUN_0017a850()" (identifier "FUN_0017a850") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar1 != '\0') {\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);\n    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }\n                    \n                    \n    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n    return uVar4;\n  }" ({ "{") (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98)" (identifier "UNRECOVERED_JUMPTABLE") (= "=") (pointer_expression "*(code **)(*param_1 + 0x98)" (* "*") (cast_expression "(code **)(*param_1 + 0x98)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x98)" (( "(") (binary_expression "*param_1 + 0x98" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (if_statement "if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }" (if "if") (parenthesized_expression "(UNRECOVERED_JUMPTABLE == FUN_001c8ef0)" (( "(") (binary_expression "UNRECOVERED_JUMPTABLE == FUN_001c8ef0" (identifier "UNRECOVERED_JUMPTABLE") (== "==") (identifier "FUN_001c8ef0")) () ")")) (compound_statement "{\n      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);\n      return (ulong)uVar2;\n    }" ({ "{") (expression_statement "uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);" (assignment_expression "uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2)" (identifier "uVar2") (= "=") (call_expression "FUN_001c8e50(param_1 + 0x1f,param_2)" (identifier "FUN_001c8e50") (argument_list "(param_1 + 0x1f,param_2)" (( "(") (binary_expression "param_1 + 0x1f" (identifier "param_1") (+ "+") (number_literal "0x1f")) (, ",") (identifier "param_2") () ")")))) (; ";")) (return_statement "return (ulong)uVar2;" (return "return") (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2")) (; ";")) (} "}"))) (expression_statement "uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);" (assignment_expression "uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2)" (identifier "uVar4") (= "=") (call_expression "(*UNRECOVERED_JUMPTABLE)(param_1,param_2)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" (( "(") (pointer_expression "*UNRECOVERED_JUMPTABLE" (* "*") (identifier "UNRECOVERED_JUMPTABLE")) () ")")) (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);" (assignment_expression "UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0)" (identifier "UNRECOVERED_JUMPTABLE") (= "=") (pointer_expression "*(code **)(*param_1 + 0xc0)" (* "*") (cast_expression "(code **)(*param_1 + 0xc0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xc0)" (( "(") (binary_expression "*param_1 + 0xc0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xc0")) () ")"))))) (; ";")) (if_statement "if (UNRECOVERED_JUMPTABLE == FUN_00156120) {\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }\n  else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" (if "if") (parenthesized_expression "(UNRECOVERED_JUMPTABLE == FUN_00156120)" (( "(") (binary_expression "UNRECOVERED_JUMPTABLE == FUN_00156120" (identifier "UNRECOVERED_JUMPTABLE") (== "==") (identifier "FUN_00156120")) () ")")) (compound_statement "{\n    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }\n    lVar3 = *(long *)(param_1[10] + param_2 * 8);\n  }" ({ "{") (if_statement "if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }" (if "if") (parenthesized_expression "((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2)" (( "(") (binary_expression "(ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2" (call_expression "(ulong)(param_1[0xb] - param_1[10] >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1[0xb] - param_1[10] >> 3)" (( "(") (binary_expression "param_1[0xb] - param_1[10] >> 3" (binary_expression "param_1[0xb] - param_1[10]" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (- "-") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (>> ">>") (number_literal "3")) () ")"))) (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");" (call_expression "FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section")" (identifier "FUN_0017c650") (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 "lVar3 = *(long *)(param_1[10] + param_2 * 8);" (assignment_expression "lVar3 = *(long *)(param_1[10] + param_2 * 8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_1[10] + param_2 * 8)" (* "*") (cast_expression "(long *)(param_1[10] + param_2 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[10] + param_2 * 8)" (( "(") (binary_expression "param_1[10] + param_2 * 8" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (+ "+") (binary_expression "param_2 * 8" (identifier "param_2") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" (else "else") (compound_statement "{\n    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);\n  }" ({ "{") (expression_statement "lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);" (assignment_expression "lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2)" (identifier "lVar3") (= "=") (call_expression "(*UNRECOVERED_JUMPTABLE)(param_1,param_2)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" (( "(") (pointer_expression "*UNRECOVERED_JUMPTABLE" (* "*") (identifier "UNRECOVERED_JUMPTABLE")) () ")")) (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (if_statement "if (lVar3 != 0) {\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }\n                    \n    FUN_0017c650("../../gold/output.h",0xc5,"address");\n  }" ({ "{") (if_statement "if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {\n      return *(ulong *)(lVar3 + 8);\n    }" (if "if") (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(lVar3 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(lVar3 + 0x20) & 1" (pointer_expression "*(byte *)(lVar3 + 0x20)" (* "*") (cast_expression "(byte *)(lVar3 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x20)" (( "(") (binary_expression "lVar3 + 0x20" (identifier "lVar3") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return *(ulong *)(lVar3 + 8);\n    }" ({ "{") (return_statement "return *(ulong *)(lVar3 + 8);" (return "return") (pointer_expression "*(ulong *)(lVar3 + 8)" (* "*") (cast_expression "(ulong *)(lVar3 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")")))) (; ";")) (} "}"))) (expression_statement "FUN_0017c650("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0017c650("../../gold/output.h",0xc5,"address")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");" (call_expression "FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address")" (identifier "FUN_0017c650") (argument_list "("../../gold/object.cc",0x1c5,"do_output_section_address")" (( "(") (string_literal ""../../gold/object.cc"" (" """) (string_content "../../gold/object.cc") (" """)) (, ",") (number_literal "0x1c5") (, ",") (string_literal ""do_output_section_address"" (" """) (string_content "do_output_section_address") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: uint64_t do_output_section_address(Sized_relobj<32,_true> * this, uint
   shndx) */

uint64_t __thiscall
var_13::Sized_relobj<32,var_6>::do_output_section_address(Sized_relobj<32,var_6> *var_10,uint shndx)

{
  type_7 *var_1;
  type_1 **pp_Var1;
  type_1 *var_4;
  type_2 ppOVar2;
  type_3 var_16;
  bool bVar4;
  type_4 EVar5;
  int iVar6;
  type_5 extraout_var;
  type_5 extraout_var_00;
  type_6 *var_17;
  
  var_1 = (var_10->super_Relobj).super_Object.input_file_;
  if (var_1 == (type_7 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/object.h",0x1ea,"input_file");
  }
  var_16 = (type_3)shndx;
  bVar4 = type_7::var_3(var_1);
  pp_Var1 = (var_10->super_Relobj).super_Object._vptr_Object;
  if (bVar4) {
    var_4 = pp_Var1[0x13];
    if (var_4 == var_5<32,var_6>::var_7) {
      EVar5 = elfcpp::Elf_file<32,var_6,_gold::var_8>::var_9
                        ((Elf_file<32,var_6,_gold::var_8> *)(var_10 + 1),shndx);
      return (type_3)EVar5;
    }
                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    iVar6 = (*var_4)(var_10,var_16);
    return var_11(extraout_var_00,iVar6);
  }
  var_4 = pp_Var1[0x18];
  if (var_4 == var_12::do_output_section) {
    ppOVar2 = (var_10->super_Relobj).output_sections_.
              super__Vector_base<var_13::type_6*,var_14::allocator<var_13::type_6*>var_15>.
              _M_impl._M_start;
    if ((type_3)((long)(var_10->super_Relobj).output_sections_.
                      super__Vector_base<var_13::type_6*,var_14::allocator<var_13::type_6*>var_15>
                      ._M_impl._M_finish - (long)ppOVar2 >> 3) <= var_16) {
                    /* WARNING: Subroutine does not return */
      var_2("../../gold/object.h",0x5c8,"do_output_section");
    }
    var_17 = ppOVar2[var_16];
  }
  else {
    iVar6 = (*var_4)(var_10,var_16);
    var_17 = (type_6 *)var_11(extraout_var,iVar6);
  }
  if (var_17 != (type_6 *)0x0) {
    if (((var_17->super_Output_data).field_0x20 & 1) != 0) {
      return (var_17->super_Output_data).address_;
    }
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/output.h",0xc5,"address");
  }
                    /* WARNING: Subroutine does not return */
  var_2("../../gold/object.cc",0x1c5,"do_output_section_address");
}


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

ulong MASKED(long *param_1,ulong param_2)

{
  code *UNRECOVERED_JUMPTABLE;
  char cVar1;
  uint uVar2;
  long lVar3;
  ulong uVar4;
  
  if (param_1[5] == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/object.h",0x1ea,"input_file");
  }
  param_2 = param_2 & 0xffffffff;
  cVar1 = FUN_0017a850();
  if (cVar1 != '\0') {
    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x98);
    if (UNRECOVERED_JUMPTABLE == FUN_001c8ef0) {
      uVar2 = FUN_001c8e50(param_1 + 0x1f,param_2);
      return (ulong)uVar2;
    }
                    /* WARNING: Could not recover jumptable at 0x001c8fd3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar4 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);
    return uVar4;
  }
  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0xc0);
  if (UNRECOVERED_JUMPTABLE == FUN_00156120) {
    if ((ulong)(param_1[0xb] - param_1[10] >> 3) <= param_2) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/object.h",0x5c8,"do_output_section");
    }
    lVar3 = *(long *)(param_1[10] + param_2 * 8);
  }
  else {
    lVar3 = (*UNRECOVERED_JUMPTABLE)(param_1,param_2);
  }
  if (lVar3 != 0) {
    if ((*(byte *)(lVar3 + 0x20) & 1) != 0) {
      return *(ulong *)(lVar3 + 8);
    }
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/output.h",0xc5,"address");
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/object.cc",0x1c5,"do_output_section_address");
}

