Function at 0x6d31a3a0
Capabilities:
Hash data with md5

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x20
test rcx, rcx
mov r12, rcx
mov r13, rdx
mov ebx, r8d
je 0x6d31a4b7
test rdx, rdx
je 0x6d31a4d0
mov ecx, dword [rcx + 0x18]
mov eax, 0x10
cmp ecx, 0x40
jbe 0x6d31a3e5
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
mov edx, r8d
add rdx, qword [r12]
mov eax, 0x19
jb 0x6d31a3d6
test r8d, r8d
je 0x6d31a4b0
mov ebp, 0x40
lea rdi, [r12 + 0x1c]
jmp 0x6d31a449
mov esi, ebp
mov rdx, r13
sub esi, ecx
cmp esi, ebx
cmova esi, ebx
add rcx, rdi
mov r14d, esi
sub ebx, esi
mov r8, r14
add r13, r14
call fcn.6d382e28
mov eax, dword [r12 + 0x18]
add eax, esi
cmp eax, 0x40
mov dword [r12 + 0x18], eax
je 0x6d31a480
test ebx, ebx
je 0x6d31a4b0
mov ecx, dword [r12 + 0x18]
cmp ebx, 0x3f
jbe 0x6d31a410
test ecx, ecx
jne 0x6d31a410
mov rdx, r13
mov rcx, r12
call fcn.6d3198b0
test eax, eax
jne 0x6d31a3d6
add qword [r12], 0x200
add r13, 0x40
sub ebx, 0x40
jmp 0x6d31a440
mov rdx, rdi
mov rcx, r12
call fcn.6d3198b0
test eax, eax
jne 0x6d31a3d6
add qword [r12], 0x200
mov dword [r12 + 0x18], 0
jmp 0x6d31a440
xor eax, eax
jmp 0x6d31a3d6
lea rdx, str.src_hashes_md5.c
lea rcx, [0x6d38f411]
mov r8d, 0xfa
call fcn.6d31f090
lea rdx, str.src_hashes_md5.c
lea rcx, [0x6d38f428]
mov r8d, 0xfa
call fcn.6d31f090
nop
nop word [rax + rax]
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1f8
lea rsi, [0x6d38f508]
lea r15, [0x6d38f433]
xor ebp, ebp
lea rdi, [rsp + 0x40]
lea rax, [rsp + 0x50]
mov r12d, 0x40
mov qword [rsp + 0x38], rdi
lea rdi, [rsp + 0x6c]
mov qword [rsp + 0x30], rax
mov rcx, r15
mov dword [rsp + 0x58], 0x67452301
mov dword [rsp + 0x5c], 0xefcdab89
mov dword [rsp + 0x60], 0x98badcfe
mov dword [rsp + 0x64], 0x10325476
mov dword [rsp + 0x68], 0
mov qword [rsp + 0x50], 0
call fcn.6d382dd0
xor ecx, ecx
test eax, eax
mov ebx, eax
jne 0x6d31a5bc
jmp 0x6d31a920
mov r14d, r12d
mov rdx, r15
sub r14d, ecx
cmp r14d, ebx
cmova r14d, ebx
add rcx, rdi
mov r13d, r14d
sub ebx, r14d
mov r8, r13
add r15, r13
call fcn.6d382e28
mov ecx, r14d
add ecx, dword [rsp + 0x68]
cmp ecx, 0x40
mov dword [rsp + 0x68], ecx
je 0x6d31a8d0
test ebx, ebx
je 0x6d31a5f2
cmp ebx, 0x3f
jbe 0x6d31a580
test ecx, ecx
jne 0x6d31a580
mov rcx, qword [rsp + 0x30]
mov rdx, r15
call fcn.6d3198b0
test eax, eax
jne 0x6d31a93b
sub ebx, 0x40
add qword [rsp + 0x50], 0x200
add r15, 0x40
test ebx, ebx
mov ecx, dword [rsp + 0x68]
jne 0x6d31a5bc
cmp ecx, 0x3f
jbe 0x6d31a650
lea r15, [0x6d38f434]
mov rcx, qword [rsp + 0x38]
mov dword [rsp + 0x28], ebp
mov r9d, 0x10
mov r8, rsi
mov edx, 0x10
mov qword [rsp + 0x20], r15
call fcn.6d31f060
test eax, eax
jne 0x6d31a910
add rsi, 0x18
mov r15, qword [rsi - 8]
add ebp, 1
test r15, r15
jne 0x6d31a532
add rsp, 0x1f8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea r8d, [rcx*8]
add r8, qword [rsp + 0x50]
lea edx, [rcx + 1]
mov byte [rsp + rcx + 0x6c], pe_nt_image_headers64
cmp edx, 0x38
mov dword [rsp + 0x68], edx
mov qword [rsp + 0x50], r8
jbe 0x6d31a900
cmp edx, 0x40
je 0x6d31a78b
mov ecx, 0x3f
mov r8, qword [rsp + 0x30]
sub ecx, edx
add rcx, 1
test ecx, ecx
lea r9, [r8 + rdx + 0x1c]
mov r10d, ecx
je 0x6d31a783
lea ecx, [rcx - 1]
mov r15d, 1
mov byte [r9], 0
and ecx, 7
cmp r15d, r10d
jae 0x6d31a783
test ecx, ecx
je 0x6d31a733
cmp ecx, 1
je 0x6d31a722
cmp ecx, 2
je 0x6d31a716
cmp ecx, 3
je 0x6d31a70a
cmp ecx, 4
je 0x6d31a6fe
cmp ecx, 5
je 0x6d31a6f2
cmp ecx, 6
je 0x6d31a6e6
mov byte [r9 + 1], 0
mov r15d, 2
mov eax, r15d
add r15d, 1
mov byte [r9 + rax], 0
mov ebx, r15d
add r15d, 1
mov byte [r9 + rbx], 0
mov r14d, r15d
add r15d, 1
mov byte [r9 + r14], 0
mov r13d, r15d
add r15d, 1
mov byte [r9 + r13], 0
mov edx, r15d
add r15d, 1
mov byte [r9 + rdx], 0
mov r8d, r15d
add r15d, 1
cmp r15d, r10d
mov byte [r9 + r8], 0
jae 0x6d31a783
mov ecx, r15d
lea r11d, [r15 + 1]
lea eax, [r15 + 2]
lea ebx, [r15 + 3]
lea r14d, [r15 + 4]
lea r13d, [r15 + 5]
lea edx, [r15 + 6]
lea r8d, [r15 + 7]
add r15d, 8
cmp r15d, r10d
mov byte [r9 + rcx], 0
mov byte [r9 + r11], 0
mov byte [r9 + rax], 0
mov byte [r9 + rbx], 0
mov byte [r9 + r14], 0
mov byte [r9 + r13], 0
mov byte [r9 + rdx], 0
mov byte [r9 + r8], 0
jb 0x6d31a733
mov dword [rsp + 0x68], 0x40
mov rcx, qword [rsp + 0x30]
mov rdx, rdi
call fcn.6d3198b0
mov r8, qword [rsp + 0x50]
xor edx, edx
mov r9d, edx
lea r15d, [rdx + 1]
mov r10d, edx
not r9d
mov byte [rsp + r10 + 0x6c], 0
and r9d, 7
cmp r15d, 0x38
je 0x6d31a899
test r9d, r9d
je 0x6d31a844
cmp r9d, 1
je 0x6d31a831
cmp r9d, 2
je 0x6d31a824
cmp r9d, 3
je 0x6d31a818
cmp r9d, 4
je 0x6d31a80c
cmp r9d, 5
je 0x6d31a7ff
cmp r9d, 6
je 0x6d31a7f3
mov byte [rsp + r15 + 0x6c], 0
lea r15d, [rdx + 2]
mov ecx, r15d
add r15d, 1
mov byte [rsp + rcx + 0x6c], 0
mov r11d, r15d
add r15d, 1
mov byte [rsp + r11 + 0x6c], 0
mov eax, r15d
add r15d, 1
mov byte [rsp + rax + 0x6c], 0
mov ebx, r15d
add r15d, 1
mov byte [rsp + rbx + 0x6c], 0
mov r14d, r15d
add r15d, 1
mov byte [rsp + r14 + 0x6c], 0
mov r13d, r15d
add r15d, 1
cmp r15d, 0x38
mov byte [rsp + r13 + 0x6c], 0
je 0x6d31a899
mov edx, r15d
lea r9d, [r15 + 1]
lea r10d, [r15 + 2]
lea ecx, [r15 + 3]
lea r11d, [r15 + 4]
lea eax, [r15 + 5]
lea ebx, [r15 + 6]
lea r14d, [r15 + 7]
add r15d, 8
cmp r15d, 0x38
mov byte [rsp + rdx + 0x6c], 0
mov byte [rsp + r9 + 0x6c], 0
mov byte [rsp + r10 + 0x6c], 0
mov byte [rsp + rcx + 0x6c], 0
mov byte [rsp + r11 + 0x6c], 0
mov byte [rsp + rax + 0x6c], 0
mov byte [rsp + rbx + 0x6c], 0
mov byte [rsp + r14 + 0x6c], 0
jne 0x6d31a844
mov dword [rsp + 0x68], 0x38
mov rcx, qword [rsp + 0x30]
mov rdx, rdi
mov qword [rsp + 0xa4], r8
call fcn.6d3198b0
movdqu xmm0, xmmword [rsp + 0x58]
movaps xmmword [rsp + 0x40], xmm0
jmp 0x6d31a5f7
mov rcx, qword [rsp + 0x30]
mov rdx, rdi
call fcn.6d3198b0
test eax, eax
jne 0x6d31a93b
add qword [rsp + 0x50], 0x200
mov dword [rsp + 0x68], 0
xor ecx, ecx
jmp 0x6d31a5b8
jne 0x6d31a79f
jmp 0x6d31a8a1
mov eax, 5
jmp 0x6d31a63b
mov qword [rsp + 0x50], 0
mov byte [rsp + 0x6c], pe_nt_image_headers64
xor r8d, r8d
mov edx, 1
jmp 0x6d31a79f
mov ecx, dword [rsp + 0x68]
jmp 0x6d31a5f2