Function at 0x469d70
Capabilities:
Create shortcut via ishelllink

Disassembly:
sub esp, 0x414
push ebx
push ebp
push esi
push edi
call fcn.0044bde0
test eax, eax
je 0x469e14
push 0
lea eax, [esp + 0x1c]
push str.CShortCut::CreateShortcut_n
push eax
call fcn.00471c30
mov edi, str.ENTRY:
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x11c]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x11c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x18]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0044bd70
mov ecx, eax
call fcn.0044be10
lea eax, [esp + 0x11c]
push eax
call fcn.0044bd70
mov ecx, eax
call fcn.0044c180
call fcn.0044bde0
mov esi, dword [esp + 0x428]
test eax, eax
je 0x469e48
push esi
lea ecx, [esp + 0x1c]
push str.pszName___s_n
push ecx
call fcn.00471c30
add esp, 0xc
lea edx, [esp + 0x18]
push edx
call fcn.0044bd70
mov ecx, eax
call fcn.0044c180
call fcn.0044bde0
test eax, eax
je 0x469e7c
mov eax, dword [esp + 0x42c]
lea ecx, [esp + 0x18]
push eax
push str.pszPath___s_n
push ecx
call fcn.00471c30
add esp, 0xc
lea edx, [esp + 0x18]
push edx
call fcn.0044bd70
mov ecx, eax
call fcn.0044c180
call fcn.0044bde0
mov ebp, dword [esp + 0x430]
test eax, eax
je 0x469eb0
push ebp
lea eax, [esp + 0x1c]
push str.pszIcon___s_n
push eax
call fcn.00471c30
add esp, 0xc
lea ecx, [esp + 0x18]
push ecx
call fcn.0044bd70
mov ecx, eax
call fcn.0044c180
call fcn.0044bde0
test eax, eax
je 0x469ee4
mov edx, dword [esp + 0x434]
lea eax, [esp + 0x18]
push edx
push str.pszFilePath___s_n
push eax
call fcn.00471c30
add esp, 0xc
lea ecx, [esp + 0x18]
push ecx
call fcn.0044bd70
mov ecx, eax
call fcn.0044c180
call fcn.0044bde0
mov edi, dword [esp + 0x438]
test eax, eax
je 0x469f18
push edi
lea edx, [esp + 0x1c]
push str.pszFileArgs___s_n
push edx
call fcn.00471c30
add esp, 0xc
lea eax, [esp + 0x18]
push eax
call fcn.0044bd70
mov ecx, eax
call fcn.0044c180
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
lea ecx, [esp + 0x10]
push ecx
push 0x49934c
push 1
push 0
push 0x49935c
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov ebx, eax
test ebx, ebx
jl 0x46a00e
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x434]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x50]
mov ebx, eax
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x14]
mov edx, dword [eax]
push ecx
push 0x49b538
push eax
call dword [edx]
or ebx, eax
jl 0x46a004
mov eax, dword [esp + 0x10]
push esi
push eax
mov edx, dword [eax]
call dword [edx + 0x1c]
or ebx, eax
mov eax, dword [esp + 0x10]
push edi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
or ebx, eax
mov eax, dword [esp + 0x10]
push 1
push eax
mov edx, dword [eax]
call dword [edx + 0x3c]
or ebx, eax
mov eax, dword [esp + 0x10]
push 0
push ebp
mov ecx, dword [eax]
push eax
call dword [ecx + 0x44]
or ebx, eax
jl 0x469ffa
mov edx, dword [esp + 0x42c]
push esi
push edx
lea eax, [esp + 0x20]
push str._s_s.lnk
push eax
call fcn.00471c30
add esp, 0x10
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x18]
push 0x104
push ecx
push 0xffffffffffffffff
push edx
push 1
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x21c]
push 1
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
mov ebx, eax
mov eax, dword [esp + 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x10]
push eax
mov edx, dword [eax]
call dword [edx + 8]
call fcn.0044bde0
test eax, eax
je 0x46a0ae
xor eax, eax
lea ecx, [esp + 0x18]
test ebx, ebx
setge al
push eax
push str.CShortCut::CreateShortcut_:_bRetVal___d_n
push ecx
call fcn.00471c30
mov edi, str.EXIT:
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x11c]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x11c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x18]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x11c]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.0044bd70
mov ecx, eax
call fcn.0044c180
call fcn.0044bd70
mov ecx, eax
call fcn.0044be20
xor eax, eax
pop edi
test ebx, ebx
pop esi
pop ebp
setge al
pop ebx
add esp, 0x414
ret 0x14