Function at 0x54e4f0
Capabilities:
Check if file exists
Create shortcut via ishelllink

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x49c
and dword [ebp - 4], 0
lea eax, [ebp - 4]
push ebx
push esi
push edi
push eax
push 0x5e61dc
xor ebx, ebx
mov edi, ecx
inc ebx
push ebx
push 0
push 0x5e93bc
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
mov eax, dword [ebp - 4]
js 0x54e865
test eax, eax
je 0x54e865
lea eax, [edi + 0xc0]
mov byte [ebp - 5], 0
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x10], eax
push ecx
mov ecx, eax
call fcn.0054dc1c
cmp dword [eax + 0x14], 8
jb 0x54e54f
mov eax, dword [eax]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
lea ecx, [ebp - 0x2c]
mov esi, eax
call fcn.00403730
test esi, esi
je 0x54e673
and dword [ebp - 0xc], 0
mov esi, dword [ebp - 4]
test esi, esi
je 0x54e676
mov eax, dword [esi]
lea ecx, [ebp - 0xc]
push ecx
push 0x60a0b4
push esi
call dword [eax]
mov esi, dword [ebp - 0xc]
xor ecx, ecx
test eax, eax
cmovs esi, ecx
mov dword [ebp - 0xc], esi
test esi, esi
je 0x54e673
lea eax, [ebp - 0x2c]
push eax
lea ecx, [edi + 0xc0]
call fcn.0054dc1c
cmp dword [eax + 0x14], 8
jb 0x54e5b1
mov eax, dword [eax]
mov ecx, dword [esi]
push 2
push eax
push esi
call dword [ecx + 0x14]
lea ecx, [ebp - 0x2c]
mov esi, eax
call fcn.00403730
test esi, esi
js 0x54e666
push 0x208
lea eax, [ebp - 0x24c]
mov byte [ebp - 5], bl
push 0
push eax
call fcn.005713c0
push 0x250
lea eax, [ebp - 0x49c]
push 0
push eax
call fcn.005713c0
mov eax, dword [ebp - 4]
lea edx, [ebp - 0x49c]
add esp, 0x18
mov esi, 0x104
mov ecx, dword [eax]
push 6
push edx
push esi
lea edx, [ebp - 0x24c]
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x54e666
lea eax, [ebp - 0x2c]
push eax
lea ecx, [edi + 0xc0]
call fcn.0054dc1c
cmp dword [eax + 0x14], 8
jb 0x54e632
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x24c]
push esi
push eax
call fcn.0058f3c9
add esp, 0xc
lea ecx, [ebp - 0x2c]
mov esi, eax
call fcn.00403730
test esi, esi
jne 0x54e666
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x54e65e
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
xor ebx, ebx
inc ebx
jmp 0x54e782
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x54e673
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [ebp - 4]
lea ecx, [ebp - 0x2c]
push ecx
lea ecx, [edi + 0x8c]
call fcn.0054dc1c
cmp dword [eax + 0x14], 8
jb 0x54e68d
mov eax, dword [eax]
mov ecx, dword [esi]
push eax
push esi
call dword [ecx + 0x50]
lea ecx, [ebp - 0x2c]
mov esi, eax
call fcn.00403730
test esi, esi
js 0x54e753
mov esi, dword [ebp - 4]
lea eax, [ebp - 0x2c]
push eax
lea ecx, [edi + 0x8c]
call fcn.0054dc01
cmp dword [eax + 0x14], 8
jb 0x54e6c0
mov eax, dword [eax]
mov ecx, dword [esi]
push eax
push esi
call dword [ecx + 0x24]
lea ecx, [ebp - 0x2c]
mov esi, eax
call fcn.00403730
test esi, esi
js 0x54e753
lea ecx, [edi + 0x58]
call fcn.0054e39f
test eax, eax
je 0x54e757
mov eax, dword [ebp - 4]
lea ecx, [edi + 0x58]
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x2c]
push eax
call fcn.0054dc1c
cmp dword [eax + 0x14], 8
jb 0x54e6fb
mov eax, dword [eax]
mov edx, dword [ebp - 0xc]
push 0
push eax
push edx
mov ecx, dword [edx]
call dword [ecx + 0x44]
lea ecx, [ebp - 0x2c]
mov esi, eax
call fcn.00403730
test esi, esi
js 0x54e753
cmp dword [edi + 0x38], 0
je 0x54e734
lea edx, [edi + 0x28]
cmp dword [edx + 0x14], 8
jb 0x54e726
mov edx, dword [edx]
mov eax, dword [ebp - 4]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
test eax, eax
js 0x54e753
cmp dword [edi + 0x50], 0
je 0x54e779
lea edx, [edi + 0x40]
cmp dword [edx + 0x14], 8
jb 0x54e745
mov edx, dword [edx]
mov eax, dword [ebp - 4]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
test eax, eax
jns 0x54e779
xor ebx, ebx
jmp 0x54e782
mov esi, dword [ebp - 4]
lea eax, [ebp - 0x2c]
push eax
lea ecx, [edi + 0x8c]
call fcn.0054dc1c
cmp dword [eax + 0x14], 8
jb 0x54e771
mov eax, dword [eax]
mov ecx, dword [esi]
push 0
push eax
push esi
jmp 0x54e704
cmp byte [ebp - 5], 0
je 0x54e78a
mov dword [ebp - 0x10], ebx
mov eax, dword [ebp - 4]
jmp 0x54e867
and dword [ebp - 0x14], 0
mov eax, dword [ebp - 4]
test eax, eax
je 0x54e865
mov ecx, dword [eax]
lea edx, [ebp - 0x14]
push edx
push 0x60a0b4
push eax
call dword [ecx]
mov esi, dword [ebp - 0x14]
xor ecx, ecx
test eax, eax
cmovs esi, ecx
mov dword [ebp - 0x14], esi
test esi, esi
je 0x54e862
mov ecx, dword [ebp - 0x10]
lea eax, [ebp - 0x2c]
push eax
call fcn.0054dc1c
cmp dword [eax + 0x14], 8
jb 0x54e7d0
mov eax, dword [eax]
mov ecx, dword [esi]
push ebx
push eax
push esi
call dword [ecx + 0x18]
lea ecx, [ebp - 0x2c]
mov edi, eax
call fcn.00403730
mov ecx, dword [ebp - 0x10]
sub esp, 0x18
mov esi, dword [0x63422c]
push esp
call fcn.0054dc1c
lea eax, [ebp - 0x44]
push eax
call fcn.004d0390
add esp, 0x1c
mov ecx, eax
push esi
call fcn.0044d162
lea ecx, [ebp - 0x44]
mov bl, al
call fcn.00403730
test bl, bl
je 0x54e845
mov ecx, dword [ebp - 0x10]
lea eax, [ebp - 0x44]
push eax
call fcn.0054dc1c
cmp dword [eax + 0x14], 8
jb 0x54e82a
mov eax, dword [eax]
xor ebx, ebx
inc ebx
push ebx
push ebx
push 0x5e4ae0
push eax
call fcn.004e7bc0
add esp, 0x10
lea ecx, [ebp - 0x44]
call fcn.00403730
mov eax, dword [ebp - 0x14]
xor ebx, ebx
test edi, edi
setns bl
test eax, eax
je 0x54e782
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x54e782
mov eax, dword [ebp - 4]
xor ebx, ebx
test eax, eax
je 0x54e871
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
pop edi
pop esi
mov eax, ebx
pop ebx
leave
ret