Function at 0x40452e
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 0x404555
cmp eax, 0x39
ja 0x404555
push esi
call fcn.0041bee2
pop ecx
jmp 0x4045e8
push 0x20
pop ecx
or eax, ecx
sub eax, 0x64
je 0x4045c1
sub eax, 0xc
je 0x4045a6
sub eax, 3
je 0x40458b
dec eax
jne 0x404897
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 0x4045e8
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 0x4045e8
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 0x4045e8
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 0x4045e8
test cx, cx
je 0x404897
add esi, 2
movzx ecx, word [esi]
cmp ecx, 0x2c
jne 0x4045dc
push 0
push eax
lea eax, [ebp - 0x288]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x404897
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.004017d5
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.004044b3
lea ecx, [ebp - 0x2c]
mov esi, eax
call fcn.00405a47
test al, al
jne 0x40484f
lea eax, [ebp - 0x50]
mov ecx, esi
call fcn.004044b3
mov ecx, eax
lea eax, [ebp - 0x44]
call fcn.004044b3
mov ecx, eax
lea eax, [ebp - 0x5c]
call fcn.004044b3
mov ecx, eax
lea eax, [ebp - 0x20]
call fcn.004044b3
mov ecx, eax
lea eax, [ebp - 0x68]
call fcn.004044b3
mov ecx, eax
lea eax, [ebp - 0x38]
call fcn.004044b3
mov ecx, eax
lea eax, [ebp - 0x74]
call fcn.004044b3
lea eax, [ebp - 0x74]
call fcn.0040bbc2
push eax
call fcn.0041bee2
pop ecx
lea ecx, [ebp - 0x20]
mov ebx, eax
call fcn.00405a47
test al, al
je 0x404711
lea eax, [ebp - 0x2c]
push eax
call fcn.00404b5b
mov esi, eax
pop ecx
lea eax, [ebp - 0x2c]
call fcn.0040bbc2
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.004127a4
test eax, eax
js 0x404711
lea ecx, [ebp - 0x20]
call fcn.004017ea
push 0x5c
lea esi, [ebp - 0x14]
call fcn.00401d07
lea ecx, [ebp - 0x44]
call fcn.00405a47
test al, al
jne 0x404736
lea edi, [ebp - 0x44]
call fcn.004126bc
push 0x5c
call fcn.00401d07
lea eax, [ebp - 0x14]
call fcn.0040bbc2
push eax
call fcn.004041ca
pop ecx
test eax, eax
je 0x40484f
lea edi, [ebp - 0x20]
lea esi, [ebp - 0x14]
call fcn.004126bc
push str..lnk
call fcn.00412685
lea eax, [ebp - 4]
push eax
push 0x42631c
push 1
xor esi, esi
push esi
push 0x42633c
mov dword [ebp - 4], esi
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x40484f
mov dword [ebp - 8], esi
mov esi, dword [ebp - 4]
mov edi, dword [esi]
lea eax, [ebp - 0x2c]
call fcn.0040bbc2
push eax
push esi
call dword [edi + 0x50]
lea ecx, [ebp - 0x5c]
call fcn.00405a47
test al, al
jne 0x4047b9
mov esi, dword [ebp - 4]
mov edi, dword [esi]
lea eax, [ebp - 0x5c]
call fcn.0040bbc2
push eax
push esi
call dword [edi + 0x1c]
lea ecx, [ebp - 0x50]
call fcn.00405a47
test al, al
jne 0x4047d7
mov esi, dword [ebp - 4]
mov edi, dword [esi]
lea eax, [ebp - 0x50]
call fcn.0040bbc2
push eax
push esi
call dword [edi + 0x2c]
lea ecx, [ebp - 0x68]
call fcn.00405a47
test al, al
jne 0x4047f5
mov esi, dword [ebp - 4]
mov edi, dword [esi]
lea eax, [ebp - 0x68]
call fcn.0040bbc2
push eax
push esi
call dword [edi + 0x24]
lea ecx, [ebp - 0x38]
call fcn.00405a47
test al, al
jne 0x404814
mov esi, dword [ebp - 4]
mov edi, dword [esi]
push ebx
lea eax, [ebp - 0x38]
call fcn.0040bbc2
push eax
push esi
call dword [edi + 0x44]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
lea edx, [ebp - 8]
push edx
push 0x42635c
push eax
call dword [ecx]
test eax, eax
js 0x404846
mov esi, dword [ebp - 8]
mov edi, dword [esi]
push 1
lea eax, [ebp - 0x14]
call fcn.0040bbc2
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.004017d0
lea eax, [ebp - 0x38]
call fcn.004017d0
lea eax, [ebp - 0x68]
call fcn.004017d0
lea eax, [ebp - 0x20]
call fcn.004017d0
lea eax, [ebp - 0x5c]
call fcn.004017d0
lea eax, [ebp - 0x44]
call fcn.004017d0
lea eax, [ebp - 0x50]
call fcn.004017d0
lea eax, [ebp - 0x2c]
call fcn.004017d0
lea eax, [ebp - 0x14]
call fcn.004017d0
pop edi
pop esi
xor eax, eax
pop ebx
leave
ret