Function at 0x140051a80
Capabilities:
Hash data with md5

Disassembly:
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
mov edi, edx
mov rbp, rcx
mov r12d, 0x67452301
mov dword [rsp + 0xb8], 0x98badcfe
mov r13d, 0xefcdab89
mov dword [rsp + 0xc8], 0x10325476
lea esi, [rdi + 1]
mov eax, esi
mov dword [rsp + 0x20], esi
and eax, 0x3f
mov r15d, esi
cmp al, 0x38
je 0x140051ae2
nop
inc r15d
mov eax, r15d
and eax, 0x3f
cmp al, 0x38
jne 0x140051ad0
mov dword [rsp + 0x20], r15d
mov rax, 0xffffffffffffffff
mov ecx, r15d
add rcx, 8
mov r14d, r15d
cmovb rcx, rax
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov qword [rsp + 0x28], rax
test rax, rax
je 0x140051f03
mov r8, rdi
mov qword [rsp + 0xb0], rbx
mov rdx, rbp
mov rcx, rax
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x28]
mov byte [rdi + rax], 0x80
cmp esi, r15d
jae 0x140051b46
mov ecx, esi
mov r8d, r15d
sub r8d, esi
add rcx, rax
xor edx, edx
mov rsi, rax
call fcn.14010f3d6
jmp 0x140051b49
mov rsi, rax
lea rbx, [r14 + rsi]
mov rdx, rbx
lea ecx, [rdi*8]
call fcn.1400526c0
shr edi, 0x1d
lea rdx, [rbx + 4]
mov ecx, edi
call fcn.1400526c0
xor ebp, ebp
test r15d, r15d
je 0x140051eb3
nop word [rax + rax]
mov ebx, ebp
add rbx, rsi
mov rcx, rbx
call fcn.1400526f0
lea rcx, [rbx + 4]
mov dword [rsp + 0x30], eax
call fcn.1400526f0
lea rcx, [rbx + 8]
mov dword [rsp + 0x34], eax
call fcn.1400526f0
lea rcx, [rbx + 0xc]
mov dword [rsp + 0x38], eax
call fcn.1400526f0
lea rcx, [rbx + 0x10]
mov dword [rsp + 0x3c], eax
call fcn.1400526f0
lea rcx, [rbx + 0x14]
mov dword [rsp + 0x40], eax
call fcn.1400526f0
lea rcx, [rbx + 0x18]
mov dword [rsp + 0x44], eax
call fcn.1400526f0
lea rcx, [rbx + 0x1c]
mov dword [rsp + 0x48], eax
call fcn.1400526f0
lea rcx, [rbx + 0x20]
mov dword [rsp + 0x4c], eax
call fcn.1400526f0
lea rcx, [rbx + 0x24]
mov dword [rsp + 0x50], eax
call fcn.1400526f0
lea rcx, [rbx + 0x28]
mov dword [rsp + 0x54], eax
call fcn.1400526f0
lea rcx, [rbx + 0x2c]
mov dword [rsp + 0x58], eax
call fcn.1400526f0
lea rcx, [rbx + 0x30]
mov dword [rsp + 0x5c], eax
call fcn.1400526f0
lea rcx, [rbx + 0x34]
mov dword [rsp + 0x60], eax
call fcn.1400526f0
lea rcx, [rbx + 0x38]
mov dword [rsp + 0x64], eax
call fcn.1400526f0
lea rcx, [rbx + 0x3c]
mov dword [rsp + 0x68], eax
call fcn.1400526f0
mov edi, dword [rsp + 0xb8]
lea r15, [0x140000000]
mov r11d, dword [rsp + 0xc8]
xor r10d, r10d
xor r14d, r14d
mov dword [rsp + 0x6c], eax
mov ebx, r12d
mov r9d, r13d
cmp r10d, 0x10
jae 0x140051c90
mov eax, edi
mov ecx, r9d
not ecx
and eax, r9d
and ecx, r11d
or ecx, eax
mov eax, r10d
jmp 0x140051cd8
mov ecx, r11d
cmp r10d, 0x20
jae 0x140051cb2
not ecx
mov eax, r11d
and eax, r9d
and ecx, edi
or ecx, eax
lea eax, [r10*4 + 1]
add eax, r10d
jmp 0x140051cd5
cmp r10d, 0x30
jae 0x140051cca
xor ecx, edi
lea eax, [r10*2 + 5]
xor ecx, r9d
add eax, r10d
jmp 0x140051cd5
not ecx
or ecx, r9d
xor ecx, edi
imul eax, r10d, 7
and eax, 0xf
mov edx, dword [rsp + rax*4 + 0x30]
lea r8d, [r10 + 2]
add edx, dword [r14 + r15 + 0x121540]
mov esi, r9d
add edx, ecx
movzx ecx, byte [r14 + r15 + 0x121640]
add edx, ebx
rol edx, cl
add r9d, edx
lea edx, [r8 - 1]
cmp edx, 0x10
jae 0x140051d16
mov ecx, r9d
mov eax, esi
not ecx
and eax, r9d
and ecx, edi
or ecx, eax
jmp 0x140051d5a
mov ecx, edi
cmp edx, 0x20
jae 0x140051d35
not ecx
lea edx, [r10*4 + 6]
and ecx, esi
mov eax, edi
and eax, r9d
or ecx, eax
add edx, r10d
jmp 0x140051d57
cmp edx, 0x30
jae 0x140051d49
xor ecx, esi
lea edx, [r10 - 4]
xor ecx, r9d
lea edx, [r10 + rdx*2]
jmp 0x140051d57
not ecx
lea eax, [r10 + 1]
or ecx, r9d
xor ecx, esi
imul edx, eax, 7
and edx, 0xf
mov edx, dword [rsp + rdx*4 + 0x30]
mov ebx, r9d
add edx, dword [r14 + r15 + 0x121544]
add edx, ecx
movzx ecx, byte [r14 + r15 + 0x121644]
add edx, r11d
rol edx, cl
add r9d, edx
cmp r8d, 0x10
jae 0x140051d95
mov eax, ebx
mov ecx, r9d
not ecx
and eax, r9d
and ecx, esi
or ecx, eax
mov eax, r8d
jmp 0x140051dda
mov ecx, esi
cmp r8d, 0x20
jae 0x140051db1
not ecx
mov eax, esi
and eax, r9d
and ecx, ebx
or ecx, eax
lea eax, [r10 - 1]
lea eax, [rax + rax*4]
jmp 0x140051dd7
cmp r8d, 0x30
jae 0x140051dc9
xor ecx, ebx
lea eax, [r10*2 - 5]
xor ecx, r9d
add eax, r10d
jmp 0x140051dd7
not ecx
imul eax, r10d, 7
or ecx, r9d
xor ecx, ebx
sub eax, 2
and eax, 0xf
mov edx, dword [rsp + rax*4 + 0x30]
mov r11d, r9d
add edx, dword [r14 + r15 + 0x121548]
add edx, ecx
movzx ecx, byte [r14 + r15 + 0x121648]
add edx, edi
rol edx, cl
add r9d, edx
lea edx, [r8 + 1]
cmp edx, 0x10
jae 0x140051e15
mov eax, r9d
mov ecx, r11d
not eax
and ecx, r9d
and eax, ebx
or eax, ecx
jmp 0x140051e55
mov eax, ebx
cmp edx, 0x20
jae 0x140051e2e
not eax
lea edx, [r10 + r10*4]
mov ecx, ebx
and eax, r11d
and ecx, r9d
or eax, ecx
jmp 0x140051e52
cmp edx, 0x30
jae 0x140051e43
xor eax, r11d
lea edx, [r10 - 1]
xor eax, r9d
lea edx, [r10 + rdx*2]
jmp 0x140051e52
not eax
imul edx, r10d, 7
or eax, r9d
xor eax, r11d
add edx, 5
and edx, 0xf
movzx ecx, byte [r14 + r15 + 0x12164c]
mov edi, r9d
mov r8d, dword [rsp + rdx*4 + 0x30]
add r10d, 4
add r8d, dword [r14 + r15 + 0x12154c]
add r14, 0x10
add r8d, eax
add r8d, esi
rol r8d, cl
add r9d, r8d
cmp r10d, 0x40
jb 0x140051c76
add dword [rsp + 0xb8], edi
add r12d, ebx
add dword [rsp + 0xc8], r11d
add r13d, r9d
mov rsi, qword [rsp + 0x28]
add ebp, 0x40
cmp ebp, dword [rsp + 0x20]
jb 0x140051b80
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rbx, qword [rsp + 0xc0]
mov ecx, r12d
mov rdx, rbx
call fcn.1400526c0
lea rdx, [rbx + 4]
mov ecx, r13d
call fcn.1400526c0
mov ecx, dword [rsp + 0xb8]
lea rdx, [rbx + 8]
call fcn.1400526c0
mov ecx, dword [rsp + 0xc8]
lea rdx, [rbx + 0xc]
call fcn.1400526c0
mov rbx, qword [rsp + 0xb0]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret