Function at 0x180014570
Capabilities:
Check if file exists
Create shortcut via ishelllink
Get file attributes

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x3e8]
sub rsp, 0x4e8
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov rax, qword [0x1801345d0]
xor rax, rsp
mov qword [rbp + 0x3d0], rax
mov r14, r9
mov r15d, r8d
mov rdi, rdx
mov r13, rcx
mov rax, qword [rbp + 0x458]
mov qword [rsp + 0x60], rax
mov rbx, qword [rbp + 0x468]
mov rsi, qword [rbp + 0x478]
test rcx, rcx
jne 0x1800145d8
xor eax, eax
jmp 0x180014917
xor eax, eax
mov r12d, eax
mov dword [rsp + 0x40], eax
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x30], eax
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1800148c7
xor ecx, ecx
call qword [sym.imp.ole32.dll_CoInitialize]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0x38]
mov qword [rsp + 0x20], rax
lea r9, [0x1800f3538]
xor edx, edx
lea r8d, [rdx + 1]
lea rcx, [0x1800f5a68]
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x1800148c7
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea r8, [rsp + 0x58]
lea rdx, [0x1800f4928]
call qword [rax]
test eax, eax
js 0x1800148c7
mov rdx, r13
lea rcx, [rsp + 0x50]
call fcn.180042f80
nop
mov rcx, qword [rsp + 0x58]
mov rax, qword [rcx]
xor r8d, r8d
mov rdx, qword [rsp + 0x50]
call qword [rax + 0x28]
test eax, eax
jns 0x180014683
jmp 0x1800148bd
mov r8d, dword [rbp + 0x480]
test r8d, r8d
je 0x1800146a8
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
xor edx, edx
call qword [rax + 0x98]
test eax, eax
jns 0x1800146a8
jmp 0x1800148bd
test rdi, rdi
je 0x180014787
test r15d, r15d
je 0x180014787
mov r8, r15
add r8, r8
xor edx, edx
mov rcx, rdi
call fcn.18006f140
xor r12d, r12d
mov dword [rsp + 0x70], r12d
xor edx, edx
mov r8d, 0x24c
lea rcx, [rsp + 0x74]
call fcn.18006f140
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
mov dword [rsp + 0x20], 4
lea r9, [rsp + 0x70]
mov r8d, r15d
mov rdx, rdi
call qword [rax + 0x18]
test eax, eax
js 0x18001472a
lea edx, [r12 + 0x7b]
mov rcx, rdi
call fcn.180071508
test rax, rax
je 0x18001478e
lea edx, [r12 + 0x7d]
mov rcx, rdi
call fcn.180071508
test rax, rax
je 0x18001478e
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0x48]
call qword [rax + 0x20]
test eax, eax
js 0x18001478e
mov r13d, 1
mov word [rbp + 0x1c0], r12w
xor edx, edx
mov r8d, 0x208
lea rcx, [rbp + 0x1c2]
call fcn.18006f140
lea rdx, [rbp + 0x1c0]
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea r8d, [r15 - 1]
lea rdx, [rbp + 0x1c0]
mov rcx, rdi
call fcn.1800711ac
jmp 0x180014791
mov r13d, dword [rsp + 0x30]
jmp 0x180014791
mov r13d, r12d
test r14, r14
je 0x1800147c1
mov edi, dword [rbp + 0x450]
test edi, edi
je 0x1800147c1
mov r8d, edi
add r8, r8
xor edx, edx
mov rcx, r14
call fcn.18006f140
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
mov r8d, edi
mov rdx, r14
call qword [rax + 0x50]
mov r12, qword [rsp + 0x60]
test r12, r12
je 0x180014808
mov edi, dword [rbp + 0x460]
test edi, edi
je 0x180014808
mov r8d, edi
add r8, r8
xor edx, edx
mov rcx, r12
call fcn.18006f140
xor r14d, r14d
mov dword [rsp + 0x30], r14d
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea r9, [rsp + 0x30]
mov r8d, edi
mov rdx, r12
call qword [rax + 0x80]
jmp 0x18001480b
xor r14d, r14d
test rbx, rbx
je 0x18001488d
mov edi, dword [rbp + 0x470]
test edi, edi
je 0x18001488d
mov r8d, edi
add r8, r8
xor edx, edx
mov rcx, rbx
call fcn.18006f140
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
mov r8d, edi
mov rdx, rbx
call qword [rax + 0x40]
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
dec rcx
je 0x18001488d
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
test al, 0x10
je 0x18001488d
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
lea rax, [rcx - 2]
cdqe
cmp word [rbx + rax*2], 0x5c
je 0x18001488d
mov rdi, rbx
xor eax, eax
or rcx, 0xffffffffffffffff
repne scasw ax, word [rdi]
mov eax, dword [0x1800e3518]
mov dword [rdi - 2], eax
test rsi, rsi
je 0x1800148b7
mov qword [rsi], r14
test r13d, r13d
je 0x1800148a9
mov rax, qword [rsp + 0x48]
mov qword [rsi], rax
mov qword [rsp + 0x48], r14
jmp 0x1800148b7
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + 0x20]
mov r12d, 1
lea rcx, [rsp + 0x50]
call fcn.180040610
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x1800148e0
mov rax, qword [rcx]
call qword [rax + 0x10]
xor edi, edi
mov qword [rsp + 0x58], rdi
jmp 0x1800148e2
xor edi, edi
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1800148f7
mov rax, qword [rcx]
call qword [rax + 0x10]
mov qword [rsp + 0x38], rdi
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x180014907
call qword [sym.imp.ole32.dll_CoTaskMemFree]
cmp dword [rsp + 0x40], 0
jl 0x180014914
call qword [sym.imp.ole32.dll_CoUninitialize]
mov eax, r12d
mov rcx, qword [rbp + 0x3d0]
xor rcx, rsp
call fcn.18006f110
add rsp, 0x4e8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret