Function at 0x80038dd
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 0x8003905
push esi
call fcn.0801af60
movzx edx, word [esi]
pop ecx
mov ecx, eax
jmp 0x800396a
push 0x20
mov eax, edx
pop ecx
or eax, ecx
sub eax, 0x64
je 0x8003956
sub eax, 0xc
je 0x8003948
sub eax, 3
je 0x8003932
sub eax, 1
jne 0x8003bdc
mov ax, word [esi + 2]
push 7
or ax, cx
pop ecx
push 0x18
jmp 0x800393e
mov ax, word [esi + 2]
push 0xb
or ax, cx
pop ecx
push 0x16
cmp ax, 0x75
pop edi
cmovne ecx, edi
jmp 0x800396a
mov ax, word [esi + 2]
push 2
or ax, cx
pop ecx
push 0x17
jmp 0x800393e
mov ax, word [esi + 2]
or ax, cx
cmp ax, 0x75
jne 0x8003967
push 0x10
jmp 0x8003969
push 0x19
pop ecx
push 0x2c
pop edi
cmp dx, di
je 0x800398b
movzx edx, dx
test dx, dx
je 0x8003bdc
add esi, 2
movzx eax, word [esi]
mov edx, eax
cmp ax, di
jne 0x8003975
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 0x8003bdc
lea eax, [ebp - 0x27c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.080112ab
lea ecx, [ebp - 0x28]
call fcn.080112e2
lea ecx, [ebp - 0x64]
call fcn.080112e2
lea ecx, [ebp - 0x58]
call fcn.080112e2
lea ecx, [ebp - 0x4c]
call fcn.080112e2
lea ecx, [ebp - 0x10]
call fcn.080112e2
lea ecx, [ebp - 0x40]
call fcn.080112e2
lea ecx, [ebp - 0x34]
call fcn.080112e2
lea ecx, [ebp - 0x70]
call fcn.080112e2
lea eax, [ebp - 0x28]
push eax
push esi
call fcn.08003eea
pop ecx
pop ecx
cmp dword [ebp - 0x24], edi
je 0x8003b91
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.08003eea
lea ecx, [ebp - 0x58]
push ecx
push eax
call fcn.08003eea
lea ecx, [ebp - 0x4c]
push ecx
push eax
call fcn.08003eea
lea ecx, [ebp - 0x10]
push ecx
push eax
call fcn.08003eea
lea ecx, [ebp - 0x40]
push ecx
push eax
call fcn.08003eea
lea ecx, [ebp - 0x34]
push ecx
push eax
call fcn.08003eea
lea ecx, [ebp - 0x70]
push ecx
push eax
call fcn.08003eea
push dword [ebp - 0x70]
call fcn.0801af60
add esp, 0x3c
mov esi, eax
cmp dword [ebp - 0xc], edi
jne 0x8003a97
lea eax, [ebp - 0x28]
push eax
call fcn.080040ff
pop ecx
mov ecx, dword [ebp - 0x28]
add ecx, 2
lea eax, [ecx + eax*2]
push eax
lea ecx, [ebp - 0x10]
call fcn.08011414
push 0x2e
lea ecx, [ebp - 0x10]
call fcn.08011a1e
test eax, eax
js 0x8003a97
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.080018e1
cmp dword [ebp - 0x54], edi
je 0x8003abc
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x1c]
call fcn.08011574
push 0x5c
lea ecx, [ebp - 0x1c]
call fcn.080018e1
push dword [ebp - 0x1c]
call fcn.08003769
pop ecx
test eax, eax
je 0x8003b91
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x1c]
call fcn.08011574
push str..lnk
lea ecx, [ebp - 0x1c]
call fcn.080115b2
lea eax, [ebp + 8]
mov dword [ebp + 8], edi
push eax
push 0x8027e94
push 1
push edi
push 0x8027ed4
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x8003b91
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 0x8003b28
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 0x8003b39
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 0x8003b4a
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 0x8003b5c
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 0x8027eb4
push eax
mov ecx, dword [eax]
call dword [ecx]
test eax, eax
js 0x8003b88
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.08019779
push dword [ebp - 0x34]
call fcn.08019779
push dword [ebp - 0x40]
call fcn.08019779
push dword [ebp - 0x10]
call fcn.08019779
push dword [ebp - 0x4c]
call fcn.08019779
push dword [ebp - 0x58]
call fcn.08019779
push dword [ebp - 0x64]
call fcn.08019779
push dword [ebp - 0x28]
call fcn.08019779
push dword [ebp - 0x1c]
call fcn.08019779
add esp, 0x24
pop edi
xor eax, eax
pop esi
leave
ret