Function at 0x14027fc50
Capabilities:
Get disk size
Get file size
Read file on windows

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xb0]
sub rsp, 0x1b0
mov r12, r8
mov r15, rdx
movzx r8d, byte [rbp + 0x110]
mov rbx, rcx
movzx edx, r8b
mov rcx, r9
mov r13, r9
call fcn.14027d7b0
xor edi, edi
mov byte [rsp + 0x68], 0
lea rsi, vtable.CPathString.0
mov qword [rsp + 0x38], 0xffffffffffffffff
mov r8d, edi
mov qword [rsp + 0x48], rdi
mov rdx, rbx
mov qword [rsp + 0x60], rdi
lea rcx, [rbp - 0x68]
mov qword [rbp - 0x68], rsi
mov qword [rbp - 0x58], rdi
call fcn.14027f9a0
mov rcx, qword [rsp + 0x38]
mov r14d, dword [rbp + 0x118]
mov rbx, qword [rbp - 0x60]
mov dword [rsp + 0x6c], edi
cmp rcx, 0xffffffffffffffff
je 0x14027fcfb
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x14027fcfb
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9d, r14d
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x40], rdi
and r9d, 0xffffffb3
je 0x14027fd34
lea r8, str.unsupported_flags_0x_x_passed_to_CFileReader::BOpenFile
mov edx, 0x138c
lea rcx, str.c:_buildslave_steam_rel_client_hotfix_win64_build_src_tier1_fileio.cpp
call fcn.14029bfa0
test al, al
jne 0x14027fd30
int3
and r14d, 0x4c
cmp byte [rsp + 0x68], dil
je 0x14027fe25
mov r8, rdi
mov qword [rbp - 0x80], rsi
mov rdx, rbx
mov qword [rbp - 0x70], rdi
lea rcx, [rbp - 0x80]
call fcn.14027f9a0
mov r12, qword [rbp - 0x78]
mov edx, 0x3a
mov rcx, r12
call fcn.140322798
test rax, rax
je 0x14027fda7
sub rax, r12
mov ecx, 0xff
add rax, 2
mov rdx, r12
cmp rax, rcx
cmova eax, ecx
lea rcx, [rbp - 0x50]
movsxd rsi, eax
mov eax, 0x100
cmp rsi, rax
mov r8, rsi
cmova r8, rax
call fcn.1402a9890
lea rcx, [rbp - 0x50]
mov byte [rbp + rsi - 0x50], dil
jmp 0x14027fda9
xor ecx, ecx
lea rax, [rsp + 0x30]
lea r9, [rsp + 0x70]
mov qword [rsp + 0x20], rax
lea r8, [rbp + 0x118]
lea rdx, [rsp + 0x78]
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
mov rcx, qword [rbp - 0x70]
mov esi, edi
test eax, eax
cmovne esi, dword [rbp + 0x118]
test rcx, rcx
je 0x14027fde3
call fcn.14031dc44
test r12, r12
je 0x14027fdf0
mov rcx, r12
call fcn.14031dc44
mov dword [rsp + 0x6c], esi
test esi, esi
je 0x14027fdfe
or r14d, 2
jmp 0x14027fe1e
mov r9, rbx
lea r8, str.Failed_to_get_sector_size_for_drive_file__s_is_on__not_using_unbuffered_IO
mov edx, 0x139b
lea rcx, str.c:_buildslave_steam_rel_client_hotfix_win64_build_src_tier1_fileio.cpp
call fcn.14029bfa0
test al, al
jne 0x14027fe1e
int3
mov r12, qword [rbp + 0x100]
mov r8d, 3
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
test r14b, 0x40
mov rcx, rbx
mov dword [rsp + 0x20], r14d
cmovne r8d, edi
xor r9d, r9d
lea edx, [r9 + 1]
call fcn.14027f230
test eax, eax
jne 0x14027fe62
cmp qword [rsp + 0x38], 0xffffffffffffffff
je 0x14027fe62
xor sil, sil
jmp 0x14027fe65
mov sil, 1
mov rcx, qword [rbp - 0x58]
test rcx, rcx
je 0x14027fe73
call fcn.14031dc44
test rbx, rbx
je 0x14027fe80
mov rcx, rbx
call fcn.14031dc44
test sil, sil
jne 0x14027fee9
mov rcx, qword [rsp + 0x38]
lea rdx, [rsp + 0x78]
mov rbx, rdi
call qword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
jne 0x14027fea4
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x14027feab
mov rbx, qword [rsp + 0x78]
mov eax, edi
test eax, eax
cmovne ebx, edi
mov esi, ebx
cmp r15, rsi
ja 0x14027fee9
test r15, r15
je 0x14027fffd
cmp qword [rsp + 0x38], 0xffffffffffffffff
jne 0x14027ff4f
lea r8, str.BIsOpen__
mov edx, 0x1455
lea rcx, str.c:_buildslave_steam_rel_client_hotfix_win64_build_src_tier1_fileio.cpp
call fcn.14029bf90
test al, al
jne 0x14027fee9
int3
xor bl, bl
mov rcx, qword [rsp + 0x38]
mov dword [rsp + 0x6c], edi
cmp rcx, 0xffffffffffffffff
je 0x14027ff13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x14027ff0a
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov qword [rsp + 0x38], 0xffffffffffffffff
mov rcx, qword [rsp + 0x60]
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x58], rdi
test rcx, rcx
je 0x14027ff31
call fcn.14031dc44
movzx eax, bl
mov rbx, qword [rsp + 0x1f0]
add rsp, 0x1b0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
cmp byte [rsp + 0x68], dil
je 0x14027ff7e
mov eax, dword [rsp + 0x6c]
test eax, eax
je 0x14027ff7e
mov ecx, eax
mov rax, r15
cqo
idiv rcx
test rdx, rdx
je 0x14027ff7e
lea r8, str.Seeking_to_a_position_which_is_not_sector_aligned_will_break_unbuffered_io
mov edx, 0x145d
jmp 0x14027fed8
cmp qword [rsp + 0x60], rdi
je 0x14027ffa5
mov rcx, qword [rsp + 0x50]
cmp r15, rcx
jb 0x14027ffa0
add rcx, qword [rsp + 0x58]
cmp r15, rcx
jae 0x14027ffa0
mov qword [rsp + 0x40], r15
jmp 0x14027fffd
mov qword [rsp + 0x58], rdi
mov rcx, qword [rsp + 0x38]
lea r8, [rbp + 0x118]
mov rax, r15
xor r9d, r9d
sar rax, 0x20
mov edx, r15d
mov dword [rbp + 0x118], eax
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
mov ebx, eax
cmp eax, 0xffffffff
jne 0x14027ffea
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x14027ffea
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x14027fffd
jmp 0x14027fee9
movsxd rcx, dword [rbp + 0x118]
shl rcx, 0x20
or rcx, rbx
mov qword [rsp + 0x40], rcx
sub rsi, r15
cmp r12, rsi
cmovb rsi, r12
cmp rsi, 0x7ffffffe
ja 0x14027fee9
mov rcx, r13
mov qword [r13 + 0x18], rdi
mov byte [r13 + 0x26], dil
mov dword [r13 + 0x20], 0xffffffff
call fcn.14027be40
movzx r12d, byte [rbp + 0x110]
mov rcx, r13
xor r12d, 1
add r12d, esi
mov edx, r12d
call fcn.14027c170
test r12d, r12d
je 0x14028036c
mov edx, r12d
mov rcx, r13
call fcn.14027bfa0
test al, al
je 0x14027fee9
mov rax, qword [rbp + 0x108]
movsxd r13, dword [r13 + 0x1c]
add r13, qword [rax + 8]
je 0x14027fee9
cmp qword [rsp + 0x38], 0xffffffffffffffff
mov r14, r13
jne 0x140280093
lea r8, str.BIsOpen__
mov edx, 0x13d3
jmp 0x14027fed8
mov r15d, 0x7fffffff
sub r15d, dword [rsp + 0x48]
cmp esi, r15d
jbe 0x1402800f8
mov ebx, edi
test esi, esi
je 0x14028032a
nop dword [rax]
mov r8d, esi
mov dword [rbp + 0x118], edi
cmp r15d, esi
lea r9, [rbp + 0x118]
mov rdx, r14
lea rcx, [rsp + 0x38]
cmovb r8d, r15d
call fcn.140280610
test al, al
je 0x14027fee9
mov ecx, dword [rbp + 0x118]
test ecx, ecx
je 0x14028032a
add ebx, ecx
add r14, rcx
sub esi, ecx
jne 0x1402800b0
jmp 0x14028032a
cmp esi, 0x7fffffff
jb 0x14028011d
lea r8, str.cubBytesToRead___INT32_MAX
mov edx, 0x13f3
lea rcx, str.c:_buildslave_steam_rel_client_hotfix_win64_build_src_tier1_fileio.cpp
call fcn.14029bf90
test al, al
jne 0x14028011d
int3
cmp byte [rsp + 0x68], dil
je 0x1402801b0
xor edx, edx
mov eax, esi
div dword [rsp + 0x6c]
test edx, edx
je 0x140280145
lea r8, str.CFileReader::Read_must_be_called_with_a_cubData_value_that_is_a_multiple_of_the_sector_size_when_using_unbuffered_IO
mov edx, 0x13fa
jmp 0x14027fed8
cmp byte [0x1405de6f9], dil
jne 0x14028017b
test r13, 0xfff
je 0x14028017b
lea r8, str.Unbuffered_read_should_be_called_with_pvData_buffer_that_is_aligned_to_system_page_size__4kb_
mov byte [0x1405de6f9], 1
mov edx, 0x13ff
lea rcx, str.c:_buildslave_steam_rel_client_hotfix_win64_build_src_tier1_fileio.cpp
call fcn.14029bf90
test al, al
jne 0x14028017b
int3
cmp byte [0x1405de6fa], dil
jne 0x1402801b0
test esi, 0xfff
je 0x1402801b0
lea r8, str.Unbuffered_read_should_be_called_with_cubData_length_that_is_aligned_to_system_page_size__4kb_
mov byte [0x1405de6fa], 1
mov edx, 0x1400
lea rcx, str.c:_buildslave_steam_rel_client_hotfix_win64_build_src_tier1_fileio.cpp
call fcn.14029bf90
test al, al
jne 0x1402801b0
int3
mov rdx, qword [rsp + 0x60]
mov r14d, esi
mov rcx, qword [rsp + 0x40]
mov r15d, edi
test rdx, rdx
je 0x140280220
mov r8, qword [rsp + 0x50]
cmp rcx, r8
jb 0x140280220
mov r9, qword [rsp + 0x58]
lea rax, [r9 + r8]
cmp rcx, rax
jae 0x140280220
sub r9, rcx
mov eax, esi
mov r15d, r8d
add r9, r8
sub r15d, ecx
add r15d, dword [rsp + 0x58]
cmp rax, r9
cmovb r15d, esi
sub rdx, r8
add rdx, rcx
mov r8d, r15d
mov rcx, r13
mov ebx, r15d
call fcn.140320ff0
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x60]
add rcx, rbx
mov qword [rsp + 0x40], rcx
sub r14d, r15d
test r14d, r14d
jne 0x14028022c
mov ebx, esi
jmp 0x14028032a
mov r9, qword [rsp + 0x48]
mov r8d, r14d
test rdx, rdx
je 0x140280243
mov eax, r14d
cmp r9, rax
cmova r8d, r9d
test r9, r9
je 0x1402802c1
mov eax, r8d
cmp rax, r9
jne 0x1402802c1
mov qword [rsp + 0x50], rcx
lea r9, [rsp + 0x30]
mov rcx, qword [rsp + 0x38]
mov dword [rsp + 0x30], edi
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x14028028b
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
mov ebx, edi
sete dl
mov byte [rbp + 0x118], dl
test eax, eax
jne 0x140280304
jmp 0x140280296
mov ebx, dword [rsp + 0x30]
mov byte [rbp + 0x118], 1
mov rdx, qword [rsp + 0x60]
cmp ebx, r14d
mov r8d, r14d
movsxd rax, ebx
cmovb r8d, ebx
mov ecx, r15d
add rcx, r13
mov qword [rsp + 0x58], rax
call fcn.140320ff0
movzx edx, byte [rbp + 0x118]
jmp 0x140280304
mov rcx, qword [rsp + 0x38]
lea r9, [rbp + 0x118]
mov edx, r15d
mov ebx, edi
add rdx, r13
mov dword [rbp + 0x118], edi
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x1402802f2
call qword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x1402802fa
mov ebx, dword [rbp + 0x118]
mov eax, edi
test eax, eax
mov qword [rsp + 0x58], rdi
sete dl
test dl, dl
mov ecx, edi
cmovne ecx, ebx
cmp r14d, ecx
mov eax, ecx
cmovb eax, r14d
add qword [rsp + 0x40], rax
lea ebx, [rcx + r15]
cmp esi, ebx
cmovb ebx, esi
test dl, dl
je 0x14027fee9
cmp byte [rbp + 0x110], dil
jne 0x14028035b
cmp ebx, r12d
jb 0x140280355
lea r8, str.cbActual____uint32_nBufSizeWithTerminator
mov edx, 0x948
lea rcx, str.c:_buildslave_steam_rel_client_hotfix_win64_build_src_tier1_fileio.cpp
call fcn.14029bf90
test al, al
jne 0x140280355
int3
mov eax, ebx
mov byte [rax + r13], dil
mov rcx, qword [rbp + 0x108]
mov r8d, ebx
xor edx, edx
call fcn.14027d6b0
mov bl, 1
jmp 0x14027feeb