
/* DWARF original prototype: Output_section * section_with_lowest_load_address(Output_segment *
   this) */

Output_section * __thiscall
gold::Output_segment::section_with_lowest_load_address(Output_segment *this)

{
  Output_segment *pdl;
  Output_section *found;
  uint64_t found_lma;
  
  found = (Output_section *)0x0;
  found_lma = 0;
  pdl = this;
  do {
    lowest_load_address_in_list(this,pdl->output_lists_,&found,&found_lma);
    pdl = (Output_segment *)
          (&pdl->output_lists_[0].
            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1);
  } while (pdl != (Output_segment *)&this->vaddr_);
  return found;
}



undefined8 FUN_001f8560(long param_1)

{
  long lVar1;
  undefined8 local_38;
  undefined8 local_30;
  
  local_38 = 0;
  local_30 = 0;
  lVar1 = param_1;
  do {
    FUN_001f8450(param_1,lVar1,&local_38,&local_30);
    lVar1 = lVar1 + 0x18;
  } while (lVar1 != param_1 + 0x2b8);
  return local_38;
}


PUSH R14
LEA R14,[RDI + 0x2b8]
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RDI
SUB RSP,0x10
MOV qword ptr [RSP],0x0
LEA R13,[RSP + 0x8]
MOV R12,RSP
MOV qword ptr [RSP + 0x8],0x0
NOP word ptr [RAX + RAX*0x1]
MOV RSI,RBX
MOV RCX,R13
MOV RDX,R12
MOV RDI,RBP
CALL 0x001f8450
ADD RBX,0x18
CMP RBX,R14
JNZ 0x001f8598
MOV RAX,qword ptr [RSP]
ADD RSP,0x10
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
(translation_unit "undefined8 FUN_001f8560(long param_1)\n\n{\n  long lVar1;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  local_38 = 0;\n  local_30 = 0;\n  lVar1 = param_1;\n  do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);\n  return local_38;\n}\n\n" (function_definition "undefined8 FUN_001f8560(long param_1)\n\n{\n  long lVar1;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  local_38 = 0;\n  local_30 = 0;\n  lVar1 = param_1;\n  do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);\n  return local_38;\n}" type_identifier (function_declarator "FUN_001f8560(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  local_38 = 0;\n  local_30 = 0;\n  lVar1 = param_1;\n  do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);\n  return local_38;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_38;" type_identifier identifier ;) (declaration "undefined8 local_30;" type_identifier identifier ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "lVar1 = param_1;" (assignment_expression "lVar1 = param_1" identifier = identifier) ;) (do_statement "do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);" do (compound_statement "{\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  }" { (expression_statement "FUN_001f8450(param_1,lVar1,&local_38,&local_30);" (call_expression "FUN_001f8450(param_1,lVar1,&local_38,&local_30)" identifier (argument_list "(param_1,lVar1,&local_38,&local_30)" ( identifier , identifier , (pointer_expression "&local_38" & identifier) , (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "lVar1 = lVar1 + 0x18;" (assignment_expression "lVar1 = lVar1 + 0x18" identifier = (binary_expression "lVar1 + 0x18" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar1 != param_1 + 0x2b8)" ( (binary_expression "lVar1 != param_1 + 0x2b8" identifier != (binary_expression "param_1 + 0x2b8" identifier + number_literal)) )) ;) (return_statement "return local_38;" return identifier ;) })))
(translation_unit "/* DWARF original prototype: Output_section * section_with_lowest_load_address(Output_segment *\n   this) */\n\nOutput_section * __thiscall\ngold::Output_segment::section_with_lowest_load_address(Output_segment *this)\n\n{\n  Output_segment *pdl;\n  Output_section *found;\n  uint64_t found_lma;\n  \n  found = (Output_section *)0x0;\n  found_lma = 0;\n  pdl = this;\n  do {\n    lowest_load_address_in_list(this,pdl->output_lists_,&found,&found_lma);\n    pdl = (Output_segment *)\n          (&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1);\n  } while (pdl != (Output_segment *)&this->vaddr_);\n  return found;\n}\n\n" comment (ERROR "Output_section * __thiscall\ngold::Output_segment::section_with_lowest_load_address(Output_segment *this)" (binary_expression "Output_section * __thiscall\ngold::Output_segment::section_with_lowest_load_address(Output_segment *this" (binary_expression "Output_section * __thiscall" identifier * identifier) (ERROR "gold::Output_segment::section_with_lowest_load_address(Output_segment" identifier : : identifier : : identifier ( identifier) * identifier) )) (compound_statement "{\n  Output_segment *pdl;\n  Output_section *found;\n  uint64_t found_lma;\n  \n  found = (Output_section *)0x0;\n  found_lma = 0;\n  pdl = this;\n  do {\n    lowest_load_address_in_list(this,pdl->output_lists_,&found,&found_lma);\n    pdl = (Output_segment *)\n          (&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1);\n  } while (pdl != (Output_segment *)&this->vaddr_);\n  return found;\n}" { (declaration "Output_segment *pdl;" type_identifier (pointer_declarator "*pdl" * identifier) ;) (declaration "Output_section *found;" type_identifier (pointer_declarator "*found" * identifier) ;) (declaration "uint64_t found_lma;" primitive_type identifier ;) (expression_statement "found = (Output_section *)0x0;" (assignment_expression "found = (Output_section *)0x0" identifier = (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "found_lma = 0;" (assignment_expression "found_lma = 0" identifier = number_literal) ;) (expression_statement "pdl = this;" (assignment_expression "pdl = this" identifier = identifier) ;) (do_statement "do {\n    lowest_load_address_in_list(this,pdl->output_lists_,&found,&found_lma);\n    pdl = (Output_segment *)\n          (&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1);\n  } while (pdl != (Output_segment *)&this->vaddr_);" do (compound_statement "{\n    lowest_load_address_in_list(this,pdl->output_lists_,&found,&found_lma);\n    pdl = (Output_segment *)\n          (&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1);\n  }" { (expression_statement "lowest_load_address_in_list(this,pdl->output_lists_,&found,&found_lma);" (call_expression "lowest_load_address_in_list(this,pdl->output_lists_,&found,&found_lma)" identifier (argument_list "(this,pdl->output_lists_,&found,&found_lma)" ( identifier , (field_expression "pdl->output_lists_" identifier -> field_identifier) , (pointer_expression "&found" & identifier) , (pointer_expression "&found_lma" & identifier) ))) ;) (expression_statement "pdl = (Output_segment *)\n          (&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1);" (assignment_expression "pdl = (Output_segment *)\n          (&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1)" identifier = (cast_expression "(Output_segment *)\n          (&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1)" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1)" ( (binary_expression "&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_> + 1" (binary_expression "&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "&pdl->output_lists_[0].\n            super__Vector_base<gold::Output_data*,_std" (binary_expression "&pdl->output_lists_[0].\n            super__Vector_base<gold" (pointer_expression "&pdl->output_lists_[0].\n            super__Vector_base" & (field_expression "pdl->output_lists_[0].\n            super__Vector_base" (subscript_expression "pdl->output_lists_[0]" (field_expression "pdl->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) > (unary_expression "+ 1" + number_literal)) )))) ;) }) while (parenthesized_expression "(pdl != (Output_segment *)&this->vaddr_)" ( (binary_expression "pdl != (Output_segment *)&this->vaddr_" identifier != (cast_expression "(Output_segment *)&this->vaddr_" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->vaddr_" & (field_expression "this->vaddr_" identifier -> field_identifier)))) )) ;) (return_statement "return found;" return identifier ;) }))
(translation_unit "undefined8 FUN_001f8560(long param_1)\n\n{\n  long lVar1;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  local_38 = 0;\n  local_30 = 0;\n  lVar1 = param_1;\n  do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);\n  return local_38;\n}\n\n" (function_definition "undefined8 FUN_001f8560(long param_1)\n\n{\n  long lVar1;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  local_38 = 0;\n  local_30 = 0;\n  lVar1 = param_1;\n  do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);\n  return local_38;\n}" type_identifier (function_declarator "FUN_001f8560(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  local_38 = 0;\n  local_30 = 0;\n  lVar1 = param_1;\n  do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);\n  return local_38;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_38;" type_identifier identifier ;) (declaration "undefined8 local_30;" type_identifier identifier ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "lVar1 = param_1;" (assignment_expression "lVar1 = param_1" identifier = identifier) ;) (do_statement "do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);" do (compound_statement "{\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  }" { (expression_statement "FUN_001f8450(param_1,lVar1,&local_38,&local_30);" (call_expression "FUN_001f8450(param_1,lVar1,&local_38,&local_30)" identifier (argument_list "(param_1,lVar1,&local_38,&local_30)" ( identifier , identifier , (pointer_expression "&local_38" & identifier) , (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "lVar1 = lVar1 + 0x18;" (assignment_expression "lVar1 = lVar1 + 0x18" identifier = (binary_expression "lVar1 + 0x18" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar1 != param_1 + 0x2b8)" ( (binary_expression "lVar1 != param_1 + 0x2b8" identifier != (binary_expression "param_1 + 0x2b8" identifier + number_literal)) )) ;) (return_statement "return local_38;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_001f8560(long param_1)\n\n{\n  long lVar1;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  local_38 = 0;\n  local_30 = 0;\n  lVar1 = param_1;\n  do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);\n  return local_38;\n}" (type_identifier "undefined8") (function_declarator "FUN_001f8560(long param_1)" (identifier "FUN_001f8560") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  long lVar1;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  local_38 = 0;\n  local_30 = 0;\n  lVar1 = param_1;\n  do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);\n  return local_38;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "undefined8 local_38;" (type_identifier "undefined8") (identifier "local_38") (; ";")) (declaration "undefined8 local_30;" (type_identifier "undefined8") (identifier "local_30") (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar1 = param_1;" (assignment_expression "lVar1 = param_1" (identifier "lVar1") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  } while (lVar1 != param_1 + 0x2b8);" (do "do") (compound_statement "{\n    FUN_001f8450(param_1,lVar1,&local_38,&local_30);\n    lVar1 = lVar1 + 0x18;\n  }" ({ "{") (expression_statement "FUN_001f8450(param_1,lVar1,&local_38,&local_30);" (call_expression "FUN_001f8450(param_1,lVar1,&local_38,&local_30)" (identifier "FUN_001f8450") (argument_list "(param_1,lVar1,&local_38,&local_30)" (( "(") (identifier "param_1") (, ",") (identifier "lVar1") (, ",") (pointer_expression "&local_38" (& "&") (identifier "local_38")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (expression_statement "lVar1 = lVar1 + 0x18;" (assignment_expression "lVar1 = lVar1 + 0x18" (identifier "lVar1") (= "=") (binary_expression "lVar1 + 0x18" (identifier "lVar1") (+ "+") (number_literal "0x18"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar1 != param_1 + 0x2b8)" (( "(") (binary_expression "lVar1 != param_1 + 0x2b8" (identifier "lVar1") (!= "!=") (binary_expression "param_1 + 0x2b8" (identifier "param_1") (+ "+") (number_literal "0x2b8"))) () ")")) (; ";")) (return_statement "return local_38;" (return "return") (identifier "local_38") (; ";")) (} "}")))

/* DWARF original prototype: Output_section * section_with_lowest_load_address(Output_segment *
   this) */

type_2 * __thiscall
var_2::type_1::section_with_lowest_load_address(type_1 *this)

{
  type_1 *var_5;
  type_2 *found;
  uint64_t found_lma;
  
  found = (type_2 *)0x0;
  found_lma = 0;
  var_5 = this;
  do {
    var_1(this,var_5->output_lists_,&found,&found_lma);
    var_5 = (type_1 *)
          (&var_5->output_lists_[0].
            super__Vector_base<var_2::Output_data*,var_3::allocator<var_2::Output_data*>var_4> + 1);
  } while (var_5 != (type_1 *)&this->vaddr_);
  return found;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (return_statement (identifier)))))

undefined8 MASKED(long param_1)

{
  long lVar1;
  undefined8 local_38;
  undefined8 local_30;
  
  local_38 = 0;
  local_30 = 0;
  lVar1 = param_1;
  do {
    FUN_001f8450(param_1,lVar1,&local_38,&local_30);
    lVar1 = lVar1 + 0x18;
  } while (lVar1 != param_1 + 0x2b8);
  return local_38;
}

