Function at 0x40147b
Capabilities:
Create a process with modified i/o handles and window
Create process on windows
Get common file path
Set current directory

Disassembly:
push 0xffffffffffffffff
push 0x415a07
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x56c
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_1
lea ecx, [esp + 8]
mov dword [esp + 0x57c], 0
call sub.MFC42.DLL_CString::CString_1
lea ecx, [esp + 0xc]
mov byte [esp + 0x57c], 1
call sub.MFC42.DLL_CString::CString_1
mov ecx, 0x11
xor eax, eax
lea edi, [esp + 0x2c]
push 0x400
rep stosd dword es:[edi], eax
mov word [esp + 0x60], ax
lea eax, [esp + 0x178]
push eax
push 0
mov byte [esp + 0x588], 2
mov dword [esp + 0x38], 0x44
mov dword [esp + 0x64], 0x101
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x174]
push ecx
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::operator_1
push 0x5c
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::ReverseFind
lea edx, [esp + 0x10]
push eax
push edx
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::Left
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x580], 3
call fcn.0041529c
lea ecx, [esp + 0x10]
mov byte [esp + 0x57c], 2
call sub.MFC42.DLL_CString::CString
lea eax, [esp + 0xc]
push 0x421618
lea ecx, [esp + 0x14]
push eax
push ecx
call sub.MFC42.DLL_operator
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x580], 4
call fcn.0041529c
lea ecx, [esp + 0x10]
mov byte [esp + 0x57c], 2
call sub.MFC42.DLL_CString::CString
mov edx, dword [esp + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea eax, [esp + 0x70]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push str.CORENETV
call fcn.0041528a
lea ecx, [esi + 0xc4]
call fcn.0040acd0
test eax, eax
ja 0x40171f
mov ecx, esi
call fcn.00401770
cmp eax, 1
jne 0x401671
lea ecx, [esp + 0x70]
lea edx, [esp + 0x70]
push ecx
push edx
lea eax, [esp + 0x10]
push str._s_32_tapinstall32.exe_remove__s_32_oemdrv.inf_tap0901
push eax
call sub.MFC42.DLL_CString::Format
add esp, 0x10
lea ecx, [esp + 8]
push 0x2f
push 0x5c
call sub.MFC42.DLL_CString::Replace
lea ecx, [esp + 0x18]
mov eax, dword [esp + 8]
lea edx, [esp + 0x2c]
push ecx
push edx
mov esi, dword [sym.imp.KERNEL32.dll_CreateProcessA]
push 0
push 0
push 0x30
push 1
push 0
push 0
push eax
push 0
call esi
mov ecx, dword [esp + 0x18]
mov edi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0xffffffffffffffff
push ecx
call edi
lea edx, [esp + 0x70]
lea eax, [esp + 0x70]
push edx
push eax
lea ecx, [esp + 0x10]
push str._s_32_tapinstall32.exe_install__s_32_oemdrv.inf_tap0901
push ecx
call sub.MFC42.DLL_CString::Format
add esp, 0x10
lea ecx, [esp + 8]
push 0x2f
push 0x5c
call sub.MFC42.DLL_CString::Replace
lea edx, [esp + 0x18]
mov ecx, dword [esp + 8]
lea eax, [esp + 0x2c]
push edx
push eax
push 0
push 0
push 0x30
push 1
push 0
push 0
push ecx
push 0
call esi
mov edx, dword [esp + 0x18]
push 0xffffffffffffffff
push edx
jmp 0x40171d
lea eax, [esp + 0x70]
lea ecx, [esp + 0x70]
push eax
push ecx
lea edx, [esp + 0x10]
push str._s_64_tapinstall64.exe_remove__s_64_oemdrv.inf_tap0901
push edx
call sub.MFC42.DLL_CString::Format
add esp, 0x10
lea ecx, [esp + 8]
push 0x2f
push 0x5c
call sub.MFC42.DLL_CString::Replace
lea eax, [esp + 0x18]
mov edx, dword [esp + 8]
lea ecx, [esp + 0x2c]
push eax
push ecx
mov esi, dword [sym.imp.KERNEL32.dll_CreateProcessA]
push 0
push 0
push 0x30
push 1
push 0
push 0
push edx
push 0
call esi
mov eax, dword [esp + 0x18]
mov edi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0xffffffffffffffff
push eax
call edi
lea ecx, [esp + 0x70]
lea edx, [esp + 0x70]
push ecx
push edx
lea eax, [esp + 0x10]
push str._s_64_tapinstall64.exe_install__s_64_oemdrv.inf_tap0901
push eax
call sub.MFC42.DLL_CString::Format
add esp, 0x10
lea ecx, [esp + 8]
push 0x2f
push 0x5c
call sub.MFC42.DLL_CString::Replace
lea ecx, [esp + 0x18]
mov eax, dword [esp + 8]
lea edx, [esp + 0x2c]
push ecx
push edx
push 0
push 0
push 0x30
push 1
push 0
push 0
push eax
push 0
call esi
mov ecx, dword [esp + 0x18]
push 0xffffffffffffffff
push ecx
call edi
lea ecx, [esp + 0xc]
mov byte [esp + 0x57c], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 8]
mov byte [esp + 0x57c], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov dword [esp + 0x57c], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x574]
pop edi
xor eax, eax
mov dword fs:[0], ecx
pop esi
add esp, 0x578
ret