Function at 0x40f490
Capabilities:
Create process on windows
Receive data
Receive data on socket
Send data
Send data on socket

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4188c7
push eax
mov eax, dword [0x422cf4]
mov dword fs:[0], esp
sub esp, 0x374
push ebx
push esi
mov esi, ecx
push edi
mov ecx, dword [0x422d0c]
push eax
push ecx
mov ecx, esi
call fcn.0040f3e0
test eax, eax
jne 0x40f4ee
push ecx
mov edx, esp
mov dword [esp + 0x14], esp
push 0x422d0c
push str.connect_error
push edx
call sub.MFC42.DLL_operator_1
mov ecx, 0x422c90
call fcn.00402730
jmp 0x40f87a
mov eax, dword [0x422cbc]
mov ecx, dword [0x422cb0]
mov edx, dword [0x422ce4]
mov dword [esp + 0x74], eax
mov eax, dword [0x422ce0]
push ecx
mov ecx, dword [0x422cf0]
push edx
mov edx, dword [0x422cd8]
push eax
push ecx
push edx
mov ecx, esi
mov dword [esp + 0x84], 0x3e8
call fcn.0040c5f0
mov ecx, dword [0x422ccc]
mov edx, dword [0x422cac]
push eax
mov eax, dword [0x422cd0]
mov edi, dword [sym.imp.MSVCRT.dll_sprintf]
push eax
push ecx
push edx
push 0x422cb8
lea eax, [esp + 0xa0]
push str._s_s_d_d_d_s_d_.0f_s
push eax
call edi
mov edx, dword [esi + 0x40]
add esp, 0x30
xor ebx, ebx
lea ecx, [esp + 0x70]
push ebx
push 0x88
push ecx
push edx
call dword [sym.imp.WSOCK32.dll_send]
test eax, eax
jg 0x40f593
mov eax, dword [esi + 0x40]
push 2
push eax
call dword [sym.imp.WSOCK32.dll_shutdown]
mov ecx, dword [esi + 0x40]
push ecx
call dword [sym.imp.WSOCK32.dll_closesocket]
jmp 0x40f87a
mov eax, dword [esi + 0x40]
push ebx
lea edx, [esp + 0xfc]
push 0x88
push edx
push eax
call dword [sym.imp.WSOCK32.dll_recv]
cmp eax, 0x88
push 2
jae 0x40f5cd
mov ecx, dword [esi + 0x40]
push ecx
call dword [sym.imp.WSOCK32.dll_shutdown]
mov edx, dword [esi + 0x40]
push edx
call dword [sym.imp.WSOCK32.dll_closesocket]
jmp 0x40f87a
mov eax, dword [esi + 0x40]
push eax
call dword [sym.imp.WSOCK32.dll_shutdown]
mov ecx, dword [esi + 0x40]
push ecx
call dword [sym.imp.WSOCK32.dll_closesocket]
mov eax, dword [esp + 0xf8]
mov edx, dword [esp + 0xfc]
mov dword [esi + 0x40], ebx
sub eax, 0x384
mov dword [0x422d10], edx
je 0x40f723
dec eax
jne 0x40f87a
push str.NRUpdate.exe
lea eax, [esp + 0x14]
push 0x422cc0
push eax
call sub.MFC42.DLL_operator_2
push ecx
mov dword [esp + 0x38c], ebx
mov ecx, esp
mov dword [esp + 0x10], esp
push 0x422cc0
call sub.MFC42.DLL_CString::CString_1
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str.NRSoftNRUpdate.exe
mov byte [esp + 0x398], 1
call sub.MFC42.DLL_CString::CString_2
push 0x642
mov ecx, esi
mov byte [esp + 0x398], bl
call fcn.00413820
cmp eax, ebx
je 0x40f70f
mov ecx, dword [0x422d0c]
mov edx, dword [esp + 0x10]
push 0x3e9
push ecx
push edx
lea eax, [esp + 0x18c]
push str.__s___s__d
push eax
call edi
add esp, 0x14
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
lea edx, [esp + 0x18]
lea eax, [esp + 0x2c]
push edx
push eax
push ebx
push ebx
push ebx
push 1
push ebx
lea ecx, [esp + 0x19c]
push ebx
push ecx
push ebx
mov dword [esp + 0x80], 1
mov word [esp + 0x84], bx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
cmp eax, ebx
je 0x40f70f
mov edx, dword [esp + 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0x64
push edx
call esi
test eax, eax
je 0x40f6f1
mov eax, dword [esp + 0x18]
push 0x64
push eax
call esi
test eax, eax
jne 0x40f6e4
mov ecx, dword [esp + 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call esi
mov edx, dword [esp + 0x1c]
push edx
call esi
mov dword [0x422d24], 1
mov dword [esp + 0x388], 0xffffffff
lea ecx, [esp + 0x10]
jmp 0x40f875
lea eax, [esp + 0x100]
lea ecx, [esp + 0xc]
push eax
call sub.MFC42.DLL_CString::CString_2
push ecx
lea edx, [esp + 0x10]
mov ecx, esp
mov dword [esp + 0x18], esp
push edx
mov dword [esp + 0x390], 2
call sub.MFC42.DLL_CString::CString_1
mov ecx, 0x422c90
call fcn.00402730
lea ecx, [esp + 0x18]
call fcn.00416168
lea eax, [esp + 0x18]
mov bl, 3
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x422428
mov byte [esp + 0x394], bl
call sub.MFC42.DLL_CString::CString_2
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
mov byte [esp + 0x398], 4
call sub.MFC42.DLL_CString::CString_1
mov byte [esp + 0x394], bl
call fcn.0040f2c0
mov edi, dword [esp + 0x39c]
add esp, 0xc
cmp eax, 2
jle 0x40f7ec
mov eax, dword [esp + 0x1c]
mov ecx, edi
push eax
call sub.MFC42.DLL_CString::operator_2
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 4]
push eax
call dword [sym.imp.MSVCRT.dll_atoi]
mov edx, dword [esp + 0x20]
add esp, 4
add edx, 8
lea ecx, [esi + 0x2b4]
push edx
mov dword [esi + 0x2b0], eax
call sub.MFC42.DLL_CString::operator_2
mov eax, dword [edi]
push str.PCQUIT
push eax
call dword [sym.imp.MSVCRT.dll__mbscmp]
add esp, 8
test eax, eax
jne 0x40f82b
lea ecx, [esp + 0x18]
mov byte [esp + 0x388], 2
call fcn.0041616e
lea ecx, [esp + 0xc]
mov dword [esp + 0x388], 0xffffffff
call sub.MFC42.DLL_CString::CString
or eax, 0xffffffff
jmp 0x40f87c
mov eax, dword [edi]
mov byte [esp + 0x388], 2
mov ecx, dword [eax - 8]
cmp ecx, 6
lea ecx, [esp + 0x18]
jle 0x40f861
call fcn.0041616e
lea ecx, [esp + 0xc]
mov dword [esp + 0x388], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, 1
jmp 0x40f87c
call fcn.0041616e
mov dword [esp + 0x388], 0xffffffff
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::CString
xor eax, eax
mov ecx, dword [esp + 0x380]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
add esp, 0x380
ret 4