Function at 0x14022a7d0
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x68
mov qword [rbp - 0x38], 0xfffffffffffffffe
mov rdi, rcx
lea rax, [rbp - 0x18]
mov qword [rbp + 0x48], rax
lea rax, [rbp - 0x18]
mov qword [rbp + 0x50], rax
xor r12d, r12d
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], r12
mov r15b, 1
mov esi, r12d
mov rcx, qword [rcx + 0x70]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea r13, [0x1402be068]
lea r14d, [r12 - 1]
test eax, eax
jle 0x14022aa07
nop
mov rcx, qword [rdi + 0x70]
mov rax, qword [rcx]
mov r8d, esi
lea rdx, [rbp + 0x48]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
lea rdx, [rbp + 0x48]
lea rcx, [rbp - 0x30]
call fcn.140018b20
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
test al, 0x10
je 0x14022a880
cmp eax, 0xffffffff
je 0x14022a880
test byte [rdi + 0x40], 8
je 0x14022a9d6
mov rcx, qword [rdi + 0x38]
test rcx, rcx
je 0x14022a8d1
mov rax, qword [rcx]
lea rdx, [rbp + 0x48]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x14022a8c9
test byte [rdi + 0x40], 4
je 0x14022a9d6
mov rax, qword [rbp + 0x48]
cmp byte [rax], 0
je 0x14022a9d6
lea rdx, [rbp + 0x48]
lea rcx, [rbp - 0x28]
call fcn.140018b20
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x14022a9d6
mov rcx, qword [rdi + 0x38]
test rcx, rcx
je 0x14022a8d1
mov rax, qword [rcx]
lea rdx, [rbp + 0x48]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test al, al
je 0x14022a9d6
test r15b, r15b
je 0x14022a8fa
lea rcx, [rdi + 0x50]
call fcn.140019dd0
cmp dword [rdi + 0x58], 0
je 0x14022a8f3
mov rcx, qword [rdi + 0x50]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov qword [rdi + 0x50], r12
mov dword [rdi + 0x58], r12d
xor r15b, r15b
mov edx, dword [rdi + 0x5c]
lea ecx, [rdx + 1]
cmp ecx, dword [rdi + 0x58]
jle 0x14022a924
mov eax, ecx
test ecx, ecx
jns 0x14022a90e
lea eax, [rcx + 1]
sar eax, 1
lea edx, [rcx + 8]
add edx, eax
and edx, 0xfffffff8
lea rcx, [rdi + 0x50]
call fcn.14001aa20
mov edx, dword [rdi + 0x5c]
lea eax, [rdx + 1]
mov dword [rdi + 0x5c], eax
movsxd rcx, edx
mov rax, qword [rdi + 0x50]
lea rdx, [rax + rcx*8]
mov qword [rbp - 0x20], rdx
mov rax, qword [rbp + 0x48]
mov qword [rdx], rax
mov rcx, qword [rbp + 0x48]
add rcx, 0xfffffffffffffff0
cmp rcx, r13
je 0x14022a956
mov eax, 1
lock xadd dword [rcx], eax
lea r8, [rdi + 0x48]
lea rdx, [rbp + 0x50]
lea rcx, [rbp + 0x48]
call fcn.14015c220
mov rbx, rax
mov qword [rbp - 0x20], rax
mov ecx, dword [rbp - 0xc]
lea edx, [rcx + 1]
cmp edx, dword [rbp - 0x10]
jle 0x14022a998
mov ecx, edx
test edx, edx
jns 0x14022a982
lea ecx, [rdx + 1]
sar ecx, 1
add edx, 8
add edx, ecx
and edx, 0xfffffff8
lea rcx, [rbp - 0x18]
call fcn.14001a6a0
mov ecx, dword [rbp - 0xc]
lea eax, [rcx + 1]
mov dword [rbp - 0xc], eax
movsxd rcx, ecx
mov rax, qword [rbp - 0x18]
lea rdx, [rax + rcx*8]
mov rax, qword [rbx]
mov qword [rdx], rax
lea rax, [0x1402be078]
mov qword [rbx], rax
mov rcx, qword [rbx]
add rcx, 0xfffffffffffffff0
cmp rcx, r13
je 0x14022a9d6
mov eax, r14d
lock xadd dword [rcx], eax
test eax, eax
jne 0x14022a9d6
call fcn.14010a370
nop
mov rcx, qword [rbp + 0x48]
add rcx, 0xfffffffffffffff0
cmp rcx, r13
je 0x14022a9f3
mov eax, r14d
lock xadd dword [rcx], eax
test eax, eax
jne 0x14022a9f3
call fcn.14010a370
inc esi
mov rcx, qword [rdi + 0x70]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
cmp esi, eax
jl 0x14022a830
cmp dword [rbp - 0xc], 0
jle 0x14022aa59
lea rax, [0x1402c3e54]
mov qword [rbp + 0x58], rax
lea r8, [rbp + 0x58]
lea rdx, [rbp + 0x60]
lea rcx, [rbp - 0x18]
call fcn.14014a0a0
nop
xor r8d, r8d
mov rdx, rax
lea rcx, [rdi + 0x208]
call fcn.1401df800
nop
mov rcx, qword [rbp + 0x60]
add rcx, 0xfffffffffffffff0
cmp rcx, r13
je 0x14022aa59
lock xadd dword [rcx], r14d
test r14d, r14d
jne 0x14022aa59
call fcn.14010a370
lea rcx, [rdi - 0xb0]
call fcn.14022aab0
nop
lea rax, [rbp - 0x18]
mov qword [rbp + 0x48], rax
lea rax, [rbp - 0x18]
mov qword [rbp + 0x48], rax
lea rcx, [rbp - 0x18]
call fcn.14001a610
nop
mov rcx, qword [rbp - 0x18]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret