Function at 0x4038dd
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 0x403905
push esi
call fcn.0041b200
movzx edx, word [esi]
pop ecx
mov ecx, eax
jmp 0x40396a
push 0x20
mov eax, edx
pop ecx
or eax, ecx
sub eax, 0x64
je 0x403956
sub eax, 0xc
je 0x403948
sub eax, 3
je 0x403932
sub eax, 1
jne 0x403bdc
mov ax, word [esi + 2]
push 7
or ax, cx
pop ecx
push 0x18
jmp 0x40393e
mov ax, word [esi + 2]
push 0xb
or ax, cx
pop ecx
push 0x16
cmp ax, 0x75
pop edi
cmovne ecx, edi
jmp 0x40396a
mov ax, word [esi + 2]
push 2
or ax, cx
pop ecx
push 0x17
jmp 0x40393e
mov ax, word [esi + 2]
or ax, cx
cmp ax, 0x75
jne 0x403967
push 0x10
jmp 0x403969
push 0x19
pop ecx
push 0x2c
pop edi
cmp dx, di
je 0x40398b
movzx edx, dx
test dx, dx
je 0x403bdc
add esi, 2
movzx eax, word [esi]
mov edx, eax
cmp ax, di
jne 0x403975
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 0x403bdc
lea eax, [ebp - 0x27c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00411554
lea ecx, [ebp - 0x28]
call fcn.0041158b
lea ecx, [ebp - 0x64]
call fcn.0041158b
lea ecx, [ebp - 0x58]
call fcn.0041158b
lea ecx, [ebp - 0x4c]
call fcn.0041158b
lea ecx, [ebp - 0x10]
call fcn.0041158b
lea ecx, [ebp - 0x40]
call fcn.0041158b
lea ecx, [ebp - 0x34]
call fcn.0041158b
lea ecx, [ebp - 0x70]
call fcn.0041158b
lea eax, [ebp - 0x28]
push eax
push esi
call fcn.00403eea
pop ecx
pop ecx
cmp dword [ebp - 0x24], edi
je 0x403b91
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.00403eea
lea ecx, [ebp - 0x58]
push ecx
push eax
call fcn.00403eea
lea ecx, [ebp - 0x4c]
push ecx
push eax
call fcn.00403eea
lea ecx, [ebp - 0x10]
push ecx
push eax
call fcn.00403eea
lea ecx, [ebp - 0x40]
push ecx
push eax
call fcn.00403eea
lea ecx, [ebp - 0x34]
push ecx
push eax
call fcn.00403eea
lea ecx, [ebp - 0x70]
push ecx
push eax
call fcn.00403eea
push dword [ebp - 0x70]
call fcn.0041b200
add esp, 0x3c
mov esi, eax
cmp dword [ebp - 0xc], edi
jne 0x403a97
lea eax, [ebp - 0x28]
push eax
call fcn.004040ff
pop ecx
mov ecx, dword [ebp - 0x28]
add ecx, 2
lea eax, [ecx + eax*2]
push eax
lea ecx, [ebp - 0x10]
call fcn.004116bd
push 0x2e
lea ecx, [ebp - 0x10]
call fcn.00411cc7
test eax, eax
js 0x403a97
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.004018e1
cmp dword [ebp - 0x54], edi
je 0x403abc
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x1c]
call fcn.0041181d
push 0x5c
lea ecx, [ebp - 0x1c]
call fcn.004018e1
push dword [ebp - 0x1c]
call fcn.00403769
pop ecx
test eax, eax
je 0x403b91
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x1c]
call fcn.0041181d
push str..lnk
lea ecx, [ebp - 0x1c]
call fcn.0041185b
lea eax, [ebp + 8]
mov dword [ebp + 8], edi
push eax
push 0x428ebc
push 1
push edi
push 0x428efc
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x403b91
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 0x403b28
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 0x403b39
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 0x403b4a
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 0x403b5c
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 0x428edc
push eax
mov ecx, dword [eax]
call dword [ecx]
test eax, eax
js 0x403b88
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.00419a19
push dword [ebp - 0x34]
call fcn.00419a19
push dword [ebp - 0x40]
call fcn.00419a19
push dword [ebp - 0x10]
call fcn.00419a19
push dword [ebp - 0x4c]
call fcn.00419a19
push dword [ebp - 0x58]
call fcn.00419a19
push dword [ebp - 0x64]
call fcn.00419a19
push dword [ebp - 0x28]
call fcn.00419a19
push dword [ebp - 0x1c]
call fcn.00419a19
add esp, 0x24
pop edi
xor eax, eax
pop esi
leave
ret