Function at 0x4032c0
Capabilities:
Hash data with md5

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc0
mov rsi, rcx
mov ecx, r8d
mov rdi, r8
mov dword [rsp + 0x28], 0x67452301
mov dword [rsp + 0x2c], 0xefcdab89
lea rbx, [rsp + 0x20]
mov eax, r8d
and ecx, 0x1fffffff
mov dword [rsp + 0x20], ecx
mov ecx, r8d
shr ecx, 0x1d
cmp r8d, 0x3f
mov dword [rsp + 0x30], 0x98badcfe
mov dword [rsp + 0x34], 0x10325476
mov dword [rsp + 0x24], ecx
ja 0x4036f0
test eax, eax
mov ecx, eax
je 0x40358e
lea r9, [rbx + 0x18]
lea r8, [rdx + 0x10]
cmp r9, r8
lea r8, [rbx + 0x28]
setae r9b
cmp rdx, r8
setae r8b
or r9b, r8b
je 0x403713
cmp eax, 0x14
jbe 0x403713
cmp rcx, 8
mov r8d, 8
movzx eax, byte [rdx]
cmovbe r8, rcx
cmp r8, 1
mov byte [rsp + 0x38], al
je 0x403709
movzx eax, byte [rdx + 1]
cmp r8, 2
mov byte [rsp + 0x39], al
je 0x403755
movzx eax, byte [rdx + 2]
cmp r8, 3
mov byte [rsp + 0x3a], al
je 0x403741
movzx eax, byte [rdx + 3]
cmp r8, 4
mov byte [rsp + 0x3b], al
je 0x40374b
movzx eax, byte [rdx + 4]
cmp r8, 5
mov byte [rsp + 0x3c], al
je 0x403769
movzx eax, byte [rdx + 5]
cmp r8, 6
mov byte [rsp + 0x3d], al
je 0x403737
movzx eax, byte [rdx + 6]
cmp r8, 7
mov byte [rsp + 0x3e], al
je 0x40375f
movzx eax, byte [rdx + 7]
mov byte [rsp + 0x3f], al
mov eax, 8
cmp rcx, r8
je 0x40358e
lea r10, [rcx - 1]
mov r11, rcx
sub r11, r8
sub r10, r8
lea r9, [r11 - 0x10]
shr r9, 4
add r9, 1
mov rdi, r9
shl rdi, 4
cmp r10, 0xe
jbe 0x40344d
lea r12, [rdx + r8]
xor r10d, r10d
lea rbp, [rbx + r8 + 0x18]
xor r8d, r8d
movdqu xmm0, xmmword [r12 + r8]
add r10, 1
movaps xmmword [rbp + r8], xmm0
add r8, 0x10
cmp r10, r9
jb 0x403428
add rax, rdi
cmp rdi, r11
je 0x40358e
movzx r8d, byte [rdx + rax]
mov byte [rsp + rax + 0x38], r8b
lea r8, [rax + 1]
cmp r8, rcx
jae 0x40358e
movzx r9d, byte [rdx + rax + 1]
lea r8, [rax + 2]
cmp rcx, r8
mov byte [rsp + rax + 0x39], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 2]
lea r8, [rax + 3]
cmp rcx, r8
mov byte [rsp + rax + 0x3a], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 3]
lea r8, [rax + 4]
cmp rcx, r8
mov byte [rsp + rax + 0x3b], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 4]
lea r8, [rax + 5]
cmp rcx, r8
mov byte [rsp + rax + 0x3c], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 5]
lea r8, [rax + 6]
cmp rcx, r8
mov byte [rsp + rax + 0x3d], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 6]
lea r8, [rax + 7]
cmp rcx, r8
mov byte [rsp + rax + 0x3e], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 7]
lea r8, [rax + 8]
cmp rcx, r8
mov byte [rsp + rax + 0x3f], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 8]
lea r8, [rax + 9]
cmp rcx, r8
mov byte [rsp + rax + 0x40], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 9]
lea r8, [rax + 0xa]
cmp rcx, r8
mov byte [rsp + rax + 0x41], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 0xa]
lea r8, [rax + 0xb]
cmp rcx, r8
mov byte [rsp + rax + 0x42], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 0xb]
lea r8, [rax + 0xc]
cmp rcx, r8
mov byte [rsp + rax + 0x43], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 0xc]
lea r8, [rax + 0xd]
cmp rcx, r8
mov byte [rsp + rax + 0x44], r9b
jbe 0x40358e
movzx r9d, byte [rdx + rax + 0xd]
lea r8, [rax + 0xe]
cmp rcx, r8
mov byte [rsp + rax + 0x45], r9b
jbe 0x40358e
movzx eax, byte [rdx + rax + 0xe]
mov byte [rsp + r8 + 0x38], al
mov edx, dword [rsp + 0x20]
and edx, 0x3f
lea eax, [rdx + 1]
mov byte [rsp + rdx + 0x38], 0x80
mov edx, 0x40
sub edx, eax
cmp edx, 7
jbe 0x4036c0
mov edx, 0x38
sub edx, eax
lea rcx, [rbx + rax + 0x18]
call fcn.00401990
mov eax, dword [rsp + 0x20]
mov rcx, rbx
mov r8d, 0x40
shl eax, 3
mov edx, eax
mov dword [rsp + 0x20], eax
shr edx, 8
mov byte [rsp + 0x70], al
mov byte [rsp + 0x71], dl
mov edx, eax
shr eax, 0x18
mov byte [rsp + 0x73], al
mov eax, dword [rsp + 0x24]
shr edx, 0x10
mov byte [rsp + 0x72], dl
mov edx, eax
mov byte [rsp + 0x74], al
shr edx, 8
mov byte [rsp + 0x75], dl
mov edx, eax
shr eax, 0x18
shr edx, 0x10
mov byte [rsp + 0x77], al
mov byte [rsp + 0x76], dl
lea rdx, [rbx + 0x18]
call fcn.00401080
mov eax, dword [rsp + 0x28]
mov rcx, rbx
mov edx, eax
mov byte [rsi], al
shr edx, 8
mov byte [rsi + 1], dl
mov edx, eax
shr eax, 0x18
mov byte [rsi + 3], al
mov eax, dword [rsp + 0x2c]
shr edx, 0x10
mov byte [rsi + 2], dl
mov edx, eax
mov byte [rsi + 4], al
shr edx, 8
mov byte [rsi + 5], dl
mov edx, eax
shr eax, 0x18
mov byte [rsi + 7], al
mov eax, dword [rsp + 0x30]
shr edx, 0x10
mov byte [rsi + 6], dl
mov edx, eax
mov byte [rsi + 8], al
shr edx, 8
mov byte [rsi + 9], dl
mov edx, eax
shr eax, 0x18
mov byte [rsi + 0xb], al
mov eax, dword [rsp + 0x34]
shr edx, 0x10
mov byte [rsi + 0xa], dl
mov edx, eax
mov byte [rsi + 0xc], al
shr edx, 8
mov byte [rsi + 0xd], dl
mov edx, eax
shr eax, 0x18
shr edx, 0x10
mov byte [rsi + 0xf], al
mov byte [rsi + 0xe], dl
lea rax, [rbx + 0x98]
nop word cs:[rax + rax]
mov byte [rcx], 0
add rcx, 1
cmp rcx, rax
jne 0x4036a0
mov rax, rsi
add rsp, 0xc0
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
lea rcx, [rbx + rax + 0x18]
call fcn.00401990
lea rdx, [rbx + 0x18]
mov r8d, 0x40
mov rcx, rbx
call fcn.00401080
mov edx, 0x38
xor eax, eax
jmp 0x4035b4
and r8d, 0xffffffc0
mov rcx, rbx
call fcn.00401080
mov rdx, rax
mov eax, edi
and eax, 0x3f
jmp 0x40331c
mov eax, 1
jmp 0x4033ea
lea r9, [rbx + 0x18]
xor eax, eax
nop dword [rax]
movzx r8d, byte [rdx + rax]
mov byte [r9 + rax], r8b
add rax, 1
cmp rax, rcx
jne 0x403720
jmp 0x40358e
mov eax, 6
jmp 0x4033ea
mov eax, 3
jmp 0x4033ea
mov eax, 4
jmp 0x4033ea
mov eax, 2
jmp 0x4033ea
mov eax, 7
jmp 0x4033ea
mov eax, 5
jmp 0x4033ea