Function at 0x140199590
Capabilities:
Hash data with md5

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x158]
sub rsp, 0x258
mov rax, qword [0x14024fa28]
xor rax, rsp
mov qword [rbp + 0x140], rax
mov r12, r9
mov r13, r8
mov qword [rsp + 0x48], rdx
mov r14, rcx
mov r15, qword [rbp + 0x1c8]
mov rdx, qword [rbp + 0x1c0]
xor esi, esi
xor edi, edi
xor r9d, r9d
mov qword [rsp + 0x50], r9
call fcn.140199240
test al, al
je 0x140199edb
mov rbx, qword [r14 + 0x18]
cmp rbx, qword [r14 + 0x20]
je 0x140199edb
lea rdx, str.realm
mov rcx, qword [rbx]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__stricmp]
test eax, eax
jne 0x14019961a
mov rsi, qword [rbx + 8]
jmp 0x140199651
lea rdx, str.nonce
mov rcx, qword [rbx]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__stricmp]
test eax, eax
jne 0x140199634
mov rdi, qword [rbx + 8]
jmp 0x140199651
lea rdx, str.charset
mov rcx, qword [rbx]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__stricmp]
test eax, eax
jne 0x140199651
mov rax, qword [rbx + 8]
mov qword [rsp + 0x50], rax
add rbx, 0x10
cmp rbx, qword [r14 + 0x20]
jne 0x140199600
test rsi, rsi
je 0x140199edb
test rdi, rdi
je 0x140199edb
xor ecx, ecx
call qword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
mov r9, rax
lea r8, [0x14020b588]
mov edx, reloc.WS2_32.dll_recv
lea rcx, [rbp - 8]
call fcn.1401aee50
mov r9, qword [rsp + 0x48]
lea r8, str.smtp__s
mov edx, 0x100
lea rcx, [rbp + 0x40]
call fcn.1401aee50
lea rax, vtable.HashAlgorithm.0
mov qword [rsp + 0x60], rax
lea rax, vtable.HashAlgorithmMD5.0
mov qword [rsp + 0x60], rax
xor r14d, r14d
mov qword [rsp + 0x78], r14
mov dword [rsp + 0x68], 0x67452301
mov dword [rsp + 0x6c], 0xefcdab89
mov dword [rsp + 0x70], 0x98badcfe
mov dword [rsp + 0x74], 0x10325476
mov qword [rsp + 0x78], r14
mov dword [rsp + 0x68], 0x67452301
mov dword [rsp + 0x6c], 0xefcdab89
mov dword [rsp + 0x70], 0x98badcfe
mov dword [rsp + 0x74], 0x10325476
mov rbx, 0xffffffffffffffff
mov r8, rbx
inc r8
cmp byte [r8 + r13], 0
jne 0x140199716
mov rdx, r13
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8, rbx
nop word [rax + rax]
inc r8
cmp byte [rsi + r8], 0
jne 0x140199750
mov rdx, rsi
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r9, rbx
inc r9
cmp byte [r12 + r9], 0
jne 0x140199781
test r9, r9
je 0x1401997ad
lfence
mov rax, qword [rsp + 0x60]
xor r8d, r8d
mov rdx, r12
lea rcx, [rsp + 0x60]
mov rax, qword [rax + 8]
call qword [case.0x14003c8e9.0]
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x68]
call fcn.140156110
movaps xmm0, xmmword [rbp - 0x40]
movups xmmword [rbp + 8], xmm0
mov qword [rsp + 0x78], r14
mov dword [rsp + 0x68], 0x67452301
mov dword [rsp + 0x6c], 0xefcdab89
mov dword [rsp + 0x70], 0x98badcfe
mov dword [rsp + 0x74], 0x10325476
mov r8d, reloc.WS2_32.dll_recv
lea rdx, [rbp + 8]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8, rbx
inc r8
cmp byte [rdi + r8], 0
jne 0x140199816
mov rdx, rdi
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
lea rax, [rbp - 8]
mov r9, rbx
nop dword [rax + rax]
inc r9
cmp byte [rax + r9], 0
jne 0x140199850
test r9, r9
je 0x14019987d
lfence
mov rax, qword [rsp + 0x60]
xor r8d, r8d
lea rdx, [rbp - 8]
lea rcx, [rsp + 0x60]
mov rax, qword [rax + 8]
call qword [case.0x14003c8e9.0]
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x68]
call fcn.140156110
movaps xmm0, xmmword [rbp - 0x40]
movups xmmword [rbp + 0x18], xmm0
mov qword [rsp + 0x78], r14
mov dword [rsp + 0x68], 0x67452301
mov dword [rsp + 0x6c], 0xefcdab89
mov dword [rsp + 0x70], 0x98badcfe
mov dword [rsp + 0x74], 0x10325476
mov r8d, reloc.WS2_32.dll_listen
lea rdx, str.AUTHENTICATE:
lea rcx, [rsp + 0x68]
call fcn.140156030
lea rax, [rbp + 0x40]
mov r9, rbx
inc r9
cmp byte [rax + r9], 0
jne 0x1401998d6
test r9, r9
je 0x140199903
lfence
mov rax, qword [rsp + 0x60]
xor r8d, r8d
lea rdx, [rbp + 0x40]
lea rcx, [rsp + 0x60]
mov rax, qword [rax + 8]
call qword [case.0x14003c8e9.0]
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x68]
call fcn.140156110
movaps xmm0, xmmword [rbp - 0x40]
movups xmmword [rbp + 0x28], xmm0
lea rdx, [rbp + 0x18]
lea rcx, [rbp - 0x30]
call fcn.14019f070
mov qword [rsp + 0x78], r14
mov dword [rsp + 0x68], 0x67452301
mov dword [rsp + 0x6c], 0xefcdab89
mov dword [rsp + 0x70], 0x98badcfe
mov dword [rsp + 0x74], 0x10325476
lea rax, [rbp - 0x30]
mov r8, rbx
inc r8
cmp byte [rax + r8], 0
jne 0x140199952
lea rdx, [rbp - 0x30]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8, rbx
inc r8
cmp byte [rdi + r8], 0
jne 0x140199984
mov rdx, rdi
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 8
lea rdx, str.00000001
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
lea rax, [rbp - 8]
mov r8, rbx
nop word [rax + rax]
inc r8
cmp byte [rax + r8], 0
jne 0x1401999f0
lea rdx, [rbp - 8]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 4
lea rdx, str.auth
lea rcx, [rsp + 0x68]
call fcn.140156030
mov r8d, 1
lea rdx, [0x1401f11e0]
lea rcx, [rsp + 0x68]
call fcn.140156030
lea rdx, [rbp + 0x28]
lea rcx, [rbp - 0x30]
call fcn.14019f070
lea rcx, [rbp - 0x30]
mov r9, rbx
inc r9
cmp byte [rcx + r9], 0
jne 0x140199a61
test r9, r9
je 0x140199a8e
lfence
mov rax, qword [rsp + 0x60]
xor r8d, r8d
lea rdx, [rbp - 0x30]
lea rcx, [rsp + 0x60]
mov rax, qword [rax + 8]
call qword [case.0x14003c8e9.0]
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x68]
call fcn.140156110
movzx ecx, byte [rbp - 0x40]
mov eax, ecx
shr rax, 4
lea rdx, str.0123456789abcdef
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x30], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x2f], al
movzx ecx, byte [rbp - 0x3f]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x2e], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x2d], al
movzx ecx, byte [rbp - 0x3e]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x2c], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x2b], al
movzx ecx, byte [rbp - 0x3d]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x2a], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x29], al
movzx ecx, byte [rbp - 0x3c]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x28], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x27], al
movzx ecx, byte [rbp - 0x3b]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x26], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x25], al
movzx ecx, byte [rbp - 0x3a]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x24], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x23], al
movzx ecx, byte [rbp - 0x39]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x22], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x21], al
movzx ecx, byte [rbp - 0x38]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x20], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x1f], al
movzx ecx, byte [rbp - 0x37]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x1e], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x1d], al
movzx ecx, byte [rbp - 0x36]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x1c], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x1b], al
movzx ecx, byte [rbp - 0x35]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x1a], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x19], al
movzx ecx, byte [rbp - 0x34]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x18], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x17], al
movzx ecx, byte [rbp - 0x33]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x16], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x15], al
movzx ecx, byte [rbp - 0x32]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x14], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x13], al
movzx ecx, byte [rbp - 0x31]
mov eax, ecx
shr rax, 4
movzx eax, byte [rax + rdx]
mov byte [rbp - 0x12], al
and ecx, 0xf
movzx eax, byte [rcx + rdx]
mov byte [rbp - 0x11], al
mov byte [rbp - 0x10], 0
mov byte [r15], 0
mov r9, qword [rsp + 0x50]
test r9, r9
je 0x140199c7c
lea r8, str.charset_s_
mov edx, 0x1000
mov rcx, r15
call fcn.1401aee50
mov r14, rax
mov edx, 0x1000
sub rdx, r14
lea rcx, [r15 + r14]
mov r9, r13
lea r8, str.username__s__
call fcn.1401aee50
add r14, rax
mov edx, 0x1000
sub rdx, r14
lea rcx, [r15 + r14]
mov r9, rsi
lea r8, str.realm__s__
call fcn.1401aee50
add r14, rax
mov edx, 0x1000
sub rdx, r14
lea rcx, [r15 + r14]
mov r9, rdi
lea r8, str.nonce__s__
call fcn.1401aee50
add r14, rax
mov edx, 0x1000
sub rdx, r14
lea rcx, [r15 + r14]
lea r9, str.00000001
lea r8, str.nc_s_
call fcn.1401aee50
add r14, rax
mov edx, 0x1000
sub rdx, r14
lea rcx, [r15 + r14]
lea r9, [rbp - 8]
lea r8, str.cnonce__s__
call fcn.1401aee50
add r14, rax
mov edx, 0x1000
sub rdx, r14
lea rcx, [r15 + r14]
lea r9, [rbp + 0x40]
lea r8, str.digest_uri__s__
call fcn.1401aee50
add r14, rax
mov edx, 0x1000
sub rdx, r14
lea rcx, [r15 + r14]
lea r9, [rbp - 0x30]
lea r8, str.response_s_
call fcn.1401aee50
add r14, rax
mov edx, 0x1000
sub rdx, r14
lea rcx, [r15 + r14]
lea r9, str.auth
lea r8, str.qop_s
call fcn.1401aee50
add r14, rax
mov rsi, rbx
nop word [rax + rax]
inc rsi
cmp byte [r15 + rsi], 0
jne 0x140199d80
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x30], xmm0
xor r12d, r12d
mov qword [rsp + 0x40], r12
test rsi, rsi
je 0x140199dfa
movabs rax, 0x7fffffffffffffff
cmp rsi, rax
ja 0x140199f00
lfence
mov rcx, rsi
call fcn.140002680
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], rax
add rax, rsi
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x48], rax
mov rdi, qword [rsp + 0x30]
mov r8, rsi
mov rdx, r15
mov rcx, rdi
call sub.VCRUNTIME140.dll_memmove
add rdi, rsi
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x48], r12
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
mov r9d, 0x1000
mov r8, r15
mov rdx, r14
mov rcx, qword [rsp + 0x30]
call fcn.14014f940
nop word [rax + rax]
inc rbx
cmp byte [r15 + rbx], 0
jne 0x140199e20
lea rax, [rbx + 1]
cmp rax, 0x1000
jae 0x140199e72
lea rax, [rbx + 3]
lfence
lea r8, [0x1401f9fd0]
mov edx, 0x1000
cmp rax, rdx
ja 0x140199e59
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcat_s]
jmp 0x140199e72
sub rdx, rbx
lea r9, [rdx - 1]
lea rcx, [r15 + rbx]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncpy_s]
mov byte [r15 + 0xfff], 0
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x140199ebf
mov rdx, qword [rsp + 0x40]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x140199eac
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140199eac
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140007ea0
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x30], xmm0
mov qword [rsp + 0x40], r12
lea rax, vtable.HashAlgorithmMD5.0
mov qword [rsp + 0x60], rax
lea rax, vtable.HashAlgorithm.0
mov qword [rsp + 0x60], rax
mov al, 1
jmp 0x140199edd
xor al, al
mov rcx, qword [rbp + 0x140]
xor rcx, rsp
call fcn.1401c5190
add rsp, 0x258
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call fcn.1400022f0
nop
int3