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

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0xb0
mov qword [rbp + 0x17], 0xfffffffffffffffe
mov qword [rsp + 0xf8], rbx
mov r12, rdx
mov r15, rcx
xor r13d, r13d
mov dword [rbp - 0x49], r13d
lea rcx, str.__r_
mov rax, qword [str.__r_]
call qword [rax + 0x18]
add rax, 0x18
mov qword [r15], rax
mov esi, 1
mov dword [rbp - 0x49], esi
mov ecx, dword [0x1401d5d60]
lea r8d, [rcx + 2]
lea eax, [rcx + 1]
imul r8d, eax
imul r8d, ecx
mov eax, 0x88888889
imul r8d
add edx, r8d
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0xf
sub r8d, edx
cmp r8d, 3
jne 0x14002dbf6
call fcn.1400d41a0
mov ecx, dword [0x1401d5d60]
cmp ecx, eax
jne 0x14002dbf6
dec ecx
mov dword [0x1401d5d60], ecx
mov rax, qword [r12]
mov ebx, 3
cmp dword [rax - 0x10], 0
je 0x14002dc75
movzx eax, word [rax]
cmp ax, word [0x14015a1ec]
jne 0x14002dc16
mov eax, r13d
jmp 0x14002dc1a
sbb eax, eax
or eax, esi
test eax, eax
je 0x14002dc75
lea rcx, [rbp + 0xf]
call fcn.14002c010
nop
mov esi, ebx
mov dword [rbp - 0x49], ebx
mov rdx, qword [rax]
mov eax, r13d
test rdx, rdx
setne al
test eax, eax
jne 0x14002dc48
mov ecx, 0x80004005
call fcn.140001920
int3
mov rax, qword [r12]
sub rdx, rax
nop
movzx ecx, word [rax]
cmp cx, word [rax + rdx]
jne 0x14002dc67
add rax, 2
test cx, cx
jne 0x14002dc50
mov eax, r13d
jmp 0x14002dc6c
sbb eax, eax
or eax, 1
test eax, eax
je 0x14002dc75
xor r14b, r14b
jmp 0x14002dc78
mov r14b, 1
test sil, 2
je 0x14002dc9c
and esi, 0xfffffffd
mov dword [rbp - 0x49], esi
mov rdx, qword [rbp + 0xf]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002dc9c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test r14b, r14b
je 0x14002dd1f
lea rcx, [rbp + 7]
call fcn.14002c010
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rbx, qword [r15]
sub rbx, 0x18
cmp rcx, rbx
je 0x14002dcfe
cmp dword [rbx + 0x10], 0
jl 0x14002dcf1
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14002dcf1
call fcn.1400025c0
mov rsi, rax
lock add dword [rbx + 0x10], 0xffffffff
jg 0x14002dce8
mov rcx, qword [rbx]
mov r8, qword [rcx]
mov rdx, rbx
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rsi + 0x18]
mov qword [r15], rax
jmp 0x14002dcfe
mov r8d, dword [rdx - 0x10]
mov rcx, r15
call fcn.140002470
nop
mov rdx, qword [rbp + 7]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002e0cf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14002e0cf
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x20], ebx
xor r9d, r9d
xor r8d, r8d
mov edx, 0x80000000
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rsi, rax
mov qword [rbp - 9], rax
cmp rax, 0xffffffffffffffff
jne 0x14002ddb5
lea rcx, [rbp - 0x11]
call fcn.14002c010
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rbx, qword [r15]
sub rbx, 0x18
cmp rcx, rbx
je 0x14002ddac
cmp dword [rbx + 0x10], 0
jl 0x14002dd9f
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14002dd9f
call fcn.1400025c0
mov rsi, rax
lock add dword [rbx + 0x10], 0xffffffff
jg 0x14002dd96
mov rcx, qword [rbx]
mov r8, qword [rcx]
mov rdx, rbx
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rsi + 0x18]
mov qword [r15], rax
jmp 0x14002ddac
mov r8d, dword [rdx - 0x10]
mov rcx, r15
call fcn.140002470
nop
mov rdx, qword [rbp - 0x11]
jmp 0x14002dd02
xor eax, eax
mov qword [rbp + 0x7f], rax
lea rdx, [rbp + 0x7f]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
jne 0x14002de03
lea rcx, [rbp - 0x21]
call fcn.14002c010
nop
mov rdx, rax
mov rcx, r15
call fcn.1400023d0
nop
mov rdx, qword [rbp - 0x21]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002e0c6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14002e0c6
cmp dword [rbp + 0x83], 0
je 0x14002de28
lea rcx, [rbp - 1]
call fcn.14002c010
nop
mov rdx, rax
mov rcx, r15
call fcn.1400023d0
nop
mov rdx, qword [rbp - 1]
jmp 0x14002dde6
cmp dword [rbp + 0x7f], 0
je 0x14002e0c6
mov qword [rbp - 0x41], r13
mov qword [rbp - 0x39], r13
mov qword [rbp - 0x31], r13
mov edx, dword [rbp + 0x7f]
lea rcx, [rbp - 0x41]
call fcn.14002e2e0
mov dword [rbp + 0x77], r13d
mov qword [rsp + 0x20], r13
lea r9, [rbp + 0x77]
mov r8d, dword [rbp + 0x7f]
mov r14, qword [rbp - 0x41]
mov rdx, r14
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x14002de91
test r14, r14
je 0x14002e0c6
mov rcx, r14
call fcn.1400d37c0
mov qword [rbp - 0x41], r13
mov qword [rbp - 0x39], r13
mov qword [rbp - 0x31], r13
jmp 0x14002e0c6
xor r12b, r12b
xor r13b, r13b
movzx eax, byte [r14]
cmp al, 0xff
jne 0x14002deb0
cmp byte [r14 + 1], 0xfe
jne 0x14002deb0
mov r12b, 1
mov ebx, 2
jmp 0x14002dee7
cmp al, 0xfe
jne 0x14002dec9
cmp byte [r14 + 1], 0xff
jne 0x14002dec9
mov r12b, 1
movzx r13d, r12b
mov ebx, 2
jmp 0x14002dee7
cmp al, 0xef
jne 0x14002dfb7
cmp byte [r14 + 1], 0xbb
jne 0x14002dfb7
cmp byte [r14 + 2], 0xbf
jne 0x14002dfb7
movsxd rdx, ebx
add rdx, r14
mov rsi, qword [rbp - 0x39]
cmp rdx, rsi
jne 0x14002deff
mov rsi, r14
mov qword [rbp - 0x39], r14
jmp 0x14002df19
cmp r14, rdx
je 0x14002df19
sub rsi, rdx
mov r8, rsi
mov rcx, r14
call fcn.1400d3810
add rsi, r14
mov qword [rbp - 0x39], rsi
test r13b, r13b
je 0x14002dfbb
mov r8d, dword [0x1401d5d60]
mov ecx, r8d
imul ecx, r8d
mov eax, 0x38e38e39
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*8]
add eax, eax
sub ecx, eax
cmp ecx, 0xf
jne 0x14002df57
dec r8d
mov dword [0x1401d5d60], r8d
mov rbx, r14
imul r8d, r8d
mov eax, 0x66666667
imul r8d
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*4]
sub r8d, eax
cmp r8d, 3
jne 0x14002df94
mov qword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
cmp r14, rsi
je 0x14002dfbb
nop dword [rax]
movzx edx, byte [rbx + 1]
movzx ecx, byte [rbx]
mov byte [rbx + 1], cl
mov byte [rbx], dl
add rbx, 2
cmp rbx, rsi
jne 0x14002dfa0
jmp 0x14002dfbb
mov rsi, qword [rbp - 0x39]
sub rsi, r14
cmp byte [r14 + rsi - 1], 0
je 0x14002dff9
lea rdx, [rsi + 1]
lea rcx, [rbp - 0x41]
call fcn.14002e2e0
mov r14, qword [rbp - 0x41]
mov byte [r14 + rsi], 0
test r12b, r12b
je 0x14002e045
lea rdx, [rsi + 2]
lea rcx, [rbp - 0x41]
call fcn.14002e2e0
mov rdx, qword [rbp - 0x41]
mov byte [rdx + rsi + 1], 0
jmp 0x14002e015
test r12b, r12b
je 0x14002e045
lea rdx, [rsi + 2]
lea rcx, [rbp - 0x41]
call fcn.14002e2e0
mov rdx, qword [rbp - 0x41]
mov word [rdx + rsi], 0
lea rcx, [rbp - 0x19]
call fcn.1400022b0
nop
mov rdx, rax
mov rcx, r15
call fcn.1400023d0
nop
mov rdx, qword [rbp - 0x19]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002e09c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14002e09c
lea rcx, str.__r_
mov rax, qword [str.__r_]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x29], rax
mov rdx, r14
lea rcx, [rbp - 0x29]
call fcn.1400034f0
nop
lea rdx, [rbp - 0x29]
mov rcx, r15
call fcn.1400023d0
nop
mov rdx, qword [rbp - 0x29]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002e090
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, r15
mov rcx, r15
call fcn.14002b1d0
nop
mov rcx, qword [rbp - 0x41]
test rcx, rcx
je 0x14002e0c2
call fcn.1400d37c0
mov qword [rbp - 0x41], 0
mov qword [rbp - 0x39], 0
mov qword [rbp - 0x31], 0
mov rsi, qword [rbp - 9]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rax, r15
mov rbx, qword [rsp + 0xf8]
add rsp, 0xb0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret