Function at 0x40119a
Capabilities:
Accept command line arguments
Create a process with modified i/o handles and window
Create pipe
Create process on windows
Create thread
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x480
mov eax, dword [0x412280]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov dword [ebp - 0x40c], ebx
mov dword [ebp - 0x418], 1
call dword [sym.imp.KERNEL32.dll_GetVersion]
xor edi, edi
mov dword [0x413e70], edi
test eax, eax
js 0x401204
lea eax, [ebp - 0x404]
push str.cmd__c
push eax
call fcn.00401b60
mov esi, dword [ebp + 8]
pop ecx
pop ecx
cmp esi, 4
jl 0x4016ae
xor eax, eax
inc eax
mov dword [ebp - 0x430], eax
mov dword [0x413e70], eax
jmp 0x401268
cmp al, 4
lea eax, [ebp - 0x404]
jae 0x40122d
push str.uespawn.exe_command__c__e:2048
push eax
call fcn.00401b60
mov esi, dword [ebp + 8]
pop ecx
pop ecx
cmp esi, 3
jge 0x401268
push str.Wrong_Parameters___Win32s
jmp 0x4016b3
push 0x400
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea eax, [ebp - 0x404]
push str.command.com__E:2048__c
push eax
call fcn.00401b70
mov esi, dword [ebp + 8]
pop ecx
pop ecx
cmp esi, 4
jge 0x40125e
push str.Wrong_Parameters___Windows_95
jmp 0x4016b3
mov dword [ebp - 0x430], 1
cmp esi, 4
jl 0x401356
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
mov dword [ebp - 0x408], ecx
mov al, byte [eax]
cmp al, 0x46
je 0x40128d
cmp al, 0x66
jne 0x401293
mov dword [ebp - 0x418], edi
push 3
pop ebx
cmp esi, ebx
jle 0x401362
mov edi, dword [ebp - 0x40c]
push 0x20
push dword [edi + ebx*4]
call fcn.00401cf0
pop ecx
pop ecx
test eax, eax
jne 0x4012fc
push 0x26
push dword [edi + ebx*4]
call fcn.00401cf0
neg eax
pop ecx
sbb eax, eax
neg eax
pop ecx
lea eax, [ebp - 0x404]
jne 0x4012db
push dword [edi + ebx*4]
push eax
call fcn.00401b70
pop ecx
pop ecx
jmp 0x401330
push 0x40d200
push eax
call fcn.00401b70
push dword [edi + ebx*4]
lea eax, [ebp - 0x404]
push eax
call fcn.00401b70
push 0x40d200
jmp 0x401321
lea eax, [ebp - 0x404]
push 0x40d204
push eax
call fcn.00401b70
push dword [edi + ebx*4]
lea eax, [ebp - 0x404]
push eax
call fcn.00401b70
push 0x40d204
lea eax, [ebp - 0x404]
push eax
call fcn.00401b70
add esp, 0x18
lea eax, [ebp - 0x404]
push 0x40d208
push eax
call fcn.00401b70
inc ebx
pop ecx
pop ecx
cmp ebx, esi
jl 0x4012a4
mov ecx, dword [ebp - 0x408]
xor edi, edi
jmp 0x401362
mov ecx, dword [ebp - 0x40c]
mov dword [ebp - 0x408], ecx
push str.null
push ecx
call fcn.00401c60
pop ecx
pop ecx
test eax, eax
je 0x40139d
push edi
push edi
push 4
push edi
push 3
push 0xc0000000
push dword [ebp - 0x408]
call dword [sym.imp.KERNEL32.dll_CreateFileA]
push 2
push edi
push edi
push eax
mov dword [0x413e9c], eax
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
jmp 0x4013a3
mov dword [0x413e9c], edi
mov esi, dword [sym.imp.KERNEL32.dll_GetStdHandle]
push 0xfffffffffffffff5
mov dword [ebp - 0x438], 0xc
mov dword [ebp - 0x434], edi
call esi
push 0xfffffffffffffff6
mov dword [0x413ea0], eax
call esi
mov ebx, dword [sym.imp.KERNEL32.dll_CreatePipe]
mov dword [0x413e98], eax
lea eax, [ebp - 0x438]
push edi
push eax
push 0x413e90
lea eax, [ebp - 0x410]
push eax
call ebx
test eax, eax
jne 0x4013f5
push str.Error_Creating_Pipe_In
jmp 0x4016b3
push edi
lea eax, [ebp - 0x438]
push eax
lea eax, [ebp - 0x428]
push eax
lea eax, [ebp - 0x420]
push eax
call ebx
test eax, eax
jne 0x40141b
push str.Error_Creating_Pipe_Out
jmp 0x4016b3
mov ebx, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
lea eax, [ebp - 0x424]
push 2
push edi
push edi
push eax
call ebx
push eax
push dword [ebp - 0x420]
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
jne 0x40144c
push str.DuplicateHandle_failed
jmp 0x4016b3
push dword [ebp - 0x420]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push 2
push edi
push edi
push 0x413ea4
call ebx
push eax
push dword [0x413e90]
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
je 0x401442
push dword [0x413e90]
call esi
push edi
lea eax, [ebp - 0x438]
push eax
lea eax, [ebp - 0x41c]
push eax
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_CreatePipe]
test eax, eax
jne 0x4014ab
push str.Error_Creating_Pipe_Err
jmp 0x4016b3
mov eax, dword [ebp - 0x410]
mov dword [ebp - 0x444], eax
mov eax, dword [ebp - 0x428]
mov dword [ebp - 0x440], eax
mov eax, dword [ebp - 0x41c]
mov dword [ebp - 0x43c], eax
xor eax, eax
mov dword [ebp - 0x47c], 0x44
mov dword [ebp - 0x478], edi
mov dword [ebp - 0x470], str.UltraEdit_DOS_Command_Window
mov dword [ebp - 0x474], edi
mov dword [ebp - 0x464], edi
mov dword [ebp - 0x460], edi
mov dword [ebp - 0x468], edi
mov dword [ebp - 0x46c], edi
mov dword [ebp - 0x44c], eax
mov dword [ebp - 0x448], edi
cmp dword [0x413e70], eax
je 0x401526
mov ecx, edi
mov eax, 0x100
jmp 0x40152e
push 0x10
pop ecx
mov eax, 0x101
cmp dword [ebp - 0x418], 0
mov dword [ebp - 0x450], eax
je 0x401546
or eax, 1
mov dword [ebp - 0x450], eax
push 0x413e80
lea eax, [ebp - 0x47c]
push eax
push edi
push edi
push ecx
push 1
push edi
lea eax, [ebp - 0x438]
push eax
lea eax, [ebp - 0x404]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x401577
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov eax, dword [0x413e80]
mov dword [0x413e94], eax
lea eax, [ebp - 0x42c]
push eax
push edi
push dword [ebp - 0x414]
push 0x401025
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
jne 0x4015aa
push str.Error_Creating_Thread_1
jmp 0x4016b3
mov ebx, dword [sym.imp.KERNEL32.dll_SetThreadPriority]
push 2
push eax
call ebx
lea eax, [ebp - 0x42c]
push eax
push edi
push dword [ebp - 0x424]
push 0x401025
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
je 0x4015a0
push 2
push eax
call ebx
lea eax, [ebp - 0x42c]
push eax
push edi
push dword [0x413ea4]
push 0x40110d
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
je 0x4015a0
push 2
push eax
call ebx
push dword [0x413e84]
call esi
push 0xffffffffffffffff
push dword [0x413e94]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
je 0x40162b
lea eax, [ebp - 0x480]
push eax
push dword [0x413e94]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
push dword [ebp - 0x428]
call esi
push dword [ebp - 0x41c]
call esi
mov dword [0x4130e4], 1
jmp 0x40165e
push 0x64
inc edi
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp dword [0x413e70], 0
jne 0x40165e
cmp edi, 4
je 0x401667
cmp dword [0x4130e0], 0
je 0x401647
mov eax, dword [0x413e9c]
test eax, eax
je 0x401673
push eax
call esi
push dword [ebp - 0x410]
call esi
push dword [ebp - 0x424]
call esi
push dword [0x413ea4]
call esi
push dword [ebp - 0x414]
call esi
push dword [0x413e94]
call esi
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00401e1b
mov esp, ebp
pop ebp
ret
push str.Wrong_Parameters___NT
call fcn.00401000
int3