Function at 0x14016b2d0
Capabilities:
Create shortcut via ishelllink

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x300
mov rsi, r8
mov edi, edx
mov r14, rcx
mov rax, qword [0x140516040]
xor rax, rsp
mov qword [rsp + 0x2f8], rax
movaps xmm0, xmmword [0x140484a40]
lea rbx, [rsp + 0xb0]
movaps xmmword [rbx + 0x30], xmm0
movaps xmmword [rbx + 0x20], xmm0
movaps xmmword [rbx + 0x10], xmm0
movaps xmmword [rbx], xmm0
lea rdx, str.ResolveShortcutProperties
lea r8, str....._basewin_shortcut.cc
lea r15, [rsp + 0xf0]
mov rcx, r15
mov r9d, 0xda
call fcn.140212f30
mov rcx, rbx
mov rdx, r15
xor r8d, r8d
call fcn.140205200
cmp edi, 0x100
jae 0x14016b6cf
lea rax, [rsp + 0xa8]
mov qword [rax], 0
mov qword [rsp + 0x20], rax
lea rcx, [0x14045f468]
lea r9, [0x1404e7998]
xor ebx, ebx
xor edx, edx
mov r8d, 1
call qword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x14016b648
lea r8, [rsp + 0xa0]
mov qword [r8], 0
mov rcx, qword [rsp + 0xa8]
mov rax, qword [rcx]
mov rax, qword [rax]
lea rdx, [0x1404e79a8]
call qword [0x140505c38]
test eax, eax
js 0x14016b982
mov rcx, qword [rsp + 0xa0]
cmp byte [r14 + 0x17], 0
jns 0x14016b3d5
mov r14, qword [r14]
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
xor ebx, ebx
mov rdx, r14
xor r8d, r8d
call qword [0x140505c38]
test eax, eax
js 0x14016b622
mov dword [rsi + 0xac], 0
lea rcx, [rsp + 0xf0]
mov r8d, 0x208
mov dl, 0xaa
call fcn.1402d9b60
test dil, 1
je 0x14016b493
mov rcx, qword [rsp + 0xa8]
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
mov dword [rsp + 0x20], 2
xor ebx, ebx
lea r14, [rsp + 0xf0]
mov rdx, r14
mov r8d, 0x104
xor r9d, r9d
call qword [0x140505c38]
test eax, eax
js 0x14016b622
lea rbx, [rsp + 0x70]
mov qword [rbx], r14
mov rcx, r14
call fcn.1402bdc14
mov qword [rbx + 8], rax
lea r14, [rsp + 0x80]
mov rcx, r14
mov rdx, rbx
call fcn.140213f20
mov rcx, rsi
mov rdx, r14
call fcn.140214070
or byte [rsi + 0xac], 1
mov rcx, r14
call fcn.140214060
test dil, 2
jne 0x14016b9f7
test dil, 4
je 0x14016b602
mov rcx, qword [rsp + 0xa8]
mov rax, qword [rcx]
mov rax, qword [rax + 0x50]
lea rdx, [rsp + 0xf0]
mov r8d, 0x104
call qword [0x140505c38]
test eax, eax
js 0x14016b982
movabs r15, 0x7ffffffffffffff7
lea r14, [rsp + 0xf0]
mov rcx, r14
call fcn.1402bdc14
cmp rax, r15
ja 0x14016b6d9
mov rbx, rax
cmp rax, 0xa
jbe 0x14016b5c6
mov rax, rbx
or rax, 3
lea rcx, [rax + 1]
cmp rax, 0xb
mov r12d, ntohl
cmovne r12, rcx
test r12, r12
js 0x14016b6ca
lea rcx, [r12 + r12]
call fcn.14029a62c
mov rcx, rax
mov qword [rsp + 0x80], rax
lea rax, [r15 + r12]
add rax, 9
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x88], rbx
lea r15, [rcx + rbx*2]
cmp rcx, r14
seta al
cmp r15, r14
setbe dl
or dl, al
je 0x14016b6c8
test rbx, rbx
je 0x14016b580
add rbx, rbx
lea rdx, [rsp + 0xf0]
mov r8, rbx
call fcn.1402d94c0
mov word [r15], 0
lea rcx, [rsi + 0x30]
lea rdx, [rsp + 0x80]
cmp rcx, rdx
je 0x14016b5ed
cmp byte [rsi + 0x47], 0
movzx r8d, byte [rsp + 0x97]
js 0x14016b6a9
test r8b, r8b
jns 0x14016b5d6
mov rdx, qword [rsp + 0x80]
mov r8, qword [rsp + 0x88]
call fcn.1400e6980
jmp 0x14016b5ed
lea rcx, [rsp + 0x80]
mov byte [rcx + 0x17], bl
jmp 0x14016b550
mov rax, qword [rsp + 0x90]
mov qword [rcx + 0x10], rax
movups xmm0, xmmword [rsp + 0x80]
movups xmmword [rcx], xmm0
or byte [rsi + 0xac], 4
cmp byte [rsp + 0x97], 0
js 0x14016b6e6
test dil, 8
jne 0x14016b989
test dil, 0x10
jne 0x14016ba6c
mov bl, 1
test dil, 0xe0
jne 0x14016b8dc
mov rcx, qword [rsp + 0xa0]
test rcx, rcx
je 0x14016b648
mov qword [rsp + 0xa0], 0
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [0x140505c38]
mov rcx, qword [rsp + 0xa8]
test rcx, rcx
je 0x14016b66e
mov qword [rsp + 0xa8], 0
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [0x140505c38]
lea rcx, [rsp + 0xb0]
call fcn.140205290
mov rcx, qword [rsp + 0x2f8]
xor rcx, rsp
cmp rcx, qword [0x140516040]
je 0x14016b695
call fcn.14029bbb0
int3
mov eax, ebx
add rsp, 0x300
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
test r8b, r8b
cmovs r8, qword [rsp + 0x88]
cmovs rdx, qword [rsp + 0x80]
call fcn.1400e6820
jmp 0x14016b5ed
ud2
call fcn.1402da960
call fcn.140316af0
jmp 0x14016b357
lea rcx, [rsp + 0x80]
call fcn.1402da920
mov rcx, qword [rsp + 0x80]
call fcn.14029a668
jmp 0x14016b602
lea rcx, [rsp + 0x80]
mov rax, qword [rcx + 8]
movups xmm0, xmmword [rax]
movups xmmword [rsi + 0x9c], xmm0
or byte [rsi + 0xac], 0x80
call qword [sym.imp.ole32.dll_PropVariantClear]
jmp 0x14016b854
lea rcx, [rsp + 0x80]
cmp word [rcx + 8], 0xffff
sete byte [rsi + 0x98]
or byte [rsi + 0xac], 0x40
call qword [sym.imp.ole32.dll_PropVariantClear]
jmp 0x14016b7e9
mov byte [rsi + 0x98], 0
or byte [rsi + 0xac], 0x40
jmp 0x14016b7e9
mov rdx, qword [rsp + 0x88]
lea r14, [rsp + 0x30]
mov rcx, r14
call fcn.1401f3df0
jmp 0x14016b79f
movzx eax, word [rsp + 0x80]
cmp eax, 0x1f
je 0x14016b759
test eax, eax
je 0x14016b78b
call fcn.140316af0
jmp 0x14016b949
xorps xmm0, xmm0
lea r14, [rsp + 0x30]
movaps xmmword [r14], xmm0
mov qword [r14 + 0x10], 0
lea rcx, [rsi + 0x80]
mov rdx, r14
call fcn.1401f4250
or byte [rsi + 0xac], 0x20
cmp byte [r14 + 0x17], 0
jns 0x14016b7c6
mov rcx, qword [rsp + 0x30]
call fcn.14029a668
cmp word [rsp + 0x80], 0
je 0x14016b7df
lea rcx, [rsp + 0x80]
call qword [sym.imp.ole32.dll_PropVariantClear]
test dil, 0x40
jne 0x14016b87d
test dil, dil
jns 0x14016b854
xorps xmm0, xmm0
lea r8, [rsp + 0x80]
movaps xmmword [r8], xmm0
mov qword [r8 + 0x10], 0
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
lea rdx, [0x1404a11f0]
call qword [0x140505c38]
test eax, eax
jne 0x14016b949
movzx eax, word [rsp + 0x80]
cmp eax, 0x48
je 0x14016b6f8
test eax, eax
jne 0x14016b8d5
movups xmm0, xmmword [0x14045e390]
movups xmmword [rsi + 0x9c], xmm0
or byte [rsi + 0xac], 0x80
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14016b622
mov qword [rsp + 0x48], 0
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [0x140505c38]
jmp 0x14016b622
xorps xmm0, xmm0
lea r8, [rsp + 0x80]
movaps xmmword [r8], xmm0
mov qword [r8 + 0x10], 0
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
lea rdx, [0x1404a11dc]
call qword [0x140505c38]
test eax, eax
jne 0x14016b949
movzx eax, word [rsp + 0x80]
cmp eax, 0xb
je 0x14016b720
test eax, eax
je 0x14016b746
call fcn.140316af0
jmp 0x14016b949
call fcn.140316af0
jmp 0x14016b949
lea r8, [rsp + 0x48]
mov qword [r8], 0
mov rcx, qword [rsp + 0xa8]
mov rax, qword [rcx]
mov rax, qword [rax]
lea rdx, [0x1404e79b8]
call qword [0x140505c38]
test eax, eax
js 0x14016b962
test dil, 0x20
je 0x14016b7df
xorps xmm0, xmm0
lea r8, [rsp + 0x80]
movaps xmmword [r8], xmm0
mov qword [r8 + 0x10], 0
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
lea rdx, [0x1404a11c8]
call qword [0x140505c38]
test eax, eax
je 0x14016b770
cmp word [rsp + 0x80], 0
je 0x14016b962
lea rcx, [rsp + 0x80]
call qword [sym.imp.ole32.dll_PropVariantClear]
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14016b982
mov qword [rsp + 0x48], 0
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [0x140505c38]
xor ebx, ebx
jmp 0x14016b622
mov rcx, qword [rsp + 0xa8]
mov rax, qword [rcx]
mov rax, qword [rax + 0x30]
lea rdx, [rsp + 0xf0]
mov r8d, 0x104
call qword [0x140505c38]
test eax, eax
js 0x14016b982
lea rbx, [rsp + 0x80]
lea rdx, [rsp + 0xf0]
mov rcx, rbx
call fcn.1401f3df0
lea rcx, [rsi + 0x48]
mov rdx, rbx
call fcn.1401f4250
or byte [rsi + 0xac], 8
cmp byte [rbx + 0x17], 0
jns 0x14016b60c
mov rcx, qword [rsp + 0x80]
call fcn.14029a668
jmp 0x14016b60c
mov rcx, qword [rsp + 0xa8]
mov rax, qword [rcx]
mov rax, qword [rax + 0x40]
lea rbx, [rsp + 0xf0]
mov rdx, rbx
mov r8d, 0x104
call qword [0x140505c38]
test eax, eax
js 0x14016b982
lea r14, [rsp + 0x60]
mov qword [r14], rbx
mov rcx, rbx
call fcn.1402bdc14
mov qword [r14 + 8], rax
lea rbx, [rsp + 0x80]
mov rcx, rbx
mov rdx, r14
call fcn.140213f20
lea rcx, [rsi + 0x18]
mov rdx, rbx
call fcn.140214070
or byte [rsi + 0xac], 2
mov rcx, rbx
call fcn.140214060
jmp 0x14016b49d
lea r9, [rsp + 0x30]
mov dword [r9], 0xaaaaaaaa
mov rcx, qword [rsp + 0xa8]
mov rax, qword [rcx]
mov rax, qword [rax + 0x80]
lea rbx, [rsp + 0xf0]
mov rdx, rbx
mov r8d, 0x104
call qword [0x140505c38]
test eax, eax
js 0x14016b982
mov ebp, dword [rsp + 0x30]
lea r14, [rsp + 0x50]
mov qword [r14], rbx
mov rcx, rbx
call fcn.1402bdc14
mov qword [r14 + 8], rax
lea rbx, [rsp + 0x80]
mov rcx, rbx
mov rdx, r14
call fcn.140213f20
lea rcx, [rsi + 0x60]
mov rdx, rbx
call fcn.140214070
mov dword [rsi + 0x78], ebp
or byte [rsi + 0xac], 0x10
mov rcx, rbx
call fcn.140214060
jmp 0x14016b616