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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x27c
push esi
mov esi, dword [ebp + 8]
movzx eax, word [esi]
cmp eax, 0x30
jb 0x404be1
cmp eax, 0x39
ja 0x404be1
push esi
call fcn.004150ec
pop ecx
jmp 0x404c66
push 0x20
pop ecx
or eax, ecx
sub eax, 0x64
je 0x404c4d
sub eax, 0xc
je 0x404c32
sub eax, 3
je 0x404c17
dec eax
jne 0x404ecd
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 0x404c66
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 0x404c66
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 0x404c66
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
push edi
xor edi, edi
jmp 0x404c77
cmp cx, di
je 0x404ecc
add esi, 2
movzx ecx, word [esi]
cmp ecx, 0x2c
jne 0x404c6b
push edi
push eax
lea eax, [ebp - 0x27c]
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x404ecc
lea eax, [ebp - 0x27c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.0041118d
lea ecx, [ebp - 0x28]
call fcn.00410d24
lea ecx, [ebp - 0x4c]
call fcn.00410d24
lea ecx, [ebp - 0x40]
call fcn.00410d24
lea ecx, [ebp - 0x58]
call fcn.00410d24
lea ecx, [ebp - 0x10]
call fcn.00410d24
lea ecx, [ebp - 0x34]
call fcn.00410d24
lea ecx, [ebp - 0x64]
call fcn.00410d24
lea ecx, [ebp - 0x70]
call fcn.00410d24
lea eax, [ebp - 0x28]
push eax
push esi
call fcn.00403453
pop ecx
pop ecx
cmp dword [ebp - 0x24], edi
je 0x404e81
lea ecx, [ebp - 0x4c]
push ecx
push eax
call fcn.00403453
lea ecx, [ebp - 0x40]
push ecx
push eax
call fcn.00403453
lea ecx, [ebp - 0x58]
push ecx
push eax
call fcn.00403453
lea ecx, [ebp - 0x10]
push ecx
push eax
call fcn.00403453
lea ecx, [ebp - 0x34]
push ecx
push eax
call fcn.00403453
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.00403453
lea ecx, [ebp - 0x70]
push ecx
push eax
call fcn.00403453
push dword [ebp - 0x70]
call fcn.004150ec
add esp, 0x3c
mov esi, eax
cmp dword [ebp - 0xc], edi
jne 0x404d87
lea eax, [ebp - 0x28]
push eax
call fcn.00403592
pop ecx
mov ecx, dword [ebp - 0x28]
lea eax, [ecx + eax*2 + 2]
push eax
lea ecx, [ebp - 0x10]
call fcn.004111c6
push 0x2e
lea ecx, [ebp - 0x10]
call fcn.00410e3b
cmp eax, edi
jl 0x404d87
mov edx, dword [ebp - 0x10]
xor ecx, ecx
mov dword [ebp - 0xc], eax
mov word [edx + eax*2], cx
push 0x5c
lea ecx, [ebp - 0x1c]
call fcn.0040164b
cmp dword [ebp - 0x3c], edi
je 0x404dac
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00410dd5
push 0x5c
lea ecx, [ebp - 0x1c]
call fcn.0040164b
push dword [ebp - 0x1c]
call fcn.00404a61
pop ecx
test eax, eax
je 0x404e81
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00410dd5
push 0x41dc84
lea ecx, [ebp - 0x1c]
call fcn.0041122c
lea eax, [ebp + 8]
push eax
push 0x42141c
push 1
push edi
push 0x42145c
mov dword [ebp + 8], edi
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x404e81
mov eax, dword [ebp + 8]
push dword [ebp - 0x28]
mov dword [ebp - 4], edi
mov ecx, dword [eax]
push eax
call dword [ecx + 0x50]
cmp dword [ebp - 0x54], edi
je 0x404e18
mov eax, dword [ebp + 8]
push dword [ebp - 0x58]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
cmp dword [ebp - 0x48], edi
je 0x404e29
mov eax, dword [ebp + 8]
push dword [ebp - 0x4c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x2c]
cmp dword [ebp - 0x30], edi
je 0x404e3a
mov eax, dword [ebp + 8]
push dword [ebp - 0x34]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
cmp dword [ebp - 0x60], edi
je 0x404e4c
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
push esi
push dword [ebp - 0x64]
push eax
call dword [ecx + 0x44]
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
lea edx, [ebp - 4]
push edx
push 0x42144c
push eax
call dword [ecx]
test eax, eax
js 0x404e78
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
push 1
push dword [ebp - 0x1c]
push eax
call dword [ecx + 0x18]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [ebp - 0x70]
call fcn.00414eae
push dword [ebp - 0x64]
call fcn.00414eae
push dword [ebp - 0x34]
call fcn.00414eae
push dword [ebp - 0x10]
call fcn.00414eae
push dword [ebp - 0x58]
call fcn.00414eae
push dword [ebp - 0x40]
call fcn.00414eae
push dword [ebp - 0x4c]
call fcn.00414eae
push dword [ebp - 0x28]
call fcn.00414eae
push dword [ebp - 0x1c]
call fcn.00414eae
add esp, 0x24
pop edi
xor eax, eax
pop esi
leave
ret