Function at 0x4126c0
Capabilities:
Create shortcut via ishelllink

Disassembly:
sub esp, 0x214
push ebx
push ebp
push esi
xor esi, esi
push esi
mov dword [esp + 0x18], esi
call dword [sym.imp.ole32.dll_CoInitialize]
test eax, eax
jl 0x412941
lea eax, [esp + 0xc]
push eax
push 0x42bb18
push 1
push esi
push 0x42bb08
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov ebx, dword [esp + 0x230]
mov ebp, dword [esp + 0x22c]
test eax, eax
jl 0x4128d5
mov eax, dword [esp + 0xc]
lea edx, [esp + 0x10]
push edx
push 0x42bb28
mov ecx, dword [eax]
push eax
call dword [ecx]
test eax, eax
jl 0x4128ba
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x224]
push edi
push esi
mov ecx, dword [eax]
push eax
call dword [ecx + 0x50]
test eax, eax
jl 0x41288f
mov eax, dword [esp + 0x10]
push ebp
push eax
mov edx, dword [eax]
call dword [edx + 0x1c]
test eax, eax
jl 0x412885
mov esi, dword [esp + 0x238]
mov edi, dword [esp + 0x23c]
test esi, esi
je 0x412778
cmp byte [esi], 0
je 0x412778
mov eax, dword [esp + 0x10]
push edi
push esi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x44]
test eax, eax
jl 0x412859
mov eax, dword [esp + 0x10]
push ebx
push eax
mov edx, dword [eax]
call dword [edx + 0x24]
test eax, eax
jl 0x41284f
mov ecx, dword [esp + 0x22c]
lea eax, [esp + 0x1c]
push 0x104
push eax
push 0xffffffffffffffff
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
je 0x41281d
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x1c]
push 1
push ecx
mov edx, dword [eax]
push eax
call dword [edx + 0x18]
test eax, eax
jl 0x4127f0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], 1
push eax
mov edx, dword [eax]
call dword [edx + 8]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
pop edi
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4128e4
push eax
push eax
push str.CreateShortcut__:_Save___failed__lu__0x_lX_
call fcn.00410250
mov eax, dword [esp + 0x20]
add esp, 0xc
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
pop edi
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4128e4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CreateShortcut__:_MultiByteToWideChar___failed__lu
call fcn.00410250
mov eax, dword [esp + 0x1c]
add esp, 8
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
pop edi
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4128e4
push eax
push eax
push ebx
push str.CreateShortcut__:_SetWorkingDirectory__s__failed__lu__0x_lX_
jmp 0x412897
push eax
push eax
push edi
push esi
push str.CreateShortcut__:_SetIconLocation__s__d__failed__lu__0x_lX_
call fcn.00410250
mov eax, dword [esp + 0x28]
add esp, 0x14
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
pop edi
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4128e4
push eax
push eax
push ebp
push str.CreateShortcut__:_SetDescription__s__failed__lu__0x_lX_
jmp 0x412897
push eax
push eax
push esi
push str.CreateShortcut__:_SetPath__s__failed__lu__0x_lX_
call fcn.00410250
mov eax, dword [esp + 0x24]
add esp, 0x10
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
pop edi
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4128e4
push eax
push eax
push str.CreateShortcut__:_QueryInterface_IID_IPersistFile__failed__lu__0x_lX_
call fcn.00410250
mov eax, dword [esp + 0x18]
add esp, 0xc
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4128e4
push eax
push eax
push str.CreateShortcut__:_CoCreateInstance_CLSID_ShellLink__failed__lu__0x_lX_
call fcn.00410250
add esp, 0xc
call dword [sym.imp.ole32.dll_CoUninitialize]
test esi, esi
je 0x412950
push str.CreateShortcut___succeeded:
call fcn.00410250
mov edx, dword [esp + 0x228]
push edx
push str._t_tfile_____s_
call fcn.00410250
mov eax, dword [esp + 0x234]
push eax
push str._t_tlink_____s_
call fcn.00410250
push ebp
push str._t_tdesc_____s_
call fcn.00410250
push ebx
push str._t_twkdir____s_
call fcn.00410250
add esp, 0x24
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x214
ret
push eax
push eax
push str.CreateShortcut__:_CoInitialize___failed__lu__0x_lX_
call fcn.00410250
add esp, 0xc
mov ecx, dword [esp + 0x224]
push ecx
push str.CreateShortcut__s__failed
call fcn.00410250
add esp, 8
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x214
ret