Function at 0x716010
Capabilities:
Get file size
Read file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
mov r9, qword [rcx + 8]
mov rdi, r8
lea rbx, [rsp + 0x50]
xor r8d, r8d
mov rsi, rcx
mov qword [rsp + 0x40], rbx
mov rbp, rdx
mov qword [rsp + 0x48], 0
mov word [rsp + 0x50], r8w
test r9, r9
jne 0x716180
lea rsi, [rsp + 0x90]
xor ecx, ecx
mov qword [rsp + 0x80], rsi
mov word [rsp + 0x90], cx
mov rcx, rbx
xor edx, edx
mov qword [rsp + 0x48], r9
mov word [rcx + r9*2], dx
mov rcx, qword [rsp + 0x80]
mov qword [rsp + 0x88], 0
xor eax, eax
mov word [rcx], ax
mov rcx, qword [rsp + 0x80]
cmp rcx, rsi
je 0x7160a9
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x40]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x80000000
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], pe_nt_image_headers64
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov r12, rax
cmp rax, 0xffffffffffffffff
je 0x716103
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp eax, 0xffffffff
je 0x7160fa
mov edx, eax
cmp rdx, rdi
jbe 0x716130
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor r12d, r12d
mov rcx, qword [rsp + 0x40]
cmp rcx, rbx
je 0x716115
call sym.operator_delete_void_
mov eax, r12d
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r8d, r8d
mov rcx, rbp
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.resize_unsigned_long_long__char_
mov qword [rsp + 0x20], 0
mov rdx, qword [rbp]
mov r8d, esi
mov rcx, r12
lea r9, [rsp + 0x80]
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov edi, eax
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor r12d, r12d
cmp dword [rsp + 0x80], esi
jne 0x716106
test edi, edi
setne r12b
jmp 0x716106
mov dword [rsp + 0x28], 0
mov r14, qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor edx, edx
mov qword [rsp + 0x20], 0
mov r8, qword [rcx]
mov ecx, 0xfde9
call r14
mov r12d, eax
test eax, eax
je 0x716339
lea r13, [rsp + 0x70]
lea rcx, [rsp + 0x60]
movsxd rdx, eax
xor r8d, r8d
mov qword [rsp + 0x60], r13
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___._M_construct_unsigned_long_long__wchar_t_
mov rax, qword [rsp + 0x60]
mov dword [rsp + 0x28], r12d
xor edx, edx
mov ecx, 0xfde9
mov qword [rsp + 0x20], rax
mov r9d, dword [rsi + 8]
mov r8, qword [rsi]
call r14
test eax, eax
je 0x7163f4
mov rax, qword [rsp + 0x60]
lea rsi, [rsp + 0x90]
mov qword [rsp + 0x80], rsi
cmp rax, r13
je 0x7162a0
mov rdx, qword [rsp + 0x70]
mov r9, qword [rsp + 0x68]
mov qword [rsp + 0x80], rax
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x90], rdx
mov qword [rsp + 0x88], r9
cmp rax, rsi
je 0x7162c0
cmp rcx, rbx
je 0x716278
mov r8, qword [rsp + 0x50]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], r9
mov qword [rsp + 0x50], rdx
test rcx, rcx
je 0x716287
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x90], r8
jmp 0x716086
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], r9
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x80], rsi
lea rsi, [rsp + 0x90]
mov rcx, rsi
jmp 0x716086
mov r9, qword [rsp + 0x68]
movdqu xmm0, xmmword [rsp + 0x70]
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x88], r9
movups xmmword [rsp + 0x90], xmm0
test r9, r9
je 0x716072
cmp r9, 1
je 0x7162f0
lea r8, [r9 + r9]
mov rdx, rsi
call sym.memcpy
mov r9, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x40]
jmp 0x716072
movzx eax, word [rsp + 0x90]
mov word [rcx], ax
mov r9, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x40]
jmp 0x716072
call sym.__cxa_begin_catch
call sym.__cxa_end_catch
jmp 0x716103
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov r12, rax
call method.std::_V2.system_category__
mov r13, rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9, qword [r13]
lea r14, [rsp + 0x80]
mov r8d, eax
mov rdx, r13
mov rcx, r14
call qword [r9 + 0x20]
mov rdx, r14
mov rcx, r12
call method.std::runtime_error.runtime_error_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rcx, qword [rsp + 0x80]
lea rax, [rsp + 0x90]
cmp rcx, rax
je 0x716392
call sym.operator_delete_void_
lea r8, [method.std::runtime_error.runtime_error__]
lea rdx, [0x009a5130]
mov rcx, r12
call sym.__cxa_throw
mov rcx, qword [rsp + 0x80]
mov rsi, rax
lea rax, [rsp + 0x90]
cmp rcx, rax
je 0x7163c5
call sym.operator_delete_void_
mov rcx, r12
call sym.__cxa_free_exception
mov rcx, rsi
jmp 0x71632a
mov rcx, qword [rsp + 0x60]
cmp rcx, r13
je 0x7163ec
call sym.operator_delete_void_
mov rcx, rsi
jmp 0x71632a
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov r12, rax
call method.std::_V2.system_category__
mov r15, rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9, qword [r15]
lea r14, [rsp + 0x80]
mov r8d, eax
mov rdx, r15
mov rcx, r14
call qword [r9 + 0x20]
mov rdx, r14
mov rcx, r12
call method.std::runtime_error.runtime_error_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rcx, qword [rsp + 0x80]
lea rax, [rsp + 0x90]
cmp rcx, rax
je 0x71644c
call sym.operator_delete_void_
lea r8, [method.std::runtime_error.runtime_error__]
lea rdx, [0x009a5130]
mov rcx, r12
call sym.__cxa_throw
mov rcx, qword [rsp + 0x80]
mov rsi, rax
lea rax, [rsp + 0x90]
cmp rcx, rax
je 0x71647f
call sym.operator_delete_void_
mov rcx, r12
call sym.__cxa_free_exception
jmp 0x7163dd