Function at 0x4561a0
Capabilities:
Create shortcut via ishelllink

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x270
mov eax, dword [0x57f040]
xor eax, ebp
mov dword [esp + 0x268], eax
pcmpeqd xmm0, xmm0
lea esi, [esp + 0x30]
movdqa xmmword [esi + 0x20], xmm0
movdqa xmmword [esi + 0x10], xmm0
movdqa xmmword [esi], xmm0
lea edi, [esp + 0x60]
push 0xd9
push str....._basewin_shortcut.cc
push str.ResolveShortcutProperties
push edi
call fcn.004b6790
add esp, 0x10
mov ecx, esi
push 0
push edi
call fcn.004aabe0
cmp dword [ebp + 0xc], 0x100
jb 0x456207
call fcn.00539ab0
xor ebx, ebx
lea esi, [esp + 0x2c]
mov dword [esi], ebx
push esi
push 0x56f18c
push 1
push ebx
push 0x550020
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov esi, dword [esi]
test eax, eax
js 0x456390
lea ebx, [esp + 0x28]
mov dword [ebx], 0
mov eax, dword [esi]
mov ecx, dword [eax]
call dword [0x5798d8]
push ebx
push 0x56f19c
push esi
call ecx
test eax, eax
js 0x45636c
mov ebx, dword [ebp + 8]
mov esi, dword [esp + 0x28]
cmp byte [ebx + 0xb], 0
jns 0x456261
mov ebx, dword [ebx]
mov eax, dword [esi]
mov ecx, dword [eax + 0x14]
call dword [0x5798d8]
push 0
push ebx
push esi
call ecx
test eax, eax
js 0x45636c
mov eax, dword [ebp + 0x10]
mov dword [eax + 0x60], 0
push 0x208
push 0xff
push edi
call fcn.004eac00
add esp, 0xc
mov ebx, dword [ebp + 0xc]
test bl, 1
je 0x4562f2
mov esi, dword [esp + 0x2c]
mov eax, dword [esi]
mov ecx, dword [eax + 0xc]
call dword [0x5798d8]
push 2
push 0
push 0x104
push edi
push esi
call ecx
test eax, eax
js 0x45636c
push edi
call fcn.00502114
add esp, 4
lea ebx, [esp + 0x10]
mov ecx, ebx
push eax
push edi
call fcn.004b72d0
mov esi, dword [ebp + 0x10]
mov ecx, esi
push ebx
call fcn.0046a180
or byte [esi + 0x60], 1
mov ecx, ebx
mov ebx, dword [ebp + 0xc]
call fcn.004b73c0
test bl, 2
je 0x456343
mov esi, dword [esp + 0x2c]
mov eax, dword [esi]
mov ecx, dword [eax + 0x20]
call dword [0x5798d8]
push 0x104
push edi
push esi
call ecx
test eax, eax
js 0x45636c
push edi
call fcn.00502114
add esp, 4
lea ebx, [esp + 0x10]
mov ecx, ebx
push eax
push edi
call fcn.004b72d0
mov esi, dword [ebp + 0x10]
lea ecx, [esi + 0xc]
push ebx
call fcn.0046a180
or byte [esi + 0x60], 2
mov ecx, ebx
mov ebx, dword [ebp + 0xc]
call fcn.004b73c0
test bl, 4
je 0x456444
mov esi, dword [esp + 0x2c]
mov eax, dword [esi]
mov ecx, dword [eax + 0x28]
call dword [0x5798d8]
push 0x104
push edi
push esi
call ecx
test eax, eax
jns 0x4563f4
xor ebx, ebx
mov esi, dword [esp + 0x28]
test esi, esi
je 0x45638c
mov dword [esp + 0x28], 0
mov eax, dword [esi]
mov ecx, dword [eax + 8]
call dword [0x5798d8]
push esi
call ecx
mov esi, dword [esp + 0x2c]
test esi, esi
je 0x4563aa
mov dword [esp + 0x2c], 0
mov eax, dword [esi]
mov ecx, dword [eax + 8]
call dword [0x5798d8]
push esi
call ecx
lea ecx, [esp + 0x30]
call fcn.004aac50
mov ecx, dword [esp + 0x268]
xor ecx, ebp
call fcn.004e71b0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x18]
mov dword [ecx + 8], eax
movq xmm0, qword [esp + 0x10]
movq qword [ecx], xmm0
jmp 0x4564a3
mov eax, dword [esp + 0x18]
mov dword [ecx + 8], eax
movq xmm0, qword [esp + 0x10]
movq qword [ecx], xmm0
jmp 0x45642a
lea ebx, [esp + 0x10]
mov ecx, ebx
push edi
call fcn.00412a10
mov esi, dword [ebp + 0x10]
lea ecx, [esi + 0x18]
cmp ecx, ebx
je 0x45642a
cmp byte [esi + 0x23], 0
movzx eax, byte [esp + 0x1b]
js 0x4567a0
test al, al
jns 0x4563e1
push dword [esp + 0x14]
push dword [esp + 0x14]
call fcn.00454500
or byte [esi + 0x60], 4
cmp byte [esp + 0x1b], 0
mov ebx, dword [ebp + 0xc]
jns 0x456444
push dword [esp + 0x10]
call fcn.004e6c3e
add esp, 4
test bl, 8
je 0x4564bd
mov esi, dword [esp + 0x2c]
mov eax, dword [esi]
mov ecx, dword [eax + 0x18]
call dword [0x5798d8]
push 0x104
push edi
push esi
call ecx
test eax, eax
js 0x45636c
lea ebx, [esp + 0x10]
mov ecx, ebx
push edi
call fcn.00412a10
mov esi, dword [ebp + 0x10]
lea ecx, [esi + 0x24]
cmp ecx, ebx
je 0x4564a3
cmp byte [esi + 0x2f], 0
movzx eax, byte [esp + 0x1b]
js 0x4567b8
test al, al
jns 0x4563cb
push dword [esp + 0x14]
push dword [esp + 0x14]
call fcn.00454500
or byte [esi + 0x60], 8
cmp byte [esp + 0x1b], 0
mov ebx, dword [ebp + 0xc]
jns 0x4564bd
push dword [esp + 0x10]
call fcn.004e6c3e
add esp, 4
test bl, 0x10
mov eax, ebx
je 0x456523
mov esi, esp
mov dword [esi], 0xffffffff
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx]
mov ecx, dword [eax + 0x40]
call dword [0x5798d8]
push esi
push 0x104
push edi
push ebx
call ecx
test eax, eax
js 0x45636c
mov esi, dword [esp]
push edi
call fcn.00502114
add esp, 4
lea ebx, [esp + 0x10]
mov ecx, ebx
push eax
push edi
call fcn.004b72d0
mov edi, dword [ebp + 0x10]
lea ecx, [edi + 0x30]
push ebx
call fcn.0046a180
mov dword [edi + 0x3c], esi
or byte [edi + 0x60], 0x10
mov ecx, ebx
call fcn.004b73c0
mov eax, dword [ebp + 0xc]
mov bl, 1
test al, 0xe0
je 0x45636e
lea esi, [esp + 0x24]
mov dword [esi], 0
mov edi, dword [esp + 0x2c]
mov eax, dword [edi]
mov ecx, dword [eax]
call dword [0x5798d8]
push esi
push 0x56f1ac
push edi
call ecx
test eax, eax
js 0x45659b
mov edi, dword [esp + 0x24]
mov eax, dword [ebp + 0xc]
test al, 0x20
je 0x456682
pxor xmm0, xmm0
lea esi, [esp + 0x10]
movdqa xmmword [esi], xmm0
mov eax, dword [edi]
mov ecx, dword [eax + 0x14]
call dword [0x5798d8]
push esi
push 0x56f098
push edi
call ecx
test eax, eax
mov esi, dword [ebp + 0x10]
je 0x4565c2
cmp word [esp + 0x10], 0
je 0x45659b
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.ole32.dll_PropVariantClear]
mov esi, dword [esp + 0x24]
test esi, esi
je 0x45636c
mov dword [esp + 0x24], 0
mov eax, dword [esi]
mov ecx, dword [eax + 8]
call dword [0x5798d8]
push esi
call ecx
jmp 0x45636c
movzx eax, word [esp + 0x10]
cmp eax, 0x1f
je 0x456621
cmp eax, 8
je 0x456621
test eax, eax
je 0x4565dc
call fcn.00539ab0
jmp 0x456588
pxor xmm0, xmm0
mov eax, esp
movq qword [eax], xmm0
mov dword [eax + 8], 0
lea ecx, [esi + 0x40]
cmp ecx, eax
je 0x456609
cmp byte [esi + 0x4b], 0
js 0x4567e7
movq qword [ecx], xmm0
mov dword [ecx + 8], 0
or byte [esi + 0x60], 0x20
jmp 0x45666b
mov eax, dword [esp + 8]
mov dword [ecx + 8], eax
movq xmm0, qword [esp]
movq qword [ecx], xmm0
jmp 0x456655
mov edi, esp
mov ecx, edi
push dword [esp + 0x18]
call fcn.00412a10
lea ecx, [esi + 0x40]
cmp ecx, edi
je 0x456655
cmp byte [esi + 0x4b], 0
movzx eax, byte [esp + 0xb]
js 0x4567d0
test al, al
jns 0x45660f
push dword [esp + 4]
push dword [esp + 4]
call fcn.00454500
or byte [esi + 0x60], 0x20
cmp byte [esp + 0xb], 0
jns 0x45666b
push dword [esp]
call fcn.004e6c3e
add esp, 4
cmp word [esp + 0x10], 0
je 0x45667e
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.ole32.dll_PropVariantClear]
mov edi, dword [esp + 0x24]
mov eax, dword [ebp + 0xc]
test al, 0x40
je 0x4566dc
pxor xmm0, xmm0
lea esi, [esp + 0x10]
movdqa xmmword [esi], xmm0
mov eax, dword [edi]
mov ecx, dword [eax + 0x14]
call dword [0x5798d8]
push esi
push 0x56f0ac
push edi
call ecx
test eax, eax
jne 0x456588
movzx eax, word [esp + 0x10]
cmp eax, 0xb
je 0x45675e
test eax, eax
mov eax, dword [ebp + 0x10]
je 0x4566d0
call fcn.00539ab0
jmp 0x456588
mov byte [eax + 0x4c], 0
or byte [eax + 0x60], 0x40
mov edi, dword [esp + 0x24]
mov eax, dword [ebp + 0xc]
test al, al
jns 0x45673b
pxor xmm0, xmm0
lea esi, [esp + 0x10]
movdqa xmmword [esi], xmm0
mov eax, dword [edi]
mov ecx, dword [eax + 0x14]
call dword [0x5798d8]
push esi
push 0x56f0c0
push edi
call ecx
test eax, eax
jne 0x456588
movzx eax, word [esp + 0x10]
cmp eax, 0x48
je 0x45677f
test eax, eax
mov eax, dword [ebp + 0x10]
je 0x456726
call fcn.00539ab0
jmp 0x456588
movdqu xmm0, xmmword [0x550060]
movdqu xmmword [eax + 0x50], xmm0
or byte [eax + 0x60], 0x80
mov edi, dword [esp + 0x24]
test edi, edi
je 0x45636e
mov dword [esp + 0x24], 0
mov eax, dword [edi]
mov ecx, dword [eax + 8]
call dword [0x5798d8]
push edi
call ecx
jmp 0x45636e
cmp word [esp + 0x18], 0xffff
mov eax, dword [ebp + 0x10]
sete byte [eax + 0x4c]
or byte [eax + 0x60], 0x40
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.ole32.dll_PropVariantClear]
jmp 0x4566d8
mov eax, dword [esp + 0x18]
movdqu xmm0, xmmword [eax]
mov eax, dword [ebp + 0x10]
movdqu xmmword [eax + 0x50], xmm0
or byte [eax + 0x60], 0x80
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.ole32.dll_PropVariantClear]
jmp 0x456737
test al, al
cmovs eax, dword [esp + 0x14]
cmovs ebx, dword [esp + 0x10]
push eax
push ebx
call fcn.00454430
jmp 0x45642a
test al, al
cmovs eax, dword [esp + 0x14]
cmovs ebx, dword [esp + 0x10]
push eax
push ebx
call fcn.00454430
jmp 0x4564a3
test al, al
cmovs eax, dword [esp + 4]
cmovs edi, dword [esp]
push eax
push edi
call fcn.00454430
jmp 0x456655
push 0
push eax
call fcn.00454430
mov al, byte [esp + 0xb]
or dword [esi + 0x60], 0x20
test al, al
jns 0x45666b
jmp 0x456660