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

Disassembly:
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0xa0
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov qword [rsp + 0xe8], rbx
mov rax, qword [0x14047b0a0]
xor rax, rsp
mov qword [rsp + 0x90], rax
mov r15d, r8d
mov rdi, rdx
mov rsi, rcx
mov qword [rsp + 0x50], rcx
mov rcx, rdx
call fcn.14018edd0
test al, al
je 0x14016bb33
movdqa xmm0, xmmword [0x1404156a0]
movdqu xmmword [rsp + 0x80], xmm0
mov byte [rsp + 0x70], 0
xor r8d, r8d
lea rdx, [rsp + 0x70]
mov rcx, rdi
call fcn.14017ade0
lea rcx, [rsp + 0x70]
cmp qword [rsp + 0x88], 0x10
cmovae rcx, qword [rsp + 0x70]
lea rdx, [0x140412e9c]
call fcn.1402e7fe8
mov rbx, rax
test rax, rax
je 0x14016bb10
xor edx, edx
lea r8d, [rdx + 2]
mov rcx, rax
call fcn.1402ef52c
mov rcx, rbx
call fcn.1402efa28
movsxd r14, eax
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.1402ef52c
lea rcx, [r14 + 1]
call fcn.1402e51dc
mov rbp, rax
test rax, rax
je 0x14016bafb
mov r9, rbx
mov r8, r14
mov edx, 1
mov rcx, rax
call fcn.1402e7684
cmp rax, r14
jne 0x14016bafb
mov byte [r14 + rbp], 0
mov rcx, rbx
call fcn.1402e7390
movss xmm2, dword [0x1404155d8]
mov rcx, rbp
call fcn.14018a9e0
mov rbx, rax
mov rcx, rbp
call fcn.1402e51e4
jmp 0x14016bb12
mov rcx, rbx
call fcn.1402e7390
test rbp, rbp
je 0x14016bb10
mov rcx, rbp
call fcn.1402e51e4
xor ebx, ebx
mov r9d, r15d
mov r8, rdi
mov rdx, rbx
mov rcx, rsi
call fcn.14018ef70
nop
lea rcx, [rsp + 0x70]
call fcn.14007ea30
jmp 0x14016bc6c
xor ebx, ebx
mov qword [rsp + 0x48], rbx
mov rcx, rdi
cmp qword [rdi + 0x18], 8
jb 0x14016bb47
mov rcx, qword [rdi]
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], Ordinal_133
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [r9 + 1]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov r14, rax
cmp rax, 0xffffffffffffffff
je 0x14016bbe7
lea rdx, [rsp + 0x50]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x14016bbde
mov edx, dword [rsp + 0x50]
mov ecx, SHGetSetSettings
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov rbp, rax
test rax, rax
je 0x14016bbde
mov dword [rsp + 0x40], ebx
mov qword [rsp + 0x20], rbx
lea r9, [rsp + 0x40]
mov r8d, dword [rsp + 0x50]
mov rdx, rax
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov rcx, rbp
test eax, eax
je 0x14016bbd8
lea r8, [rsp + 0x48]
mov edx, 1
call qword [sym.imp.ole32.dll_CreateStreamOnHGlobal]
jmp 0x14016bbde
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14016bc69
call fcn.14016ea20
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x58], xmm0
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.1400e2a70
nop
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
mov r8, rdi
lea rdx, [rsp + 0x58]
mov rcx, rsi
call fcn.14016be30
nop
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x14016bc67
mov edi, 0xffffffff
mov eax, edi
lock xadd dword [rcx + 8], eax
cmp eax, 1
jne 0x14016bc67
mov rbx, qword [rsp + 0x60]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], edi
cmp edi, 1
jne 0x14016bc67
mov rcx, qword [rsp + 0x60]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
jmp 0x14016bc6c
mov qword [rsi], rbx
mov rax, rsi
mov rcx, qword [rsp + 0x90]
xor rcx, rsp
call fcn.1401aed20
mov rbx, qword [rsp + 0xe8]
add rsp, 0xa0
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret