Function at 0x428460
Capabilities:
Act as tcp client
Authenticate hmac
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Encode data using xor
Resolve dns

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4508a4
mov eax, dword fs:[0]
push eax
sub esp, 0x44c
mov eax, dword [0x463858]
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, ecx
mov edi, dword [ebp + 8]
push 0
mov dword [ebp - 4], 0
push 1
push 2
mov dword [ebp - 0x444], esi
mov dword [ebp - 0x454], 0xb4
mov dword [ebp - 0x450], 0
mov dword [esi + 0x104], 0xffffffff
call dword [sym.imp.WS2_32.dll_socket]
mov dword [esi + 0x104], eax
cmp eax, 0xffffffff
je 0x429ad0
mov eax, dword [ebp + 0xc]
test ax, ax
je 0x4284f0
push eax
call dword [sym.imp.WS2_32.dll_htons]
movzx eax, ax
jmp 0x428512
push 0
push str.mail
call dword [sym.imp.WS2_32.dll_getservbyname]
test eax, eax
jne 0x42850e
push 0x19
call dword [sym.imp.WS2_32.dll_htons]
movzx eax, ax
jmp 0x428512
movzx eax, word [eax + 8]
mov ecx, 2
push edi
mov word [ebp - 0x168], cx
mov word [ebp - 0x166], ax
call dword [sym.imp.WS2_32.dll_inet_addr]
mov dword [ebp - 0x164], eax
cmp eax, 0xffffffff
jne 0x42855f
push edi
call dword [sym.imp.WS2_32.dll_gethostbyname]
test eax, eax
je 0x429ac4
movsx ecx, word [eax + 0xa]
mov eax, dword [eax + 0xc]
push ecx
push dword [eax]
lea eax, [ebp - 0x164]
push eax
call fcn.00434630
add esp, 0xc
push 0x10
lea eax, [ebp - 0x168]
push eax
push dword [esi + 0x104]
call dword [sym.imp.WS2_32.dll_connect]
cmp eax, 0xffffffff
jne 0x428b94
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
cmp eax, 0x2733
jne 0x429ac4
mov ebx, dword [sym.imp.WS2_32.dll_select]
mov edi, dword [sym.imp.WS2_32.dll___WSAFDIsSet]
lea ebx, [ebx]
mov eax, dword [esi + 0x104]
lea ecx, [ebp - 0x454]
push ecx
lea ecx, [ebp - 0x320]
push ecx
lea ecx, [ebp - 0x428]
push ecx
mov dword [ebp - 0x424], eax
mov dword [ebp - 0x31c], eax
push 0
inc eax
push eax
mov dword [ebp - 0x428], 1
mov dword [ebp - 0x320], 1
call ebx
cmp eax, 0xffffffff
je 0x429ac4
test eax, eax
je 0x429ac4
lea eax, [ebp - 0x428]
push eax
push dword [esi + 0x104]
call edi
test eax, eax
je 0x429aad
mov edx, dword [ebp - 0x428]
xor ecx, ecx
test edx, edx
je 0x428663
mov eax, dword [esi + 0x104]
jmp 0x428620
cmp dword [ebp + ecx*4 - 0x424], eax
je 0x428630
inc ecx
cmp ecx, edx
jb 0x428620
jmp 0x428663
lea eax, [edx - 1]
cmp ecx, eax
jae 0x42865c
jmp 0x428640
mov eax, dword [ebp + ecx*4 - 0x420]
mov dword [ebp + ecx*4 - 0x424], eax
mov edx, dword [ebp - 0x428]
inc ecx
lea eax, [edx - 1]
cmp ecx, eax
jb 0x428640
dec edx
mov dword [ebp - 0x428], edx
mov edx, dword [ebp - 0x320]
xor ecx, ecx
test edx, edx
je 0x4286b3
mov eax, dword [esi + 0x104]
cmp dword [ebp + ecx*4 - 0x31c], eax
je 0x428685
inc ecx
cmp ecx, edx
jb 0x428675
jmp 0x4286b3
lea eax, [edx - 1]
cmp ecx, eax
jae 0x4286ac
lea esp, [esp]
mov eax, dword [ebp + ecx*4 - 0x318]
mov dword [ebp + ecx*4 - 0x31c], eax
mov edx, dword [ebp - 0x320]
inc ecx
lea eax, [edx - 1]
cmp ecx, eax
jb 0x428690
dec edx
mov dword [ebp - 0x320], edx
xor edx, edx
xor ecx, ecx
xor eax, eax
lea esp, [esp]
cmp dword [eax + 0x4650f0], edx
je 0x4286d5
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x4286c0
jmp 0x4286df
lea eax, [ecx + ecx*4]
lea edx, [eax*4 + 0x4650f0]
push edx
mov ecx, esi
call fcn.0042aae0
xor edi, edi
xor ecx, ecx
xor eax, eax
lea ecx, [ecx]
cmp dword [eax + 0x4650f0], 1
je 0x428706
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x4286f0
jmp 0x428710
lea eax, [ecx + ecx*4]
lea edi, [eax*4 + 0x4650f0]
mov ecx, esi
call fcn.0042a920
test eax, eax
je 0x428728
cmp dword [esi + 0x18], 0x10
lea eax, [esi + 4]
jb 0x42872d
mov eax, dword [eax]
jmp 0x42872d
mov eax, str.domain
push eax
push str.EHLO__s_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
add esp, 0x10
mov ecx, esi
push edi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
cmp dword [esi + 0x14c], 1
mov byte [esi + 0x108], 1
jne 0x4287e0
mov ecx, esi
call fcn.0042aa50
xor edi, edi
xor ecx, ecx
xor eax, eax
cmp dword [eax + 0x4650f0], 1
je 0x428789
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x428773
jmp 0x428793
lea eax, [ecx + ecx*4]
lea edi, [eax*4 + 0x4650f0]
mov ecx, esi
call fcn.0042a920
test eax, eax
je 0x4287ab
cmp dword [esi + 0x18], 0x10
lea eax, [esi + 4]
jb 0x4287b0
mov eax, dword [eax]
jmp 0x4287b0
mov eax, str.domain
push eax
push str.EHLO__s_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
add esp, 0x10
mov ecx, esi
push edi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
mov byte [esi + 0x108], 1
mov ecx, dword [esi + 0x100]
mov edx, str.AUTH
call fcn.00426fa0
cmp al, 1
jne 0x428b94
cmp dword [esi + 0xbc], 0
je 0x429ad0
cmp dword [esi + 0xd4], 0
je 0x429ad0
mov ecx, dword [esi + 0x100]
mov edx, str.LOGIN
call fcn.00426fa0
cmp al, 1
jne 0x4289c7
xor edi, edi
xor ecx, ecx
xor eax, eax
cmp dword [eax + 0x4650f0], 3
je 0x428846
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x428830
jmp 0x428850
lea eax, [ecx + ecx*4]
lea edi, [eax*4 + 0x4650f0]
push str.AUTH_LOGIN_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.00432c35
add esp, 0xc
mov ecx, esi
push edi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
cmp dword [esi + 0xc0], 0x10
lea edx, [esi + 0xac]
jb 0x428889
mov edx, dword [edx]
push dword [esi + 0xbc]
lea ecx, [ebp - 0xb0]
call fcn.0042c6e0
add esp, 4
xor edi, edi
xor ecx, ecx
mov byte [ebp - 4], 1
xor eax, eax
cmp dword [eax + 0x4650f0], 7
je 0x4288bd
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x4288a7
jmp 0x4288c7
lea eax, [ecx + ecx*4]
lea edi, [eax*4 + 0x4650f0]
cmp dword [ebp - 0x9c], 0x10
lea eax, [ebp - 0xb0]
cmovae eax, dword [ebp - 0xb0]
push eax
push str._s_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
add esp, 0x10
mov ecx, esi
push edi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
cmp dword [esi + 0xd8], 0x10
lea edx, [esi + 0xc4]
jb 0x428915
mov edx, dword [edx]
push dword [esi + 0xd4]
lea ecx, [ebp - 0x140]
call fcn.0042c6e0
add esp, 4
xor edi, edi
xor ecx, ecx
mov byte [ebp - 4], 2
xor eax, eax
cmp dword [eax + 0x4650f0], 8
je 0x428949
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x428933
jmp 0x428953
lea eax, [ecx + ecx*4]
lea edi, [eax*4 + 0x4650f0]
cmp dword [ebp - 0x12c], 0x10
lea eax, [ebp - 0x140]
cmovae eax, dword [ebp - 0x140]
push eax
push str._s_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
add esp, 0x10
mov ecx, esi
push edi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
cmp dword [ebp - 0x12c], 0x10
jb 0x4289a7
push dword [ebp - 0x140]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0x12c], 0xf
mov dword [ebp - 0x130], 0
mov byte [ebp - 0x140], 0
jmp 0x428b7d
mov ecx, dword [esi + 0x100]
mov edx, str.PLAIN
call fcn.00426fa0
cmp al, 1
jne 0x428bb4
xor ecx, ecx
mov dword [ebp - 0x42c], 0
xor eax, eax
lea ecx, [ecx]
cmp dword [eax + 0x4650f0], 2
je 0x428a06
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x4289f0
jmp 0x428a16
lea eax, [ecx + ecx*4]
lea eax, [eax*4 + 0x4650f0]
mov dword [ebp - 0x42c], eax
cmp dword [esi + 0xd8], 0x10
lea eax, [esi + 0xc4]
jb 0x428a27
mov eax, dword [eax]
cmp dword [esi + 0xc0], 0x10
lea ecx, [esi + 0xac]
jb 0x428a38
mov ecx, dword [ecx]
push eax
push ecx
push str._s_s
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
mov ecx, dword [esi + 0xfc]
add esp, 0x14
xor edx, edx
lea edi, [ecx + 1]
lea ecx, [ecx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x428a60
sub ecx, edi
je 0x428a9d
jmp 0x428a70
mov eax, dword [esi + 0xfc]
cmp byte [eax + edx], 0x5e
jne 0x428a80
mov byte [eax + edx], 0
mov ecx, dword [esi + 0xfc]
inc edx
lea edi, [ecx + 1]
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x428a90
sub ecx, edi
cmp edx, ecx
jb 0x428a70
mov edi, dword [esi + 0xfc]
mov dword [ebp - 0x430], edi
lea ecx, [edi + 1]
lea esp, [esp]
mov al, byte [edi]
inc edi
test al, al
jne 0x428ab0
sub edi, ecx
lea eax, [edi + 1]
push eax
call fcn.0042e80d
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x428af6
test edi, edi
je 0x428af2
mov eax, dword [ebp - 0x430]
sub eax, ebx
mov ecx, ebx
mov dword [ebp - 0x430], eax
mov edx, edi
mov al, byte [eax + ecx]
mov byte [ecx], al
mov eax, dword [ebp - 0x430]
lea ecx, [ecx + 1]
dec edx
jne 0x428ae1
mov byte [ebx + edi], 0
mov ecx, dword [esi + 0xfc]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x428b00
sub ecx, edx
push ecx
mov edx, ebx
lea ecx, [ebp - 0xb0]
call fcn.0042c6e0
add esp, 4
push ebx
mov byte [ebp - 4], 3
call fcn.0042fe04
movq xmm0, qword [ebp - 0xb0]
sub esp, 0x14
mov eax, esp
push str.AUTH_PLAIN__s
movq qword [eax], xmm0
movq xmm0, qword [ebp - 0xa8]
movq qword [eax + 8], xmm0
movq xmm0, qword [ebp - 0xa0]
push 0x2800
push dword [esi + 0xfc]
movq qword [eax + 0x10], xmm0
call fcn.004301dd
mov edi, dword [ebp - 0x42c]
add esp, 0x24
mov ecx, esi
push edi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
cmp dword [ebp - 0x9c], 0x10
jb 0x428b94
push dword [ebp - 0xb0]
call fcn.0042fe33
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.0042f36b
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi + 0x100]
mov edx, str.CRAM_MD5
call fcn.00426fa0
cmp al, 1
jne 0x429160
xor edi, edi
xor ecx, ecx
xor eax, eax
cmp dword [eax + 0x4650f0], 4
je 0x428be8
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x428bd2
jmp 0x428bf2
lea eax, [ecx + ecx*4]
lea edi, [eax*4 + 0x4650f0]
push str.AUTH_CRAM_MD5_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.00432c35
add esp, 0xc
mov ecx, esi
push edi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
mov edx, dword [esi + 0x100]
mov dword [ebp - 0x84], 0xf
mov dword [ebp - 0x88], 0
mov byte [ebp - 0x98], 0
cmp byte [edx], 0
jne 0x428c44
xor ecx, ecx
jmp 0x428c59
mov ecx, edx
lea edi, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x428c50
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x98]
call fcn.00401520
push 0xffffffffffffffff
push 4
lea eax, [ebp - 0x128]
push eax
lea ecx, [ebp - 0x98]
mov byte [ebp - 4], 4
call fcn.0042ad20
mov edi, eax
lea eax, [ebp - 0x98]
cmp eax, edi
je 0x428d12
cmp dword [ebp - 0x84], 0x10
jb 0x428ca7
push dword [ebp - 0x98]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0x84], 0xf
mov dword [ebp - 0x88], 0
mov byte [ebp - 0x98], 0
cmp dword [edi + 0x14], 0x10
jae 0x428ce1
mov eax, dword [edi + 0x10]
inc eax
je 0x428cef
push eax
lea eax, [ebp - 0x98]
push edi
push eax
call fcn.0042f560
add esp, 0xc
jmp 0x428cef
mov eax, dword [edi]
mov dword [ebp - 0x98], eax
mov dword [edi], 0
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x88], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x84], eax
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
mov byte [edi], 0
cmp dword [ebp - 0x114], 0x10
jb 0x428d29
push dword [ebp - 0x128]
call fcn.0042fe33
add esp, 4
lea edx, [ebp - 0x98]
lea ecx, [ebp - 0xe0]
call fcn.0042ca10
mov byte [ebp - 4], 5
cmp dword [ebp - 0xcc], 0x10
lea ebx, [ebp - 0xe0]
cmovae ebx, dword [ebp - 0xe0]
mov edi, ebx
lea ecx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x428d57
sub edi, ecx
lea eax, [edi + 1]
push eax
call fcn.0042e80d
mov ecx, eax
add esp, 4
mov dword [ebp - 0x430], ecx
test ecx, ecx
jne 0x428d80
mov dword [ebp - 0x430], eax
jmp 0x428da4
test edi, edi
je 0x428da0
mov edx, ecx
sub ebx, ecx
mov dword [ebp - 0x42c], edi
mov edi, edi
dec dword [ebp - 0x42c]
mov al, byte [ebx + edx]
mov byte [edx], al
lea edx, [edx + 1]
jne 0x428d90
mov byte [edi + ecx], 0
cmp dword [esi + 0xd8], 0x10
lea eax, [esi + 0xc4]
mov dword [ebp - 0x42c], eax
jb 0x428dc1
mov eax, dword [eax]
mov dword [ebp - 0x42c], eax
mov edi, eax
lea ecx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x428dc6
sub edi, ecx
lea eax, [edi + 1]
push eax
call fcn.0042e80d
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x428e09
test edi, edi
je 0x428e05
mov ecx, dword [ebp - 0x42c]
mov edx, ebx
sub ecx, ebx
mov dword [ebp - 0x42c], edi
dec dword [ebp - 0x42c]
mov al, byte [ecx + edx]
mov byte [edx], al
lea edx, [edx + 1]
jne 0x428df5
mov byte [ebx + edi], 0
cmp dword [ebp - 0x430], 0
je 0x429110
test ebx, ebx
je 0x429110
mov edi, dword [esi + 0xd4]
push 0x40
lea eax, [ebp - 0x80]
push 0
push eax
call fcn.004368a0
add esp, 0xc
lea eax, [ebp - 0x1e0]
push 0x40
push 0
push eax
call fcn.004368a0
add esp, 0xc
lea eax, [ebp - 0x80]
push edi
push ebx
push eax
call fcn.00434630
add esp, 0xc
lea eax, [ebp - 0x1e0]
push edi
push ebx
push eax
call fcn.00434630
add esp, 0xc
xor eax, eax
jmp 0x428e70
xor byte [ebp + eax - 0x80], 0x36
xor byte [ebp + eax - 0x1e0], 0x5c
inc eax
cmp eax, 0x40
jl 0x428e70
push ecx
lea edx, [esi + 0xac]
lea ecx, [ebp - 0x128]
call fcn.0042b610
add esp, 4
lea ecx, [ebp - 0xe0]
push ecx
mov edx, eax
lea ecx, [ebp - 0xb0]
mov byte [ebp - 4], 6
call fcn.0042b6d0
mov edi, eax
lea eax, [ebp - 0xe0]
add esp, 4
cmp eax, edi
je 0x428f45
cmp dword [ebp - 0xcc], 0x10
jb 0x428eda
push dword [ebp - 0xe0]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0xcc], 0xf
mov dword [ebp - 0xd0], 0
mov byte [ebp - 0xe0], 0
cmp dword [edi + 0x14], 0x10
jae 0x428f14
mov eax, dword [edi + 0x10]
inc eax
je 0x428f22
push eax
lea eax, [ebp - 0xe0]
push edi
push eax
call fcn.0042f560
add esp, 0xc
jmp 0x428f22
mov eax, dword [edi]
mov dword [ebp - 0xe0], eax
mov dword [edi], 0
mov eax, dword [edi + 0x10]
mov dword [ebp - 0xd0], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0xcc], eax
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
mov byte [edi], 0
cmp dword [ebp - 0x9c], 0x10
jb 0x428f5c
push dword [ebp - 0xb0]
call fcn.0042fe33
add esp, 4
mov byte [ebp - 4], 5
cmp dword [ebp - 0x114], 0x10
mov dword [ebp - 0x9c], 0xf
mov dword [ebp - 0xa0], 0
mov byte [ebp - 0xb0], 0
jb 0x428f92
push dword [ebp - 0x128]
call fcn.0042fe33
add esp, 4
cmp dword [ebp - 0xcc], 0x10
push dword [ebp - 0xd0]
lea edx, [ebp - 0xe0]
cmovae edx, dword [ebp - 0xe0]
lea ecx, [ebp - 0x128]
call fcn.0042c6e0
mov edi, eax
lea eax, [ebp - 0x98]
add esp, 4
cmp eax, edi
je 0x42904c
cmp dword [ebp - 0x84], 0x10
jb 0x428fe1
push dword [ebp - 0x98]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0x84], 0xf
mov dword [ebp - 0x88], 0
mov byte [ebp - 0x98], 0
cmp dword [edi + 0x14], 0x10
jae 0x42901b
mov eax, dword [edi + 0x10]
inc eax
je 0x429029
push eax
lea eax, [ebp - 0x98]
push edi
push eax
call fcn.0042f560
add esp, 0xc
jmp 0x429029
mov eax, dword [edi]
mov dword [ebp - 0x98], eax
mov dword [edi], 0
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x88], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x84], eax
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
mov byte [edi], 0
cmp dword [ebp - 0x114], 0x10
jb 0x429063
push dword [ebp - 0x128]
call fcn.0042fe33
add esp, 4
cmp dword [ebp - 0x84], 0x10
lea eax, [ebp - 0x98]
cmovae eax, dword [ebp - 0x98]
push eax
push str._s_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
add esp, 0x10
xor edi, edi
xor ecx, ecx
xor eax, eax
cmp dword [eax + 0x4650f0], 8
je 0x4290ac
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x429096
jmp 0x4290b6
lea eax, [ecx + ecx*4]
lea edi, [eax*4 + 0x4650f0]
push edi
mov ecx, esi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
cmp dword [ebp - 0xcc], 0x10
jb 0x4290dd
push dword [ebp - 0xe0]
call fcn.0042fe33
add esp, 4
cmp dword [ebp - 0x84], 0x10
mov dword [ebp - 0xcc], 0xf
mov dword [ebp - 0xd0], 0
mov byte [ebp - 0xe0], 0
jb 0x428b94
push dword [ebp - 0x98]
jmp 0x428b8c
cmp dword [ebp - 0xcc], 0x10
jb 0x429127
push dword [ebp - 0xe0]
call fcn.0042fe33
add esp, 4
cmp dword [ebp - 0x84], 0x10
mov dword [ebp - 0xcc], 0xf
mov dword [ebp - 0xd0], 0
mov byte [ebp - 0xe0], 0
jb 0x429159
push dword [ebp - 0x98]
call fcn.0042fe33
add esp, 4
xor al, al
jmp 0x428b96
mov ecx, dword [esi + 0x100]
mov edx, str.DIGEST_MD5
call fcn.00426fa0
cmp al, 1
jne 0x429ad0
xor edi, edi
xor ecx, ecx
xor eax, eax
mov edi, edi
cmp dword [eax + 0x4650f0], 6
je 0x429196
add eax, 0x14
inc ecx
cmp eax, 0x140
jb 0x429180
jmp 0x4291a0
lea eax, [ecx + ecx*4]
lea edi, [eax*4 + 0x4650f0]
push str.AUTH_DIGEST_MD5_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.00432c35
add esp, 0xc
mov ecx, esi
push edi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
mov edx, dword [esi + 0x100]
mov dword [ebp - 0xe4], 0xf
mov dword [ebp - 0xe8], 0
mov byte [ebp - 0xf8], 0
cmp byte [edx], 0
jne 0x4291f2
xor ecx, ecx
jmp 0x429200
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4291f7
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0xf8]
call fcn.00401520
push 0xffffffffffffffff
push 4
lea eax, [ebp - 0xb0]
push eax
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 7
call fcn.0042ad20
mov edi, eax
lea eax, [ebp - 0xf8]
cmp eax, edi
je 0x4292b9
cmp dword [ebp - 0xe4], 0x10
jb 0x42924e
push dword [ebp - 0xf8]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0xe4], 0xf
mov dword [ebp - 0xe8], 0
mov byte [ebp - 0xf8], 0
cmp dword [edi + 0x14], 0x10
jae 0x429288
mov eax, dword [edi + 0x10]
inc eax
je 0x429296
push eax
lea eax, [ebp - 0xf8]
push edi
push eax
call fcn.0042f560
add esp, 0xc
jmp 0x429296
mov eax, dword [edi]
mov dword [ebp - 0xf8], eax
mov dword [edi], 0
mov eax, dword [edi + 0x10]
mov dword [ebp - 0xe8], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0xe4], eax
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
mov byte [edi], 0
cmp dword [ebp - 0x9c], 0x10
jb 0x4292d0
push dword [ebp - 0xb0]
call fcn.0042fe33
add esp, 4
lea edx, [ebp - 0xf8]
lea ecx, [ebp - 0x158]
call fcn.0042ca10
push 5
push ecx
push str.nonce
lea ecx, [ebp - 0x158]
mov byte [ebp - 4], 8
call fcn.0042aee0
push 0xffffffffffffffff
add eax, 7
push eax
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0x158]
call fcn.0042ad20
push 1
push ecx
push 0x45b64c
lea ecx, [ebp - 0x110]
mov byte [ebp - 4], 9
call fcn.0042aee0
push eax
push 0
lea eax, [ebp - 0xb0]
push eax
lea ecx, [ebp - 0x110]
call fcn.0042ad20
mov edi, eax
lea eax, [ebp - 0x110]
cmp eax, edi
je 0x4293ce
cmp dword [ebp - 0xfc], 0x10
jb 0x429363
push dword [ebp - 0x110]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0xfc], 0xf
mov dword [ebp - 0x100], 0
mov byte [ebp - 0x110], 0
cmp dword [edi + 0x14], 0x10
jae 0x42939d
mov eax, dword [edi + 0x10]
inc eax
je 0x4293ab
push eax
lea eax, [ebp - 0x110]
push edi
push eax
call fcn.0042f560
add esp, 0xc
jmp 0x4293ab
mov eax, dword [edi]
mov dword [ebp - 0x110], eax
mov dword [edi], 0
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x100], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0xfc], eax
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
mov byte [edi], 0
cmp dword [ebp - 0x9c], 0x10
jb 0x4293e5
push dword [ebp - 0xb0]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0xb4], 0xf
mov dword [ebp - 0xb8], 0
mov byte [ebp - 0xc8], 0
push 5
push ecx
push str.realm
lea ecx, [ebp - 0x158]
mov byte [ebp - 4], 0xa
call fcn.0042aee0
push 0xffffffffffffffff
add eax, 7
push eax
lea eax, [ebp - 0xb0]
push eax
lea ecx, [ebp - 0x158]
call fcn.0042ad20
mov edi, eax
lea eax, [ebp - 0xc8]
cmp eax, edi
je 0x4294c1
cmp dword [ebp - 0xb4], 0x10
jb 0x429456
push dword [ebp - 0xc8]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0xb4], 0xf
mov dword [ebp - 0xb8], 0
mov byte [ebp - 0xc8], 0
cmp dword [edi + 0x14], 0x10
jae 0x429490
mov eax, dword [edi + 0x10]
inc eax
je 0x42949e
push eax
lea eax, [ebp - 0xc8]
push edi
push eax
call fcn.0042f560
add esp, 0xc
jmp 0x42949e
mov eax, dword [edi]
mov dword [ebp - 0xc8], eax
mov dword [edi], 0
mov eax, dword [edi + 0x10]
mov dword [ebp - 0xb8], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0xb4], eax
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], 0
mov byte [edi], 0
cmp dword [ebp - 0x9c], 0x10
jb 0x4294d8
push dword [ebp - 0xb0]
call fcn.0042fe33
add esp, 4
push 1
push ecx
push 0x45b64c
lea ecx, [ebp - 0xc8]
call fcn.0042aee0
push eax
push 0
lea eax, [ebp - 0xb0]
push eax
lea ecx, [ebp - 0xc8]
call fcn.0042ad20
mov edi, eax
lea eax, [ebp - 0xc8]
cmp eax, edi
je 0x4295a1
cmp dword [ebp - 0xb4], 0x10
jb 0x429527
push dword [ebp - 0xc8]
call fcn.0042fe33
add esp, 4
mov dword [ebp - 0xb4], 0xf
mov dword [ebp - 0xb8], 0
mov byte [ebp - 0xc8], 0
cmp dword [edi + 0x14], 0x10
jae 0x42955e
mov eax, dword [edi + 0x10]
inc eax
je 0x429584
push eax
lea eax, [ebp - 0xc8]
push edi
push eax
call fcn.0042f560
jmp 0x429581
push edi
call fcn.00401ac0
add esp, 4
push eax
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0x431]
push eax
call fcn.00401ad0
mov dword [edi], 0
add esp, 0xc
mov eax, dword [edi + 0x10]
mov dword [ebp - 0xb8], eax
mov eax, dword [edi + 0x14]
push 0
push 0
mov ecx, edi
mov dword [ebp - 0xb4], eax
call fcn.004014d0
lea ecx, [ebp - 0xb0]
call fcn.00401450
xor ecx, ecx
call fcn.00426f60
push edx
push eax
push 0x45b658
lea eax, [ebp - 0x34]
push 0x11
push eax
call fcn.004301dd
add esp, 0x14
lea eax, [ebp - 0x20]
push 1
push str._08d
push 9
push eax
call fcn.004301dd
add esp, 0x10
lea ecx, [ebp - 0x128]
push str.auth
call fcn.004013f0
lea eax, [ebp - 0x42c]
push eax
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 0xb
push eax
push dword [esi + 0x104]
mov dword [ebp - 0x42c], 0x80
call dword [sym.imp.WS2_32.dll_getpeername]
test eax, eax
je 0x429a40
push dword [ebp - 0x214]
call dword [sym.imp.WS2_32.dll_inet_ntoa]
push eax
lea ecx, [ebp - 0x180]
call fcn.004013f0
lea eax, [ebp - 0x180]
push eax
lea ecx, [ebp - 0xb0]
mov byte [ebp - 4], 0xc
call fcn.0042b750
add esp, 4
lea ecx, [ebp - 0x180]
push eax
call fcn.00407110
lea ecx, [ebp - 0xb0]
call fcn.00401450
lea ecx, [ebp - 0xc8]
call fcn.00401480
mov ecx, eax
call fcn.00427080
lea ecx, [esi + 0xac]
mov dword [ebp - 0x430], eax
call fcn.00401480
mov ecx, eax
call fcn.00427080
lea ecx, [esi + 0xc4]
mov dword [ebp - 0x43c], eax
call fcn.00401480
mov ecx, eax
call fcn.00427080
lea ecx, [ebp - 0x110]
mov dword [ebp - 0x44c], eax
call fcn.00401480
mov ecx, eax
call fcn.00427080
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x448], eax
call fcn.00427080
lea ecx, [ebp - 0x180]
mov dword [ebp - 0x440], eax
call fcn.00401480
mov ecx, eax
call fcn.00427080
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x438], eax
call fcn.00427080
lea ecx, [ebp - 0x128]
mov ebx, eax
call fcn.00401480
mov ecx, eax
call fcn.00427080
cmp dword [ebp - 0x430], 0
je 0x429a35
cmp dword [ebp - 0x43c], 0
je 0x429a35
cmp dword [ebp - 0x44c], 0
je 0x429a35
cmp dword [ebp - 0x448], 0
je 0x429a35
cmp dword [ebp - 0x440], 0
je 0x429a35
cmp dword [ebp - 0x438], 0
je 0x429a35
test ebx, ebx
je 0x429a35
test eax, eax
je 0x429a35
mov ecx, dword [esi + 0x100]
call fcn.00426f50
lea ecx, [esi + 0xac]
call fcn.00401480
push eax
push str.charsetutf_8_username__s_
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
add esp, 0x10
lea ecx, [ebp - 0xc8]
call fcn.00405ff0
test al, al
jne 0x4297dd
lea ecx, [ebp - 0xc8]
call fcn.00401480
push eax
push str._realm__s_
push 0x2800
push dword [esi + 0x100]
call fcn.004301dd
push dword [esi + 0x100]
push 0x2800
push dword [esi + 0xfc]
call fcn.00432e7e
add esp, 0x1c
lea ecx, [ebp - 0x110]
call fcn.00401480
push eax
push str._nonce__s_
push 0x2800
push dword [esi + 0x100]
call fcn.004301dd
push dword [esi + 0x100]
push 0x2800
push dword [esi + 0xfc]
call fcn.00432e7e
add esp, 0x1c
lea eax, [ebp - 0x20]
push eax
push str._nc_s
push 0x2800
push dword [esi + 0x100]
call fcn.004301dd
push dword [esi + 0x100]
push 0x2800
push dword [esi + 0xfc]
call fcn.00432e7e
add esp, 0x1c
lea eax, [ebp - 0x34]
push eax
push str._cnonce__s_
push 0x2800
push dword [esi + 0x100]
call fcn.004301dd
push dword [esi + 0x100]
push 0x2800
push dword [esi + 0xfc]
call fcn.00432e7e
add esp, 0x1c
lea ecx, [ebp - 0x180]
call fcn.00401480
push eax
push str._digest_uri__s_
push 0x2800
push dword [esi + 0x100]
call fcn.004301dd
push dword [esi + 0x100]
push 0x2800
push dword [esi + 0xfc]
call fcn.00432e7e
add esp, 0x1c
lea ecx, [ebp - 0x158]
call fcn.00401480
push eax
push str._response_s
push 0x2800
push dword [esi + 0x100]
call fcn.004301dd
push dword [esi + 0x100]
push 0x2800
push dword [esi + 0xfc]
call fcn.00432e7e
add esp, 0x1c
lea ecx, [ebp - 0x128]
call fcn.00401480
push eax
push str._qop_s
push 0x2800
push dword [esi + 0x100]
call fcn.004301dd
push dword [esi + 0x100]
push 0x2800
push dword [esi + 0xfc]
call fcn.00432e7e
mov ecx, dword [esi + 0xfc]
add esp, 0x1c
call fcn.00427080
mov ecx, dword [esi + 0xfc]
mov edi, eax
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x429940
sub ecx, edx
push ecx
mov edx, edi
lea ecx, [ebp - 0x198]
call fcn.0042c6e0
add esp, 4
lea ecx, [ebp - 0xf8]
push eax
call fcn.00407110
lea ecx, [ebp - 0x198]
call fcn.00401450
push edi
call fcn.0042fe04
add esp, 4
lea ecx, [ebp - 0xf8]
call fcn.00401480
push eax
push str._s_r_n
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
add esp, 0x10
mov ecx, 6
call fcn.00426f70
mov edi, eax
push edi
mov ecx, esi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
push 0x45b5a4
push 0x2800
push dword [esi + 0xfc]
call fcn.004301dd
add esp, 0xc
mov ecx, 8
call fcn.00426f70
mov edi, eax
push edi
mov ecx, esi
call fcn.0042a610
push edi
mov ecx, esi
call fcn.0042aae0
lea ecx, [ebp - 0x180]
call fcn.00401450
lea ecx, [ebp - 0x128]
call fcn.00401450
lea ecx, [ebp - 0xc8]
call fcn.00401450
lea ecx, [ebp - 0x110]
call fcn.00401450
lea ecx, [ebp - 0x158]
call fcn.00401450
lea ecx, [ebp - 0xf8]
call fcn.00401450
jmp 0x428b94
lea ecx, [ebp - 0x180]
call fcn.00401450
lea ecx, [ebp - 0x128]
call fcn.00401450
lea ecx, [ebp - 0xc8]
call fcn.00401450
lea ecx, [ebp - 0x110]
call fcn.00401450
lea ecx, [ebp - 0x158]
call fcn.00401450
lea ecx, [ebp - 0xf8]
call fcn.00401450
xor al, al
jmp 0x428b96
lea eax, [ebp - 0x320]
push eax
push dword [esi + 0x104]
call edi
test eax, eax
je 0x4285a0
push dword [esi + 0x104]
call dword [sym.imp.WS2_32.dll_closesocket]
xor al, al
jmp 0x428b96