Function at 0x402830
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 ax, 0x30
jb 0x40285a
cmp ax, 0x39
ja 0x40285a
push esi
call dword [sym.imp.msvcrt.dll__wtol]
pop ecx
jmp 0x4028dc
movzx eax, ax
push 0x20
pop ecx
or eax, ecx
sub eax, 0x64
je 0x4028c3
sub eax, 0xc
je 0x4028aa
sub eax, 3
je 0x402891
dec eax
jne 0x402b3b
mov ax, word [esi + 2]
or ax, cx
xor ecx, ecx
cmp ax, 0x75
setne cl
dec ecx
and ecx, 0xffffffef
add ecx, 0x18
jmp 0x4028da
mov ax, word [esi + 2]
or ax, cx
xor ecx, ecx
cmp ax, 0x75
setne cl
dec ecx
and ecx, 0xfffffff5
add ecx, 0x16
jmp 0x4028da
mov ax, word [esi + 2]
or ax, cx
xor ecx, ecx
cmp ax, 0x75
setne cl
dec ecx
and ecx, 0xffffffeb
add ecx, 0x17
jmp 0x4028da
mov ax, word [esi + 2]
or ax, cx
xor ecx, ecx
cmp ax, 0x75
setne cl
dec ecx
and ecx, 0xfffffff7
add ecx, 0x19
mov eax, ecx
xor ebx, ebx
jmp 0x4028eb
cmp cx, bx
je 0x402b3b
inc esi
inc esi
movzx ecx, word [esi]
cmp cx, 0x2c
jne 0x4028e0
push ebx
push eax
lea eax, [ebp - 0x288]
push eax
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x402b3b
lea edi, [ebp - 0x288]
lea eax, [ebp - 0x20]
call fcn.00403b39
lea eax, [ebp - 0x2c]
call fcn.00401a43
lea eax, [ebp - 0x5c]
call fcn.00401a43
lea eax, [ebp - 0x44]
call fcn.00401a43
lea eax, [ebp - 0x50]
call fcn.00401a43
lea eax, [ebp - 0x14]
call fcn.00401a43
lea eax, [ebp - 0x68]
call fcn.00401a43
lea eax, [ebp - 0x38]
call fcn.00401a43
lea eax, [ebp - 0x78]
call fcn.00401a43
lea eax, [ebp - 0x2c]
mov ecx, esi
call fcn.004027ab
mov ecx, eax
cmp dword [ebp - 0x28], ebx
je 0x402aea
lea eax, [ebp - 0x5c]
call fcn.004027ab
mov ecx, eax
lea eax, [ebp - 0x44]
call fcn.004027ab
mov ecx, eax
lea eax, [ebp - 0x50]
call fcn.004027ab
mov ecx, eax
lea eax, [ebp - 0x14]
call fcn.004027ab
mov ecx, eax
lea eax, [ebp - 0x68]
call fcn.004027ab
mov ecx, eax
lea eax, [ebp - 0x38]
call fcn.004027ab
mov ecx, eax
lea eax, [ebp - 0x78]
call fcn.004027ab
push dword [ebp - 0x78]
call dword [sym.imp.msvcrt.dll__wtol]
pop ecx
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x10], ebx
jne 0x4029f9
lea eax, [ebp - 0x2c]
push eax
call fcn.00402ef2
pop ecx
mov ecx, dword [ebp - 0x2c]
lea edi, [ecx + eax*2 + 2]
lea eax, [ebp - 0x14]
call fcn.00401821
push 0x2e
pop edx
lea ecx, [ebp - 0x14]
call fcn.00403c03
cmp eax, ebx
jl 0x4029f9
mov edx, dword [ebp - 0x14]
xor ecx, ecx
mov word [edx + eax*2], cx
mov dword [ebp - 0x10], eax
push 0x5c
lea esi, [ebp - 0x20]
call fcn.004018b2
cmp dword [ebp - 0x40], ebx
je 0x402a17
lea edi, [ebp - 0x44]
call fcn.00401946
push 0x5c
call fcn.004018b2
push dword [ebp - 0x20]
call fcn.004024ff
pop ecx
test eax, eax
je 0x402aea
lea edi, [ebp - 0x14]
lea esi, [ebp - 0x20]
call fcn.00401946
mov eax, str..lnk
call fcn.00403bc8
lea eax, [ebp - 4]
push eax
push 0x4143e0
push 1
push ebx
push 0x414400
mov dword [ebp - 4], ebx
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jl 0x402aea
mov eax, dword [ebp - 4]
push dword [ebp - 0x2c]
mov dword [ebp - 8], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x50]
cmp dword [ebp - 0x4c], ebx
je 0x402a7f
mov eax, dword [ebp - 4]
push dword [ebp - 0x50]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
cmp dword [ebp - 0x58], ebx
je 0x402a90
mov eax, dword [ebp - 4]
push dword [ebp - 0x5c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x2c]
cmp dword [ebp - 0x64], ebx
je 0x402aa1
mov eax, dword [ebp - 4]
push dword [ebp - 0x68]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
cmp dword [ebp - 0x34], ebx
je 0x402ab5
push dword [ebp - 0x6c]
mov eax, dword [ebp - 4]
push dword [ebp - 0x38]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x44]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
lea edx, [ebp - 8]
push edx
push 0x414420
push eax
call dword [ecx]
test eax, eax
jl 0x402ae1
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
push 1
push dword [ebp - 0x20]
push eax
call dword [ecx + 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]
push dword [ebp - 0x78]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
push dword [ebp - 0x38]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
push dword [ebp - 0x68]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
push dword [ebp - 0x14]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
push dword [ebp - 0x50]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
push dword [ebp - 0x44]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
push dword [ebp - 0x5c]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
push dword [ebp - 0x2c]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
push dword [ebp - 0x20]
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
pop edi
pop esi
xor eax, eax
pop ebx
leave
ret