Function at 0x180003a6c
Capabilities:
Check if file exists

Disassembly:
jmp 0x180028530
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r14
sub rsp, 0x50
mov rax, qword [0x1800d12b8]
xor rax, rsp
mov qword [rsp + 0x40], rax
mov r14, rcx
xor ebp, ebp
xor ecx, ecx
xor edi, edi
call qword [sym.imp.KERNEL32.dll_SetLastError]
test r14, r14
je 0x1800287c6
xor r8d, r8d
or rsi, 0xffffffffffffffff
mov rax, rsi
nop
inc rax
cmp word [r14 + rax*2], di
jne 0x180028570
test rax, rax
je 0x1800285a5
xor ecx, ecx
movzx edx, word [r14 + rcx*2]
cmp dx, 0x5c
je 0x1800287c6
cmp dx, 0x2f
je 0x1800287c6
inc r8d
mov ecx, r8d
cmp rcx, rax
jb 0x180028581
mov ecx, 0x42ea
mov qword [rsp + 0x78], rbx
call fcn.1800259e0
test eax, eax
je 0x1800285f4
call fcn.180023600
cmp word [rax], di
jne 0x1800285c7
call fcn.180023740
mov rdx, r14
mov rcx, rax
call fcn.180026a60
mov rcx, rax
mov rbx, rax
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1800285eb
test al, 0x50
je 0x180028780
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_LocalFree]
xor ecx, ecx
call fcn.180002edc
xor ebx, ebx
mov rbp, rax
test rax, rax
je 0x180028780
mov rcx, r14
call fcn.180022040
mov rdi, rax
test rax, rax
je 0x180028780
nop dword [rax]
cmp word [rax + rsi*2 + 2], bx
lea rsi, [rsi + 1]
jne 0x180028620
lea rsi, [rax + rsi*2]
mov edx, 0x2e
mov rax, rsi
cmp rdi, rsi
jae 0x180028659
mov r8d, 0x5c
movzx ecx, word [rax]
cmp r8w, cx
je 0x180028659
cmp dx, cx
je 0x180028659
sub rax, 2
cmp rdi, rax
jb 0x180028642
cmp dx, word [rax]
lea rdx, [0x1800a9ff0]
cmove rsi, rax
mov rcx, rsi
call fcn.18000435e
test eax, eax
je 0x18002868a
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x18002868a
xor edx, edx
mov rcx, rdi
call fcn.180022960
mov rbx, rax
lea rdx, [0x1800aa000]
mov rcx, rsi
call fcn.18000435e
test eax, eax
je 0x180028742
test rbx, rbx
jne 0x180028780
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x180028700
lea rax, [0x1800aa010]
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x20]
lea rax, [0x1800aa040]
mov r8, rbp
mov qword [rsp + 0x28], rax
mov rdx, 0xffffffff80000002
lea rax, [0x1800aa070]
mov rcx, rdi
mov qword [rsp + 0x30], rax
call fcn.180022f00
mov rbx, rax
test rax, rax
jne 0x180028780
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x180028747
lea rax, [0x1800aa0b0]
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x20]
lea rax, [0x1800aa100]
mov rdx, 0xffffffff80000002
mov rcx, rdi
mov qword [rsp + 0x28], rax
call fcn.180022c80
mov rbx, rax
test rbx, rbx
jne 0x180028780
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x180028780
lea rax, [0x1800aa150]
mov qword [rsp + 0x28], 0
lea r9, [rsp + 0x20]
mov qword [rsp + 0x20], rax
mov r8, rbp
mov rdx, 0xffffffff80000002
mov rcx, rdi
call fcn.180022f00
mov rbx, rax
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LocalFree]
test rbx, rbx
je 0x1800287a9
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rax, rbx
mov rbx, qword [rsp + 0x78]
jmp 0x1800287d3
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x1800287bc
lea ecx, [rax + 0x7e]
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rax, rbx
mov rbx, qword [rsp + 0x78]
jmp 0x1800287d3
mov ecx, 0xa0
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
mov rcx, qword [rsp + 0x40]
xor rcx, rsp
call fcn.18000459d
mov rbp, qword [rsp + 0x80]
add rsp, 0x50
pop r14
pop rdi
pop rsi
ret