
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* DWARF original prototype: File_view * get_lasting_view(File_read * this, off_t offset, off_t
   start, section_size_type size, bool aligned, bool cache) */

File_view * __thiscall
gold::File_read::get_lasting_view
          (File_read *this,off_t offset,off_t start,section_size_type size,bool aligned,bool cache)

{
  uint uVar1;
  uchar *puVar2;
  off_t oVar3;
  View *pVVar4;
  File_view *pFVar5;
  
  pVVar4 = find_or_make_view(this,offset,start,size,aligned,cache);
  pVVar4->lock_count_ = pVVar4->lock_count_ + 1;
  uVar1 = pVVar4->byteshift_;
  oVar3 = pVVar4->start_;
  puVar2 = pVVar4->data_;
  pFVar5 = (File_view *)operator_new(0xc);
  pFVar5->view_ = pVVar4;
  pFVar5->file_ = this;
  pFVar5->data_ = puVar2 + (((int)offset + (int)start + uVar1) - (int)oVar3);
  return pFVar5;
}



void FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
                 undefined4 param_6,undefined1 param_7,undefined1 param_8)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  undefined4 *puVar5;
  
  FUN_000559f2();
  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  piVar4[4] = piVar4[4] + 1;
  iVar1 = piVar4[5];
  iVar2 = *piVar4;
  iVar3 = piVar4[3];
  puVar5 = (undefined4 *)FUN_001e5200(0xc);
  puVar5[1] = piVar4;
  *puVar5 = param_1;
  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;
  return;
}


