
/* DWARF original prototype: uchar * do_section_contents(Sized_relobj_incr<32,_true> * this, uint
   shndx, section_size_type * plen, bool param_3) */

uchar * __thiscall
gold::Sized_relobj_incr<32,_true>::do_section_contents
          (Sized_relobj_incr<32,_true> *this,uint shndx,section_size_type *plen,bool param_3)

{
  uint uVar1;
  uint uVar2;
  Output_section *pOVar3;
  uchar *puVar4;
  Output_file *size;
  long lVar5;
  Output_file *this_1;
  ulong start;
  
  pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.
           super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl
           ._M_start[shndx];
  if (pOVar3 == (Output_section *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/incremental.cc",0x8fa,"do_section_contents");
  }
  if (((pOVar3->super_Output_data).field_0x20 & 4) != 0) {
    start = (ulong)((shndx - 1) * 0x10);
    lVar5 = start + 0x20 + (ulong)(this->input_reader_).info_offset_;
    puVar4 = ((this->input_reader_).inputs_)->p_;
    uVar1 = *(uint *)(puVar4 + lVar5 + 8);
    uVar2 = *(uint *)(puVar4 + lVar5 + 0xc);
    this_1 = (Output_file *)
             (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18
                    );
    lVar5 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)
            + (pOVar3->super_Output_data).offset_;
    *plen = (section_size_type)this_1;
    size = (this->ibase_->super_Incremental_binary).output_;
    if ((-1 < lVar5) &&
       (this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_)) {
      return size->base_ + lVar5;
    }
                    /* WARNING: Subroutine does not return */
    Output_file::get_output_view((Output_file *)this,start,(size_t)size,this_1);
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0xe3,"offset");
}



long FUN_001f4500(long param_1,uint param_2,ulong *param_3)

{
  uint uVar1;
  uint uVar2;
  long lVar3;
  long lVar4;
  ulong uVar5;
  
  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");
  }
  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {
    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +
            **(long **)(param_1 + 0x108);
    uVar1 = *(uint *)(lVar4 + 8);
    uVar2 = *(uint *)(lVar4 + 0xc);
    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)
    ;
    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)
            + *(long *)(lVar3 + 0x18);
    *param_3 = uVar5;
    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);
    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {
      return lVar4 + *(long *)(lVar3 + 0x18);
    }
                    /* WARNING: Subroutine does not return */
    FUN_001efe60();
  }
                    /* WARNING: Subroutine does not return */
  FUN_001e9890("../../gold/output.h",0xe3,"offset");
}


