Function at 0x4062a0
Capabilities:
Act as tcp client
Authenticate hmac
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Get socket status
Resolve dns
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x48580f
mov eax, dword fs:[0]
push eax
sub esp, 0x5b4
mov eax, dword [0x4b1598]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, dword [ebp + 8]
xor edi, edi
push edi
mov ebx, ecx
push 1
push 2
mov dword [ebp - 0x378], ebx
mov dword [ebp - 0x3a0], 1
mov dword [ebp - 4], edi
mov dword [ebp - 0x3b8], 0xb4
mov dword [ebp - 0x3b4], edi
mov dword [ebx + 0x12c], 0xffffffff
call dword [sym.imp.WS2_32.dll_socket]
cmp eax, 0xffffffff
mov dword [ebx + 0x12c], eax
jne 0x406336
push 0x4add68
lea eax, [ebp - 0x39c]
push eax
mov dword [ebp - 0x39c], 0x6a
call fcn.0041125d
mov eax, dword [ebp + 0xc]
cmp ax, di
je 0x40634a
push eax
call dword [sym.imp.WS2_32.dll_htons]
movzx eax, ax
jmp 0x40636b
push edi
push str.mail
call dword [sym.imp.WS2_32.dll_getservbyname]
cmp eax, edi
jne 0x406367
push 0x19
call dword [sym.imp.WS2_32.dll_htons]
movzx eax, ax
jmp 0x40636b
movzx eax, word [eax + 8]
push esi
mov word [ebp - 0xec], 2
mov word [ebp - 0xea], ax
call dword [sym.imp.WS2_32.dll_inet_addr]
cmp eax, 0xffffffff
mov dword [ebp - 0xe8], eax
jne 0x4063b2
push esi
call dword [sym.imp.WS2_32.dll_gethostbyname]
cmp eax, edi
je 0x4063f8
movsx ecx, word [eax + 0xa]
mov edx, dword [eax + 0xc]
mov eax, dword [edx]
push ecx
push eax
lea ecx, [ebp - 0xe8]
push ecx
call fcn.00412200
add esp, 0xc
mov edx, dword [ebx + 0x12c]
lea ecx, [ebp - 0x3a0]
push ecx
push 0x8004667e
push edx
call dword [sym.imp.WS2_32.dll_ioctlsocket]
cmp eax, 0xffffffff
mov eax, dword [ebx + 0x12c]
jne 0x406420
push eax
call dword [sym.imp.WS2_32.dll_closesocket]
push 0x4add68
lea ecx, [ebp - 0x388]
push ecx
mov dword [ebp - 0x388], 0x6c
call fcn.0041125d
mov edx, dword [ebx + 0x12c]
push edx
call dword [sym.imp.WS2_32.dll_closesocket]
push 0x4add68
lea eax, [ebp - 0x380]
push eax
mov dword [ebp - 0x380], 0x69
call fcn.0041125d
push 0x10
lea edx, [ebp - 0xec]
push edx
push eax
call dword [sym.imp.WS2_32.dll_connect]
cmp eax, 0xffffffff
jne 0x406d72
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x2733
je 0x40646e
mov ecx, dword [ebx + 0x12c]
push ecx
call dword [sym.imp.WS2_32.dll_closesocket]
push 0x4add68
lea edx, [ebp - 0x3b0]
push edx
mov dword [ebp - 0x3b0], 0x68
call fcn.0041125d
mov esi, dword [sym.imp.WS2_32.dll_select]
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x4bc], ecx
mov dword [ebp - 0x5c0], edx
xor eax, eax
cmp eax, ecx
jae 0x4064a0
mov edi, dword [ebp + eax*4 - 0x4b8]
cmp edi, dword [ebx + 0x12c]
je 0x40649e
add eax, 1
jmp 0x406486
cmp eax, ecx
jne 0x4064bb
cmp ecx, 0x40
jae 0x4064bb
mov ecx, dword [ebx + 0x12c]
mov dword [ebp + eax*4 - 0x4b8], ecx
add dword [ebp - 0x4bc], 1
xor eax, eax
mov edi, 1
cmp eax, edx
jae 0x4064db
mov ecx, dword [ebp + eax*4 - 0x5bc]
cmp ecx, dword [ebx + 0x12c]
je 0x4064d9
add eax, edi
jmp 0x4064c2
cmp eax, edx
jne 0x4064f5
cmp edx, 0x40
jae 0x4064f5
mov edx, dword [ebx + 0x12c]
mov dword [ebp + eax*4 - 0x5bc], edx
add dword [ebp - 0x5c0], edi
lea eax, [ebp - 0x3b8]
push eax
mov eax, dword [ebx + 0x12c]
lea ecx, [ebp - 0x5c0]
push ecx
lea edx, [ebp - 0x4bc]
push edx
push 0
add eax, edi
push eax
call esi
cmp eax, 0xffffffff
jne 0x406544
mov ecx, dword [ebx + 0x12c]
push ecx
call dword [sym.imp.WS2_32.dll_closesocket]
push 0x4add68
lea edx, [ebp - 0x390]
push edx
mov dword [ebp - 0x390], 0x6d
call fcn.0041125d
test eax, eax
mov eax, dword [ebx + 0x12c]
jne 0x406570
push eax
call dword [sym.imp.WS2_32.dll_closesocket]
push 0x4add68
lea ecx, [ebp - 0x368]
push ecx
mov dword [ebp - 0x368], 0x193
call fcn.0041125d
lea edx, [ebp - 0x4bc]
push edx
push eax
call sub.WS2_32.dll___WSAFDIsSet
test eax, eax
je 0x407ac5
mov ecx, dword [ebp - 0x4bc]
xor eax, eax
lea ecx, [ecx]
cmp eax, ecx
jae 0x4065ca
mov edx, dword [ebp + eax*4 - 0x4b8]
cmp edx, dword [ebx + 0x12c]
jne 0x40660f
lea edx, [ecx - 1]
cmp eax, edx
jae 0x4065c2
mov ecx, dword [ebp + eax*4 - 0x4b4]
mov dword [ebp + eax*4 - 0x4b8], ecx
mov ecx, dword [ebp - 0x4bc]
add eax, edi
jmp 0x4065a3
sub ecx, edi
mov dword [ebp - 0x4bc], ecx
mov ecx, dword [ebp - 0x5c0]
xor eax, eax
cmp eax, ecx
jae 0x40661e
mov edx, dword [ebp + eax*4 - 0x5bc]
cmp edx, dword [ebx + 0x12c]
jne 0x4066b3
lea esp, [esp]
lea edx, [ecx - 1]
cmp eax, edx
jae 0x406616
mov ecx, dword [ebp + eax*4 - 0x5b8]
mov dword [ebp + eax*4 - 0x5bc], ecx
mov ecx, dword [ebp - 0x5c0]
add eax, edi
jmp 0x4065f0
add eax, edi
jmp 0x406590
sub ecx, edi
mov dword [ebp - 0x5c0], ecx
mov eax, dword [ebx + 0x188]
cmp eax, edi
je 0x40662d
cmp eax, 2
jne 0x406644
mov ecx, ebx
call fcn.00402780
cmp dword [ebx + 0x188], 2
jne 0x406644
mov ecx, ebx
call fcn.004027c0
push 0
call fcn.00402190
add esp, 4
push eax
mov ecx, ebx
call fcn.00405610
mov ecx, ebx
call fcn.00405dd0
cmp dword [ebx + 0x188], edi
jne 0x406673
mov ecx, ebx
call fcn.00405e80
mov ecx, ebx
call fcn.00405dd0
mov edx, dword [ebx + 0x128]
push str.AUTH
push edx
call fcn.004021d0
add esp, 8
cmp al, 1
jne 0x406d72
cmp dword [ebx + 0xdc], 0
jne 0x4066ba
push 0x4add68
lea eax, [ebp - 0x36c]
push eax
mov dword [ebp - 0x36c], 0xcc
call fcn.0041125d
add eax, edi
jmp 0x4065d2
cmp dword [ebx + 0xf8], 0
jne 0x4066de
push 0x4add68
lea ecx, [ebp - 0x374]
push ecx
mov dword [ebp - 0x374], 0xcd
call fcn.0041125d
mov edx, dword [ebx + 0x128]
push str.LOGIN
push edx
call fcn.004021d0
add esp, 8
cmp al, 1
jne 0x406859
push 3
call fcn.00402190
mov ecx, dword [str.AUTH_LOGIN_r_n]
mov esi, eax
mov eax, dword [ebx + 0x124]
mov dword [eax], ecx
mov edx, dword [0x487d98]
mov dword [eax + 4], edx
mov ecx, dword [0x487d9c]
mov dword [eax + 8], ecx
mov dl, byte [0x487da0]
add esp, 4
push esi
mov ecx, ebx
mov byte [eax + 0xc], dl
call fcn.00402d90
push esi
mov ecx, ebx
call fcn.00405610
mov ecx, dword [ebx + 0xdc]
mov edi, 0x10
cmp dword [ebx + 0xe0], edi
jb 0x40675a
mov eax, dword [ebx + 0xcc]
jmp 0x406760
lea eax, [ebx + 0xcc]
push ecx
push eax
lea eax, [ebp - 0x88]
push eax
call fcn.00401880
add esp, 0xc
push 7
mov byte [ebp - 4], 1
call fcn.00402190
add esp, 4
cmp dword [ebp - 0x70], edi
mov esi, eax
mov eax, dword [ebp - 0x84]
jae 0x406792
lea eax, [ebp - 0x84]
mov ecx, dword [ebx + 0x124]
push eax
push str._s_r_n
push ecx
call fcn.00411b16
add esp, 0xc
push esi
mov ecx, ebx
call fcn.00402d90
push esi
mov ecx, ebx
call fcn.00405610
cmp dword [ebx + 0xfc], edi
mov ecx, dword [ebx + 0xf8]
jb 0x4067cd
mov eax, dword [ebx + 0xe8]
jmp 0x4067d3
lea eax, [ebx + 0xe8]
push ecx
push eax
lea edx, [ebp - 0x50]
push edx
call fcn.00401880
add esp, 0xc
push 8
mov byte [ebp - 4], 2
call fcn.00402190
add esp, 4
cmp dword [ebp - 0x38], edi
mov esi, eax
mov eax, dword [ebp - 0x4c]
jae 0x4067fc
lea eax, [ebp - 0x4c]
push eax
mov eax, dword [ebx + 0x124]
push str._s_r_n
push eax
call fcn.00411b16
add esp, 0xc
push esi
mov ecx, ebx
call fcn.00402d90
push esi
mov ecx, ebx
call fcn.00405610
cmp dword [ebp - 0x38], edi
jb 0x406832
mov ecx, dword [ebp - 0x4c]
push ecx
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0x70], edi
mov dword [ebp - 0x38], 0xf
mov dword [ebp - 0x3c], 0
mov byte [ebp - 0x4c], 0
jb 0x406d72
mov edx, dword [ebp - 0x84]
push edx
jmp 0x406d6a
mov eax, dword [ebx + 0x128]
push str.PLAIN
push eax
call fcn.004021d0
add esp, 8
cmp al, 1
jne 0x40697a
push 2
call fcn.00402190
mov dword [ebp - 0x324], eax
mov eax, 0x10
add esp, 4
cmp dword [ebx + 0xfc], eax
jb 0x40689a
mov ecx, dword [ebx + 0xe8]
jmp 0x4068a0
lea ecx, [ebx + 0xe8]
cmp dword [ebx + 0xe0], eax
jb 0x4068b0
mov eax, dword [ebx + 0xcc]
jmp 0x4068b6
lea eax, [ebx + 0xcc]
push ecx
mov ecx, dword [ebx + 0x124]
push eax
push str._s_s
push ecx
call fcn.00411b16
add esp, 0x10
xor edx, edx
mov edi, edi
mov esi, dword [ebx + 0x124]
mov eax, esi
lea edi, [eax + 1]
jmp 0x4068e0
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4068e0
sub eax, edi
cmp edx, eax
jae 0x4068fd
cmp byte [esi + edx], 0x5e
jne 0x4068f8
mov byte [esi + edx], cl
add edx, 1
jmp 0x4068d0
mov edx, dword [ebx + 0x124]
push edx
call fcn.004022c0
mov ecx, dword [ebx + 0x124]
add esp, 4
lea esi, [ecx + 1]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x406915
sub ecx, esi
push ecx
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.00401880
add esp, 0xc
sub esp, 0x1c
mov edi, esp
mov ecx, 7
lea esi, [ebp - 0x50]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0x124]
push str.AUTH_PLAIN__s
push ecx
mov byte [ebp - 4], 3
call fcn.00411b16
mov edx, dword [ebp - 0x324]
add esp, 0x24
push edx
mov ecx, ebx
call fcn.00402d90
mov eax, dword [ebp - 0x324]
push eax
mov ecx, ebx
call fcn.00405610
cmp dword [ebp - 0x38], 0x10
jmp 0x407a81
mov edx, dword [ebx + 0x128]
push str.CRAM_MD5
push edx
call fcn.004021d0
add esp, 8
cmp al, 1
jne 0x406dad
push 4
call fcn.00402190
mov ecx, dword [str.AUTH_CRAM_MD5_r_n]
mov esi, eax
mov eax, dword [ebx + 0x124]
mov dword [eax], ecx
mov edx, dword [0x487d54]
mov dword [eax + 4], edx
mov ecx, dword [0x487d58]
mov dword [eax + 8], ecx
mov edx, dword [0x487d5c]
add esp, 4
push esi
mov ecx, ebx
mov dword [eax + 0xc], edx
call fcn.00402d90
push esi
mov ecx, ebx
call fcn.00405610
mov esi, dword [ebx + 0x128]
mov eax, esi
mov dword [ebp - 0x70], 0xf
mov dword [ebp - 0x74], 0
mov byte [ebp - 0x84], 0
lea edx, [eax + 1]
jmp 0x406a00
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x406a00
sub eax, edx
push eax
push esi
lea ecx, [ebp - 0x88]
call fcn.00401780
push 0xffffffffffffffff
push 4
lea eax, [ebp - 0x50]
push eax
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 4
call fcn.00403800
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 5
call fcn.004016a0
mov esi, 0x10
cmp dword [ebp - 0x38], esi
mov byte [ebp - 4], 4
jb 0x406a5d
mov ecx, dword [ebp - 0x4c]
push ecx
call fcn.00410c64
add esp, 4
lea edx, [ebp - 0x88]
push edx
lea eax, [ebp - 0x6c]
push eax
call fcn.00401a80
add esp, 8
cmp dword [ebp - 0x54], esi
mov eax, dword [ebp - 0x68]
mov byte [ebp - 4], 6
jae 0x406a7f
lea eax, [ebp - 0x68]
push eax
call fcn.004022c0
add esp, 4
cmp dword [ebx + 0xfc], esi
mov dword [ebp - 0x320], eax
jb 0x406a9e
mov eax, dword [ebx + 0xe8]
jmp 0x406aa4
lea eax, [ebx + 0xe8]
push eax
call fcn.004022c0
add esp, 4
cmp dword [ebp - 0x320], 0
mov edi, eax
je 0x406d92
test edi, edi
je 0x406d92
mov esi, dword [ebx + 0xf8]
cmp esi, 0x40
jle 0x406b04
lea ecx, [ebp - 0x308]
call fcn.0040b670
push esi
push edi
lea ecx, [ebp - 0x308]
call fcn.0040cb50
lea ecx, [ebp - 0x308]
call fcn.0040cc20
lea ecx, [ebp - 0x308]
call fcn.0040ccf0
mov edi, eax
mov esi, 0x10
push 0x40
lea ecx, [ebp - 0x208]
push 0
push ecx
call fcn.00410e00
push 0x40
lea edx, [ebp - 0x130]
push 0
push edx
call fcn.00410e00
push esi
lea eax, [ebp - 0x208]
push edi
push eax
call fcn.00412200
push esi
lea ecx, [ebp - 0x130]
push edi
push ecx
call fcn.00412200
add esp, 0x30
xor eax, eax
cmp eax, 0x40
jge 0x406b5f
xor byte [ebp + eax - 0x208], 0x36
xor byte [ebp + eax - 0x130], 0x5c
add eax, 1
jmp 0x406b45
lea ecx, [ebp - 0x1c4]
call fcn.0040b670
push 0x40
lea edx, [ebp - 0x208]
push edx
lea ecx, [ebp - 0x1c4]
call fcn.0040cb50
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x320]
push eax
push ecx
lea ecx, [ebp - 0x1c4]
call fcn.0040cb50
lea ecx, [ebp - 0x1c4]
call fcn.0040cc20
lea ecx, [ebp - 0x1c4]
call fcn.0040ccf0
mov esi, eax
lea ecx, [ebp - 0x29c]
mov dword [ebp - 0x328], esi
call fcn.0040b670
push 0x40
lea edx, [ebp - 0x130]
push edx
lea ecx, [ebp - 0x29c]
call fcn.0040cb50
push 0x10
push esi
lea ecx, [ebp - 0x29c]
call fcn.0040cb50
lea ecx, [ebp - 0x29c]
call fcn.0040cc20
lea ecx, [ebp - 0x29c]
call fcn.0040cd60
mov ecx, eax
lea esi, [ecx + 1]
lea ebx, [ebx]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x406c00
sub ecx, esi
push ecx
push eax
lea ecx, [ebp - 0x6c]
call fcn.00401780
mov eax, dword [ebp - 0x320]
push eax
call fcn.00412565
push edi
call fcn.00412565
mov ecx, dword [ebp - 0x328]
push ecx
call fcn.00412565
push 0x487384
lea edx, [ebx + 0xc8]
push edx
lea eax, [ebp - 0xc0]
push eax
call fcn.004059f0
add esp, 0x18
lea ecx, [ebp - 0x6c]
push ecx
push eax
lea edx, [ebp - 0x50]
push edx
mov byte [ebp - 4], 7
call fcn.00403ae0
add esp, 0xc
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x6c]
mov byte [ebp - 4], 8
call fcn.004016a0
mov esi, 0x10
cmp dword [ebp - 0x38], esi
jb 0x406c8a
mov eax, dword [ebp - 0x4c]
push eax
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0xa8], esi
mov dword [ebp - 0x38], 0xf
mov dword [ebp - 0x3c], 0
mov byte [ebp - 0x4c], 0
mov byte [ebp - 4], 6
jb 0x406cb7
mov ecx, dword [ebp - 0xbc]
push ecx
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0x54], esi
mov eax, dword [ebp - 0x68]
jae 0x406cc2
lea eax, [ebp - 0x68]
mov edx, dword [ebp - 0x58]
push edx
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.00401880
add esp, 0xc
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 9
call fcn.004016a0
cmp dword [ebp - 0x38], esi
mov byte [ebp - 4], 6
jb 0x406cfc
mov ecx, dword [ebp - 0x4c]
push ecx
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0x70], esi
mov eax, dword [ebp - 0x84]
jae 0x406d0d
lea eax, [ebp - 0x84]
mov edx, dword [ebx + 0x124]
push eax
push str._s_r_n
push edx
call fcn.00411b16
push 8
call fcn.00402190
add esp, 0x10
mov edi, eax
push edi
mov ecx, ebx
call fcn.00402d90
push edi
mov ecx, ebx
call fcn.00405610
cmp dword [ebp - 0x54], esi
jb 0x406d4c
mov eax, dword [ebp - 0x68]
push eax
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0x70], esi
mov dword [ebp - 0x54], 0xf
mov dword [ebp - 0x58], 0
mov byte [ebp - 0x68], 0
jb 0x406d72
mov ecx, dword [ebp - 0x84]
push ecx
call fcn.00410c64
add esp, 4
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004117a8
mov esp, ebp
pop ebp
ret 8
push 0x4add68
lea edx, [ebp - 0x37c]
push edx
mov dword [ebp - 0x37c], 0xce
call fcn.0041125d
mov eax, dword [ebx + 0x128]
push str.DIGEST_MD5
push eax
call fcn.004021d0
add esp, 8
cmp al, 1
jne 0x407aaa
push 6
call fcn.00402190
mov ecx, dword [str.AUTH_DIGEST_MD5_r_n]
mov esi, eax
mov eax, dword [ebx + 0x124]
mov dword [eax], ecx
mov edx, dword [0x487d34]
mov dword [eax + 4], edx
mov ecx, dword [0x487d38]
mov dword [eax + 8], ecx
mov edx, dword [0x487d3c]
mov dword [eax + 0xc], edx
mov cx, word [0x487d40]
add esp, 4
mov word [eax + 0x10], cx
push esi
mov ecx, ebx
call fcn.00402d90
push esi
mov ecx, ebx
call fcn.00405610
mov esi, dword [ebx + 0x128]
mov edi, 0xf
mov eax, esi
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x3c], 0
mov byte [ebp - 0x4c], 0
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x406e37
sub eax, edx
push eax
push esi
lea ecx, [ebp - 0x50]
call fcn.00401780
push 0xffffffffffffffff
push 4
lea edx, [ebp - 0x360]
push edx
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0xa
call fcn.00403800
push 0xffffffffffffffff
xor esi, esi
push esi
push eax
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0xb
call fcn.004016a0
cmp dword [ebp - 0x348], 0x10
mov byte [ebp - 4], 0xa
jb 0x406e91
mov eax, dword [ebp - 0x35c]
push eax
call fcn.00410c64
add esp, 4
lea ecx, [ebp - 0x50]
push ecx
lea edx, [ebp - 0x88]
push edx
call fcn.00401a80
add esp, 8
push 5
push esi
push str.nonce
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0xc
call fcn.00401190
cmp eax, esi
jge 0x406eda
push 0x4add68
lea eax, [ebp - 0x384]
push eax
mov dword [ebp - 0x384], 0xcf
call fcn.0041125d
push 0xffffffffffffffff
add eax, 7
push eax
lea ecx, [ebp - 0xdc]
push ecx
lea ecx, [ebp - 0x88]
call fcn.00403800
push 1
push esi
push 0x487380
lea ecx, [ebp - 0xdc]
mov byte [ebp - 4], 0xd
call fcn.00401190
cmp eax, esi
jge 0x406f28
push 0x4add68
lea edx, [ebp - 0x38c]
push edx
mov dword [ebp - 0x38c], 0xcf
call fcn.0041125d
push eax
push esi
lea eax, [ebp - 0x360]
push eax
lea ecx, [ebp - 0xdc]
call fcn.00403800
push 0xffffffffffffffff
push esi
push eax
lea ecx, [ebp - 0xdc]
mov byte [ebp - 4], 0xe
call fcn.004016a0
cmp dword [ebp - 0x348], 0x10
jb 0x406f67
mov ecx, dword [ebp - 0x35c]
push ecx
call fcn.00410c64
add esp, 4
mov dword [ebp - 0x8c], edi
mov dword [ebp - 0x90], esi
mov byte [ebp - 0xa0], 0
push 5
push esi
push str.realm
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0xf
call fcn.00401190
cmp eax, esi
jl 0x407055
push 0xffffffffffffffff
add eax, 7
push eax
lea edx, [ebp - 0x360]
push edx
lea ecx, [ebp - 0x88]
call fcn.00403800
push 0xffffffffffffffff
push esi
push eax
lea ecx, [ebp - 0xa4]
mov byte [ebp - 4], 0x10
call fcn.004016a0
cmp dword [ebp - 0x348], 0x10
mov byte [ebp - 4], 0xf
jb 0x406fe0
mov eax, dword [ebp - 0x35c]
push eax
call fcn.00410c64
add esp, 4
push 1
push esi
push 0x487380
lea ecx, [ebp - 0xa4]
call fcn.00401190
cmp eax, esi
jge 0x407012
push 0x4add68
lea ecx, [ebp - 0x394]
push ecx
mov dword [ebp - 0x394], 0xcf
call fcn.0041125d
push eax
push esi
lea edx, [ebp - 0x360]
push edx
lea ecx, [ebp - 0xa4]
call fcn.00403800
push 0xffffffffffffffff
push esi
push eax
lea ecx, [ebp - 0xa4]
mov byte [ebp - 4], 0x11
call fcn.004016a0
cmp dword [ebp - 0x348], 0x10
mov byte [ebp - 4], 0xf
jb 0x407055
mov eax, dword [ebp - 0x35c]
push eax
call fcn.00410c64
add esp, 4
push esi
call fcn.00412077
push edx
push eax
lea ecx, [ebp - 0x34]
push 0x487d1c
push ecx
call fcn.00411b16
push 1
lea edx, [ebp - 0x20]
push str._08d
push edx
call fcn.00411b16
add esp, 0x20
push 4
push str.auth
lea ecx, [ebp - 0xc0]
mov dword [ebp - 0xa8], edi
mov dword [ebp - 0xac], esi
mov byte [ebp - 0xbc], 0
call fcn.00401780
mov edx, dword [ebx + 0x12c]
lea eax, [ebp - 0x364]
push eax
lea ecx, [ebp - 0x31c]
push ecx
push edx
mov byte [ebp - 4], 0x12
mov dword [ebp - 0x364], 0x80
call dword [sym.imp.WS2_32.dll_getpeername]
test eax, eax
jne 0x4070eb
push 0x4add68
lea eax, [ebp - 0x3a4]
push eax
mov dword [ebp - 0x3a4], 0xd0
call fcn.0041125d
mov ecx, dword [ebp - 0x318]
push ecx
call dword [sym.imp.WS2_32.dll_inet_ntoa]
mov ecx, eax
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x58], 0
mov byte [ebp - 0x68], 0
lea esi, [ecx + 1]
jmp 0x407110
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x407110
sub ecx, esi
push ecx
push eax
lea ecx, [ebp - 0x6c]
call fcn.00401780
lea edx, [ebp - 0x6c]
push edx
lea eax, [ebp - 0x360]
push str.smtp_
push eax
mov byte [ebp - 4], 0x13
call fcn.00403b90
add esp, 0xc
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x6c]
mov byte [ebp - 4], 0x14
call fcn.004016a0
mov esi, 0x10
cmp dword [ebp - 0x348], esi
mov byte [ebp - 4], 0x13
jb 0x407172
mov ecx, dword [ebp - 0x35c]
push ecx
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0x8c], esi
mov eax, dword [ebp - 0xa0]
jae 0x407186
lea eax, [ebp - 0xa0]
push eax
call fcn.004022c0
add esp, 4
cmp dword [ebx + 0xe0], esi
mov dword [ebp - 0x334], eax
jb 0x4071a5
mov eax, dword [ebx + 0xcc]
jmp 0x4071ab
lea eax, [ebx + 0xcc]
push eax
call fcn.004022c0
add esp, 4
cmp dword [ebx + 0xfc], esi
mov dword [ebp - 0x330], eax
jb 0x4071ca
mov eax, dword [ebx + 0xe8]
jmp 0x4071d0
lea eax, [ebx + 0xe8]
push eax
call fcn.004022c0
add esp, 4
cmp dword [ebp - 0xc4], esi
mov dword [ebp - 0x324], eax
mov eax, dword [ebp - 0xd8]
jae 0x4071f3
lea eax, [ebp - 0xd8]
push eax
call fcn.004022c0
lea edx, [ebp - 0x34]
add esp, 4
push edx
mov dword [ebp - 0x32c], eax
call fcn.004022c0
add esp, 4
cmp dword [ebp - 0x54], esi
mov dword [ebp - 0x320], eax
mov eax, dword [ebp - 0x68]
jae 0x40721f
lea eax, [ebp - 0x68]
push eax
call fcn.004022c0
mov esi, eax
lea eax, [ebp - 0x20]
add esp, 4
push eax
mov dword [ebp - 0x338], esi
call fcn.004022c0
mov edi, eax
mov eax, dword [ebp - 0xbc]
add esp, 4
cmp dword [ebp - 0xa8], 0x10
mov dword [ebp - 0x344], edi
jae 0x407259
lea eax, [ebp - 0xbc]
push eax
call fcn.004022c0
add esp, 4
cmp dword [ebp - 0x334], 0
mov dword [ebp - 0x33c], eax
je 0x407a8f
cmp dword [ebp - 0x330], 0
je 0x407a8f
cmp dword [ebp - 0x324], 0
je 0x407a8f
cmp dword [ebp - 0x32c], 0
je 0x407a8f
cmp dword [ebp - 0x320], 0
je 0x407a8f
test esi, esi
je 0x407a8f
test edi, edi
je 0x407a8f
test eax, eax
je 0x407a8f
lea ecx, [ebp - 0x230]
call fcn.0040b670
mov eax, dword [ebx + 0xdc]
mov ecx, dword [ebp - 0x330]
push eax
push ecx
lea ecx, [ebp - 0x230]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x230]
call fcn.0040cb50
mov edx, dword [ebp - 0x90]
mov eax, dword [ebp - 0x334]
push edx
push eax
lea ecx, [ebp - 0x230]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x230]
call fcn.0040cb50
mov eax, dword [ebx + 0xf8]
mov ecx, dword [ebp - 0x324]
push eax
push ecx
lea ecx, [ebp - 0x230]
call fcn.0040cb50
lea ecx, [ebp - 0x230]
call fcn.0040cc20
lea ecx, [ebp - 0x230]
call fcn.0040ccf0
lea ecx, [ebp - 0x1c4]
mov esi, eax
call fcn.0040b670
push 0x10
push esi
lea ecx, [ebp - 0x1c4]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x1c4]
call fcn.0040cb50
mov edx, dword [ebp - 0xc8]
mov eax, dword [ebp - 0x32c]
push edx
push eax
lea ecx, [ebp - 0x1c4]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x1c4]
call fcn.0040cb50
lea eax, [ebp - 0x34]
lea edx, [eax + 1]
nop
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4073b0
mov ecx, dword [ebp - 0x320]
sub eax, edx
push eax
push ecx
lea ecx, [ebp - 0x1c4]
call fcn.0040cb50
lea ecx, [ebp - 0x1c4]
call fcn.0040cc20
lea ecx, [ebp - 0x1c4]
call fcn.0040cd60
mov edi, eax
lea ecx, [ebp - 0x29c]
mov dword [ebp - 0x3ac], edi
call fcn.0040b670
push 0xd
push str.AUTHENTICATE:
lea ecx, [ebp - 0x29c]
call fcn.0040cb50
mov edx, dword [ebp - 0x58]
mov eax, dword [ebp - 0x338]
push edx
push eax
lea ecx, [ebp - 0x29c]
call fcn.0040cb50
lea ecx, [ebp - 0x29c]
call fcn.0040cc20
lea ecx, [ebp - 0x29c]
call fcn.0040cd60
push esi
mov dword [ebp - 0x328], eax
call fcn.00412565
push edi
call fcn.004022c0
mov ecx, dword [ebp - 0x328]
add esp, 8
push ecx
mov dword [ebp - 0x340], eax
call fcn.004022c0
add esp, 4
lea ecx, [ebp - 0x158]
mov edi, eax
call fcn.0040b670
mov edx, dword [ebp - 0x340]
push 0x20
push edx
lea ecx, [ebp - 0x158]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x158]
call fcn.0040cb50
mov eax, dword [ebp - 0xc8]
mov ecx, dword [ebp - 0x32c]
push eax
push ecx
lea ecx, [ebp - 0x158]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x158]
call fcn.0040cb50
lea eax, [ebp - 0x20]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4074c3
sub eax, edx
mov edx, dword [ebp - 0x344]
push eax
push edx
lea ecx, [ebp - 0x158]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x158]
call fcn.0040cb50
lea eax, [ebp - 0x34]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x407500
sub eax, edx
push eax
mov eax, dword [ebp - 0x320]
push eax
lea ecx, [ebp - 0x158]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x158]
call fcn.0040cb50
mov ecx, dword [ebp - 0xac]
mov edx, dword [ebp - 0x33c]
push ecx
push edx
lea ecx, [ebp - 0x158]
call fcn.0040cb50
push 1
push 0x487d00
lea ecx, [ebp - 0x158]
call fcn.0040cb50
push 0x20
push edi
lea ecx, [ebp - 0x158]
call fcn.0040cb50
lea ecx, [ebp - 0x158]
call fcn.0040cc20
lea ecx, [ebp - 0x158]
call fcn.0040cd60
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x407584
sub ecx, esi
push ecx
push eax
lea ecx, [ebp - 0x88]
call fcn.00401780
mov eax, dword [ebp - 0x334]
push eax
call fcn.00412565
mov ecx, dword [ebp - 0x330]
push ecx
call fcn.00412565
mov edx, dword [ebp - 0x324]
push edx
call fcn.00412565
mov eax, dword [ebp - 0x32c]
push eax
call fcn.00412565
mov ecx, dword [ebp - 0x320]
push ecx
call fcn.00412565
mov edx, dword [ebp - 0x338]
push edx
call fcn.00412565
mov eax, dword [ebp - 0x344]
push eax
call fcn.00412565
mov ecx, dword [ebp - 0x33c]
push ecx
call fcn.00412565
mov edx, dword [ebp - 0x340]
push edx
call fcn.00412565
push edi
call fcn.00412565
mov eax, dword [ebp - 0x3ac]
push eax
call fcn.00412565
mov ecx, dword [ebp - 0x328]
push ecx
call fcn.00412565
mov eax, dword [ebx + 0x128]
push str.charset
push eax
call fcn.004118f0
mov esi, 0x10
add esp, 0x38
cmp dword [ebx + 0xe0], esi
jb 0x40764f
mov eax, dword [ebx + 0xcc]
jmp 0x407655
lea eax, [ebx + 0xcc]
mov edx, dword [ebx + 0x124]
push eax
push str.charsetutf_8_username__s_
push edx
call fcn.00411b16
add esp, 0xc
cmp dword [ebp - 0x90], 0
je 0x4076d5
cmp dword [ebp - 0x8c], esi
mov eax, dword [ebp - 0xa0]
jae 0x407687
lea eax, [ebp - 0xa0]
push eax
mov eax, dword [ebx + 0x128]
push str._realm__s_
push eax
call fcn.00411b16
mov eax, dword [ebx + 0x128]
add esp, 0xc
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4076a4
mov edi, dword [ebx + 0x124]
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4076b8
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, 0x10
cmp dword [ebp - 0xc4], esi
mov eax, dword [ebp - 0xd8]
jae 0x4076e9
lea eax, [ebp - 0xd8]
mov ecx, dword [ebx + 0x128]
push eax
push str._nonce__s_
push ecx
call fcn.00411b16
mov eax, dword [ebx + 0x128]
add esp, 0xc
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x407706
mov edi, dword [ebx + 0x124]
sub eax, esi
add edi, 0xffffffff
lea ebx, [ebx]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x407720
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea edx, [ebp - 0x20]
and ecx, 3
push edx
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx + 0x128]
push str._nc_s
push eax
call fcn.00411b16
mov eax, dword [ebx + 0x128]
add esp, 0xc
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x407758
mov edi, dword [ebx + 0x124]
sub eax, esi
add edi, 0xffffffff
lea esp, [esp]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x407770
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [ebx + 0x128]
lea ecx, [ebp - 0x34]
push ecx
push str._cnonce__s_
push edx
call fcn.00411b16
mov eax, dword [ebx + 0x128]
add esp, 0xc
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4077a8
mov edi, dword [ebx + 0x124]
sub eax, esi
add edi, 0xffffffff
lea esp, [esp]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4077c0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [ebp - 0x54], 0x10
mov eax, dword [ebp - 0x68]
jae 0x4077e4
lea eax, [ebp - 0x68]
push eax
mov eax, dword [ebx + 0x128]
push str._digest_uri__s_
push eax
call fcn.00411b16
mov eax, dword [ebx + 0x128]
add esp, 0xc
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x407801
mov edi, dword [ebx + 0x124]
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x407815
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [ebp - 0x70], 0x10
mov eax, dword [ebp - 0x84]
jae 0x40783f
lea eax, [ebp - 0x84]
mov ecx, dword [ebx + 0x128]
push eax
push str._response_s
push ecx
call fcn.00411b16
mov eax, dword [ebx + 0x128]
add esp, 0xc
mov esi, eax
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x407860
mov edi, dword [ebx + 0x124]
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x407874
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp dword [ebp - 0xa8], 0x10
mov eax, dword [ebp - 0xbc]
jae 0x4078a1
lea eax, [ebp - 0xbc]
mov edx, dword [ebx + 0x128]
push eax
push str._qop_s
push edx
call fcn.00411b16
mov eax, dword [ebx + 0x128]
add esp, 0xc
mov esi, eax
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4078c0
mov edi, dword [ebx + 0x124]
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4078d4
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebx + 0x124]
push eax
call fcn.004022c0
mov esi, eax
mov eax, dword [ebx + 0x124]
add esp, 4
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x407906
sub eax, edx
push eax
lea ecx, [ebp - 0x360]
push esi
push ecx
call fcn.00401880
add esp, 0xc
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0x15
call fcn.004016a0
mov edi, 0x10
cmp dword [ebp - 0x348], edi
mov byte [ebp - 4], 0x13
jb 0x407953
mov edx, dword [ebp - 0x35c]
push edx
call fcn.00410c64
add esp, 4
push esi
call fcn.00412565
mov eax, dword [ebp - 0x4c]
add esp, 4
cmp dword [ebp - 0x38], edi
jae 0x407967
lea eax, [ebp - 0x4c]
push eax
mov eax, dword [ebx + 0x124]
push str._s_r_n
push eax
call fcn.00411b16
push 6
call fcn.00402190
add esp, 0x10
mov esi, eax
push esi
mov ecx, ebx
call fcn.00402d90
push esi
mov ecx, ebx
call fcn.00405610
mov ecx, dword [ebx + 0x124]
push 0x48737c
push ecx
call fcn.00411b16
push 8
call fcn.00402190
add esp, 0xc
mov esi, eax
push esi
mov ecx, ebx
call fcn.00402d90
push esi
mov ecx, ebx
call fcn.00405610
cmp dword [ebp - 0x54], edi
jb 0x4079d3
mov edx, dword [ebp - 0x68]
push edx
call fcn.00410c64
add esp, 4
xor ebx, ebx
cmp dword [ebp - 0xa8], edi
mov esi, 0xf
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x58], ebx
mov byte [ebp - 0x68], bl
jb 0x4079fa
mov eax, dword [ebp - 0xbc]
push eax
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0x8c], edi
mov dword [ebp - 0xa8], esi
mov dword [ebp - 0xac], ebx
mov byte [ebp - 0xbc], bl
jb 0x407a23
mov ecx, dword [ebp - 0xa0]
push ecx
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0xc4], edi
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x90], ebx
mov byte [ebp - 0xa0], bl
jb 0x407a4c
mov edx, dword [ebp - 0xd8]
push edx
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0x70], edi
mov dword [ebp - 0xc4], esi
mov dword [ebp - 0xc8], ebx
mov byte [ebp - 0xd8], bl
jb 0x407a72
mov eax, dword [ebp - 0x84]
push eax
call fcn.00410c64
add esp, 4
cmp dword [ebp - 0x38], edi
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x74], ebx
mov byte [ebp - 0x84], bl
jb 0x406d72
mov ecx, dword [ebp - 0x4c]
jmp 0x406d69
push 0x4add68
lea edx, [ebp - 0x3a8]
push edx
mov dword [ebp - 0x3a8], 0xce
call fcn.0041125d
push 0x4add68
lea eax, [ebp - 0x370]
push eax
mov dword [ebp - 0x370], 0x1a1
call fcn.0041125d
mov edx, dword [ebx + 0x12c]
lea ecx, [ebp - 0x5c0]
push ecx
push edx
call sub.WS2_32.dll___WSAFDIsSet
test eax, eax
je 0x406474
mov eax, dword [ebx + 0x12c]
push eax
call dword [sym.imp.WS2_32.dll_closesocket]
push 0x4add68
lea ecx, [ebp - 0x398]
push ecx
mov dword [ebp - 0x398], 0x6d
call fcn.0041125d
mov ecx, dword [ebp - 0x378]
mov eax, dword [ecx + 0x128]
cmp byte [eax], 0x35
jne 0x407b2c
cmp byte [eax + 1], 0x33
jne 0x407b2c
cmp byte [eax + 2], 0x30
jne 0x407b2c
mov byte [ecx + 0x130], 0
call fcn.00406100
push 0
push 0
call fcn.0041125d
int3