Function at 0x403240
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 0x403670
test eax, eax
mov ecx, eax
je 0x40350e
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 0x403693
cmp eax, 0x14
jbe 0x403693
cmp rcx, 8
mov r8d, 8
movzx eax, byte [rdx]
cmovbe r8, rcx
cmp r8, 1
mov byte [rsp + 0x38], al
je 0x403689
movzx eax, byte [rdx + 1]
cmp r8, 2
mov byte [rsp + 0x39], al
je 0x4036d5
movzx eax, byte [rdx + 2]
cmp r8, 3
mov byte [rsp + 0x3a], al
je 0x4036c1
movzx eax, byte [rdx + 3]
cmp r8, 4
mov byte [rsp + 0x3b], al
je 0x4036cb
movzx eax, byte [rdx + 4]
cmp r8, 5
mov byte [rsp + 0x3c], al
je 0x4036e9
movzx eax, byte [rdx + 5]
cmp r8, 6
mov byte [rsp + 0x3d], al
je 0x4036b7
movzx eax, byte [rdx + 6]
cmp r8, 7
mov byte [rsp + 0x3e], al
je 0x4036df
movzx eax, byte [rdx + 7]
mov byte [rsp + 0x3f], al
mov eax, 8
cmp rcx, r8
je 0x40350e
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 0x4033cd
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 0x4033a8
add rax, rdi
cmp rdi, r11
je 0x40350e
movzx r8d, byte [rdx + rax]
mov byte [rsp + rax + 0x38], r8b
lea r8, [rax + 1]
cmp r8, rcx
jae 0x40350e
movzx r9d, byte [rdx + rax + 1]
lea r8, [rax + 2]
cmp rcx, r8
mov byte [rsp + rax + 0x39], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 2]
lea r8, [rax + 3]
cmp rcx, r8
mov byte [rsp + rax + 0x3a], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 3]
lea r8, [rax + 4]
cmp rcx, r8
mov byte [rsp + rax + 0x3b], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 4]
lea r8, [rax + 5]
cmp rcx, r8
mov byte [rsp + rax + 0x3c], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 5]
lea r8, [rax + 6]
cmp rcx, r8
mov byte [rsp + rax + 0x3d], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 6]
lea r8, [rax + 7]
cmp rcx, r8
mov byte [rsp + rax + 0x3e], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 7]
lea r8, [rax + 8]
cmp rcx, r8
mov byte [rsp + rax + 0x3f], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 8]
lea r8, [rax + 9]
cmp rcx, r8
mov byte [rsp + rax + 0x40], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 9]
lea r8, [rax + 0xa]
cmp rcx, r8
mov byte [rsp + rax + 0x41], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 0xa]
lea r8, [rax + 0xb]
cmp rcx, r8
mov byte [rsp + rax + 0x42], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 0xb]
lea r8, [rax + 0xc]
cmp rcx, r8
mov byte [rsp + rax + 0x43], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 0xc]
lea r8, [rax + 0xd]
cmp rcx, r8
mov byte [rsp + rax + 0x44], r9b
jbe 0x40350e
movzx r9d, byte [rdx + rax + 0xd]
lea r8, [rax + 0xe]
cmp rcx, r8
mov byte [rsp + rax + 0x45], r9b
jbe 0x40350e
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], pe_nt_image_headers64
mov edx, 0x40
sub edx, eax
cmp edx, 7
jbe 0x403640
mov edx, 0x38
sub edx, eax
lea rcx, [rbx + rax + 0x18]
call fcn.00401910
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.00401000
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 0x403620
mov rax, rsi
add rsp, 0xc0
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
lea rcx, [rbx + rax + 0x18]
call fcn.00401910
lea rdx, [rbx + 0x18]
mov r8d, 0x40
mov rcx, rbx
call fcn.00401000
mov edx, 0x38
xor eax, eax
jmp 0x403534
and r8d, 0xffffffc0
mov rcx, rbx
call fcn.00401000
mov rdx, rax
mov eax, edi
and eax, 0x3f
jmp 0x40329c
mov eax, 1
jmp 0x40336a
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 0x4036a0
jmp 0x40350e
mov eax, 6
jmp 0x40336a
mov eax, 3
jmp 0x40336a
mov eax, 4
jmp 0x40336a
mov eax, 2
jmp 0x40336a
mov eax, 7
jmp 0x40336a
mov eax, 5
jmp 0x40336a