PUSH EBP
CALL 0x000559f2
ADD EBP,0x3267aa
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOVZX EAX,byte ptr [ESP + 0x4c]
MOV ECX,dword ptr [ESP + 0x3c]
MOV EBX,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [ESP + 0x38]
PUSH EAX
MOVZX EAX,byte ptr [ESP + 0x4c]
PUSH EAX
PUSH dword ptr [ESP + 0x4c]
PUSH EBX
PUSH ECX
MOV dword ptr [ESP + 0x1c],ECX
MOV dword ptr [ESP + 0x20],EBX
MOV EBX,EBP
PUSH EDI
PUSH ESI
PUSH dword ptr [ESP + 0x4c]
CALL 0x00068320
MOV ECX,dword ptr [ESP + 0x28]
ADD ESP,0x14
ADD dword ptr [EAX + 0x10],0x1
MOV EDI,EAX
ADD ESI,ECX
ADD ESI,dword ptr [EAX + 0x14]
SUB ESI,dword ptr [EAX]
ADD ESI,dword ptr [EAX + 0xc]
PUSH 0xc
CALL 0x001e5200
MOV EDX,dword ptr [ESP + 0x40]
MOV dword ptr [EAX + 0x4],EDI
MOV dword ptr [EAX],EDX
MOV dword ptr [EAX + 0x8],ESI
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  \n  FUN_000559f2();\n  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n  piVar4[4] = piVar4[4] + 1;\n  iVar1 = piVar4[5];\n  iVar2 = *piVar4;\n  iVar3 = piVar4[3];\n  puVar5 = (undefined4 *)FUN_001e5200(0xc);\n  puVar5[1] = piVar4;\n  *puVar5 = param_1;\n  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;\n  return;\n}\n\n" (function_definition "void FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  \n  FUN_000559f2();\n  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n  piVar4[4] = piVar4[4] + 1;\n  iVar1 = piVar4[5];\n  iVar2 = *piVar4;\n  iVar3 = piVar4[3];\n  puVar5 = (undefined4 *)FUN_001e5200(0xc);\n  puVar5[1] = piVar4;\n  *puVar5 = param_1;\n  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;\n  return;\n}" primitive_type (function_declarator "FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)" identifier (parameter_list "(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined1 param_7" type_identifier identifier) , (parameter_declaration "undefined1 param_8" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  \n  FUN_000559f2();\n  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n  piVar4[4] = piVar4[4] + 1;\n  iVar1 = piVar4[5];\n  iVar2 = *piVar4;\n  iVar3 = piVar4[3];\n  puVar5 = (undefined4 *)FUN_001e5200(0xc);\n  puVar5[1] = piVar4;\n  *puVar5 = param_1;\n  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);" (assignment_expression "piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" identifier = (cast_expression "(int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))))) ;) (expression_statement "piVar4[4] = piVar4[4] + 1;" (assignment_expression "piVar4[4] = piVar4[4] + 1" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = (binary_expression "piVar4[4] + 1" (subscript_expression "piVar4[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar1 = piVar4[5];" (assignment_expression "iVar1 = piVar4[5]" identifier = (subscript_expression "piVar4[5]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "iVar3 = piVar4[3];" (assignment_expression "iVar3 = piVar4[3]" identifier = (subscript_expression "piVar4[3]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = (undefined4 *)FUN_001e5200(0xc);" (assignment_expression "puVar5 = (undefined4 *)FUN_001e5200(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001e5200(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar5[1] = piVar4;" (assignment_expression "puVar5[1] = piVar4" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar5 = param_1;" (assignment_expression "*puVar5 = param_1" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;" (assignment_expression "puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (binary_expression "((param_2 + param_4 + iVar1) - iVar2) + iVar3" (parenthesized_expression "((param_2 + param_4 + iVar1) - iVar2)" ( (binary_expression "(param_2 + param_4 + iVar1) - iVar2" (parenthesized_expression "(param_2 + param_4 + iVar1)" ( (binary_expression "param_2 + param_4 + iVar1" (binary_expression "param_2 + param_4" identifier + identifier) + identifier) )) - identifier) )) + identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* DWARF original prototype: File_view * get_lasting_view(File_read * this, off_t offset, off_t\n   start, section_size_type size, bool aligned, bool cache) */\n\nFile_view * __thiscall\ngold::File_read::get_lasting_view\n          (File_read *this,off_t offset,off_t start,section_size_type size,bool aligned,bool cache)\n\n{\n  uint uVar1;\n  uchar *puVar2;\n  off_t oVar3;\n  View *pVVar4;\n  File_view *pFVar5;\n  \n  pVVar4 = find_or_make_view(this,offset,start,size,aligned,cache);\n  pVVar4->lock_count_ = pVVar4->lock_count_ + 1;\n  uVar1 = pVVar4->byteshift_;\n  oVar3 = pVVar4->start_;\n  puVar2 = pVVar4->data_;\n  pFVar5 = (File_view *)operator_new(0xc);\n  pFVar5->view_ = pVVar4;\n  pFVar5->file_ = this;\n  pFVar5->data_ = puVar2 + (((int)offset + (int)start + uVar1) - (int)oVar3);\n  return pFVar5;\n}\n\n" comment comment (ERROR "File_view * __thiscall\ngold::File_read::get_lasting_view\n          (File_read *this,off_t offset,off_t start,section_size_type size,bool aligned,bool cache)" (binary_expression "File_view * __thiscall\ngold::File_read::get_lasting_view\n          (File_read *this,off_t offset,off_t start,section_size_type size,bool aligned,bool cache)" identifier * (call_expression "__thiscall\ngold::File_read::get_lasting_view\n          (File_read *this,off_t offset,off_t start,section_size_type size,bool aligned,bool cache)" identifier (ERROR "gold::File_read::get_lasting_view" identifier : : identifier : : identifier) (argument_list "(File_read *this,off_t offset,off_t start,section_size_type size,bool aligned,bool cache)" ( (binary_expression "File_read *this" identifier * identifier) , (ERROR "off_t" identifier) identifier , identifier (ERROR "start" identifier) , identifier (ERROR "size" identifier) , (ERROR "bool" identifier) identifier , (ERROR "bool" identifier) identifier ))))) (compound_statement "{\n  uint uVar1;\n  uchar *puVar2;\n  off_t oVar3;\n  View *pVVar4;\n  File_view *pFVar5;\n  \n  pVVar4 = find_or_make_view(this,offset,start,size,aligned,cache);\n  pVVar4->lock_count_ = pVVar4->lock_count_ + 1;\n  uVar1 = pVVar4->byteshift_;\n  oVar3 = pVVar4->start_;\n  puVar2 = pVVar4->data_;\n  pFVar5 = (File_view *)operator_new(0xc);\n  pFVar5->view_ = pVVar4;\n  pFVar5->file_ = this;\n  pFVar5->data_ = puVar2 + (((int)offset + (int)start + uVar1) - (int)oVar3);\n  return pFVar5;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uchar *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "off_t oVar3;" type_identifier identifier ;) (declaration "View *pVVar4;" type_identifier (pointer_declarator "*pVVar4" * identifier) ;) (declaration "File_view *pFVar5;" type_identifier (pointer_declarator "*pFVar5" * identifier) ;) (expression_statement "pVVar4 = find_or_make_view(this,offset,start,size,aligned,cache);" (assignment_expression "pVVar4 = find_or_make_view(this,offset,start,size,aligned,cache)" identifier = (call_expression "find_or_make_view(this,offset,start,size,aligned,cache)" identifier (argument_list "(this,offset,start,size,aligned,cache)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "pVVar4->lock_count_ = pVVar4->lock_count_ + 1;" (assignment_expression "pVVar4->lock_count_ = pVVar4->lock_count_ + 1" (field_expression "pVVar4->lock_count_" identifier -> field_identifier) = (binary_expression "pVVar4->lock_count_ + 1" (field_expression "pVVar4->lock_count_" identifier -> field_identifier) + number_literal)) ;) (expression_statement "uVar1 = pVVar4->byteshift_;" (assignment_expression "uVar1 = pVVar4->byteshift_" identifier = (field_expression "pVVar4->byteshift_" identifier -> field_identifier)) ;) (expression_statement "oVar3 = pVVar4->start_;" (assignment_expression "oVar3 = pVVar4->start_" identifier = (field_expression "pVVar4->start_" identifier -> field_identifier)) ;) (expression_statement "puVar2 = pVVar4->data_;" (assignment_expression "puVar2 = pVVar4->data_" identifier = (field_expression "pVVar4->data_" identifier -> field_identifier)) ;) (expression_statement "pFVar5 = (File_view *)operator_new(0xc);" (assignment_expression "pFVar5 = (File_view *)operator_new(0xc)" identifier = (cast_expression "(File_view *)operator_new(0xc)" ( (type_descriptor "File_view *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "pFVar5->view_ = pVVar4;" (assignment_expression "pFVar5->view_ = pVVar4" (field_expression "pFVar5->view_" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar5->file_ = this;" (assignment_expression "pFVar5->file_ = this" (field_expression "pFVar5->file_" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar5->data_ = puVar2 + (((int)offset + (int)start + uVar1) - (int)oVar3);" (assignment_expression "pFVar5->data_ = puVar2 + (((int)offset + (int)start + uVar1) - (int)oVar3)" (field_expression "pFVar5->data_" identifier -> field_identifier) = (binary_expression "puVar2 + (((int)offset + (int)start + uVar1) - (int)oVar3)" identifier + (parenthesized_expression "(((int)offset + (int)start + uVar1) - (int)oVar3)" ( (binary_expression "((int)offset + (int)start + uVar1) - (int)oVar3" (parenthesized_expression "((int)offset + (int)start + uVar1)" ( (binary_expression "(int)offset + (int)start + uVar1" (binary_expression "(int)offset + (int)start" (cast_expression "(int)offset" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)start" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier) )) - (cast_expression "(int)oVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (return_statement "return pFVar5;" return identifier ;) }))
(translation_unit "void FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  \n  FUN_000559f2();\n  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n  piVar4[4] = piVar4[4] + 1;\n  iVar1 = piVar4[5];\n  iVar2 = *piVar4;\n  iVar3 = piVar4[3];\n  puVar5 = (undefined4 *)FUN_001e5200(0xc);\n  puVar5[1] = piVar4;\n  *puVar5 = param_1;\n  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;\n  return;\n}\n\n" (function_definition "void FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  \n  FUN_000559f2();\n  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n  piVar4[4] = piVar4[4] + 1;\n  iVar1 = piVar4[5];\n  iVar2 = *piVar4;\n  iVar3 = piVar4[3];\n  puVar5 = (undefined4 *)FUN_001e5200(0xc);\n  puVar5[1] = piVar4;\n  *puVar5 = param_1;\n  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;\n  return;\n}" primitive_type (function_declarator "FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)" identifier (parameter_list "(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined1 param_7" type_identifier identifier) , (parameter_declaration "undefined1 param_8" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  \n  FUN_000559f2();\n  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n  piVar4[4] = piVar4[4] + 1;\n  iVar1 = piVar4[5];\n  iVar2 = *piVar4;\n  iVar3 = piVar4[3];\n  puVar5 = (undefined4 *)FUN_001e5200(0xc);\n  puVar5[1] = piVar4;\n  *puVar5 = param_1;\n  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);" (assignment_expression "piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" identifier = (cast_expression "(int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))))) ;) (expression_statement "piVar4[4] = piVar4[4] + 1;" (assignment_expression "piVar4[4] = piVar4[4] + 1" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = (binary_expression "piVar4[4] + 1" (subscript_expression "piVar4[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar1 = piVar4[5];" (assignment_expression "iVar1 = piVar4[5]" identifier = (subscript_expression "piVar4[5]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "iVar3 = piVar4[3];" (assignment_expression "iVar3 = piVar4[3]" identifier = (subscript_expression "piVar4[3]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = (undefined4 *)FUN_001e5200(0xc);" (assignment_expression "puVar5 = (undefined4 *)FUN_001e5200(0xc)" identifier = (cast_expression "(undefined4 *)FUN_001e5200(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "puVar5[1] = piVar4;" (assignment_expression "puVar5[1] = piVar4" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar5 = param_1;" (assignment_expression "*puVar5 = param_1" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;" (assignment_expression "puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (binary_expression "((param_2 + param_4 + iVar1) - iVar2) + iVar3" (parenthesized_expression "((param_2 + param_4 + iVar1) - iVar2)" ( (binary_expression "(param_2 + param_4 + iVar1) - iVar2" (parenthesized_expression "(param_2 + param_4 + iVar1)" ( (binary_expression "param_2 + param_4 + iVar1" (binary_expression "param_2 + param_4" identifier + identifier) + identifier) )) - identifier) )) + identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )) - IDENT) )) + IDENT)) ;) (return_statement return ;) })))
(function_definition "void FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  \n  FUN_000559f2();\n  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n  piVar4[4] = piVar4[4] + 1;\n  iVar1 = piVar4[5];\n  iVar2 = *piVar4;\n  iVar3 = piVar4[3];\n  puVar5 = (undefined4 *)FUN_001e5200(0xc);\n  puVar5[1] = piVar4;\n  *puVar5 = param_1;\n  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00068850(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)" (identifier "FUN_00068850") (parameter_list "(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6,undefined1 param_7,undefined1 param_8)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "undefined1 param_7" (type_identifier "undefined1") (identifier "param_7")) (, ",") (parameter_declaration "undefined1 param_8" (type_identifier "undefined1") (identifier "param_8")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  \n  FUN_000559f2();\n  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);\n  piVar4[4] = piVar4[4] + 1;\n  iVar1 = piVar4[5];\n  iVar2 = *piVar4;\n  iVar3 = piVar4[3];\n  puVar5 = (undefined4 *)FUN_001e5200(0xc);\n  puVar5[1] = piVar4;\n  *puVar5 = param_1;\n  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" (identifier "FUN_000559f2") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);" (assignment_expression "piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" (identifier "FUN_00068320") (argument_list "(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "param_7") (, ",") (identifier "param_8") () ")"))))) (; ";")) (expression_statement "piVar4[4] = piVar4[4] + 1;" (assignment_expression "piVar4[4] = piVar4[4] + 1" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "piVar4[4] + 1" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar1 = piVar4[5];" (assignment_expression "iVar1 = piVar4[5]" (identifier "iVar1") (= "=") (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" (identifier "iVar2") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "iVar3 = piVar4[3];" (assignment_expression "iVar3 = piVar4[3]" (identifier "iVar3") (= "=") (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)FUN_001e5200(0xc);" (assignment_expression "puVar5 = (undefined4 *)FUN_001e5200(0xc)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)FUN_001e5200(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200(0xc)" (identifier "FUN_001e5200") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "puVar5[1] = piVar4;" (assignment_expression "puVar5[1] = piVar4" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "piVar4")) (; ";")) (expression_statement "*puVar5 = param_1;" (assignment_expression "*puVar5 = param_1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;" (assignment_expression "puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "((param_2 + param_4 + iVar1) - iVar2) + iVar3" (parenthesized_expression "((param_2 + param_4 + iVar1) - iVar2)" (( "(") (binary_expression "(param_2 + param_4 + iVar1) - iVar2" (parenthesized_expression "(param_2 + param_4 + iVar1)" (( "(") (binary_expression "param_2 + param_4 + iVar1" (binary_expression "param_2 + param_4" (identifier "param_2") (+ "+") (identifier "param_4")) (+ "+") (identifier "iVar1")) () ")")) (- "-") (identifier "iVar2")) () ")")) (+ "+") (identifier "iVar3"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* DWARF original prototype: File_view * get_lasting_view(File_read * this, off_t offset, off_t
   start, section_size_type size, bool aligned, bool cache) */

type_5 * __thiscall
gold::File_read::get_lasting_view
          (File_read *this,type_3 offset,type_3 start,section_size_type size,bool aligned,bool cache)

{
  type_1 var_4;
  type_2 *var_3;
  type_3 oVar3;
  type_4 *pVVar4;
  type_5 *pFVar5;
  
  pVVar4 = var_1(this,offset,start,size,aligned,cache);
  pVVar4->lock_count_ = pVVar4->lock_count_ + 1;
  var_4 = pVVar4->byteshift_;
  oVar3 = pVVar4->start_;
  var_3 = pVVar4->data_;
  pFVar5 = (type_5 *)var_2(0xc);
  pFVar5->view_ = pVVar4;
  pFVar5->file_ = this;
  pFVar5->data_ = var_3 + (((int)offset + (int)start + var_4) - (int)oVar3);
  return pFVar5;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) right: (identifier))) right: (identifier)))) (return_statement))))

void MASKED(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
                 undefined4 param_6,undefined1 param_7,undefined1 param_8)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  undefined4 *puVar5;
  
  FUN_000559f2();
  piVar4 = (int *)FUN_00068320(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  piVar4[4] = piVar4[4] + 1;
  iVar1 = piVar4[5];
  iVar2 = *piVar4;
  iVar3 = piVar4[3];
  puVar5 = (undefined4 *)FUN_001e5200(0xc);
  puVar5[1] = piVar4;
  *puVar5 = param_1;
  puVar5[2] = ((param_2 + param_4 + iVar1) - iVar2) + iVar3;
  return;
}

