Function at 0x405f10
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Initialize winsock library
Receive data
Receive data on socket
Resolve dns
Send data
Send data on socket

Disassembly:
mov eax, 0x5630
call fcn.0040a980
push ebx
push ebp
push esi
lea eax, [esp + 0x3928]
push edi
push eax
push 0x202
call dword [sym.imp.WS2_32.dll_WSAStartup]
mov ebp, dword [sym.imp.USER32.dll_MessageBoxA]
test eax, eax
je 0x405f4b
push 0
push str.Winsock
push 0x416ff4
push 0
call ebp
mov ebx, dword [esp + 0x5644]
test ebx, ebx
je 0x406052
mov eax, dword [esp + 0x5648]
test eax, eax
je 0x406052
mov dl, byte [0x41ae68]
mov ecx, 0x3ff
xor eax, eax
lea edi, [esp + 0x292d]
mov byte [esp + 0x292c], dl
mov byte [esp + 0x12c], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x9ff
xor eax, eax
lea edi, [esp + 0x12d]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x6e1
xor eax, eax
lea edi, [esp + 0x3abc]
rep stosd dword es:[edi], eax
mov cl, byte [eax + 0x423dfa]
mov byte [esp + eax + 0x53c0], cl
inc eax
test cl, cl
jne 0x405fb3
xor edi, edi
xor edx, edx
mov cl, byte [edx + 0x4224fa]
lea eax, [edx + 0x4224fa]
test cl, cl
je 0x405ffa
mov ecx, edx
sub ecx, eax
lea esi, [esp + ecx + 0x3ac0]
mov cl, byte [eax]
mov byte [esi + eax], cl
inc eax
test cl, cl
jne 0x405fe4
add edx, 0x40
inc edi
cmp edx, 0x1900
jl 0x405fc9
lea edx, [esp + 0x5440]
mov dword [esp + 0x3abc], edi
mov eax, ebx
sub edx, ebx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x40600c
push 0x423e3a
call dword [sym.imp.WS2_32.dll_gethostbyname]
mov esi, eax
test esi, esi
jne 0x406062
push 0x423e3a
lea edx, [esp + 0x30]
push 0x416fd4
push edx
call fcn.00409efc
mov ecx, dword [0x41c090]
add esp, 0xc
lea eax, [esp + 0x2c]
push esi
push 0x416fc8
push eax
push ecx
call ebp
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x5630
ret
push 0
push 1
push 2
call dword [sym.imp.WS2_32.dll_socket]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x406052
mov dx, word [0x423e7c]
mov word [esp + 0x1c], 2
push edx
call dword [sym.imp.WS2_32.dll_htons]
mov word [esp + 0x1e], ax
mov eax, dword [esi + 0xc]
push 0x10
mov ecx, dword [eax]
lea eax, [esp + 0x20]
push eax
push ebx
mov edx, dword [ecx]
mov dword [esp + 0x2c], edx
call dword [sym.imp.WS2_32.dll_connect]
test eax, eax
je 0x4060e9
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
lea ecx, [esp + 0x30]
push 0x416f68
push ecx
call fcn.00409efc
mov eax, dword [0x41c090]
add esp, 0xc
lea edx, [esp + 0x2c]
push 0
push 0x416fc8
push edx
push eax
call ebp
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x5630
ret
mov esi, dword [sym.imp.WS2_32.dll_recv]
push str.recv___Reply
push 0
lea ecx, [esp + 0x2934]
push 0x1000
push ecx
push ebx
call esi
push eax
call fcn.00405ec0
push 0x416f50
push 0x423e3a
lea edx, [esp + 0x13c]
push str.HELO__s_s
push edx
call fcn.00409efc
lea edi, [esp + 0x144]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
mov ebp, dword [sym.imp.WS2_32.dll_send]
push str.send___HELO
not ecx
dec ecx
push 0
lea eax, [esp + 0x134]
push ecx
push eax
push ebx
call ebp
push eax
call fcn.00405ec0
add esp, 8
lea ecx, [esp + 0x292c]
push str.recv___HELO
push 0
push 0x1000
push ecx
push ebx
call esi
push eax
call fcn.00405ec0
lea edx, [esp + 0x53c8]
push 0x416f50
push edx
lea eax, [esp + 0x13c]
push str.MAIL_FROM:__s__s
push eax
call fcn.00409efc
lea edi, [esp + 0x144]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
push str.send___MAIL_FROM
dec ecx
push 0
push ecx
lea ecx, [esp + 0x138]
push ecx
push ebx
call ebp
push eax
call fcn.00405ec0
add esp, 8
lea edx, [esp + 0x292c]
push str.recv___MAIL_FROM
push 0
push 0x1000
push edx
push ebx
call esi
push eax
call fcn.00405ec0
mov eax, dword [esp + 0x3ac4]
add esp, 8
xor esi, esi
test eax, eax
jle 0x406291
lea eax, [esp + 0x3ac0]
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
push 0x416f50
push ecx
lea edx, [esp + 0x134]
push str.RCPT_TO:__s__s
push edx
call fcn.00409efc
lea edi, [esp + 0x13c]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
push str.send___RCPT_TO
dec ecx
push 0
lea eax, [esp + 0x134]
push ecx
push eax
push ebx
call ebp
push eax
call fcn.00405ec0
add esp, 8
lea ecx, [esp + 0x292c]
push str.recv___RCPT_TO
push 0
push 0x1000
push ecx
push ebx
call dword [sym.imp.WS2_32.dll_recv]
push eax
call fcn.00405ec0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x3ac4]
add esp, 8
inc esi
add ecx, 0x40
cmp esi, eax
mov dword [esp + 0x10], ecx
jl 0x406206
push 0x416f50
lea edx, [esp + 0x130]
push str.DATA_s
push edx
call fcn.00409efc
lea edi, [esp + 0x138]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
push str.send___DATA
dec ecx
push 0
lea eax, [esp + 0x134]
push ecx
push eax
push ebx
call ebp
push eax
call fcn.00405ec0
add esp, 8
lea ecx, [esp + 0x292c]
push str.recv___DATA
push 0
push 0x1000
push ecx
push ebx
call dword [sym.imp.WS2_32.dll_recv]
push eax
call fcn.00405ec0
lea edx, [esp + 0x53c8]
push 0x416f50
push edx
lea eax, [esp + 0x13c]
push 0x416e84
push eax
call fcn.00409efc
mov eax, dword [esp + 0x3ad4]
add esp, 0x18
test eax, eax
mov dword [esp + 0x14], 0
jle 0x4063e1
lea ecx, [esp + 0x3ac0]
mov dword [esp + 0x10], ecx
lea edi, [esp + 0x12c]
or ecx, 0xffffffff
xor eax, eax
mov dx, word [0x416e80]
repne scasb al, byte es:[edi]
or ecx, 0xffffffff
mov word [edi - 1], dx
mov edi, dword [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x12c]
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x14]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x12c]
or ecx, 0xffffffff
mov esi, dword [esp + 0x3abc]
repne scasb al, byte es:[edi]
mov ax, word [0x416e7c]
mov word [edi - 1], ax
lea eax, [esi - 1]
cmp edx, eax
jge 0x4063c9
lea edi, [esp + 0x12c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov cx, word [0x416e78]
mov word [edi - 1], cx
mov ecx, dword [esp + 0x10]
inc edx
add ecx, 0x40
cmp edx, esi
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
jl 0x40633d
lea edi, [esp + 0x12c]
or ecx, 0xffffffff
xor eax, eax
mov dx, word [0x416f50]
repne scasb al, byte es:[edi]
mov al, byte [0x416f52]
dec edi
or ecx, 0xffffffff
push str.send___message_line
mov word [edi], dx
push 0
mov byte [edi + 2], al
lea edi, [esp + 0x134]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x138]
push ecx
push ebx
call ebp
push eax
call fcn.00405ec0
push 0x416f50
lea edx, [esp + 0x544c]
push 0x416f50
push edx
lea eax, [esp + 0x140]
push str.Subject:__s_s_s
push eax
call fcn.00409efc
lea edi, [esp + 0x148]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
push str.send___message_line
dec ecx
push 0
push ecx
lea ecx, [esp + 0x138]
push ecx
push ebx
call ebp
push eax
call fcn.00405ec0
mov edi, dword [esp + 0x5650]
or ecx, 0xffffffff
xor eax, eax
add esp, 8
xor esi, esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0x3e6
mov dword [esp + 0x18], ecx
jle 0x406547
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x5648]
mov ecx, 0xa00
xor eax, eax
lea edi, [esp + 0x12c]
rep stosd dword es:[edi], eax
lea eax, [esi + edx]
push 0x3e6
lea ecx, [esp + 0x130]
push eax
push ecx
call fcn.0040a880
lea edi, [esp + 0x138]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
mov dx, word [0x416f50]
mov al, byte [0x416f52]
dec edi
or ecx, 0xffffffff
push str.send___message_line
push 0
mov word [edi], dx
mov byte [edi + 2], al
lea edi, [esp + 0x134]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x138]
push ecx
push ebx
call ebp
push eax
call fcn.00405ec0
mov eax, dword [esp + 0x1c]
add esp, 8
sub eax, 0x3e6
add esi, 0x3e6
cmp eax, 0x3e6
mov dword [esp + 0x14], eax
jg 0x4064a7
mov ecx, dword [esp + 0x18]
sub ecx, esi
je 0x40659c
mov edx, dword [esp + 0x5648]
push 0x416f50
add esi, edx
lea eax, [esp + 0x130]
push esi
push str._s_s
push eax
call fcn.00409efc
lea edi, [esp + 0x13c]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
push str.send___message_line
dec ecx
push 0
push ecx
lea ecx, [esp + 0x138]
push ecx
push ebx
call ebp
push eax
call fcn.00405ec0
add esp, 8
push 0x416f50
push 0x416f50
lea edx, [esp + 0x134]
push str._s._s
push edx
call fcn.00409efc
lea edi, [esp + 0x13c]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
push str.send___end_message
dec ecx
push 0
lea eax, [esp + 0x134]
push ecx
push eax
push ebx
call ebp
push eax
call fcn.00405ec0
mov esi, dword [sym.imp.WS2_32.dll_recv]
add esp, 8
lea ecx, [esp + 0x292c]
push str.recv___end_message
push 0
push 0x1000
push ecx
push ebx
call esi
push eax
call fcn.00405ec0
push 0x416f50
lea edx, [esp + 0x138]
push str.QUIT_s
push edx
call fcn.00409efc
lea edi, [esp + 0x140]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
repne scasb al, byte es:[edi]
not ecx
push str.send___QUIT
dec ecx
push 0
lea eax, [esp + 0x134]
push ecx
push eax
push ebx
call ebp
push eax
call fcn.00405ec0
add esp, 8
lea ecx, [esp + 0x292c]
push str.recv___QUIT
push 0
push 0x1000
push ecx
push ebx
call esi
push eax
call fcn.00405ec0
add esp, 8
push ebx
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5630
ret