Function at 0x19003904
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 0x1900392c
push esi
call fcn.1901b050
movzx edx, word [esi]
pop ecx
mov ecx, eax
jmp 0x19003991
push 0x20
mov eax, edx
pop ecx
or eax, ecx
sub eax, 0x64
je 0x1900397d
sub eax, 0xc
je 0x1900396f
sub eax, 3
je 0x19003959
sub eax, 1
jne 0x19003c03
mov ax, word [esi + 2]
push 7
or ax, cx
pop ecx
push 0x18
jmp 0x19003965
mov ax, word [esi + 2]
push 0xb
or ax, cx
pop ecx
push 0x16
cmp ax, 0x75
pop edi
cmovne ecx, edi
jmp 0x19003991
mov ax, word [esi + 2]
push 2
or ax, cx
pop ecx
push 0x17
jmp 0x19003965
mov ax, word [esi + 2]
or ax, cx
cmp ax, 0x75
jne 0x1900398e
push 0x10
jmp 0x19003990
push 0x19
pop ecx
push 0x2c
pop edi
cmp dx, di
je 0x190039b2
movzx edx, dx
test dx, dx
je 0x19003c03
add esi, 2
movzx eax, word [esi]
mov edx, eax
cmp ax, di
jne 0x1900399c
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 0x19003c03
lea eax, [ebp - 0x27c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.1901135f
lea ecx, [ebp - 0x28]
call fcn.19011396
lea ecx, [ebp - 0x64]
call fcn.19011396
lea ecx, [ebp - 0x58]
call fcn.19011396
lea ecx, [ebp - 0x4c]
call fcn.19011396
lea ecx, [ebp - 0x10]
call fcn.19011396
lea ecx, [ebp - 0x40]
call fcn.19011396
lea ecx, [ebp - 0x34]
call fcn.19011396
lea ecx, [ebp - 0x70]
call fcn.19011396
lea eax, [ebp - 0x28]
push eax
push esi
call fcn.19003f11
pop ecx
pop ecx
cmp dword [ebp - 0x24], edi
je 0x19003bb8
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.19003f11
lea ecx, [ebp - 0x58]
push ecx
push eax
call fcn.19003f11
lea ecx, [ebp - 0x4c]
push ecx
push eax
call fcn.19003f11
lea ecx, [ebp - 0x10]
push ecx
push eax
call fcn.19003f11
lea ecx, [ebp - 0x40]
push ecx
push eax
call fcn.19003f11
lea ecx, [ebp - 0x34]
push ecx
push eax
call fcn.19003f11
lea ecx, [ebp - 0x70]
push ecx
push eax
call fcn.19003f11
push dword [ebp - 0x70]
call fcn.1901b050
add esp, 0x3c
mov esi, eax
cmp dword [ebp - 0xc], edi
jne 0x19003abe
lea eax, [ebp - 0x28]
push eax
call fcn.19004126
pop ecx
mov ecx, dword [ebp - 0x28]
add ecx, 2
lea eax, [ecx + eax*2]
push eax
lea ecx, [ebp - 0x10]
call fcn.190114c8
push 0x2e
lea ecx, [ebp - 0x10]
call fcn.19011af5
test eax, eax
js 0x19003abe
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.190018ff
cmp dword [ebp - 0x54], edi
je 0x19003ae3
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x1c]
call fcn.1901164e
push 0x5c
lea ecx, [ebp - 0x1c]
call fcn.190018ff
push dword [ebp - 0x1c]
call fcn.19003790
pop ecx
test eax, eax
je 0x19003bb8
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x1c]
call fcn.1901164e
push str..lnk
lea ecx, [ebp - 0x1c]
call fcn.1901168c
lea eax, [ebp + 8]
mov dword [ebp + 8], edi
push eax
push 0x19027e94
push 1
push edi
push 0x19027ed4
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x19003bb8
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 0x19003b4f
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 0x19003b60
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 0x19003b71
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 0x19003b83
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 0x19027eb4
push eax
mov ecx, dword [eax]
call dword [ecx]
test eax, eax
js 0x19003baf
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.19019869
push dword [ebp - 0x34]
call fcn.19019869
push dword [ebp - 0x40]
call fcn.19019869
push dword [ebp - 0x10]
call fcn.19019869
push dword [ebp - 0x4c]
call fcn.19019869
push dword [ebp - 0x58]
call fcn.19019869
push dword [ebp - 0x64]
call fcn.19019869
push dword [ebp - 0x28]
call fcn.19019869
push dword [ebp - 0x1c]
call fcn.19019869
add esp, 0x24
pop edi
xor eax, eax
pop esi
leave
ret