Function at 0x407b80
Capabilities:
Create shortcut via ishelllink

Disassembly:
sub esp, 0x428
push ebx
push ebp
push esi
lea eax, [esp + 0xc]
push edi
push eax
push 0x423500
push 1
push 0
push 0x423510
mov dword [esp + 0x38], 0
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jl 0x407e6c
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x440]
push esi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
lea edx, [esp + 0x12c]
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x407bd0
lea edx, [esp + 0x12c]
push 0x5c
push edx
call fcn.0041ae00
add esp, 8
test eax, eax
je 0x407c05
mov byte [eax], 0
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x12c]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x24]
mov eax, dword [esp + 0x448]
test eax, eax
je 0x407c20
cmp byte [eax], 0
je 0x407c20
mov ecx, dword [esp + 0x10]
push eax
push ecx
mov edx, dword [ecx]
call dword [edx + 0x2c]
mov edx, dword [esp + 0x450]
mov eax, dword [esp + 0x44c]
test edx, edx
jne 0x407c3b
test eax, eax
je 0x407c52
cmp byte [eax], 0
je 0x407c52
test eax, eax
je 0x407c44
cmp byte [eax], 0
jne 0x407c46
mov eax, esi
mov ecx, dword [esp + 0x10]
push edx
push eax
push ecx
mov esi, dword [ecx]
call dword [esi + 0x44]
mov eax, dword [esp + 0x454]
mov ecx, 1
dec eax
je 0x407c6b
dec eax
jne 0x407c70
mov ecx, 3
jmp 0x407c70
mov ecx, 7
mov eax, dword [esp + 0x10]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x3c]
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x18]
push edx
push 0x423520
mov ecx, dword [eax]
push eax
call dword [ecx]
mov ebx, dword [esp + 0x444]
mov ebp, eax
test ebp, ebp
jl 0x407dd3
lea eax, [esp + 0x230]
push 0x104
push eax
push 0xffffffffffffffff
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x230]
push 1
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
mov ebp, eax
test ebp, ebp
mov dword [esp + 0x1c], ebp
jl 0x407dc9
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x20]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
test eax, eax
jl 0x407dc1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x407dc1
push 0
push 0
lea ecx, [esp + 0x30]
push 0x104
push ecx
push 0xffffffffffffffff
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea edx, [esp + 0x14]
push edx
push 1
call dword [sym.imp.ole32.dll_CoGetMalloc]
test eax, eax
jl 0x407d39
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x407d4f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x14], 0
push 0x2e
push ebx
call fcn.0041ae00
lea edx, [esp + 0x30]
push 0x2e
push edx
mov esi, eax
call fcn.0041ae00
add esp, 0x10
mov edx, eax
test esi, esi
je 0x407da0
test edx, edx
je 0x407da0
mov edi, edx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, esi
mov ebp, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ebp, ecx
ja 0x407d9c
mov eax, edx
sub esi, edx
mov cl, byte [eax]
mov byte [esi + eax], cl
inc eax
test cl, cl
jne 0x407d92
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x43c]
test edx, edx
je 0x407dc9
lea ecx, [esp + 0x28]
lea eax, [esp + 0x28]
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x407db5
jmp 0x407dc9
mov dword [esp + 0x24], 1
mov eax, dword [esp + 0x18]
push eax
mov edx, dword [eax]
call dword [edx + 8]
mov eax, dword [esp + 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x407e6a
push 0
push ebx
call fcn.004010e0
add esp, 8
cmp eax, 0xffffffff
jne 0x407e61
or ecx, eax
mov edi, ebx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
sub ecx, 4
js 0x407e6a
lea esi, [ecx + ebx]
push str..lnk
push esi
call fcn.0041abe0
add esp, 8
test eax, eax
jne 0x407e6a
mov eax, str..pif
mov edx, esi
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x407e27
push 0
push ebx
call fcn.004010e0
add esp, 8
cmp eax, 0xffffffff
jne 0x407e61
mov eax, str..lnk
mov edx, esi
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x407e4a
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 0x428
ret
push eax
call fcn.00401360
add esp, 4
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x428
ret