Function at 0x408164
Capabilities:
Create shortcut via ishelllink
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5363de
mov eax, dword fs:[0]
push eax
sub esp, 0xa80
mov eax, dword [0x58be10]
xor eax, esp
mov dword [esp + 0xa78], eax
push ebx
push esi
push edi
mov eax, dword [0x58be10]
xor eax, esp
push eax
lea eax, [esp + 0xa90]
mov dword fs:[0], eax
lea eax, [esp + 0x2c]
mov edi, ecx
push eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], 8
mov dword [esp + 0x34], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov ecx, edi
call fcn.0041fced
xor ebx, ebx
push ebx
call fcn.004207a0
pop ecx
lea esi, [esp + 0x10]
call fcn.0040b846
push dword [eax]
push ebx
push 1
push ebx
call dword [sym.imp.KERNEL32.DLL_CreateEventW]
mov ecx, dword [esp + 0x10]
add ecx, 0xfffffff0
mov esi, eax
call fcn.004016bd
cmp esi, ebx
je 0x408295
call dword [sym.imp.KERNEL32.DLL_GetLastError]
cmp eax, 0xb7
jne 0x408295
call fcn.00415569
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x40822b
push 0x80004005
call fcn.0040159e
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x14], eax
lea esi, [esp + 0x10]
mov dword [esp + 0xa98], ebx
call fcn.0040b846
mov byte [esp + 0xa98], 1
push dword [eax]
lea eax, [esp + 0x18]
push 0x566b6c
call fcn.004018ac
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
add ecx, 0xfffffff0
call fcn.004016bd
mov esi, dword [esp + 0x14]
push 0x40
push 0x5648f4
push esi
call dword [sym.imp.USER32.dll_GetForegroundWindow]
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [esi - 0x10]
call fcn.004016bd
jmp 0x4085bf
push ebx
push ebx
push 0x566b80
push 0x20bb
push str.dKqJ2D6105XfiQJ9hZZrQ
push ebx
call dword [sym.imp.vpncore.dll_VPNInit]
add esp, 0x18
test al, al
jne 0x4082d6
lea esi, [esp + 0x10]
call fcn.0040b846
push 0x30
push dword [eax]
push 0x566bc0
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
mov ecx, dword [esp + 0x10]
add ecx, 0xfffffff0
jmp 0x40828b
xor esi, esi
inc esi
push esi
call dword [sym.imp.vpncore.dll_VPNSetEnodePwd]
pop ecx
push ebx
lea eax, [esp + 0x38]
push eax
lea eax, [edi + 0xb8]
push eax
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
call dword [sym.imp.gdiplus.dll_GdiplusStartup]
push 0xc
call fcn.0040cedf
pop ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0xa98], 2
cmp eax, ebx
je 0x40832c
mov ecx, eax
call fcn.00420f4f
mov dword [esp + 0x10], eax
jmp 0x408330
mov dword [esp + 0x10], ebx
or dword [esp + 0xa98], 0xffffffff
push 0x566c10
mov ecx, edi
call fcn.00421f7d
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
test eax, eax
js 0x4084a0
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
js 0x40849a
lea eax, [esp + 0x1c]
push eax
push 0x10
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
js 0x40849a
lea eax, [esp + 0x874]
push eax
push dword [esp + 0x20]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
jne 0x4083a5
push dword [esp + 0x1c]
push eax
call dword [ecx + 0x14]
jmp 0x40849a
push eax
call dword [ecx + 8]
push dword [0x5957f0]
lea eax, [esp + 0x878]
push eax
lea eax, [esp + 0x66c]
push str._s_s.lnk
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea eax, [esp + 0x18]
push eax
push 0x563098
push esi
push ebx
push 0x5630d8
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x40849a
lea eax, [esp + 0x24]
push eax
call fcn.0040b8c7
pop ecx
mov dword [esp + 0xa98], 3
mov eax, dword [eax]
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push eax
push ecx
call dword [edx + 0x50]
or dword [esp + 0xa98], 0xffffffff
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffff0
call fcn.004016bd
lea eax, [esp + 0x24]
push eax
call fcn.0040b905
pop ecx
mov dword [esp + 0xa98], 4
mov eax, dword [eax]
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push eax
push ecx
call dword [edx + 0x24]
or dword [esp + 0xa98], 0xffffffff
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffff0
call fcn.004016bd
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x14]
push edx
push 0x563138
push eax
call dword [ecx]
test eax, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
js 0x40848c
push esi
lea edx, [esp + 0x668]
push edx
push eax
call dword [ecx + 0x18]
test eax, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
lea eax, [esp + 0x1c]
push eax
call fcn.0040b905
mov dword [esp + 0xa9c], 5
lea eax, [esp + 0x24]
mov dword [esp], str.TAP_Win32_Adapter_V9
push eax
call fcn.0040167d
lea eax, [esp + 0x20]
mov edi, 0x593ccc
mov dword [esp + 0xa98], 7
call fcn.004035a9
lea eax, [esp + 0x1c]
mov edi, 0x593ce4
call fcn.004035a9
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
call fcn.004016bd
or dword [esp + 0xa98], 0xffffffff
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
call fcn.004016bd
push 0x66
lea eax, [esp + 0x48]
push eax
call fcn.00405bb8
mov dword [esp + 0xa98], 8
mov dword [esp + 0x44], vtable.CMyVPNDlg.0
call fcn.0041a80e
call fcn.0041a80e
mov eax, dword [eax + 0xc]
push 0x80
push eax
call dword [sym.imp.USER32.dll_LoadIconW]
mov dword [esp + 0x168], eax
mov dword [esp + 0x164], ebx
lea ecx, [esp + 0x44]
mov dword [esp + 0xa98], 9
call fcn.00416261
cmp eax, 1
jne 0x40859f
lea esi, [esp + 0x16c]
call fcn.004035f0
mov ecx, dword [esp + 0x28]
mov eax, esi
mov byte [esp + 0xa98], 0xa
mov dword [ecx + 0x20], eax
mov ecx, esi
call fcn.00416261
mov ecx, esi
mov byte [esp + 0xa98], 9
call fcn.0040366c
mov ecx, dword [esp + 0x10]
cmp ecx, ebx
je 0x4085ae
mov eax, dword [ecx]
push 1
call dword [eax + 4]
or dword [esp + 0xa98], 0xffffffff
lea ecx, [esp + 0x44]
call fcn.00405d32
xor eax, eax
mov ecx, dword [esp + 0xa90]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa78]
xor ecx, esp
call fcn.0050da0c
mov esp, ebp
pop ebp
ret