SUB RSP,0x8
MOV RAX,qword ptr [RDI + 0x50]
MOV ECX,ESI
MOV R8,qword ptr [RAX + RCX*0x8]
TEST R8,R8
JZ 0x001f4586
TEST byte ptr [R8 + 0x20],0x4
JZ 0x001f456e
MOV RAX,qword ptr [RDI + 0x108]
SUB ESI,0x1
MOV ECX,dword ptr [RDI + 0x118]
SHL ESI,0x4
LEA RCX,[RSI + RCX*0x1 + 0x20]
ADD RCX,qword ptr [RAX]
MOV EAX,dword ptr [RCX + 0x8]
MOV ECX,dword ptr [RCX + 0xc]
BSWAP ECX
MOV ECX,ECX
BSWAP EAX
MOV EAX,EAX
ADD RAX,qword ptr [R8 + 0x18]
MOV qword ptr [RDX],RCX
MOV RDX,qword ptr [RDI + 0xf8]
MOV RDX,qword ptr [RDX + 0x50]
JS 0x001f4569
ADD RCX,RAX
CMP RCX,qword ptr [RDX + 0x10]
JG 0x001f4569
ADD RAX,qword ptr [RDX + 0x18]
ADD RSP,0x8
RET
CALL 0x001efe60
LEA RDX,[0x3e4422]
MOV ESI,0xe3
LEA RDI,[0x3de409]
CALL 0x001e9890
LEA RDX,[0x3e3920]
MOV ESI,0x8fa
LEA RDI,[0x3e24e4]
CALL 0x001e9890
(translation_unit "long FUN_001f4500(long param_1,uint param_2,ulong *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);\n  if (lVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001efe60();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001e9890("../../gold/output.h",0xe3,"offset");\n}\n\n" (function_definition "long FUN_001f4500(long param_1,uint param_2,ulong *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);\n  if (lVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001efe60();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001e9890("../../gold/output.h",0xe3,"offset");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001f4500(long param_1,uint param_2,ulong *param_3)" identifier (parameter_list "(long param_1,uint param_2,ulong *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "ulong *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);\n  if (lVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001efe60();\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001e9890("../../gold/output.h",0xe3,"offset");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (expression_statement "lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" ( (binary_expression "*(long *)(param_1 + 0x50) + (ulong)param_2 * 8" (pointer_expression "*(long *)(param_1 + 0x50)" * (cast_expression "(long *)(param_1 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) + (binary_expression "(ulong)param_2 * 8" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (lVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }" { comment (expression_statement "FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");" (call_expression "FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents")" identifier (argument_list "("../../gold/incremental.cc",0x8fa,"do_section_contents")" ( (string_literal ""../../gold/incremental.cc"" " string_content ") , number_literal , (string_literal ""do_section_contents"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001efe60();\n  }" if (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 4)" ( (binary_expression "*(byte *)(lVar3 + 0x20) & 4" (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    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_001efe60();\n  }" { (expression_statement "lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);" (assignment_expression "lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108)" identifier = (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108)" (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118)" (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20" (call_expression "(ulong)((param_2 - 1) * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((param_2 - 1) * 0x10)" ( (binary_expression "(param_2 - 1) * 0x10" (parenthesized_expression "(param_2 - 1)" ( (binary_expression "param_2 - 1" identifier - number_literal) )) * number_literal) ))) + number_literal) + (binary_expression "(ulong)*(uint *)(param_1 + 0x118)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x118)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) ))))) + (pointer_expression "**(long **)(param_1 + 0x108)" * (pointer_expression "*(long **)(param_1 + 0x108)" * (cast_expression "(long **)(param_1 + 0x108)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))))) ;) (expression_statement "uVar1 = *(uint *)(lVar4 + 8);" (assignment_expression "uVar1 = *(uint *)(lVar4 + 8)" identifier = (pointer_expression "*(uint *)(lVar4 + 8)" * (cast_expression "(uint *)(lVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(lVar4 + 0xc);" (assignment_expression "uVar2 = *(uint *)(lVar4 + 0xc)" identifier = (pointer_expression "*(uint *)(lVar4 + 0xc)" * (cast_expression "(uint *)(lVar4 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xc)" ( (binary_expression "lVar4 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;" (assignment_expression "uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" identifier = (call_expression "(ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" ( (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);" (assignment_expression "lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18)" identifier = (binary_expression "(ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18)" (call_expression "(ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" ( (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) ))) + (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))))) ;) (expression_statement "*param_3 = uVar5;" (assignment_expression "*param_3 = uVar5" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0xf8) + 0x50)" * (cast_expression "(long *)(*(long *)(param_1 + 0xf8) + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0xf8) + 0x50)" ( (binary_expression "*(long *)(param_1 + 0xf8) + 0x50" (pointer_expression "*(long *)(param_1 + 0xf8)" * (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }" if (parenthesized_expression "((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10)))" ( (binary_expression "(-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))" (parenthesized_expression "(-1 < lVar4)" ( (binary_expression "-1 < lVar4" number_literal < identifier) )) && (parenthesized_expression "((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))" ( (binary_expression "(long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10)" (cast_expression "(long)(uVar5 + lVar4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar5 + lVar4)" ( (binary_expression "uVar5 + lVar4" identifier + identifier) ))) <= (pointer_expression "*(long *)(lVar3 + 0x10)" * (cast_expression "(long *)(lVar3 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }" { (return_statement "return lVar4 + *(long *)(lVar3 + 0x18);" return (binary_expression "lVar4 + *(long *)(lVar3 + 0x18)" identifier + (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) ))))) ;) })) comment (expression_statement "FUN_001efe60();" (call_expression "FUN_001efe60()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "FUN_001e9890("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_001e9890("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: uchar * do_section_contents(Sized_relobj_incr<32,_true> * this, uint\n   shndx, section_size_type * plen, bool param_3) */\n\nuchar * __thiscall\ngold::Sized_relobj_incr<32,_true>::do_section_contents\n          (Sized_relobj_incr<32,_true> *this,uint shndx,section_size_type *plen,bool param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  Output_section *pOVar3;\n  uchar *puVar4;\n  Output_file *size;\n  long lVar5;\n  Output_file *this_1;\n  ulong start;\n  \n  pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl\n           ._M_start[shndx];\n  if (pOVar3 == (Output_section *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if (((pOVar3->super_Output_data).field_0x20 & 4) != 0) {\n    start = (ulong)((shndx - 1) * 0x10);\n    lVar5 = start + 0x20 + (ulong)(this->input_reader_).info_offset_;\n    puVar4 = ((this->input_reader_).inputs_)->p_;\n    uVar1 = *(uint *)(puVar4 + lVar5 + 8);\n    uVar2 = *(uint *)(puVar4 + lVar5 + 0xc);\n    this_1 = (Output_file *)\n             (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    );\n    lVar5 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + (pOVar3->super_Output_data).offset_;\n    *plen = (section_size_type)this_1;\n    size = (this->ibase_->super_Incremental_binary).output_;\n    if ((-1 < lVar5) &&\n       (this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_)) {\n      return size->base_ + lVar5;\n    }\n                    /* WARNING: Subroutine does not return */\n    Output_file::get_output_view((Output_file *)this,start,(size_t)size,this_1);\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n}\n\n" comment (ERROR "uchar * __thiscall\ngold::Sized_relobj_incr<32,_true>::do_section_contents\n          (Sized_relobj_incr<32,_true> *this,uint shndx,section_size_type *plen,bool param_3)" (binary_expression "uchar * __thiscall\ngold::Sized_relobj_incr<32,_true>::do_section_contents\n          (Sized_relobj_incr<32,_true> *this,uint shndx,section_size_type *plen,bool param_3)" (binary_expression "uchar * __thiscall\ngold::Sized_relobj_incr<32" (binary_expression "uchar * __thiscall" identifier * identifier) (ERROR "gold::Sized_relobj_incr" identifier : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) (call_expression "do_section_contents\n          (Sized_relobj_incr<32,_true> *this,uint shndx,section_size_type *plen,bool param_3)" identifier (argument_list "(Sized_relobj_incr<32,_true> *this,uint shndx,section_size_type *plen,bool param_3)" ( (binary_expression "Sized_relobj_incr<32" identifier < number_literal) , (binary_expression "_true> *this" identifier > (pointer_expression "*this" * identifier)) , (ERROR "uint" identifier) identifier , (binary_expression "section_size_type *plen" identifier * identifier) , (ERROR "bool" identifier) identifier ))))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  Output_section *pOVar3;\n  uchar *puVar4;\n  Output_file *size;\n  long lVar5;\n  Output_file *this_1;\n  ulong start;\n  \n  pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl\n           ._M_start[shndx];\n  if (pOVar3 == (Output_section *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if (((pOVar3->super_Output_data).field_0x20 & 4) != 0) {\n    start = (ulong)((shndx - 1) * 0x10);\n    lVar5 = start + 0x20 + (ulong)(this->input_reader_).info_offset_;\n    puVar4 = ((this->input_reader_).inputs_)->p_;\n    uVar1 = *(uint *)(puVar4 + lVar5 + 8);\n    uVar2 = *(uint *)(puVar4 + lVar5 + 0xc);\n    this_1 = (Output_file *)\n             (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    );\n    lVar5 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + (pOVar3->super_Output_data).offset_;\n    *plen = (section_size_type)this_1;\n    size = (this->ibase_->super_Incremental_binary).output_;\n    if ((-1 < lVar5) &&\n       (this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_)) {\n      return size->base_ + lVar5;\n    }\n                    /* WARNING: Subroutine does not return */\n    Output_file::get_output_view((Output_file *)this,start,(size_t)size,this_1);\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "Output_section *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "Output_file *size;" type_identifier (pointer_declarator "*size" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "Output_file *this_1;" type_identifier (pointer_declarator "*this_1" * identifier) ;) (declaration "ulong start;" type_identifier identifier ;) (expression_statement "pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl\n           ._M_start[shndx];" (subscript_expression "pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl\n           ._M_start[shndx]" (field_expression "pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl\n           ._M_start" (field_expression "pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold::Output_section*,_std" (assignment_expression "pOVar3 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold" identifier = (binary_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base<gold" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.\n           super__Vector_base" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_" (field_expression "(this->super_Sized_relobj<32,_true>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<32,_true>)" ( (comma_expression "this->super_Sized_relobj<32,_true" (binary_expression "this->super_Sized_relobj<32" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . 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) [ identifier ]) ;) (if_statement "if (pOVar3 == (Output_section *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }" if (parenthesized_expression "(pOVar3 == (Output_section *)0x0)" ( (binary_expression "pOVar3 == (Output_section *)0x0" identifier == (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/incremental.cc",0x8fa,"do_section_contents");" (call_expression "do_gold_unreachable("../../gold/incremental.cc",0x8fa,"do_section_contents")" identifier (argument_list "("../../gold/incremental.cc",0x8fa,"do_section_contents")" ( (string_literal ""../../gold/incremental.cc"" " string_content ") , number_literal , (string_literal ""do_section_contents"" " string_content ") ))) ;) })) (if_statement "if (((pOVar3->super_Output_data).field_0x20 & 4) != 0) {\n    start = (ulong)((shndx - 1) * 0x10);\n    lVar5 = start + 0x20 + (ulong)(this->input_reader_).info_offset_;\n    puVar4 = ((this->input_reader_).inputs_)->p_;\n    uVar1 = *(uint *)(puVar4 + lVar5 + 8);\n    uVar2 = *(uint *)(puVar4 + lVar5 + 0xc);\n    this_1 = (Output_file *)\n             (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    );\n    lVar5 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + (pOVar3->super_Output_data).offset_;\n    *plen = (section_size_type)this_1;\n    size = (this->ibase_->super_Incremental_binary).output_;\n    if ((-1 < lVar5) &&\n       (this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_)) {\n      return size->base_ + lVar5;\n    }\n                    /* WARNING: Subroutine does not return */\n    Output_file::get_output_view((Output_file *)this,start,(size_t)size,this_1);\n  }" if (parenthesized_expression "(((pOVar3->super_Output_data).field_0x20 & 4) != 0)" ( (binary_expression "((pOVar3->super_Output_data).field_0x20 & 4) != 0" (parenthesized_expression "((pOVar3->super_Output_data).field_0x20 & 4)" ( (binary_expression "(pOVar3->super_Output_data).field_0x20 & 4" (field_expression "(pOVar3->super_Output_data).field_0x20" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    start = (ulong)((shndx - 1) * 0x10);\n    lVar5 = start + 0x20 + (ulong)(this->input_reader_).info_offset_;\n    puVar4 = ((this->input_reader_).inputs_)->p_;\n    uVar1 = *(uint *)(puVar4 + lVar5 + 8);\n    uVar2 = *(uint *)(puVar4 + lVar5 + 0xc);\n    this_1 = (Output_file *)\n             (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    );\n    lVar5 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + (pOVar3->super_Output_data).offset_;\n    *plen = (section_size_type)this_1;\n    size = (this->ibase_->super_Incremental_binary).output_;\n    if ((-1 < lVar5) &&\n       (this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_)) {\n      return size->base_ + lVar5;\n    }\n                    /* WARNING: Subroutine does not return */\n    Output_file::get_output_view((Output_file *)this,start,(size_t)size,this_1);\n  }" { (expression_statement "start = (ulong)((shndx - 1) * 0x10);" (assignment_expression "start = (ulong)((shndx - 1) * 0x10)" identifier = (call_expression "(ulong)((shndx - 1) * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((shndx - 1) * 0x10)" ( (binary_expression "(shndx - 1) * 0x10" (parenthesized_expression "(shndx - 1)" ( (binary_expression "shndx - 1" identifier - number_literal) )) * number_literal) )))) ;) (expression_statement "lVar5 = start + 0x20 + (ulong)(this->input_reader_).info_offset_;" (assignment_expression "lVar5 = start + 0x20 + (ulong)(this->input_reader_).info_offset_" identifier = (binary_expression "start + 0x20 + (ulong)(this->input_reader_).info_offset_" (binary_expression "start + 0x20" identifier + number_literal) + (field_expression "(ulong)(this->input_reader_).info_offset_" (call_expression "(ulong)(this->input_reader_)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(this->input_reader_)" ( (field_expression "this->input_reader_" identifier -> field_identifier) ))) . field_identifier))) ;) (expression_statement "puVar4 = ((this->input_reader_).inputs_)->p_;" (assignment_expression "puVar4 = ((this->input_reader_).inputs_)->p_" identifier = (field_expression "((this->input_reader_).inputs_)->p_" (parenthesized_expression "((this->input_reader_).inputs_)" ( (field_expression "(this->input_reader_).inputs_" (parenthesized_expression "(this->input_reader_)" ( (field_expression "this->input_reader_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (expression_statement "uVar1 = *(uint *)(puVar4 + lVar5 + 8);" (assignment_expression "uVar1 = *(uint *)(puVar4 + lVar5 + 8)" identifier = (pointer_expression "*(uint *)(puVar4 + lVar5 + 8)" * (cast_expression "(uint *)(puVar4 + lVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + lVar5 + 8)" ( (binary_expression "puVar4 + lVar5 + 8" (binary_expression "puVar4 + lVar5" identifier + identifier) + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(puVar4 + lVar5 + 0xc);" (assignment_expression "uVar2 = *(uint *)(puVar4 + lVar5 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar4 + lVar5 + 0xc)" * (cast_expression "(uint *)(puVar4 + lVar5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + lVar5 + 0xc)" ( (binary_expression "puVar4 + lVar5 + 0xc" (binary_expression "puVar4 + lVar5" identifier + identifier) + number_literal) ))))) ;) (expression_statement "this_1 = (Output_file *)\n             (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    );" (assignment_expression "this_1 = (Output_file *)\n             (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    )" identifier = (cast_expression "(Output_file *)\n             (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    )" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    )" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18\n                    )" ( (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal)) ))))) ;) (expression_statement "lVar5 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + (pOVar3->super_Output_data).offset_;" (assignment_expression "lVar5 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + (pOVar3->super_Output_data).offset_" identifier = (binary_expression "(ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + (pOVar3->super_Output_data).offset_" (call_expression "(ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" ( (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) ))) + (field_expression "(pOVar3->super_Output_data).offset_" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*plen = (section_size_type)this_1;" (assignment_expression "*plen = (section_size_type)this_1" (pointer_expression "*plen" * identifier) = (cast_expression "(section_size_type)this_1" ( (type_descriptor "section_size_type" type_identifier) ) identifier)) ;) (expression_statement "size = (this->ibase_->super_Incremental_binary).output_;" (assignment_expression "size = (this->ibase_->super_Incremental_binary).output_" identifier = (field_expression "(this->ibase_->super_Incremental_binary).output_" (parenthesized_expression "(this->ibase_->super_Incremental_binary)" ( (field_expression "this->ibase_->super_Incremental_binary" (field_expression "this->ibase_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((-1 < lVar5) &&\n       (this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_)) {\n      return size->base_ + lVar5;\n    }" if (parenthesized_expression "((-1 < lVar5) &&\n       (this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_))" ( (binary_expression "(-1 < lVar5) &&\n       (this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_)" (parenthesized_expression "(-1 < lVar5)" ( (binary_expression "-1 < lVar5" number_literal < identifier) )) && (parenthesized_expression "(this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_)" ( (comma_expression "this_1 = (Output_file *)((long)&this_1->name_ + lVar5), (long)this_1 <= size->file_size_" (assignment_expression "this_1 = (Output_file *)((long)&this_1->name_ + lVar5)" identifier = (cast_expression "(Output_file *)((long)&this_1->name_ + lVar5)" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&this_1->name_ + lVar5)" ( (binary_expression "(long)&this_1->name_ + lVar5" (cast_expression "(long)&this_1->name_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&this_1->name_" & (field_expression "this_1->name_" identifier -> field_identifier))) + identifier) )))) , (binary_expression "(long)this_1 <= size->file_size_" (cast_expression "(long)this_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= (field_expression "size->file_size_" identifier -> field_identifier))) ))) )) (compound_statement "{\n      return size->base_ + lVar5;\n    }" { (return_statement "return size->base_ + lVar5;" return (binary_expression "size->base_ + lVar5" (field_expression "size->base_" identifier -> field_identifier) + identifier) ;) })) comment (labeled_statement "Output_file::get_output_view((Output_file *)this,start,(size_t)size,this_1);" statement_identifier : (ERROR ":" :) (expression_statement "get_output_view((Output_file *)this,start,(size_t)size,this_1);" (call_expression "get_output_view((Output_file *)this,start,(size_t)size,this_1)" identifier (argument_list "((Output_file *)this,start,(size_t)size,this_1)" ( (cast_expression "(Output_file *)this" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(size_t)size" ( (type_descriptor "size_t" primitive_type) ) identifier) , identifier ))) ;)) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) }))
(translation_unit "long FUN_001f4500(long param_1,uint param_2,ulong *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);\n  if (lVar3 == 0) {\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }\n                    \n  FUN_001e9890("../../gold/output.h",0xe3,"offset");\n}\n\n" (function_definition "long FUN_001f4500(long param_1,uint param_2,ulong *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);\n  if (lVar3 == 0) {\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }\n                    \n  FUN_001e9890("../../gold/output.h",0xe3,"offset");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001f4500(long param_1,uint param_2,ulong *param_3)" identifier (parameter_list "(long param_1,uint param_2,ulong *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "ulong *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);\n  if (lVar3 == 0) {\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }\n                    \n  FUN_001e9890("../../gold/output.h",0xe3,"offset");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (expression_statement "lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" ( (binary_expression "*(long *)(param_1 + 0x50) + (ulong)param_2 * 8" (pointer_expression "*(long *)(param_1 + 0x50)" * (cast_expression "(long *)(param_1 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) + (binary_expression "(ulong)param_2 * 8" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (lVar3 == 0) {\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }" { (expression_statement "FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");" (call_expression "FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents")" identifier (argument_list "("../../gold/incremental.cc",0x8fa,"do_section_contents")" ( (string_literal ""../../gold/incremental.cc"" " string_content ") , number_literal , (string_literal ""do_section_contents"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }" if (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 4) != 0)" ( (binary_expression "(*(byte *)(lVar3 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 4)" ( (binary_expression "*(byte *)(lVar3 + 0x20) & 4" (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    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }" { (expression_statement "lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);" (assignment_expression "lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108)" identifier = (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108)" (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118)" (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20" (call_expression "(ulong)((param_2 - 1) * 0x10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((param_2 - 1) * 0x10)" ( (binary_expression "(param_2 - 1) * 0x10" (parenthesized_expression "(param_2 - 1)" ( (binary_expression "param_2 - 1" identifier - number_literal) )) * number_literal) ))) + number_literal) + (binary_expression "(ulong)*(uint *)(param_1 + 0x118)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x118)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) ))))) + (pointer_expression "**(long **)(param_1 + 0x108)" * (pointer_expression "*(long **)(param_1 + 0x108)" * (cast_expression "(long **)(param_1 + 0x108)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) ))))))) ;) (expression_statement "uVar1 = *(uint *)(lVar4 + 8);" (assignment_expression "uVar1 = *(uint *)(lVar4 + 8)" identifier = (pointer_expression "*(uint *)(lVar4 + 8)" * (cast_expression "(uint *)(lVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(lVar4 + 0xc);" (assignment_expression "uVar2 = *(uint *)(lVar4 + 0xc)" identifier = (pointer_expression "*(uint *)(lVar4 + 0xc)" * (cast_expression "(uint *)(lVar4 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xc)" ( (binary_expression "lVar4 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;" (assignment_expression "uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" identifier = (call_expression "(ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" ( (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);" (assignment_expression "lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18)" identifier = (binary_expression "(ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18)" (call_expression "(ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" ( (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) ))) + (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))))) ;) (expression_statement "*param_3 = uVar5;" (assignment_expression "*param_3 = uVar5" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0xf8) + 0x50)" * (cast_expression "(long *)(*(long *)(param_1 + 0xf8) + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0xf8) + 0x50)" ( (binary_expression "*(long *)(param_1 + 0xf8) + 0x50" (pointer_expression "*(long *)(param_1 + 0xf8)" * (cast_expression "(long *)(param_1 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }" if (parenthesized_expression "((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10)))" ( (binary_expression "(-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))" (parenthesized_expression "(-1 < lVar4)" ( (binary_expression "-1 < lVar4" number_literal < identifier) )) && (parenthesized_expression "((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))" ( (binary_expression "(long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10)" (cast_expression "(long)(uVar5 + lVar4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar5 + lVar4)" ( (binary_expression "uVar5 + lVar4" identifier + identifier) ))) <= (pointer_expression "*(long *)(lVar3 + 0x10)" * (cast_expression "(long *)(lVar3 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x10)" ( (binary_expression "lVar3 + 0x10" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }" { (return_statement "return lVar4 + *(long *)(lVar3 + 0x18);" return (binary_expression "lVar4 + *(long *)(lVar3 + 0x18)" identifier + (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_001efe60();" (call_expression "FUN_001efe60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_001e9890("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_001e9890("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (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 (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT) ))) + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) ))) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) <= (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (return_statement return (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "long FUN_001f4500(long param_1,uint param_2,ulong *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);\n  if (lVar3 == 0) {\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }\n                    \n  FUN_001e9890("../../gold/output.h",0xe3,"offset");\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_001f4500(long param_1,uint param_2,ulong *param_3)" (identifier "FUN_001f4500") (parameter_list "(long param_1,uint param_2,ulong *param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "ulong *param_3" (type_identifier "ulong") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long lVar4;\n  ulong uVar5;\n  \n  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);\n  if (lVar3 == 0) {\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }\n  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }\n                    \n  FUN_001e9890("../../gold/output.h",0xe3,"offset");\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (expression_statement "lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x50) + (ulong)param_2 * 8" (pointer_expression "*(long *)(param_1 + 0x50)" (* "*") (cast_expression "(long *)(param_1 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (binary_expression "(ulong)param_2 * 8" (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2")) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (lVar3 == 0) {\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");\n  }" ({ "{") (expression_statement "FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");" (call_expression "FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents")" (identifier "FUN_001e9890") (argument_list "("../../gold/incremental.cc",0x8fa,"do_section_contents")" (( "(") (string_literal ""../../gold/incremental.cc"" (" """) (string_content "../../gold/incremental.cc") (" """)) (, ",") (number_literal "0x8fa") (, ",") (string_literal ""do_section_contents"" (" """) (string_content "do_section_contents") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }" (if "if") (parenthesized_expression "((*(byte *)(lVar3 + 0x20) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(lVar3 + 0x20) & 4) != 0" (parenthesized_expression "(*(byte *)(lVar3 + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(lVar3 + 0x20) & 4" (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 "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);\n    uVar1 = *(uint *)(lVar4 + 8);\n    uVar2 = *(uint *)(lVar4 + 0xc);\n    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;\n    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);\n    *param_3 = uVar5;\n    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);\n    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }\n                    \n    FUN_001efe60();\n  }" ({ "{") (expression_statement "lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108);" (assignment_expression "lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108)" (identifier "lVar4") (= "=") (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +\n            **(long **)(param_1 + 0x108)" (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118)" (binary_expression "(ulong)((param_2 - 1) * 0x10) + 0x20" (call_expression "(ulong)((param_2 - 1) * 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((param_2 - 1) * 0x10)" (( "(") (binary_expression "(param_2 - 1) * 0x10" (parenthesized_expression "(param_2 - 1)" (( "(") (binary_expression "param_2 - 1" (identifier "param_2") (- "-") (number_literal "1")) () ")")) (* "*") (number_literal "0x10")) () ")"))) (+ "+") (number_literal "0x20")) (+ "+") (binary_expression "(ulong)*(uint *)(param_1 + 0x118)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x118)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")"))))) (+ "+") (pointer_expression "**(long **)(param_1 + 0x108)" (* "*") (pointer_expression "*(long **)(param_1 + 0x108)" (* "*") (cast_expression "(long **)(param_1 + 0x108)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")"))))))) (; ";")) (expression_statement "uVar1 = *(uint *)(lVar4 + 8);" (assignment_expression "uVar1 = *(uint *)(lVar4 + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(lVar4 + 8)" (* "*") (cast_expression "(uint *)(lVar4 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(lVar4 + 0xc);" (assignment_expression "uVar2 = *(uint *)(lVar4 + 0xc)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(lVar4 + 0xc)" (* "*") (cast_expression "(uint *)(lVar4 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0xc)" (( "(") (binary_expression "lVar4 + 0xc" (identifier "lVar4") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)\n    ;" (assignment_expression "uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (identifier "uVar5") (= "=") (call_expression "(ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (( "(") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar2 << 0x18" (identifier "uVar2") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18);" (assignment_expression "lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18)" (identifier "lVar4") (= "=") (binary_expression "(ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)\n            + *(long *)(lVar3 + 0x18)" (call_expression "(ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" (( "(") (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" (identifier "uVar1") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar1 << 0x18" (identifier "uVar1") (<< "<<") (number_literal "0x18"))) () ")"))) (+ "+") (pointer_expression "*(long *)(lVar3 + 0x18)" (* "*") (cast_expression "(long *)(lVar3 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (expression_statement "*param_3 = uVar5;" (assignment_expression "*param_3 = uVar5" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);" (assignment_expression "lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(*(long *)(param_1 + 0xf8) + 0x50)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0xf8) + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0xf8) + 0x50)" (( "(") (binary_expression "*(long *)(param_1 + 0xf8) + 0x50" (pointer_expression "*(long *)(param_1 + 0xf8)" (* "*") (cast_expression "(long *)(param_1 + 0xf8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (if_statement "if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }" (if "if") (parenthesized_expression "((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10)))" (( "(") (binary_expression "(-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))" (parenthesized_expression "(-1 < lVar4)" (( "(") (binary_expression "-1 < lVar4" (number_literal "-1") (< "<") (identifier "lVar4")) () ")")) (&& "&&") (parenthesized_expression "((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))" (( "(") (binary_expression "(long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10)" (cast_expression "(long)(uVar5 + lVar4)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(uVar5 + lVar4)" (( "(") (binary_expression "uVar5 + lVar4" (identifier "uVar5") (+ "+") (identifier "lVar4")) () ")"))) (<= "<=") (pointer_expression "*(long *)(lVar3 + 0x10)" (* "*") (cast_expression "(long *)(lVar3 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x10)" (( "(") (binary_expression "lVar3 + 0x10" (identifier "lVar3") (+ "+") (number_literal "0x10")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      return lVar4 + *(long *)(lVar3 + 0x18);\n    }" ({ "{") (return_statement "return lVar4 + *(long *)(lVar3 + 0x18);" (return "return") (binary_expression "lVar4 + *(long *)(lVar3 + 0x18)" (identifier "lVar4") (+ "+") (pointer_expression "*(long *)(lVar3 + 0x18)" (* "*") (cast_expression "(long *)(lVar3 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}"))) (expression_statement "FUN_001efe60();" (call_expression "FUN_001efe60()" (identifier "FUN_001efe60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001e9890("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_001e9890("../../gold/output.h",0xe3,"offset")" (identifier "FUN_001e9890") (argument_list "("../../gold/output.h",0xe3,"offset")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: uchar * do_section_contents(Sized_relobj_incr<32,_true> * this, uint
   shndx, section_size_type * plen, bool param_3) */

type_3 * __thiscall
var_1::Sized_relobj_incr<32,_true>::do_section_contents
          (Sized_relobj_incr<32,_true> *this,type_1 var_6,type_6 *plen,bool param_3)

{
  type_1 var_11;
  type_1 var_10;
  type_2 *var_4;
  type_3 *var_8;
  type_4 *size;
  long var_9;
  type_4 *this_1;
  type_5 var_7;
  
  var_4 = (this->super_Sized_relobj<32,_true>).super_Relobj.output_sections_.
           super__Vector_base<var_1::type_2*,var_2::allocator<var_1::type_2*>var_3>._M_impl
           ._M_start[var_6];
  if (var_4 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_5("../../gold/incremental.cc",0x8fa,"do_section_contents");
  }
  if (((var_4->super_Output_data).field_0x20 & 4) != 0) {
    var_7 = (type_5)((var_6 - 1) * 0x10);
    var_9 = var_7 + 0x20 + (type_5)(this->input_reader_).info_offset_;
    var_8 = ((this->input_reader_).inputs_)->p_;
    var_11 = *(type_1 *)(var_8 + var_9 + 8);
    var_10 = *(type_1 *)(var_8 + var_9 + 0xc);
    this_1 = (type_4 *)
             (type_5)(var_10 >> 0x18 | (var_10 & 0xff0000) >> 8 | (var_10 & 0xff00) << 8 | var_10 << 0x18
                    );
    var_9 = (type_5)(var_11 >> 0x18 | (var_11 & 0xff0000) >> 8 | (var_11 & 0xff00) << 8 | var_11 << 0x18)
            + (var_4->super_Output_data).offset_;
    *plen = (type_6)this_1;
    size = (this->ibase_->super_Incremental_binary).output_;
    if ((-1 < var_9) &&
       (this_1 = (type_4 *)((long)&this_1->name_ + var_9), (long)this_1 <= size->file_size_)) {
      return size->base_ + var_9;
    }
                    /* WARNING: Subroutine does not return */
    Output_file::var_12((type_4 *)this,var_7,(size_t)size,this_1);
  }
                    /* WARNING: Subroutine does not return */
  var_5("../../gold/output.h",0xe3,"offset");
}


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

{
  uint uVar1;
  uint uVar2;
  long lVar3;
  long lVar4;
  ulong uVar5;
  
  lVar3 = *(long *)(*(long *)(param_1 + 0x50) + (ulong)param_2 * 8);
  if (lVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_001e9890("../../gold/incremental.cc",0x8fa,"do_section_contents");
  }
  if ((*(byte *)(lVar3 + 0x20) & 4) != 0) {
    lVar4 = (ulong)((param_2 - 1) * 0x10) + 0x20 + (ulong)*(uint *)(param_1 + 0x118) +
            **(long **)(param_1 + 0x108);
    uVar1 = *(uint *)(lVar4 + 8);
    uVar2 = *(uint *)(lVar4 + 0xc);
    uVar5 = (ulong)(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)
    ;
    lVar4 = (ulong)(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)
            + *(long *)(lVar3 + 0x18);
    *param_3 = uVar5;
    lVar3 = *(long *)(*(long *)(param_1 + 0xf8) + 0x50);
    if ((-1 < lVar4) && ((long)(uVar5 + lVar4) <= *(long *)(lVar3 + 0x10))) {
      return lVar4 + *(long *)(lVar3 + 0x18);
    }
                    /* WARNING: Subroutine does not return */
    FUN_001efe60();
  }
                    /* WARNING: Subroutine does not return */
  FUN_001e9890("../../gold/output.h",0xe3,"offset");
}

