Function at 0x140004c10
Capabilities:
Hash data with md5

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x80
mov ebp, edx
mov edi, 0x98badcfe
mov esi, 0x10325476
mov dword [rsp + 0xc8], edi
mov r15, r8
mov dword [rsp + 0xd8], esi
mov r12d, 0x67452301
mov r13d, 0xefcdab89
lea eax, [rbp + 1]
mov r14d, eax
and eax, 0x3f
cmp al, 0x38
je 0x140004c6f
inc r14d
mov eax, r14d
and eax, 0x3f
cmp al, 0x38
jne 0x140004c62
mov rax, 0xffffffffffffffff
mov ecx, r14d
add rcx, 8
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 0x14000518a
mov rdx, qword [rsp + 0xc0]
mov r8, rbp
mov rcx, rax
mov qword [rsp + 0x78], rbx
call sub.VCRUNTIME140.dll_memcpy
mov r9, qword [rsp + 0x28]
lea edx, [rbp + 1]
mov byte [rbp + r9], 0x80
cmp edx, r14d
jae 0x140004cd7
mov ecx, edx
mov r8d, r14d
sub r8d, edx
add rcx, r9
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov r9, qword [rsp + 0x28]
mov edx, r14d
lea ecx, [rbp*8]
shr ebp, 0x1d
mov eax, ecx
shr eax, 8
mov byte [rdx + r9 + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [rdx + r9 + 2], al
mov eax, ebp
mov byte [rdx + r9], cl
shr eax, 8
shr ecx, 0x18
mov byte [rdx + r9 + 3], cl
mov byte [rdx + r9 + 5], al
mov eax, ebp
shr eax, 0x10
mov byte [rdx + r9 + 6], al
xor eax, eax
mov byte [rdx + r9 + 4], bpl
shr ebp, 0x18
mov byte [rdx + r9 + 7], bpl
mov dword [rsp + 0x20], eax
test r14d, r14d
je 0x140005103
mov r15d, edi
nop word [rax + rax]
movzx ecx, byte [rax + r9 + 3]
shl ecx, 8
mov edx, eax
movzx eax, byte [rax + r9 + 2]
or ecx, eax
shl ecx, 8
movzx eax, byte [rdx + r9 + 1]
or ecx, eax
movzx eax, byte [rdx + r9]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 6]
mov dword [rsp + 0x30], ecx
movzx ecx, byte [rdx + r9 + 7]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0xa]
mov dword [rsp + 0x34], ecx
movzx ecx, byte [rdx + r9 + 0xb]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 8]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0xe]
mov dword [rsp + 0x38], ecx
movzx ecx, byte [rdx + r9 + 0xf]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0xd]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0xc]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x12]
mov dword [rsp + 0x3c], ecx
movzx ecx, byte [rdx + r9 + 0x13]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x11]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x10]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x16]
mov dword [rsp + 0x40], ecx
movzx ecx, byte [rdx + r9 + 0x17]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x15]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x14]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x1a]
mov dword [rsp + 0x44], ecx
movzx ecx, byte [rdx + r9 + 0x1b]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x19]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x18]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x1e]
mov dword [rsp + 0x48], ecx
movzx ecx, byte [rdx + r9 + 0x1f]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x1d]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x1c]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x22]
mov dword [rsp + 0x4c], ecx
movzx ecx, byte [rdx + r9 + 0x23]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x21]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x20]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x26]
mov dword [rsp + 0x50], ecx
movzx ecx, byte [rdx + r9 + 0x27]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x25]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x24]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x2a]
mov dword [rsp + 0x54], ecx
movzx ecx, byte [rdx + r9 + 0x2b]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x29]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x28]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x2e]
mov dword [rsp + 0x58], ecx
movzx ecx, byte [rdx + r9 + 0x2f]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x2d]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x2c]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x32]
mov dword [rsp + 0x5c], ecx
movzx ecx, byte [rdx + r9 + 0x33]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x31]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x30]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x36]
mov dword [rsp + 0x60], ecx
movzx ecx, byte [rdx + r9 + 0x37]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x35]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x34]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x3a]
mov dword [rsp + 0x64], ecx
movzx ecx, byte [rdx + r9 + 0x3b]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x39]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x38]
mov ebx, r15d
shl ecx, 8
lea r15, [0x140000000]
or ecx, eax
mov ebp, r12d
movzx eax, byte [rdx + r9 + 0x3e]
mov r10d, r13d
mov dword [rsp + 0x68], ecx
mov r11d, esi
movzx ecx, byte [rdx + r9 + 0x3f]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x3d]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x3c]
shl ecx, 8
xor r9d, r9d
or ecx, eax
mov dword [rsp + 0x6c], ecx
xor edi, edi
nop dword [rax]
cmp r9d, 0x10
jae 0x14000502a
mov eax, r10d
mov ecx, ebx
not eax
and ecx, r10d
and eax, r11d
or eax, ecx
mov ecx, r9d
jmp 0x140005072
mov eax, r11d
cmp r9d, 0x20
jae 0x14000504c
not eax
mov ecx, r11d
and ecx, r10d
and eax, ebx
or eax, ecx
lea ecx, [r9*4 + 1]
add ecx, r9d
jmp 0x14000506f
cmp r9d, 0x30
jae 0x140005064
xor eax, ebx
lea ecx, [r9*2 + 5]
xor eax, r10d
add ecx, r9d
jmp 0x14000506f
not eax
or eax, r10d
xor eax, ebx
imul ecx, r9d, 7
and ecx, 0xf
mov edx, ecx
mov esi, r11d
mov ecx, dword [rdi + r15 + 0x10650]
mov r11d, ebx
mov ebx, r10d
inc r9d
mov r8d, dword [rsp + rdx*4 + 0x30]
add r8d, dword [rdi + r15 + 0x10550]
add rdi, 4
add r8d, eax
add r8d, ebp
mov ebp, esi
rol r8d, cl
add r10d, r8d
cmp r9d, 0x40
jb 0x140005010
mov r15d, dword [rsp + 0xc8]
add r12d, esi
mov esi, dword [rsp + 0xd8]
add r15d, ebx
mov eax, dword [rsp + 0x20]
add esi, r11d
mov r9, qword [rsp + 0x28]
add eax, 0x40
add r13d, r10d
mov dword [rsp + 0xc8], r15d
mov dword [rsp + 0xd8], esi
mov dword [rsp + 0x20], eax
cmp eax, r14d
jb 0x140004d40
mov r15, qword [rsp + 0xd0]
mov edi, dword [rsp + 0xc8]
mov rcx, r9
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rbx, qword [rsp + 0x78]
mov eax, r12d
shr eax, 8
mov byte [r15 + 1], al
mov eax, r12d
shr eax, 0x10
mov byte [r15 + 2], al
mov eax, r13d
shr eax, 8
mov byte [r15 + 5], al
mov eax, r13d
shr eax, 0x10
mov byte [r15 + 6], al
mov eax, edi
shr eax, 8
mov byte [r15 + 9], al
mov eax, edi
shr eax, 0x10
mov byte [r15 + 0xa], al
mov eax, esi
shr eax, 8
mov byte [r15 + 0xd], al
mov eax, esi
shr eax, 0x10
mov byte [r15], r12b
shr r12d, 0x18
mov byte [r15 + 4], r13b
shr r13d, 0x18
mov byte [r15 + 8], dil
shr edi, 0x18
mov byte [r15 + 0xc], sil
shr esi, 0x18
mov byte [r15 + 0xf], sil
mov byte [r15 + 3], r12b
mov byte [r15 + 7], r13b
mov byte [r15 + 0xb], dil
mov byte [r15 + 0xe], al
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret