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

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov qword [rsp + 0x20], 0xfffffffffffffffe
mov qword [rsp + 0x88], rbx
call fcn.1401ff164
mov rdx, rax
xor r13d, r13d
mov ecx, r13d
test rax, rax
setne cl
test ecx, ecx
jne 0x14018c5c4
mov ecx, 0x80004005
call fcn.140002bc0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x70], rax
lea rdx, [0x140275388]
or r12, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x14018c60b
movzx edi, dx
mov ecx, edi
call fcn.140200fbc
test rax, rax
je 0x14018c628
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.1401bacf0
jmp 0x14018c628
xor eax, eax
mov rcx, r12
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x70]
call fcn.14000b770
nop
lea rcx, [rsp + 0x78]
call fcn.140047180
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rdi, qword [rsp + 0x70]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14018c693
cmp dword [rdi + 0x10], 0
jl 0x14018c684
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14018c684
call fcn.140002dd0
mov rsi, rax
mov ecx, r12d
lock xadd dword [rdi + 0x10], ecx
add ecx, 0xffffffff
test ecx, ecx
jg 0x14018c679
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsi + 0x18]
mov qword [rsp + 0x70], rax
jmp 0x14018c693
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x70]
call fcn.14000b770
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14018c6b4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
mov rcx, r12
lea rbp, str.SonicFocusSFConfig.dat
mov rdi, rbp
repne scasw ax, word [rdi]
not rcx
lea r15, [rcx - 1]
mov rbx, rbp
mov rdi, qword [rsp + 0x70]
sub rbx, rdi
sar rbx, 1
mov r14d, dword [rdi - 0x10]
lea esi, [r14 + rcx - 1]
mov edx, 1
sub edx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, esi
or eax, edx
jge 0x14018c706
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.140002be0
mov rdi, qword [rsp + 0x70]
cmp rbx, r14
ja 0x14018c70f
lea rbp, [rdi + rbx*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rdi + r14*2]
mov r9, rdx
mov r8, rbp
call fcn.14022ba40
test esi, esi
js 0x14018c864
cmp esi, dword [rdi - 0xc]
jg 0x14018c864
mov dword [rdi - 0x10], esi
movsxd rax, esi
mov word [rdi + rax*2], 0
lea rbp, [rdi - 0x18]
mov rcx, qword [rbp]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rbp + 0x10], 0
jl 0x14018c768
cmp rax, qword [rbp]
jne 0x14018c768
mov rbx, rbp
lock add dword [rbp + 0x10], 1
jmp 0x14018c7a7
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rbp + 8]
call qword [rax]
mov rbx, rax
test rax, rax
jne 0x14018c784
call fcn.1400e7510
int3
mov eax, dword [rbp + 8]
mov dword [rbx + 8], eax
mov eax, dword [rbp + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rbp + 0x18]
add rdx, rdx
lea rcx, [rbx + 0x18]
call fcn.14022ba40
add rbx, 0x18
mov qword [rsp + 0x80], rbx
xor eax, eax
lea rdi, [0x140275388]
mov rsi, rbx
mov ecx, 1
repe cmpsw word [rsi], word [rdi]
je 0x14018c7ce
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
setne al
test al, al
jne 0x14018c7f5
lea rdx, [rbx - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14018c843
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14018c843
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x14018c821
lea rdx, [rbx - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14018c843
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14018c843
lea rdx, [rbx - 0x18]
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14018c83d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r13d, 1
lock xadd dword [rbp + 0x10], r12d
add r12d, 0xffffffff
test r12d, r12d
jg 0x14018c85f
mov rcx, qword [rbp]
mov rax, qword [rcx]
mov rdx, rbp
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r13d
jmp 0x14018c86f
mov ecx, 0x80070057
call fcn.140002bc0
nop
mov rbx, qword [rsp + 0x88]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret