Function at 0x28003901
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]
push edi
movzx edx, word [esi]
lea eax, [edx - 0x30]
cmp ax, 9
ja 0x28003929
push esi
call fcn.2801b040
movzx edx, word [esi]
pop ecx
mov ecx, eax
jmp 0x2800398e
push 0x20
mov eax, edx
pop ecx
or eax, ecx
sub eax, 0x64
je 0x2800397a
sub eax, 0xc
je 0x2800396c
sub eax, 3
je 0x28003956
sub eax, 1
jne 0x28003c00
mov ax, word [esi + 2]
push 7
or ax, cx
pop ecx
push 0x18
jmp 0x28003962
mov ax, word [esi + 2]
push 0xb
or ax, cx
pop ecx
push 0x16
cmp ax, 0x75
pop edi
cmovne ecx, edi
jmp 0x2800398e
mov ax, word [esi + 2]
push 2
or ax, cx
pop ecx
push 0x17
jmp 0x28003962
mov ax, word [esi + 2]
or ax, cx
cmp ax, 0x75
jne 0x2800398b
push 0x10
jmp 0x2800398d
push 0x19
pop ecx
push 0x2c
pop edi
cmp dx, di
je 0x280039af
movzx edx, dx
test dx, dx
je 0x28003c00
add esi, 2
movzx eax, word [esi]
mov edx, eax
cmp ax, di
jne 0x28003999
xor edi, edi
lea eax, [ebp - 0x27c]
push edi
push ecx
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x28003c00
lea eax, [ebp - 0x27c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.28011359
lea ecx, [ebp - 0x28]
call fcn.28011390
lea ecx, [ebp - 0x64]
call fcn.28011390
lea ecx, [ebp - 0x58]
call fcn.28011390
lea ecx, [ebp - 0x4c]
call fcn.28011390
lea ecx, [ebp - 0x10]
call fcn.28011390
lea ecx, [ebp - 0x40]
call fcn.28011390
lea ecx, [ebp - 0x34]
call fcn.28011390
lea ecx, [ebp - 0x70]
call fcn.28011390
lea eax, [ebp - 0x28]
push eax
push esi
call fcn.28003f0e
pop ecx
pop ecx
cmp dword [ebp - 0x24], edi
je 0x28003bb5
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.28003f0e
lea ecx, [ebp - 0x58]
push ecx
push eax
call fcn.28003f0e
lea ecx, [ebp - 0x4c]
push ecx
push eax
call fcn.28003f0e
lea ecx, [ebp - 0x10]
push ecx
push eax
call fcn.28003f0e
lea ecx, [ebp - 0x40]
push ecx
push eax
call fcn.28003f0e
lea ecx, [ebp - 0x34]
push ecx
push eax
call fcn.28003f0e
lea ecx, [ebp - 0x70]
push ecx
push eax
call fcn.28003f0e
push dword [ebp - 0x70]
call fcn.2801b040
add esp, 0x3c
mov esi, eax
cmp dword [ebp - 0xc], edi
jne 0x28003abb
lea eax, [ebp - 0x28]
push eax
call fcn.28004123
pop ecx
mov ecx, dword [ebp - 0x28]
add ecx, 2
lea eax, [ecx + eax*2]
push eax
lea ecx, [ebp - 0x10]
call fcn.280114c2
push 0x2e
lea ecx, [ebp - 0x10]
call fcn.28011aef
test eax, eax
js 0x28003abb
mov ecx, dword [ebp - 0x10]
xor edx, edx
mov dword [ebp - 0xc], eax
mov word [ecx + eax*2], dx
push 0x5c
lea ecx, [ebp - 0x1c]
call fcn.280018ff
cmp dword [ebp - 0x54], edi
je 0x28003ae0
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x1c]
call fcn.28011648
push 0x5c
lea ecx, [ebp - 0x1c]
call fcn.280018ff
push dword [ebp - 0x1c]
call fcn.2800378d
pop ecx
test eax, eax
je 0x28003bb5
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x1c]
call fcn.28011648
push str..lnk
lea ecx, [ebp - 0x1c]
call fcn.28011686
lea eax, [ebp + 8]
mov dword [ebp + 8], edi
push eax
push 0x28027e94
push 1
push edi
push 0x28027ed4
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x28003bb5
mov eax, dword [ebp + 8]
push dword [ebp - 0x28]
mov dword [ebp - 4], edi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
cmp dword [ebp - 0x48], edi
je 0x28003b4c
mov eax, dword [ebp + 8]
push dword [ebp - 0x4c]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x1c]
cmp dword [ebp - 0x60], edi
je 0x28003b5d
mov eax, dword [ebp + 8]
push dword [ebp - 0x64]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x2c]
cmp dword [ebp - 0x3c], edi
je 0x28003b6e
mov eax, dword [ebp + 8]
push dword [ebp - 0x40]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
cmp dword [ebp - 0x30], edi
je 0x28003b80
mov eax, dword [ebp + 8]
push esi
push dword [ebp - 0x34]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x44]
mov eax, dword [ebp + 8]
lea edx, [ebp - 4]
push edx
push 0x28027eb4
push eax
mov ecx, dword [eax]
call dword [ecx]
test eax, eax
js 0x28003bac
mov eax, dword [ebp - 4]
push 1
push dword [ebp - 0x1c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
push dword [ebp - 0x70]
call fcn.28019859
push dword [ebp - 0x34]
call fcn.28019859
push dword [ebp - 0x40]
call fcn.28019859
push dword [ebp - 0x10]
call fcn.28019859
push dword [ebp - 0x4c]
call fcn.28019859
push dword [ebp - 0x58]
call fcn.28019859
push dword [ebp - 0x64]
call fcn.28019859
push dword [ebp - 0x28]
call fcn.28019859
push dword [ebp - 0x1c]
call fcn.28019859
add esp, 0x24
pop edi
xor eax, eax
pop esi
leave
ret