Function at 0x45d1f0
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Get local ipv4 addresses
Get socket information
Initialize winsock library
Receive data
Receive data on socket
Resolve dns
Send data
Send data on socket
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa58
mov eax, dword [0x4e4150]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov dword [ebp - 0x9ac], 0
lea eax, [ebp - 0x1a8]
push eax
push 0x202
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
je 0x45d22c
xor eax, eax
jmp 0x45d963
push 0
push 1
push 2
call dword [sym.imp.WS2_32.dll_socket]
mov dword [ebp - 0x9b0], eax
cmp dword [ebp - 0x9b0], 0xffffffff
jne 0x45d254
call dword [sym.imp.WS2_32.dll_WSACleanup]
xor eax, eax
jmp 0x45d963
mov dword [ebp - 0x9c8], 0x1388
push 4
lea ecx, [ebp - 0x9c8]
push ecx
push 0x1006
push 0xffff
mov edx, dword [ebp - 0x9b0]
push edx
call dword [sym.imp.WS2_32.dll_setsockopt]
mov dword [ebp - 0x9b4], eax
cmp dword [ebp - 0x9b4], 0xffffffff
jne 0x45d292
jmp 0x45d94a
mov dword [ebp - 0x9c8], 0x1388
push 4
lea eax, [ebp - 0x9c8]
push eax
push 0x1005
push 0xffff
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_setsockopt]
mov dword [ebp - 0x9b4], eax
cmp dword [ebp - 0x9b4], 0xffffffff
jne 0x45d2d0
jmp 0x45d94a
mov word [ebp - 0x9c4], 2
mov dword [ebp - 0x9c0], 0
mov word [ebp - 0x9c2], 0
push 0x10
lea edx, [ebp - 0x9c4]
push edx
mov eax, dword [ebp - 0x9b0]
push eax
call dword [sym.imp.WS2_32.dll_bind]
cmp eax, 0xffffffff
jne 0x45d30c
jmp 0x45d94a
mov word [ebp - 0x9c4], 2
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.WS2_32.dll_inet_addr]
mov dword [ebp - 0x9c0], eax
cmp dword [ebp - 0x9c0], 0xffffffff
jne 0x45d375
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.WS2_32.dll_gethostbyname]
mov dword [ebp - 0x9d0], eax
cmp dword [ebp - 0x9d0], 0
jne 0x45d34c
jmp 0x45d94a
mov eax, dword [ebp - 0x9d0]
movsx ecx, word [eax + 0xa]
mov edx, dword [ebp - 0x9d0]
mov eax, dword [edx + 0xc]
mov esi, dword [eax]
lea edi, [ebp - 0x9c0]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x19
call dword [sym.imp.WS2_32.dll_htons]
mov word [ebp - 0x9c2], ax
push 0x10
lea eax, [ebp - 0x9c4]
push eax
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_connect]
cmp eax, 0xffffffff
jne 0x45d3a4
jmp 0x45d94a
push 0
push 0x800
lea edx, [ebp - 0x9a8]
push edx
mov eax, dword [ebp - 0x9b0]
push eax
call dword [sym.imp.WS2_32.dll_recv]
mov dword [ebp - 0x9cc], str.HELO_www.happystudio.com_r_n
mov ecx, dword [ebp - 0x9cc]
mov dword [ebp - 0x9dc], ecx
mov edx, dword [ebp - 0x9dc]
add edx, 1
mov dword [ebp - 0x9e0], edx
mov eax, dword [ebp - 0x9dc]
mov cl, byte [eax]
mov byte [ebp - 0x9e1], cl
add dword [ebp - 0x9dc], 1
cmp byte [ebp - 0x9e1], 0
jne 0x45d3e4
mov edx, dword [ebp - 0x9dc]
sub edx, dword [ebp - 0x9e0]
mov dword [ebp - 0x9e8], edx
push 0
mov eax, dword [ebp - 0x9e8]
push eax
mov ecx, dword [ebp - 0x9cc]
push ecx
mov edx, dword [ebp - 0x9b0]
push edx
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x45d43a
jmp 0x45d94a
push 0
push 0x800
lea eax, [ebp - 0x9a8]
push eax
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_recv]
mov edx, dword [ebp + 0xc]
push edx
push str.MAIL_From:___s__r_n
lea eax, [ebp - 0x9a8]
push eax
call fcn.0047fb90
add esp, 0xc
lea ecx, [ebp - 0x9a8]
mov dword [ebp - 0x9ec], ecx
mov edx, dword [ebp - 0x9ec]
add edx, 1
mov dword [ebp - 0x9f0], edx
mov eax, dword [ebp - 0x9ec]
mov cl, byte [eax]
mov byte [ebp - 0x9f1], cl
add dword [ebp - 0x9ec], 1
cmp byte [ebp - 0x9f1], 0
jne 0x45d488
mov edx, dword [ebp - 0x9ec]
sub edx, dword [ebp - 0x9f0]
mov dword [ebp - 0x9f8], edx
push 0
mov eax, dword [ebp - 0x9f8]
push eax
lea ecx, [ebp - 0x9a8]
push ecx
mov edx, dword [ebp - 0x9b0]
push edx
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x45d4de
jmp 0x45d94a
push 0
push 0x800
lea eax, [ebp - 0x9a8]
push eax
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_recv]
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x9cc], edx
push 0x4cb08c
mov eax, dword [ebp - 0x9cc]
push eax
call fcn.00482140
add esp, 8
add eax, dword [ebp - 0x9cc]
mov dword [ebp - 0x9cc], eax
mov ecx, dword [ebp - 0x9cc]
movsx edx, byte [ecx]
test edx, edx
jne 0x45d534
jmp 0x45d613
push 0x4cb090
mov eax, dword [ebp - 0x9cc]
push eax
call fcn.004820f0
add esp, 8
mov dword [ebp - 0x9d4], eax
mov ecx, dword [ebp - 0x9cc]
push ecx
mov edx, dword [ebp - 0x9d4]
push edx
push str.RCPT_To:___.s__r_n
lea eax, [ebp - 0x9a8]
push eax
call fcn.0047fb90
add esp, 0x10
lea ecx, [ebp - 0x9a8]
mov dword [ebp - 0x9fc], ecx
mov edx, dword [ebp - 0x9fc]
add edx, 1
mov dword [ebp - 0xa00], edx
mov eax, dword [ebp - 0x9fc]
mov cl, byte [eax]
mov byte [ebp - 0xa01], cl
add dword [ebp - 0x9fc], 1
cmp byte [ebp - 0xa01], 0
jne 0x45d58b
mov edx, dword [ebp - 0x9fc]
sub edx, dword [ebp - 0xa00]
mov dword [ebp - 0xa08], edx
push 0
mov eax, dword [ebp - 0xa08]
push eax
lea ecx, [ebp - 0x9a8]
push ecx
mov edx, dword [ebp - 0x9b0]
push edx
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x45d5e1
jmp 0x45d94a
push 0
push 0x800
lea eax, [ebp - 0x9a8]
push eax
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_recv]
mov edx, dword [ebp - 0x9cc]
add edx, dword [ebp - 0x9d4]
mov dword [ebp - 0x9cc], edx
jmp 0x45d502
mov dword [ebp - 0x9cc], str.DATA_r_n
mov eax, dword [ebp - 0x9cc]
mov dword [ebp - 0xa0c], eax
mov ecx, dword [ebp - 0xa0c]
add ecx, 1
mov dword [ebp - 0xa10], ecx
mov edx, dword [ebp - 0xa0c]
mov al, byte [edx]
mov byte [ebp - 0xa11], al
add dword [ebp - 0xa0c], 1
cmp byte [ebp - 0xa11], 0
jne 0x45d638
mov ecx, dword [ebp - 0xa0c]
sub ecx, dword [ebp - 0xa10]
mov dword [ebp - 0xa18], ecx
push 0
mov edx, dword [ebp - 0xa18]
push edx
mov eax, dword [ebp - 0x9cc]
push eax
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x45d68e
jmp 0x45d94a
push 0
push 0x800
lea edx, [ebp - 0x9a8]
push edx
mov eax, dword [ebp - 0x9b0]
push eax
call dword [sym.imp.WS2_32.dll_recv]
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x9d8], 0x10
lea edx, [ebp - 0x9d8]
push edx
lea eax, [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_getsockname]
mov edx, dword [ebp + 0xc]
push edx
push str.From:___s__r_n
lea eax, [ebp - 0x9a8]
push eax
call fcn.0047fb90
add esp, 0xc
lea ecx, [ebp - 0x9a8]
mov dword [ebp - 0xa1c], ecx
mov edx, dword [ebp - 0xa1c]
add edx, 1
mov dword [ebp - 0xa20], edx
mov eax, dword [ebp - 0xa1c]
mov cl, byte [eax]
mov byte [ebp - 0xa21], cl
add dword [ebp - 0xa1c], 1
cmp byte [ebp - 0xa21], 0
jne 0x45d70c
mov edx, dword [ebp - 0xa1c]
sub edx, dword [ebp - 0xa20]
mov dword [ebp - 0xa28], edx
push 0
mov eax, dword [ebp - 0xa28]
push eax
lea ecx, [ebp - 0x9a8]
push ecx
mov edx, dword [ebp - 0x9b0]
push edx
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x45d762
jmp 0x45d94a
movzx eax, byte [ebp - 0xd]
push eax
movzx ecx, byte [ebp - 0xe]
push ecx
movzx edx, byte [ebp - 0xf]
push edx
movzx eax, byte [ebp - 0x10]
push eax
push str.Subject:_Exception___d._d._d._d__r_n_r_n_r_n
lea ecx, [ebp - 0x9a8]
push ecx
call fcn.0047fb90
add esp, 0x18
lea edx, [ebp - 0x9a8]
mov dword [ebp - 0xa2c], edx
mov eax, dword [ebp - 0xa2c]
add eax, 1
mov dword [ebp - 0xa30], eax
mov ecx, dword [ebp - 0xa2c]
mov dl, byte [ecx]
mov byte [ebp - 0xa31], dl
add dword [ebp - 0xa2c], 1
cmp byte [ebp - 0xa31], 0
jne 0x45d7a5
mov eax, dword [ebp - 0xa2c]
sub eax, dword [ebp - 0xa30]
mov dword [ebp - 0xa38], eax
push 0
mov ecx, dword [ebp - 0xa38]
push ecx
lea edx, [ebp - 0x9a8]
push edx
mov eax, dword [ebp - 0x9b0]
push eax
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x45d7fb
jmp 0x45d94a
mov ecx, dword [ebp + 0x14]
push ecx
mov edx, dword [ebp - 0x9b0]
push edx
call fcn.0045d980
add esp, 8
test eax, eax
jne 0x45d817
jmp 0x45d94a
mov dword [ebp - 0x9cc], str._r_n._r_n
mov eax, dword [ebp - 0x9cc]
mov dword [ebp - 0xa3c], eax
mov ecx, dword [ebp - 0xa3c]
add ecx, 1
mov dword [ebp - 0xa40], ecx
mov edx, dword [ebp - 0xa3c]
mov al, byte [edx]
mov byte [ebp - 0xa41], al
add dword [ebp - 0xa3c], 1
cmp byte [ebp - 0xa41], 0
jne 0x45d83c
mov ecx, dword [ebp - 0xa3c]
sub ecx, dword [ebp - 0xa40]
mov dword [ebp - 0xa48], ecx
push 0
mov edx, dword [ebp - 0xa48]
push edx
mov eax, dword [ebp - 0x9cc]
push eax
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x45d892
jmp 0x45d94a
push 0
push 0x800
lea edx, [ebp - 0x9a8]
push edx
mov eax, dword [ebp - 0x9b0]
push eax
call dword [sym.imp.WS2_32.dll_recv]
mov dword [ebp - 0x9cc], str.QUIT_r_n
mov ecx, dword [ebp - 0x9cc]
mov dword [ebp - 0xa4c], ecx
mov edx, dword [ebp - 0xa4c]
add edx, 1
mov dword [ebp - 0xa50], edx
mov eax, dword [ebp - 0xa4c]
mov cl, byte [eax]
mov byte [ebp - 0xa51], cl
add dword [ebp - 0xa4c], 1
cmp byte [ebp - 0xa51], 0
jne 0x45d8d2
mov edx, dword [ebp - 0xa4c]
sub edx, dword [ebp - 0xa50]
mov dword [ebp - 0xa58], edx
push 0
mov eax, dword [ebp - 0xa58]
push eax
mov ecx, dword [ebp - 0x9cc]
push ecx
mov edx, dword [ebp - 0x9b0]
push edx
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jg 0x45d925
jmp 0x45d94a
push 0
push 0x800
lea eax, [ebp - 0x9a8]
push eax
mov ecx, dword [ebp - 0x9b0]
push ecx
call dword [sym.imp.WS2_32.dll_recv]
mov dword [ebp - 0x9ac], 1
mov edx, dword [ebp - 0x9b0]
push edx
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
mov eax, dword [ebp - 0x9ac]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0047f5bc
mov esp, ebp
pop ebp
ret