Function at 0x140028610
Capabilities:
Check if file exists
Get common file path
Get file attributes
Set current directory

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x10570]
mov eax, 0x10670
call fcn.1400eb380
sub rsp, rax
mov r12, rdx
mov r13, rcx
lea rdx, [rbp + 0x570]
xor ecx, ecx
mov r8d, 0x8000
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov eax, eax
xor r14d, r14d
mov qword [rbp + 0x105c0], rax
lea r15, [0x1400fb87c]
mov rsi, 0xffffffffffffffff
test rax, rax
je 0x1400287a4
cmp rax, 0x8000
je 0x140028cd4
cmp word [rbp + 0x570], r14w
je 0x1400286e4
lea rdi, [rax + rax]
lea rcx, [rdi + 2]
call fcn.1400a96d0
mov rbx, rax
test rax, rax
jne 0x1400286cb
lea r8, [rbp + 0x570]
lea rdx, str.Out_of_memory.
lea rcx, [0x140136640]
call fcn.1400515e0
xor eax, eax
mov qword [r13 + 0xb98], r14
jmp 0x140028d00
mov r8, rdi
lea rdx, [rbp + 0x570]
mov rcx, rbx
call fcn.1400cfd20
mov word [rdi + rbx], r14w
jmp 0x1400286e7
mov rbx, r15
mov edx, 0x5c
mov qword [r13 + 0xb98], rbx
lea rcx, [rbp + 0x570]
call fcn.1400cba50
mov rbx, rax
test rax, rax
je 0x1400287a4
lea rax, [rbp + 0x570]
sub rbx, rax
sar rbx, 1
cmp word [rbp + 0x570], r14w
je 0x14002879d
cmp rbx, rsi
jne 0x14002873b
lea rax, [rbp + 0x570]
mov rbx, rsi
inc rbx
cmp word [rax + rbx*2], r14w
jne 0x140028731
lea r15, [rbx + rbx]
lea rcx, [r15 + 2]
call fcn.1400a96d0
mov rdi, rax
test rax, rax
jne 0x140028778
lea r8, [rbp + 0x570]
lea rdx, str.Out_of_memory.
lea rcx, [0x140136640]
call fcn.1400515e0
xor eax, eax
mov qword [r13 + 0xba0], r14
jmp 0x140028d00
test rbx, rbx
je 0x14002878f
mov r8, r15
lea rdx, [rbp + 0x570]
mov rcx, rdi
call fcn.1400cfd20
mov word [r15 + rdi], r14w
mov qword [r13 + 0xba0], rdi
jmp 0x1400287a4
mov qword [r13 + 0xba0], r15
test r12, r12
jne 0x140028987
lea edx, [r12 + 0x5c]
lea rcx, [rbp + 0x570]
call fcn.1400cba50
mov rbx, rax
test rax, rax
je 0x140028cd4
lea edx, [r12 + 0x2e]
mov rcx, rax
call fcn.1400cba50
mov rdx, rax
test rax, rax
je 0x140028cd4
lea rax, [rbp + 0x570]
mov rcx, rdx
sub rcx, rax
sar rcx, 1
add rcx, 5
cmp rcx, 0x8000
jae 0x140028cd4
movsd xmm0, qword [str..phk]
lea r12, [rbp + 0x570]
movsd qword [rdx], xmm0
lea rcx, [rbp + 0x570]
movzx eax, word [0x140113308]
mov word [rdx + 8], ax
mov qword [rbp + 0x105b8], r12
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x140028987
xor r9d, r9d
lea rax, [rsp + 0x50]
lea r12, [rbp + 0x160]
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov qword [rbp + 0x105b8], r12
xor ecx, ecx
lea edx, [r9 + 5]
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
je 0x140028873
mov word [rsp + 0x50], r14w
lea rax, [rsp + 0x50]
mov rdx, rsi
nop dword [rax + rax]
inc rdx
cmp word [rax + rdx*2], r14w
jne 0x140028880
test rdx, rdx
jne 0x140028894
mov rdx, r14
jmp 0x1400288a5
cmp word [rsp + rdx*2 + 0x4e], 0x5c
jne 0x1400288a5
mov word [rsp + rdx*2 + 0x4e], r14w
dec rdx
mov rcx, r14
nop dword [rax + rax]
movzx eax, word [rsp + rcx + 0x50]
mov word [rbp + rcx + 0x160], ax
lea rcx, [rcx + 2]
test ax, ax
jne 0x1400288b0
mov rax, rsi
nop dword [rax]
inc rax
cmp word [rbx + rax*2], r14w
jne 0x1400288d0
inc rax
add rax, rdx
cmp rax, 0x201
ja 0x140028cd4
lea rax, [rdx + rdx]
sub rax, rbx
lea rcx, [rbp + 0x160]
add rcx, rax
nop dword [rax]
movzx eax, word [rbx]
mov word [rcx + rbx], ax
lea rbx, [rbx + 2]
test ax, ax
jne 0x140028900
lea rcx, [rbp + 0x160]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x140028987
mov rcx, qword [r13 + 0xba0]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea rcx, str.AutoHotkey.chm
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140028987
mov qword [rsp + 0x48], r14
lea rax, [0x140113330]
mov byte [rsp + 0x40], r14b
lea r8, str._ms_its:AutoHotkey.chm::_docs_Welcome.htm_
mov byte [rsp + 0x38], r14b
lea rdx, str.hh.exe
mov qword [rsp + 0x30], r14
xor r9d, r9d
mov qword [rsp + 0x28], rax
mov rcx, r13
mov byte [rsp + 0x20], r14b
call fcn.1400527c0
test eax, eax
jne 0x140028cd4
cmp word [r12], 0x2a
jne 0x1400289d8
cmp word [r12 + 2], r14w
jne 0x1400289c3
mov eax, 2
mov dword [rbp + 0x570], gethostbyaddr
mov dword [0x140134270], 4
mov dword [0x140134fb4], 1
mov dword [r13 + 0xbb0], eax
jmp 0x1400289e2
mov eax, 1
mov byte [0x14012fc1d], r14b
mov dword [r13 + 0xbb0], eax
jmp 0x1400289e2
mov dword [r13 + 0xbb0], r14d
mov eax, r14d
lea rcx, [rbp + 0x570]
cmp r12, rcx
je 0x140028a23
cmp eax, 1
je 0x140028a23
xor r9d, r9d
lea r8, [rbp + 0x570]
mov edx, 0x8000
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov eax, eax
mov qword [rbp + 0x105c0], rax
dec rax
cmp rax, 0x7ffe
ja 0x140028cd4
cmp dword [r13 + 0xbb0], 2
je 0x140028a40
lea r8, [rbp + 0x105c0]
lea rcx, [rbp + 0x570]
call fcn.1400ae040
cmp word [rbp + 0x570], r14w
je 0x140028ac0
lea rax, [rbp + 0x570]
mov rbx, rsi
inc rbx
cmp word [rax + rbx*2], r14w
jne 0x140028a54
lea r15, [rbx + rbx]
lea rcx, [r15 + 2]
call fcn.1400a96d0
mov rdi, rax
test rax, rax
jne 0x140028a9b
lea r8, [rbp + 0x570]
lea rdx, str.Out_of_memory.
lea rcx, [0x140136640]
call fcn.1400515e0
xor eax, eax
mov qword [r13 + 0xb80], r14
jmp 0x140028d00
test rbx, rbx
je 0x140028ab2
mov r8, r15
lea rdx, [rbp + 0x570]
mov rcx, rdi
call fcn.1400cfd20
mov word [r15 + rdi], r14w
lea r12, [0x1400fb87c]
jmp 0x140028aca
lea r12, [0x1400fb87c]
mov rdi, r12
mov edx, 0x5c
mov qword [r13 + 0xb80], rdi
lea rcx, [rbp + 0x570]
call fcn.1400cba50
mov rdi, rax
test rax, rax
je 0x140028bde
lea rax, [rbp + 0x570]
mov rbx, rdi
sub rbx, rax
sar rbx, 1
cmp word [rbp + 0x570], r14w
je 0x140028b8d
cmp rbx, rsi
jne 0x140028b2a
lea rax, [rbp + 0x570]
mov rbx, rsi
nop dword [rax + rax]
inc rbx
cmp word [rax + rbx*2], r14w
jne 0x140028b20
lea r12, [rbx + rbx]
lea rcx, [r12 + 2]
call fcn.1400a96d0
mov r15, rax
test rax, rax
jne 0x140028b68
lea r8, [rbp + 0x570]
lea rdx, str.Out_of_memory.
lea rcx, [0x140136640]
call fcn.1400515e0
xor eax, eax
mov qword [r13 + 0xb88], r14
jmp 0x140028d00
test rbx, rbx
je 0x140028b7f
mov r8, r12
lea rdx, [rbp + 0x570]
mov rcx, r15
call fcn.1400cfd20
mov word [r12 + r15], r14w
lea r12, [0x1400fb87c]
jmp 0x140028b90
mov r15, r12
mov qword [r13 + 0xb88], r15
add rdi, 2
jne 0x140028be5
mov r15, r12
mov qword [r13 + 0xb90], r15
lea rdx, [0x1400fb970]
mov r9, qword [rbp + 0x105b8]
mov rcx, r14
nop dword [rax + rax]
movzx eax, word [r9 + rcx*2]
inc rcx
cmp ax, word [rdx + rcx*2 - 2]
jne 0x140028c58
cmp rcx, 4
jne 0x140028bc0
jmp 0x140028c83
lea rdi, [rbp + 0x570]
cmp word [rdi], r14w
je 0x140028b9d
mov rbx, rsi
nop
inc rbx
cmp word [rdi + rbx*2], r14w
jne 0x140028bf0
lea r12, [rbx + rbx]
lea rcx, [r12 + 2]
call fcn.1400a96d0
mov r15, rax
test rax, rax
jne 0x140028c34
mov r8, rdi
lea rdx, str.Out_of_memory.
lea rcx, [0x140136640]
call fcn.1400515e0
xor eax, eax
mov qword [r13 + 0xb90], r14
jmp 0x140028d00
test rbx, rbx
je 0x140028c47
mov r8, r12
mov rdx, rdi
mov rcx, r15
call fcn.1400cfd20
mov word [r12 + r15], r14w
lea r12, [0x1400fb87c]
jmp 0x140028ba0
cmp dword [r13 + 0xbb0], 1
lea rax, str.PinkHotkey_v0.0.0.0
lea r8, str.____s
mov edx, 0x8000
cmovne r9, rax
lea rcx, [rbp + 0x570]
call fcn.1400acff0
cmp word [rbp + 0x570], r14w
je 0x140028cf4
lea rax, [rbp + 0x570]
inc rsi
cmp word [rax + rsi*2], r14w
jne 0x140028c94
lea rbx, [rsi + rsi]
lea rcx, [rbx + 2]
call fcn.1400a96d0
mov r12, rax
test rax, rax
jne 0x140028cd8
lea r8, [rbp + 0x570]
lea rdx, str.Out_of_memory.
lea rcx, [0x140136640]
call fcn.1400515e0
mov qword [r13 + 0xba8], r14
xor eax, eax
jmp 0x140028d00
test rsi, rsi
je 0x140028cef
mov r8, rbx
lea rdx, [rbp + 0x570]
mov rcx, r12
call fcn.1400cfd20
mov word [rbx + r12], r14w
mov qword [r13 + 0xba8], r12
mov eax, 1
mov rbx, qword [rsp + 0x106b0]
add rsp, 0x10670
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret