Function at 0x14002d7c0
Capabilities:
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, 0xa0
mov qword [rbp + 0x1f], 0xfffffffffffffffe
mov qword [rsp + 0xe8], rbx
mov r15, rdx
mov r14, rcx
xor r12d, r12d
mov dword [rbp - 0x39], r12d
lea rcx, str.D_r_
mov rax, qword [str.D_r_]
call qword [rax + 0x18]
add rax, 0x18
mov qword [r14], rax
mov r8d, 1
mov dword [rbp - 0x39], r8d
or r13, 0xffffffffffffffff
mov rax, qword [r15]
lea ebx, [r12 + 3]
cmp dword [rax - 0x10], r12d
je 0x14002d8a5
movzx eax, word [rax]
cmp ax, word [0x14015b3c4]
jne 0x14002d83e
mov eax, r12d
jmp 0x14002d843
sbb eax, eax
or eax, r8d
test eax, eax
je 0x14002d8a5
lea rcx, [rbp + 0x17]
call fcn.14002bbb0
nop
mov r8d, ebx
mov dword [rbp - 0x39], ebx
mov rdx, qword [rax]
mov eax, r12d
test rdx, rdx
setne al
test eax, eax
jne 0x14002d872
mov ecx, 0x80004005
call fcn.140001920
int3
mov rax, qword [r15]
sub rdx, rax
nop dword [rax + rax]
movzx ecx, word [rax]
cmp cx, word [rax + rdx]
jne 0x14002d897
add rax, 2
test cx, cx
jne 0x14002d880
mov eax, r12d
jmp 0x14002d89c
sbb eax, eax
or eax, 1
test eax, eax
je 0x14002d8a5
xor sil, sil
jmp 0x14002d8a8
mov sil, 1
test r8b, 2
je 0x14002d8ce
and r8d, 0xfffffffd
mov dword [rbp - 0x39], r8d
mov rdx, qword [rbp + 0x17]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002d8ce
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test sil, sil
je 0x14002d951
lea rcx, [rbp + 0xf]
call fcn.14002bbb0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rbx, qword [r14]
sub rbx, 0x18
cmp rcx, rbx
je 0x14002d930
cmp dword [rbx + 0x10], 0
jl 0x14002d923
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14002d923
call fcn.1400027c0
mov rsi, rax
lock add dword [rbx + 0x10], 0xffffffff
jg 0x14002d91a
mov rcx, qword [rbx]
mov r8, qword [rcx]
mov rdx, rbx
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rsi + 0x18]
mov qword [r14], rax
jmp 0x14002d930
mov r8d, dword [rdx - 0x10]
mov rcx, r14
call fcn.140002670
nop
mov rdx, qword [rbp + 0xf]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002dc88
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14002dc88
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], r12d
mov dword [rsp + 0x20], ebx
xor r9d, r9d
xor r8d, r8d
mov edx, 0x80000000
mov rcx, qword [r15]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov r13, rax
cmp rax, 0xffffffffffffffff
jne 0x14002d9e2
lea rcx, [rbp - 0x11]
call fcn.14002bbb0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rbx, qword [r14]
sub rbx, 0x18
cmp rcx, rbx
je 0x14002d9d9
cmp dword [rbx + 0x10], 0
jl 0x14002d9cc
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14002d9cc
call fcn.1400027c0
mov rsi, rax
lock add dword [rbx + 0x10], r13d
jg 0x14002d9c3
mov rcx, qword [rbx]
mov r8, qword [rcx]
mov rdx, rbx
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rsi + 0x18]
mov qword [r14], rax
jmp 0x14002d9d9
mov r8d, dword [rdx - 0x10]
mov rcx, r14
call fcn.140002670
nop
mov rdx, qword [rbp - 0x11]
jmp 0x14002d934
xor eax, eax
mov qword [rbp + 0x7f], rax
lea rdx, [rbp + 0x7f]
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
jne 0x14002da18
lea rcx, [rbp + 7]
call fcn.14002bbb0
nop
mov rdx, rax
mov rcx, r14
call fcn.1400025c0
nop
mov rdx, qword [rbp + 7]
jmp 0x14002d934
cmp dword [rbp + 0x83], 0
je 0x14002da40
lea rcx, [rbp - 9]
call fcn.14002bbb0
nop
mov rdx, rax
mov rcx, r14
call fcn.1400025c0
nop
mov rdx, qword [rbp - 9]
jmp 0x14002d934
cmp dword [rbp + 0x7f], 0
je 0x14002dc88
mov qword [rbp - 0x31], r12
mov qword [rbp - 0x29], r12
mov qword [rbp - 0x21], r12
mov edx, dword [rbp + 0x7f]
lea rcx, [rbp - 0x31]
call fcn.14002df80
mov dword [rbp + 0x77], r12d
mov qword [rsp + 0x20], r12
lea r9, [rbp + 0x77]
mov r8d, dword [rbp + 0x7f]
mov rsi, qword [rbp - 0x31]
mov rdx, rsi
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x14002daa9
test rsi, rsi
je 0x14002dc88
mov rcx, rsi
call fcn.1400d4de0
mov qword [rbp - 0x31], r12
mov qword [rbp - 0x29], r12
mov qword [rbp - 0x21], r12
jmp 0x14002dc88
xor r15b, r15b
xor r12b, r12b
movzx eax, byte [rsi]
cmp al, 0xff
jne 0x14002dac6
cmp byte [rsi + 1], 0xfe
jne 0x14002dac6
mov r15b, 1
mov ebx, 2
jmp 0x14002dafa
cmp al, 0xfe
jne 0x14002dade
cmp byte [rsi + 1], 0xff
jne 0x14002dade
mov r15b, 1
movzx r12d, r15b
mov ebx, 2
jmp 0x14002dafa
cmp al, 0xef
jne 0x14002db89
cmp byte [rsi + 1], 0xbb
jne 0x14002db89
cmp byte [rsi + 2], 0xbf
jne 0x14002db89
movsxd rdx, ebx
add rdx, rsi
mov rbx, qword [rbp - 0x29]
cmp rdx, rbx
jne 0x14002db0e
mov rbx, rsi
jmp 0x14002db24
cmp rsi, rdx
je 0x14002db28
sub rbx, rdx
mov r8, rbx
mov rcx, rsi
call fcn.1400d4e30
add rbx, rsi
mov qword [rbp - 0x29], rbx
test r12b, r12b
je 0x14002db8d
mov r8d, dword [0x1401d6d80]
lea ecx, [r8 + 1]
imul ecx, r8d
mov eax, 0x66666667
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*4]
shl eax, 2
sub ecx, eax
cmp ecx, 0xf
jne 0x14002db64
dec r8d
mov dword [0x1401d6d80], r8d
mov rcx, rsi
cmp rsi, rbx
je 0x14002db8d
nop dword [rax]
movzx r8d, byte [rcx + 1]
movzx edx, byte [rcx]
mov byte [rcx + 1], dl
mov byte [rcx], r8b
add rcx, 2
cmp rcx, rbx
jne 0x14002db70
jmp 0x14002db8d
mov rbx, qword [rbp - 0x29]
sub rbx, rsi
cmp byte [rsi + rbx - 1], 0
je 0x14002dbc9
lea rdx, [rbx + 1]
lea rcx, [rbp - 0x31]
call fcn.14002df80
mov rsi, qword [rbp - 0x31]
mov byte [rsi + rbx], 0
test r15b, r15b
je 0x14002dc15
lea rdx, [rbx + 2]
lea rcx, [rbp - 0x31]
call fcn.14002df80
mov rdx, qword [rbp - 0x31]
mov byte [rdx + rbx + 1], 0
jmp 0x14002dbe5
test r15b, r15b
je 0x14002dc15
lea rdx, [rbx + 2]
lea rcx, [rbp - 0x31]
call fcn.14002df80
mov rdx, qword [rbp - 0x31]
mov word [rdx + rbx], 0
lea rcx, [rbp - 1]
call fcn.1400024a0
nop
mov rdx, rax
mov rcx, r14
call fcn.1400025c0
nop
mov rdx, qword [rbp - 1]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002dc6c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14002dc6c
lea rcx, str.D_r_
mov rax, qword [str.D_r_]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rbp - 0x19], rax
mov rdx, rsi
lea rcx, [rbp - 0x19]
call fcn.140003940
nop
lea rdx, [rbp - 0x19]
mov rcx, r14
call fcn.1400025c0
nop
mov rdx, qword [rbp - 0x19]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14002dc60
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, r14
mov rcx, r14
call fcn.14002ad20
nop
mov rcx, qword [rbp - 0x31]
test rcx, rcx
je 0x14002dc88
call fcn.1400d4de0
xor eax, eax
mov qword [rbp - 0x31], rax
mov qword [rbp - 0x29], rax
mov qword [rbp - 0x21], rax
mov ecx, dword [0x1401d6d80]
lea edx, [rcx + 2]
lea eax, [rcx + 1]
imul edx, eax
imul edx, ecx
and edx, 0x8000000f
jge 0x14002dca9
dec edx
or edx, 0xfffffff0
inc edx
cmp edx, 0xd
jne 0x14002dcce
lea ecx, [rdx - 9]
call fcn.1400d55c0
mov rbx, rax
call fcn.1400d57c0
mov dword [rbx], eax
mov dword [0x1401d6d80], eax
mov rcx, rbx
call fcn.1400d4de0
cmp r13, 0xffffffffffffffff
je 0x14002dcdd
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rax, r14
mov rbx, qword [rsp + 0xe8]
add rsp, 0xa0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret