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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov dword [rax + 0x20], r9d
mov qword [rax + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
xor edi, edi
mov r15, r8
mov qword [rax - 0x58], rdi
mov r12, rdx
mov qword [rdx], rdi
xor r9d, r9d
mov dword [rax - 0x60], 0x80
mov edx, 0x80000000
lea r8d, [rdi + 1]
mov dword [rbp - 0x10], edi
mov dword [rbp - 0xc], edi
mov dword [rax - 0x68], 3
call qword [sym.imp.KERNEL32.dll_CreateFileW]
nop dword [rax + rax]
mov r13, rax
cmp rax, 0xffffffffffffffff
jne 0x14003cc3e
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003cc2c
movzx ebx, ax
or ebx, 0x80070000
test ebx, ebx
js 0x14003cfd0
mov ebx, 0x80004005
jmp 0x14003cfe5
xor edx, edx
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GetFileSize]
nop dword [rax + rax]
mov r14d, eax
cmp eax, 0xffffffff
jne 0x14003cc84
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003cc72
movzx ebx, ax
or ebx, 0x80070000
test ebx, ebx
js 0x14003cfd0
mov ebx, 0x80004005
jmp 0x14003cfd6
mov ebx, edi
mov edi, 0x80004005
mov esi, 0x80070000
cmp r14d, 2
jbe 0x14003ce64
xor eax, eax
lea r9, [rbp - 0xc]
lea rdx, [rbp + 0x48]
mov qword [rsp + 0x20], rax
mov rcx, r13
lea r8d, [rax + 2]
call qword [sym.imp.KERNEL32.dll_ReadFile]
nop dword [rax + rax]
test eax, eax
jne 0x14003ccdc
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003ccd9
movzx ebx, bx
or ebx, esi
test ebx, ebx
cmovns ebx, edi
cmp dword [rbp - 0xc], 2
jne 0x14003cf01
test ebx, ebx
js 0x14003cfd0
mov eax, 0xfeff
cmp word [rbp + 0x48], ax
jne 0x14003cd96
add r14d, 0xfffffffe
mov ecx, r14d
shr ecx, 1
inc ecx
call fcn.14003bdd4
xor ecx, ecx
mov qword [r12], rax
test rax, rax
jne 0x14003cd22
mov ebx, 0x8007000e
jmp 0x14003cfd0
mov qword [rsp + 0x20], rcx
lea r9, [rbp + 0x58]
mov rcx, r13
mov r8d, r14d
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_ReadFile]
nop dword [rax + rax]
xor r14d, r14d
test eax, eax
jne 0x14003cd71
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003cd5e
movzx ebx, ax
or ebx, esi
test ebx, ebx
js 0x14003cd64
mov ebx, edi
mov rcx, r12
call fcn.14003c108
jmp 0x14003cfd0
mov ecx, dword [rbp + 0x58]
mov rax, qword [r12]
shr rcx, 1
mov word [rax + rcx*2], r14w
test r15, r15
je 0x14003cfd0
mov eax, dword [rbp + 0x58]
shr eax, 1
mov dword [r15], eax
jmp 0x14003cfd0
cmp r14d, 3
jbe 0x14003cec6
movzx ecx, word [rbp + 0x48]
xor r15d, r15d
movzx eax, word [0x14004b384]
cmp ecx, eax
jne 0x14003cec6
lea r9, [rbp - 0xc]
mov qword [rsp + 0x20], r15
lea r8d, [r15 + 1]
mov rcx, r13
lea rdx, [rbp + 0x58]
call qword [sym.imp.KERNEL32.dll_ReadFile]
nop dword [rax + rax]
test eax, eax
jne 0x14003cdf6
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003cdf1
movzx ebx, ax
or ebx, esi
test ebx, ebx
cmovns ebx, edi
cmp dword [rbp - 0xc], 1
jne 0x14003cf01
test ebx, ebx
js 0x14003cfd0
cmp byte [rbp + 0x58], 0xbf
jne 0x14003ce19
mov eax, 0xfde9
add r14d, 0xfffffffd
jmp 0x14003ce59
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
nop dword [rax + rax]
cmp eax, 0xffffffff
jne 0x14003ce56
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003ce4c
movzx ebx, ax
or ebx, esi
test ebx, ebx
js 0x14003cfd0
mov ebx, edi
mov eax, r15d
mov dword [rbp - 0x10], eax
test ebx, ebx
js 0x14003cfd0
lea ecx, [r14 + 1]
call fcn.14000130c
mov r15, rax
xor eax, eax
test r15, r15
je 0x14003cd18
lea r9, [rbp + 0x58]
mov qword [rsp + 0x20], rax
mov r8d, r14d
mov rdx, r15
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_ReadFile]
nop dword [rax + rax]
xor r14d, r14d
test eax, eax
jne 0x14003cf08
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003ceb7
movzx ebx, ax
or ebx, esi
test ebx, ebx
js 0x14003cfc8
mov ebx, edi
jmp 0x14003cfc8
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
nop dword [rax + rax]
cmp eax, 0xffffffff
jne 0x14003ce64
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003cef9
movzx ebx, ax
or ebx, esi
test ebx, ebx
js 0x14003cfd0
mov ebx, edi
jmp 0x14003cfd0
mov r9d, dword [rbp + 0x58]
mov r8, r15
mov ecx, dword [rbp - 0x10]
xor edx, edx
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], r14
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
nop dword [rax + rax]
movsxd r14, eax
cmp r14d, 0x7ffffffe
ja 0x14003cfbd
lea ecx, [r14 + 1]
call fcn.14003bdd4
xor r8d, r8d
mov qword [r12], rax
test rax, rax
je 0x14003cfc3
mov r9d, dword [rbp + 0x58]
mov edx, r8d
test r9d, r9d
je 0x14003cfa7
mov ecx, dword [rbp - 0x10]
mov r8, r15
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
nop dword [rax + rax]
xor r8d, r8d
mov edx, eax
test eax, eax
jne 0x14003cfa7
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
mov ebx, eax
test eax, eax
jle 0x14003cf99
movzx ebx, bx
or ebx, esi
test ebx, ebx
js 0x14003cf9d
mov ebx, edi
mov rcx, r12
call fcn.14003c108
jmp 0x14003cfc8
mov rax, qword [r12]
mov word [rax + r14*2], r8w
mov rax, qword [rbp + 0x50]
test rax, rax
je 0x14003cfc8
mov dword [rax], edx
jmp 0x14003cfc8
xor ecx, ecx
mov qword [r12], rcx
mov ebx, 0x8007000e
mov rcx, r15
call fcn.1400012c0
cmp r13, 0xffffffffffffffff
je 0x14003cfe5
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
nop dword [rax + rax]
mov eax, ebx
mov rbx, qword [rsp + 0x90]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret