Function at 0x407e89
Capabilities:
Create shortcut via ishelllink
Get common file path

Disassembly:
push 0x370
mov eax, 0x5d6478
call fcn.005ad5b8
xor ebx, ebx
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
cmp eax, ebx
jge 0x407eac
xor al, al
jmp 0x40821c
mov byte [ebp - 0x365], bl
mov dword [ebp - 0x36c], ebx
lea eax, [ebp - 0x36c]
push eax
push 0x60b620
push 1
push ebx
push 0x60b9c0
mov dword [ebp - 4], ebx
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, ebx
jl 0x4081fc
mov dword [ebp - 0x370], ebx
lea edx, [ebp - 0x370]
push edx
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x36c]
mov ecx, dword [eax]
push 0x60ba20
push eax
call dword [ecx]
cmp eax, ebx
jl 0x4081e9
push 0x100
lea eax, [ebp - 0x110]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x4081e9
mov eax, dword [ebp - 0x36c]
mov ecx, dword [eax]
lea edx, [ebp - 0x110]
push edx
push eax
call dword [ecx + 0x50]
mov eax, dword [ebp - 0x36c]
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x3c]
push 0xf
pop edi
mov dword [ebp - 0x350], edi
mov dword [ebp - 0x354], ebx
mov byte [ebp - 0x364], bl
mov dword [ebp - 0x318], edi
mov dword [ebp - 0x31c], ebx
mov byte [ebp - 0x32c], bl
mov byte [ebp - 4], 3
lea eax, [ebp - 0x110]
mov dword [ebp - 0x334], edi
mov dword [ebp - 0x338], ebx
mov byte [ebp - 0x348], bl
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x407f88
sub eax, esi
push eax
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0x348]
call fcn.0040232c
lea eax, [ebp - 0x32c]
push eax
lea edx, [ebp - 0x364]
lea ecx, [ebp - 0x348]
mov byte [ebp - 4], 4
call fcn.00472b70
neg al
sbb al, al
pop ecx
xor esi, esi
push ebx
inc al
inc esi
push esi
lea ecx, [ebp - 0x348]
mov byte [ebp - 0x371], al
mov byte [ebp - 4], 3
call fcn.0040228b
cmp byte [ebp - 0x371], bl
je 0x407ffd
push ebx
push esi
lea ecx, [ebp - 0x32c]
call fcn.0040228b
push ebx
push esi
jmp 0x4081de
cmp dword [ebp - 0x31c], 2
jbe 0x40803b
cmp dword [ebp - 0x318], 0x10
mov eax, dword [ebp - 0x32c]
jae 0x40801b
lea eax, [ebp - 0x32c]
cmp byte [eax], 0x5f
jne 0x40803b
cmp dword [ebp - 0x318], 0x10
mov eax, dword [ebp - 0x32c]
jae 0x408035
lea eax, [ebp - 0x32c]
cmp byte [eax + 1], 0x5f
je 0x407fe9
push 0x2e
lea eax, [ebp - 0x32c]
call fcn.0040c7b4
cmp eax, 0xffffffff
je 0x40808a
push eax
push ebx
lea eax, [ebp - 0x32c]
push eax
lea esi, [ebp - 0x348]
call fcn.0040c80d
mov esi, eax
lea edi, [ebp - 0x32c]
mov byte [ebp - 4], 5
call fcn.00403eaf
push ebx
push 1
lea ecx, [ebp - 0x348]
mov byte [ebp - 4], 3
call fcn.0040228b
push 0xf
xor esi, esi
pop edi
inc esi
lea eax, [ebp - 0x37c]
push eax
push ebx
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
cmp eax, ebx
jl 0x407fe9
lea eax, [ebp - 0x310]
push eax
push dword [ebp - 0x37c]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
je 0x407fe9
cmp dword [ebp - 0x350], 0x10
mov esi, dword [ebp - 0x364]
jae 0x4080d1
lea esi, [ebp - 0x364]
lea eax, [ebp - 0x310]
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x4080f7
cmp cl, bl
je 0x4080f3
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x4080f7
add eax, 2
add esi, 2
cmp cl, bl
jne 0x4080d7
xor eax, eax
jmp 0x4080fc
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x40811d
push ebx
push 1
lea ecx, [ebp - 0x32c]
mov byte [ebp - 0x365], 1
call fcn.0040228b
push ebx
push 1
jmp 0x4081de
cmp dword [ebp - 0x318], 0x10
mov eax, dword [ebp - 0x32c]
jae 0x408132
lea eax, [ebp - 0x32c]
push eax
lea eax, [ebp - 0x310]
push eax
push str._s_s.lnk
lea eax, [ebp - 0x210]
push 0x100
push eax
call fcn.005a73a6
lea eax, [ebp - 0x210]
add esp, 0x14
mov dword [ebp - 0x334], edi
mov dword [ebp - 0x338], ebx
mov byte [ebp - 0x348], bl
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x40816e
sub eax, esi
push eax
lea eax, [ebp - 0x210]
push eax
lea ecx, [ebp - 0x348]
call fcn.0040232c
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x370]
mov esi, dword [eax]
xor edi, edi
mov dword [ebp - 0x378], eax
inc edi
push edi
lea eax, [ebp - 0x348]
call fcn.00472740
push eax
push dword [ebp - 0x378]
call dword [esi + 0x18]
push ebx
push edi
lea ecx, [ebp - 0x348]
mov esi, eax
call fcn.0040228b
push ebx
lea ecx, [ebp - 0x32c]
push edi
cmp esi, ebx
jl 0x4081d7
mov byte [ebp - 0x365], 1
call fcn.0040228b
push ebx
push edi
lea ecx, [ebp - 0x364]
call fcn.0040228b
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x370]
cmp eax, ebx
je 0x4081fc
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x36c]
cmp eax, ebx
je 0x408210
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov al, byte [ebp - 0x365]
call fcn.005ad63b
ret