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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28c
push ebx
push esi
mov esi, eax
movzx eax, word [esi]
push edi
cmp eax, 0x30
jb 0x40450a
cmp eax, 0x39
ja 0x40450a
push esi
call fcn.0041d476
pop ecx
jmp 0x40459d
push 0x20
pop ecx
or eax, ecx
sub eax, 0x64
je 0x404576
sub eax, 0xc
je 0x40455b
sub eax, 3
je 0x404540
dec eax
jne 0x40484c
mov ax, word [esi + 2]
or ax, cx
xor ecx, ecx
cmp ax, 0x75
setne cl
lea eax, [ecx - 1]
and eax, 0xffffffef
add eax, 0x18
jmp 0x40459d
mov ax, word [esi + 2]
or ax, cx
xor ecx, ecx
cmp ax, 0x75
setne cl
lea eax, [ecx - 1]
and eax, 0xfffffff5
add eax, 0x16
jmp 0x40459d
mov ax, word [esi + 2]
or ax, cx
xor ecx, ecx
cmp ax, 0x75
setne cl
lea eax, [ecx - 1]
and eax, 0xffffffeb
add eax, 0x17
jmp 0x40459d
mov ax, word [esi + 2]
or ax, cx
xor ecx, ecx
cmp ax, 0x75
setne cl
lea eax, [ecx - 1]
and eax, 0xfffffff7
add eax, 0x19
jmp 0x40459d
test cx, cx
je 0x40484c
add esi, 2
movzx ecx, word [esi]
cmp ecx, 0x2c
jne 0x404591
push 0
push eax
lea eax, [ebp - 0x288]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x40484c
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.00401784
lea eax, [ebp - 0x2c]
call fcn.00401000
lea eax, [ebp - 0x50]
call fcn.00401000
lea eax, [ebp - 0x44]
call fcn.00401000
lea eax, [ebp - 0x5c]
call fcn.00401000
lea eax, [ebp - 0x20]
call fcn.00401000
lea eax, [ebp - 0x68]
call fcn.00401000
lea eax, [ebp - 0x38]
call fcn.00401000
lea eax, [ebp - 0x74]
call fcn.00401000
lea eax, [ebp - 0x2c]
mov ecx, esi
call fcn.00404468
lea ecx, [ebp - 0x2c]
mov esi, eax
call fcn.004059b8
test al, al
jne 0x404804
lea eax, [ebp - 0x50]
mov ecx, esi
call fcn.00404468
mov ecx, eax
lea eax, [ebp - 0x44]
call fcn.00404468
mov ecx, eax
lea eax, [ebp - 0x5c]
call fcn.00404468
mov ecx, eax
lea eax, [ebp - 0x20]
call fcn.00404468
mov ecx, eax
lea eax, [ebp - 0x68]
call fcn.00404468
mov ecx, eax
lea eax, [ebp - 0x38]
call fcn.00404468
mov ecx, eax
lea eax, [ebp - 0x74]
call fcn.00404468
lea eax, [ebp - 0x74]
call fcn.0040bba8
push eax
call fcn.0041d476
pop ecx
lea ecx, [ebp - 0x20]
mov ebx, eax
call fcn.004059b8
test al, al
je 0x4046c6
lea eax, [ebp - 0x2c]
push eax
call fcn.00404b10
mov esi, eax
pop ecx
lea eax, [ebp - 0x2c]
call fcn.0040bba8
lea eax, [eax + esi*2 + 2]
push eax
lea eax, [ebp - 0x20]
call fcn.0040100c
push 0x2e
pop edx
lea ecx, [ebp - 0x20]
call fcn.004127b7
test eax, eax
js 0x4046c6
lea ecx, [ebp - 0x20]
call fcn.00401799
push 0x5c
lea esi, [ebp - 0x14]
call fcn.00401cb6
lea ecx, [ebp - 0x44]
call fcn.004059b8
test al, al
jne 0x4046eb
lea edi, [ebp - 0x44]
call fcn.004126cf
push 0x5c
call fcn.00401cb6
lea eax, [ebp - 0x14]
call fcn.0040bba8
push eax
call fcn.0040417f
pop ecx
test eax, eax
je 0x404804
lea edi, [ebp - 0x20]
lea esi, [ebp - 0x14]
call fcn.004126cf
push str..lnk
call fcn.00412698
lea eax, [ebp - 4]
push eax
push 0x42731c
push 1
xor esi, esi
push esi
push 0x42733c
mov dword [ebp - 4], esi
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x404804
mov dword [ebp - 8], esi
mov esi, dword [ebp - 4]
mov edi, dword [esi]
lea eax, [ebp - 0x2c]
call fcn.0040bba8
push eax
push esi
call dword [edi + 0x50]
lea ecx, [ebp - 0x5c]
call fcn.004059b8
test al, al
jne 0x40476e
mov esi, dword [ebp - 4]
mov edi, dword [esi]
lea eax, [ebp - 0x5c]
call fcn.0040bba8
push eax
push esi
call dword [edi + 0x1c]
lea ecx, [ebp - 0x50]
call fcn.004059b8
test al, al
jne 0x40478c
mov esi, dword [ebp - 4]
mov edi, dword [esi]
lea eax, [ebp - 0x50]
call fcn.0040bba8
push eax
push esi
call dword [edi + 0x2c]
lea ecx, [ebp - 0x68]
call fcn.004059b8
test al, al
jne 0x4047aa
mov esi, dword [ebp - 4]
mov edi, dword [esi]
lea eax, [ebp - 0x68]
call fcn.0040bba8
push eax
push esi
call dword [edi + 0x24]
lea ecx, [ebp - 0x38]
call fcn.004059b8
test al, al
jne 0x4047c9
mov esi, dword [ebp - 4]
mov edi, dword [esi]
push ebx
lea eax, [ebp - 0x38]
call fcn.0040bba8
push eax
push esi
call dword [edi + 0x44]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
lea edx, [ebp - 8]
push edx
push 0x42735c
push eax
call dword [ecx]
test eax, eax
js 0x4047fb
mov esi, dword [ebp - 8]
mov edi, dword [esi]
push 1
lea eax, [ebp - 0x14]
call fcn.0040bba8
push eax
push esi
call dword [edi + 0x18]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea eax, [ebp - 0x74]
call fcn.0040177f
lea eax, [ebp - 0x38]
call fcn.0040177f
lea eax, [ebp - 0x68]
call fcn.0040177f
lea eax, [ebp - 0x20]
call fcn.0040177f
lea eax, [ebp - 0x5c]
call fcn.0040177f
lea eax, [ebp - 0x44]
call fcn.0040177f
lea eax, [ebp - 0x50]
call fcn.0040177f
lea eax, [ebp - 0x2c]
call fcn.0040177f
lea eax, [ebp - 0x14]
call fcn.0040177f
pop edi
pop esi
xor eax, eax
pop ebx
leave
ret