
/* DWARF original prototype: off_t read_header(Archive * this, off_t off, bool cache, string *
   pname, off_t * nested_off) */

off_t __thiscall
gold::Archive::read_header(Archive *this,off_t off,bool cache,string *pname,off_t *nested_off)

{
  Archive_header *hdr;
  off_t oVar1;
  
  hdr = (Archive_header *)File_read::get_view(&this->input_file_->file_,0,off,0x3c,true,cache);
  oVar1 = interpret_header(this,hdr,off,pname,nested_off);
  return oVar1;
}



void FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,
                 undefined8 param_5)

{
  undefined8 uVar1;
  
  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);
  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);
  return;
}


PUSH R13
MOVZX R9D,DL
MOV R13,R8
MOV RDX,RSI
PUSH R12
MOV R8D,0x1
MOV R12,RCX
MOV ECX,0x3c
PUSH RBP
MOV RBP,RSI
XOR ESI,ESI
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
MOV RAX,qword ptr [RDI + 0x38]
LEA RDI,[RAX + 0x28]
CALL 0x0016b970
ADD RSP,0x8
MOV R8,R13
MOV RCX,R12
MOV RDX,RBP
MOV RDI,RBX
MOV RSI,RAX
POP RBX
POP RBP
POP R12
POP R13
JMP 0x00233830
(translation_unit "void FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined8 uVar1;\n  \n  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);\n  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);\n  return;\n}\n\n" (function_definition "void FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined8 uVar1;\n  \n  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);\n  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);\n  return;\n}" primitive_type (function_declarator "FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined1 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  \n  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);\n  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);" (assignment_expression "uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" identifier = (call_expression "FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" identifier (argument_list "(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" ( (binary_expression "*(long *)(param_1 + 0x38) + 0x28" (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + number_literal) , number_literal , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "FUN_00233830(param_1,uVar1,param_2,param_4,param_5);" (call_expression "FUN_00233830(param_1,uVar1,param_2,param_4,param_5)" identifier (argument_list "(param_1,uVar1,param_2,param_4,param_5)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: off_t read_header(Archive * this, off_t off, bool cache, string *\n   pname, off_t * nested_off) */\n\noff_t __thiscall\ngold::Archive::read_header(Archive *this,off_t off,bool cache,string *pname,off_t *nested_off)\n\n{\n  Archive_header *hdr;\n  off_t oVar1;\n  \n  hdr = (Archive_header *)File_read::get_view(&this->input_file_->file_,0,off,0x3c,true,cache);\n  oVar1 = interpret_header(this,hdr,off,pname,nested_off);\n  return oVar1;\n}\n\n" comment (function_definition "off_t __thiscall\ngold::Archive::read_header(Archive *this,off_t off,bool cache,string *pname,off_t *nested_off)\n\n{\n  Archive_header *hdr;\n  off_t oVar1;\n  \n  hdr = (Archive_header *)File_read::get_view(&this->input_file_->file_,0,off,0x3c,true,cache);\n  oVar1 = interpret_header(this,hdr,off,pname,nested_off);\n  return oVar1;\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::" identifier : : identifier : :) (function_declarator "read_header(Archive *this,off_t off,bool cache,string *pname,off_t *nested_off)" identifier (parameter_list "(Archive *this,off_t off,bool cache,string *pname,off_t *nested_off)" ( (parameter_declaration "Archive *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t off" type_identifier identifier) , (parameter_declaration "bool cache" primitive_type identifier) , (parameter_declaration "string *pname" type_identifier (pointer_declarator "*pname" * identifier)) , (parameter_declaration "off_t *nested_off" type_identifier (pointer_declarator "*nested_off" * identifier)) ))) (compound_statement "{\n  Archive_header *hdr;\n  off_t oVar1;\n  \n  hdr = (Archive_header *)File_read::get_view(&this->input_file_->file_,0,off,0x3c,true,cache);\n  oVar1 = interpret_header(this,hdr,off,pname,nested_off);\n  return oVar1;\n}" { (declaration "Archive_header *hdr;" type_identifier (pointer_declarator "*hdr" * identifier) ;) (declaration "off_t oVar1;" type_identifier identifier ;) (ERROR "hdr = (Archive_header *)File_read::" (assignment_expression "hdr = (Archive_header *)File_read" identifier = (cast_expression "(Archive_header *)File_read" ( (type_descriptor "Archive_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "get_view(&this->input_file_->file_,0,off,0x3c,true,cache);" (call_expression "get_view(&this->input_file_->file_,0,off,0x3c,true,cache)" identifier (argument_list "(&this->input_file_->file_,0,off,0x3c,true,cache)" ( (pointer_expression "&this->input_file_->file_" & (field_expression "this->input_file_->file_" (field_expression "this->input_file_" identifier -> field_identifier) -> field_identifier)) , number_literal , identifier , number_literal , true , identifier ))) ;) (expression_statement "oVar1 = interpret_header(this,hdr,off,pname,nested_off);" (assignment_expression "oVar1 = interpret_header(this,hdr,off,pname,nested_off)" identifier = (call_expression "interpret_header(this,hdr,off,pname,nested_off)" identifier (argument_list "(this,hdr,off,pname,nested_off)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return oVar1;" return identifier ;) })))
(translation_unit "void FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined8 uVar1;\n  \n  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);\n  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);\n  return;\n}\n\n" (function_definition "void FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined8 uVar1;\n  \n  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);\n  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);\n  return;\n}" primitive_type (function_declarator "FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined1 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  \n  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);\n  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);" (assignment_expression "uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" identifier = (call_expression "FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" identifier (argument_list "(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" ( (binary_expression "*(long *)(param_1 + 0x38) + 0x28" (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + number_literal) , number_literal , identifier , number_literal , number_literal , identifier )))) ;) (expression_statement "FUN_00233830(param_1,uVar1,param_2,param_4,param_5);" (call_expression "FUN_00233830(param_1,uVar1,param_2,param_4,param_5)" identifier (argument_list "(param_1,uVar1,param_2,param_4,param_5)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , IDENT , LIT , LIT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  undefined8 uVar1;\n  \n  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);\n  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00233b80(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)" (identifier "FUN_00233b80") (parameter_list "(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,\n                 undefined8 param_5)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined1 param_3" (type_identifier "undefined1") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  \n  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);\n  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (expression_statement "uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);" (assignment_expression "uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" (identifier "uVar1") (= "=") (call_expression "FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" (identifier "FUN_0016b970") (argument_list "(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3)" (( "(") (binary_expression "*(long *)(param_1 + 0x38) + 0x28" (pointer_expression "*(long *)(param_1 + 0x38)" (* "*") (cast_expression "(long *)(param_1 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (number_literal "0") (, ",") (identifier "param_2") (, ",") (number_literal "0x3c") (, ",") (number_literal "1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "FUN_00233830(param_1,uVar1,param_2,param_4,param_5);" (call_expression "FUN_00233830(param_1,uVar1,param_2,param_4,param_5)" (identifier "FUN_00233830") (argument_list "(param_1,uVar1,param_2,param_4,param_5)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") (, ",") (identifier "param_2") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: off_t read_header(Archive * this, off_t off, bool cache, string *
   pname, off_t * nested_off) */

type_1 __thiscall
gold::type_2::function_1(type_2 *this,type_1 off,bool cache,type_3 *pname,type_1 *nested_off)

{
  type_4 *hdr;
  type_1 oVar1;
  
  hdr = (type_4 *)File_read::var_1(&this->input_file_->file_,0,off,0x3c,true,cache);
  oVar1 = var_2(this,hdr,off,pname,nested_off);
  return oVar1;
}


(translation_unit (function_definition type: (primitive_type) 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: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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)) (number_literal) (identifier) (number_literal) (number_literal) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier)))) (return_statement))))

void MASKED(long param_1,undefined8 param_2,undefined1 param_3,undefined8 param_4,
                 undefined8 param_5)

{
  undefined8 uVar1;
  
  uVar1 = FUN_0016b970(*(long *)(param_1 + 0x38) + 0x28,0,param_2,0x3c,1,param_3);
  FUN_00233830(param_1,uVar1,param_2,param_4,param_5);
  return;
}

