Function at 0x40a7c7
Capabilities:
Receive data
Receive data on socket
Send data
Send data on socket

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x480
push ebx
mov ebx, dword [ebp + 0xc]
push esi
lea eax, [ebx - 1]
push edi
lea esi, [ebp - 0x80]
cmp eax, 0xb
ja case.0x40a7e5.8
jmp dword [eax*4 + 0x40ab57]
cmp byte [0x413700], 0
push dword [ebp + 0x10]
lea eax, [ebp - 0x80]
je 0x40a809
push str.ehlo__s_r_n
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
jmp 0x40a880
push str.helo__s_r_n
jmp 0x40a800
push 0xd
push str.AUTH_LOGIN_r_n
jmp 0x40a877
mov eax, dword [ebp + 0x10]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40a81f
lea ecx, [ebp - 0x80]
push ecx
sub eax, edx
push eax
push dword [ebp + 0x10]
call fcn.0040a6d0
mov byte [ebp + eax - 0x80], 0
jmp 0x40a880
mov eax, dword [ebp + 0x10]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40a842
jmp 0x40a826
push dword [ebp + 0x10]
push str.mail_from:__s__r_n
lea eax, [ebp - 0x80]
jmp 0x40a800
push dword [ebp + 0x10]
push str.rcpt_to:__s__r_n
jmp 0x40a853
push 7
push str.data_r_n
jmp 0x40a877
mov esi, dword [ebp + 0x10]
jmp case.0x40a7e5.8
push 7
push str.quit_r_n
lea eax, [ebp - 0x80]
push eax
call fcn.0040ee63
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0
mov edi, eax
push edi
push esi
push dword [ebp + 8]
mov esi, dword [sym.imp.WS2_32.dll_send]
call esi
cmp eax, edi
je 0x40a8c5
cmp ebx, 7
jne 0x40a8ab
push 2
jmp 0x40ab50
push edi
push eax
push str.Error_sending_command__sent___d__d__n
push dword [ebp + 0x14]
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 5
jmp 0x40ab50
cmp ebx, 6
jne case.0x40a7e5.1
push 0
push 5
pop edi
push edi
push str._r_n._r_n
push dword [ebp + 8]
call esi
cmp eax, edi
je case.0x40a7e5.1
push edi
push eax
push str.Error_sending_command__sent___d__d__n
push dword [ebp + 0x14]
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
mov eax, edi
jmp 0x40ab51
mov esi, dword [sym.imp.WS2_32.dll_recv]
xor ebx, ebx
push ebx
mov edi, 0x3f6
mov byte [ebp - 0x480], bl
mov byte [ebp - 0x80], bl
push edi
lea eax, [ebp - 0x480]
jmp 0x40a97e
add ebx, eax
cmp ebx, 0x1f4
jg 0x40a9b6
cmp byte [ebp - 0x80], 0
mov byte [ebp + ebx - 0x480], 0
jne 0x40a95a
cmp ebx, 3
jle 0x40a970
push 4
lea eax, [ebp - 0x480]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.0040ee63
add esp, 0xc
cmp byte [ebp - 0x80], 0
mov word [ebp - 0x7d], 0x20
je 0x40a970
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x480]
push eax
call fcn.0040eef0
pop ecx
pop ecx
test eax, eax
jne 0x40a988
mov eax, edi
sub eax, ebx
push 0
push eax
lea eax, [ebp + ebx - 0x480]
push eax
push dword [ebp + 8]
call esi
test eax, eax
jg 0x40a918
mov edi, dword [ebp + 0xc]
cmp edi, 7
je 0x40a8a4
cmp ebx, 5
jle 0x40a9cf
push 0x76
lea eax, [ebp - 0x480]
push eax
push dword [ebp + 0x14]
call fcn.0040ee63
mov eax, dword [ebp + 0x14]
add esp, 0xc
mov byte [eax + 0x76], 0
jmp 0x40a9de
push ebx
push str.Too_big_smtp_respons___d_bytes__n
push dword [ebp + 0x14]
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 6
jmp 0x40ab50
push str.Too_small_respons_n
push dword [ebp + 0x14]
call fcn.0040ef5b
pop ecx
pop ecx
cmp ebx, 5
jl 0x40ab3f
cmp byte [ebp + ebx - 0x481], 0xa
jne 0x40ab3f
lea eax, [ebp - 0x480]
push eax
call fcn.0040ee07
mov ebx, eax
pop ecx
cmp ebx, 0xdc
je 0x40aa38
cmp ebx, 0xfa
je 0x40aa38
cmp ebx, 0x162
je 0x40aa38
cmp ebx, 0xdd
je 0x40aa38
cmp ebx, 0x14e
je 0x40aa38
cmp ebx, 0xeb
je 0x40aa38
xor esi, esi
jmp 0x40aa5a
lea eax, [ebp - 0x480]
push str.ESMTP
xor esi, esi
push eax
inc esi
call fcn.0040eef0
test eax, eax
pop ecx
setne al
pop ecx
mov byte [0x413700], al
mov edi, esi
cmp edi, 0xc
jne 0x40aa6e
cmp ebx, 0x217
jne 0x40aa6e
push 0xf
jmp 0x40ab50
test esi, esi
jne 0x40a8a4
mov eax, dword [0x4136c8]
test eax, eax
je 0x40ab3b
cmp dword [0x4136cc], esi
je 0x40ab3b
cmp dword [0x4136d0], esi
je 0x40ab3b
cmp edi, 4
jne 0x40aaba
push eax
lea eax, [ebp - 0x480]
push eax
call fcn.0040a69f
pop ecx
pop ecx
test al, al
je 0x40aaba
push 8
jmp 0x40ab50
push dword [0x4136cc]
lea eax, [ebp - 0x480]
push eax
call fcn.0040a69f
pop ecx
pop ecx
test al, al
je 0x40aad6
push 9
jmp 0x40ab50
push dword [0x4136d0]
lea eax, [ebp - 0x480]
push eax
call fcn.0040a69f
pop ecx
pop ecx
test al, al
je 0x40aaf2
push 0xa
jmp 0x40ab50
cmp edi, 3
je 0x40ab06
cmp edi, 4
je 0x40ab06
cmp edi, 5
je 0x40ab06
cmp edi, 6
jne 0x40ab3b
call fcn.004030be
push eax
push 0x410764
push str.localcfg
push 1
call fcn.0040e874
lea ecx, [ebp - 0x80]
push ecx
push eax
call fcn.0040a7a9
push eax
lea eax, [ebp - 0x480]
push eax
call fcn.0040eef0
add esp, 0x20
test eax, eax
jne 0x40aad2
push 0xb
jmp 0x40ab50
push str.Incorrect_respons
push dword [ebp + 0x14]
call fcn.0040ef5b
pop ecx
pop ecx
push 7
pop eax
pop edi
pop esi
pop ebx
leave
ret