Function at 0x401172
Capabilities:
Check if file exists
Create shortcut via ishelllink

Disassembly:
jmp 0x406538
push ebp
sub esp, 0x240
lea ebp, [esp - 4]
mov eax, dword [0x46c134]
xor eax, ebp
mov dword [ebp + 0x240], eax
push 0x50
mov eax, 0x455470
call fcn.00425656
mov ebx, dword [ebp + 0x24c]
mov eax, dword [ebp + 0x250]
mov edx, dword [ebp + 0x258]
mov edi, ecx
mov ecx, dword [ebp + 0x254]
xor esi, esi
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], edx
cmp ebx, esi
je 0x406778
cmp word [ebx], si
je 0x406778
cmp eax, esi
je 0x406778
cmp word [eax], si
je 0x406778
cmp ecx, esi
je 0x406778
cmp word [ecx], si
je 0x406778
lea eax, [ebp - 0x10]
push eax
push 0x45e59c
push 1
push esi
push 0x46069c
mov dword [ebp - 0x10], esi
call dword [0x470b9c]
cmp eax, esi
mov dword [ebp - 0x14], eax
jl 0x406773
mov eax, dword [ebp - 0x10]
push ebx
mov dword [ebp - 0x1c], esi
mov ecx, dword [eax]
push eax
call dword [ecx + 0x50]
mov eax, dword [ebp - 0x10]
push dword [ebp - 0x24]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
xor eax, eax
push 0x206
mov word [ebp + 0x38], ax
lea eax, [ebp + 0x3a]
push esi
push eax
call fcn.004246b0
add esp, 0xc
lea eax, [ebp + 0x38]
push eax
push ebx
mov ecx, edi
call fcn.00401b3b
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
lea edx, [ebp + 0x38]
push edx
push eax
call dword [ecx + 0x24]
cmp dword [ebp - 0x20], esi
je 0x406634
mov eax, dword [ebp - 0x10]
push dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x2c]
cmp dword [edi + 0x20], esi
jne 0x40663e
cmp dword [edi + 0x28], esi
jle 0x40667b
push ebx
lea eax, [ebp - 0x5c]
push eax
mov ecx, edi
call fcn.004024e1
cmp dword [eax + 0x18], 8
mov dword [ebp - 4], esi
jb 0x406658
mov eax, dword [eax + 4]
jmp 0x40665b
add eax, 4
push dword [edi + 0x28]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ecx]
push eax
push ecx
call dword [edx + 0x44]
or dword [ebp - 4], 0xffffffff
xor edi, edi
push esi
inc edi
push edi
lea ecx, [ebp - 0x5c]
call fcn.00402635
jmp 0x40667e
xor edi, edi
inc edi
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
lea edx, [ebp - 0x1c]
push edx
push 0x45f74c
push eax
call dword [ecx]
cmp eax, esi
mov dword [ebp - 0x14], eax
jl 0x40676a
push esi
lea ecx, [ebp + 0x1c]
mov dword [ebp + 0x34], 7
call fcn.00402aae
push dword [ebp - 0x18]
lea ecx, [ebp]
mov dword [ebp - 4], edi
call fcn.004026e4
push dword [ebp - 0x18]
mov byte [ebp - 4], 2
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x406739
push edi
jmp 0x406725
push ebx
push esi
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp]
call fcn.004017d5
push 0xffffffffffffffff
push esi
push eax
lea ecx, [ebp + 0x1c]
mov byte [ebp - 4], 3
call fcn.004018c5
push esi
push edi
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 2
call fcn.00402635
cmp dword [ebp + 0x34], 8
mov eax, dword [ebp + 0x20]
jae 0x406704
lea eax, [ebp + 0x20]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x406723
cmp dword [ebp + 0x34], 8
mov eax, dword [ebp + 0x20]
jae 0x40671b
lea eax, [ebp + 0x20]
push esi
push eax
call dword [0x4708d0]
inc ebx
push ebx
push 0x45afcc
lea ecx, [ebp]
call fcn.0040218a
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x4066cc
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
push edi
push dword [ebp - 0x18]
push eax
call dword [ecx + 0x18]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push esi
push edi
lea ecx, [ebp]
call fcn.00402635
or dword [ebp - 4], 0xffffffff
push esi
push edi
lea ecx, [ebp + 0x1c]
call fcn.00402635
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
jmp 0x40677d
mov eax, 0x80070057
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x240]
xor ecx, ebp
call fcn.004246a0
add ebp, 0x244
leave
ret 0x10