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

Disassembly:
mov qword [rsp + 0x18], rbp
push rdi
push r14
push r15
sub rsp, 0x90
mov r15, rdx
mov rbp, r9
lea rdx, [rsp + 0x58]
mov r14, r8
mov rdi, rcx
call qword [sym.imp.KERNEL32.dll_GetFileInformationByHandle]
test eax, eax
jne 0x14023fc26
mov eax, 0x200
jmp 0x14023fe99
mov r8d, dword [rsp + 0x58]
mov r9d, r8d
and r9d, 1
mov qword [rsp + 0xb0], rbx
mov eax, r8d
mov qword [rsp + 0xb8], rsi
mov ecx, r9d
or ecx, 2
and al, 2
mov eax, r8d
cmove ecx, r9d
mov edx, ecx
or edx, 4
and al, 4
cmove edx, ecx
mov ecx, r8d
mov eax, edx
or eax, 0x10
and ecx, 0x10
cmove eax, edx
mov edx, 0x81000000
mov ebx, eax
or ebx, 0x20
and r8b, 0x20
cmove ebx, eax
test ecx, ecx
mov eax, 0x41000000
cmove eax, edx
or ebx, eax
test r9d, r9d
jne 0x14023fc92
bts ebx, 0x17
xor edx, edx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp eax, 0x28
jbe 0x14023fd7b
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
lea r9, [rsp + 0x34]
mov qword [rsp + 0x20], 0
mov r8d, 2
lea rdx, [rsp + 0x30]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReadFile]
xor r9d, r9d
xor r8d, r8d
mov rcx, rdi
lea edx, [r9 + 0x24]
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
lea r9, [rsp + 0x34]
mov qword [rsp + 0x20], 0
mov r8d, 4
lea rdx, [rsp + 0x38]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, 0x54ad
cmp word [rsp + 0x30], ax
jne 0x14023fd7b
mov edx, dword [rsp + 0x38]
lea eax, [rdx + 0x34]
cmp esi, eax
jbe 0x14023fd7b
xor r9d, r9d
xor r8d, r8d
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
lea r9, [rsp + 0x34]
mov qword [rsp + 0x20], 0
mov r8d, 4
lea rdx, [rsp + 0x40]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, dword [rsp + 0x40]
cmp eax, 0x5a4d
je 0x14023fd77
add eax, 0xffffbab4
cmp eax, 4
ja 0x14023fd7b
mov ecx, SafeArrayUnaccessData
bt ecx, eax
jae 0x14023fd7b
bts ebx, 0x16
test r15, r15
je 0x14023fd83
mov dword [r15], ebx
test r14, r14
je 0x14023fd8b
mov dword [r14], esi
mov rcx, qword [rsp + 0x6c]
mov rsi, qword [rsp + 0xb8]
test rbp, rbp
je 0x14023fe13
mov r8, qword [rsp + 0x64]
movabs r10, 0xfe624e212ac18000
add r8, r10
movabs r9, 0xd6bf94d5e57a42bd
mov rax, r9
imul r8
add rdx, r8
lea r8, [rcx + r10]
sar rdx, 0x17
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov rax, r9
mov dword [rbp], edx
imul r8
mov rax, r9
add rdx, r8
sar rdx, 0x17
mov r8, rdx
shr r8, 0x3f
add rdx, r8
mov r8, qword [rsp + 0x5c]
mov dword [rbp + 4], edx
add r8, r10
imul r8
add rdx, r8
sar rdx, 0x17
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov dword [rbp + 8], edx
mov rbx, qword [rsp + 0xd0]
test rbx, rbx
je 0x14023fe8f
mov qword [rsp + 0x40], rcx
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
movzx eax, word [rsp + 0x4a]
movzx ecx, word [rsp + 0x48]
and ax, 0xf
sub cx, 0x3c
shl cx, 4
or cx, ax
movzx eax, word [rsp + 0x4e]
and eax, 0x1f
shl cx, 5
movzx edx, cx
movzx ecx, word [rsp + 0x52]
or edx, eax
movzx eax, word [rsp + 0x50]
and cx, 0x3f
shl ax, 6
or cx, ax
shl edx, 0x10
shl cx, 5
movzx eax, cx
or edx, eax
movzx eax, word [rsp + 0x54]
add ax, ax
and eax, 0x1f
or edx, eax
mov dword [rbx], edx
mov rbx, qword [rsp + 0xb0]
xor eax, eax
mov rbp, qword [rsp + 0xc0]
add rsp, 0x90
pop r15
pop r14
pop rdi
ret