Function at 0x408a38
Capabilities:
Create shortcut via ishelllink

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x664
or dword [ebp - 0x20], 0xffffffff
push ebx
xor ebx, ebx
push esi
cmp dword [ebp + 0x10], ebx
push edi
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x24], ebx
jle 0x40906e
mov esi, dword [ebp + 8]
push esi
mov byte [ebp - 0x358], bl
call fcn.0041c080
lea eax, [eax + esi + 1]
push 0x3b
push esi
mov dword [ebp - 0x34], eax
call fcn.0041c440
mov esi, eax
add esp, 0xc
cmp esi, ebx
je 0x40907f
inc esi
push esi
call fcn.0041c080
inc eax
push eax
call fcn.0041b1a2
mov edi, eax
push esi
push edi
mov dword [ebp - 4], edi
call fcn.0041bb30
push 0x3b
push edi
call fcn.0041c440
mov esi, eax
add esp, 0x18
cmp esi, ebx
je 0x409083
push 0x3c
push edi
mov byte [esi], bl
call fcn.0041c440
pop ecx
pop ecx
test eax, eax
push edi
je 0x408af8
call fcn.00405803
push eax
lea eax, [ebp - 0x358]
push eax
call fcn.0041bb30
push 0x5c
push edi
call fcn.0041c440
add esp, 0x14
cmp eax, ebx
je 0x408b06
inc eax
push eax
lea eax, [ebp - 0x358]
push eax
call fcn.00405453
jmp 0x408b04
lea eax, [ebp - 0x358]
push eax
call fcn.0041bb30
pop ecx
pop ecx
inc esi
push 0x3b
mov edi, esi
push esi
mov dword [ebp - 0x30], edi
call fcn.0041c440
mov esi, eax
pop ecx
cmp esi, ebx
pop ecx
je 0x409076
mov byte [esi], bl
push edi
inc esi
call fcn.0041c080
add eax, 0x104
push eax
call fcn.0041b1a2
push 0x3c
push edi
mov dword [ebp - 8], eax
call fcn.0041c440
add esp, 0x10
test eax, eax
push edi
je 0x408b70
call fcn.00405803
push eax
push dword [ebp - 8]
call fcn.0041bb30
push 0x5c
push edi
call fcn.0041c440
add esp, 0x14
cmp eax, ebx
je 0x408b7a
inc eax
push eax
push dword [ebp - 8]
call fcn.00405453
jmp 0x408b78
push dword [ebp - 8]
call fcn.0041bb30
pop ecx
pop ecx
push 0x3b
mov dword [ebp - 0x18], esi
pop edi
push edi
push esi
call fcn.0041c440
pop ecx
cmp eax, ebx
pop ecx
je 0x409076
mov byte [eax], bl
inc eax
push edi
push eax
mov dword [ebp - 0x14], eax
call fcn.0041c440
pop ecx
cmp eax, ebx
pop ecx
je 0x409076
mov byte [eax], bl
inc eax
push edi
push eax
mov dword [ebp - 0xc], eax
call fcn.0041c440
pop ecx
cmp eax, ebx
pop ecx
je 0x409076
mov byte [eax], bl
inc eax
push edi
push eax
mov dword [ebp - 0x28], eax
call fcn.0041c440
pop ecx
cmp eax, ebx
pop ecx
je 0x408bd7
mov byte [eax], bl
inc eax
jmp 0x408bda
mov dword [ebp - 0x28], ebx
push edi
push eax
mov esi, eax
call fcn.0041c440
pop ecx
cmp eax, ebx
pop ecx
je 0x409076
mov byte [eax], bl
inc eax
push 0x3b
push eax
mov edi, eax
call fcn.0041c440
pop ecx
cmp eax, ebx
pop ecx
je 0x408c04
mov byte [eax], bl
jmp 0x408c06
xor edi, edi
mov eax, dword [ebp - 0x18]
cmp eax, ebx
je 0x409045
cmp byte [eax], bl
je 0x409045
cmp byte [ebp - 0x358], bl
je 0x409045
cmp esi, ebx
je 0x408c5d
cmp byte [esi], bl
je 0x408c5d
push esi
call fcn.0041c080
cmp eax, 1
pop ecx
jne 0x408c3f
movzx ax, byte [esi]
jmp 0x408c57
cmp eax, 2
jne 0x408c5d
cmp byte [esi], 0x46
jne 0x408c5d
inc esi
push esi
call fcn.0041c910
add al, 0x6f
pop ecx
movzx ax, al
or ah, 6
mov dword [ebp - 0x1c], eax
cmp edi, ebx
je 0x408c6f
cmp byte [edi], bl
je 0x408c6f
push edi
call fcn.0041c910
pop ecx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0xc]
cmp eax, ebx
je 0x408c84
cmp byte [eax], bl
je 0x408c84
push eax
call fcn.0041c910
pop ecx
mov dword [ebp - 0x10], eax
push dword [ebp + 0xc]
lea eax, [ebp - 0x45c]
push eax
call fcn.0041bb30
push dword [ebp - 0x18]
lea eax, [ebp - 0x45c]
push eax
call fcn.00405453
lea eax, [ebp - 0x45c]
push str..lnk
push eax
call fcn.0041bb40
add esp, 0x18
lea eax, [ebp + 8]
push eax
push 0x424450
push 1
pop esi
push esi
push ebx
push 0x424470
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jl 0x409045
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x2c]
push edx
push 0x424480
mov ecx, dword [eax]
push eax
call dword [ecx]
test eax, eax
jl 0x40903c
lea eax, [ebp - 0x358]
push str.http:__
push eax
mov dword [ebp - 0xc], ebx
call fcn.0041c500
pop ecx
test eax, eax
pop ecx
je 0x408d79
lea eax, [ebp - 0x150]
push 0x42cc40
push eax
call fcn.0041bb30
push dword [ebp - 0x18]
lea eax, [ebp - 0x150]
push eax
call fcn.00405453
lea eax, [ebp - 0x150]
push str..url
push eax
call fcn.0041bb40
add esp, 0x18
lea eax, [ebp - 0x150]
mov edi, str.InternetShortcut
mov dword [ebp - 0xc], esi
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push eax
lea eax, [ebp - 0x254]
push eax
push 0x42768c
push edi
call esi
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x358]
push eax
call fcn.0041bb30
pop ecx
pop ecx
jmp 0x408d84
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov edi, str.InternetShortcut
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x358]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
mov eax, dword [ebp + 8]
push dword [ebp - 0x18]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
mov eax, dword [ebp - 0x30]
cmp eax, ebx
je 0x408db7
cmp byte [eax], bl
je 0x408db7
mov eax, dword [ebp + 8]
push dword [ebp - 8]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x2c]
cmp word [ebp - 0x1c], bx
je 0x408dc9
mov eax, dword [ebp + 8]
push dword [ebp - 0x1c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x34]
cmp dword [ebp - 0x20], ebx
jl 0x408dda
mov eax, dword [ebp + 8]
push dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x3c]
mov eax, dword [ebp - 0x14]
cmp eax, ebx
je 0x408edb
cmp byte [eax], bl
je 0x408edb
push 0x3c
push eax
call fcn.0041c440
pop ecx
test eax, eax
pop ecx
je 0x408e8d
push dword [ebp - 0x14]
call fcn.00405803
push eax
lea eax, [ebp - 0x254]
push eax
call fcn.0041bb30
push 0x5c
push dword [ebp - 0x14]
call fcn.0041c440
add esp, 0x14
cmp eax, ebx
je 0x408edb
inc eax
push eax
lea eax, [ebp - 0x254]
push eax
call fcn.00405453
cmp dword [ebp - 0xc], ebx
pop ecx
pop ecx
je 0x408e7c
push dword [ebp - 0x10]
lea eax, [ebp - 0x4c]
push 0x427688
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x254]
push eax
push str.IconFile
push edi
call esi
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x4c]
push eax
push str.IconIndex
push edi
call esi
mov eax, dword [ebp + 8]
push dword [ebp - 0x10]
lea edx, [ebp - 0x254]
mov ecx, dword [eax]
push edx
jmp 0x408ed7
cmp dword [ebp - 0xc], ebx
je 0x408ecc
push dword [ebp - 0x10]
lea eax, [ebp - 0x40]
push 0x427688
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x150]
push eax
push dword [ebp - 0x14]
push str.IconFile
push edi
call esi
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x40]
push eax
push str.IconIndex
push edi
call esi
mov eax, dword [ebp + 8]
push dword [ebp - 0x10]
mov ecx, dword [eax]
push dword [ebp - 0x14]
push eax
call dword [ecx + 0x44]
cmp dword [ebp - 0xc], ebx
je 0x408f6a
lea eax, [ebp - 0x150]
push eax
push ebx
push ebx
push ebx
call esi
cmp dword [0x42b51c], ebx
lea eax, [ebp - 0x150]
push eax
jne 0x408f1d
call fcn.0041c080
add eax, 0xa
push eax
mov dword [0x42b528], eax
call fcn.0041b1a2
pop ecx
mov dword [0x42b51c], eax
pop ecx
mov byte [eax], bl
jmp 0x408f45
call fcn.0041c080
mov ecx, dword [0x42b528]
lea eax, [ecx + eax + 0xa]
push eax
mov dword [0x42b528], eax
push dword [0x42b51c]
call fcn.0041c18f
add esp, 0xc
mov dword [0x42b51c], eax
lea eax, [ebp - 0x150]
push eax
push dword [0x42b51c]
call fcn.0041bb40
push 0x4275f0
push dword [0x42b51c]
call fcn.0041bb40
add esp, 0x10
mov esi, dword [ebp - 0x28]
cmp esi, ebx
je 0x408fcd
cmp byte [esi], bl
je 0x408fcd
push 0x3c
push esi
call fcn.0041c440
pop ecx
test eax, eax
pop ecx
je 0x408fc3
push esi
call fcn.00405803
push eax
lea eax, [ebp - 0x254]
push eax
call fcn.0041bb30
push 0x5c
push esi
call fcn.0041c440
add esp, 0x14
cmp eax, ebx
je 0x408fb5
inc eax
push eax
lea eax, [ebp - 0x254]
push eax
call fcn.00405453
pop ecx
pop ecx
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x254]
push edx
mov ecx, dword [eax]
jmp 0x408fc9
mov eax, dword [ebp + 8]
push esi
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
lea eax, [ebp - 0x45c]
push eax
lea eax, [ebp - 0x254]
push eax
call fcn.0041bb30
lea eax, [ebp - 0x254]
push 0x5c
push eax
call fcn.0041bb00
add esp, 0x10
cmp eax, ebx
je 0x409004
mov byte [eax], bl
lea eax, [ebp - 0x254]
push eax
call fcn.00405d65
pop ecx
lea eax, [ebp - 0x664]
push 0x104
push eax
lea eax, [ebp - 0x45c]
push 0xffffffffffffffff
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [ebp - 0x2c]
lea edx, [ebp - 0x664]
push 1
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
mov eax, dword [ebp - 0x2c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
push dword [ebp - 4]
mov esi, dword [ebp - 0x34]
call fcn.0041b254
cmp dword [ebp - 8], ebx
pop ecx
je 0x40905f
push dword [ebp - 8]
call fcn.0041b254
pop ecx
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp + 0x10]
jl 0x408a5f
push 1
pop eax
pop edi
pop esi
pop ebx
leave
ret
push dword [ebp - 4]
call fcn.0041b254
pop ecx
xor eax, eax
jmp 0x409071
push edi
jmp 0x409079