Function at 0x14000a390
Capabilities:
Hash data with md5

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x78
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 r14d, [rbp + 1]
mov eax, r14d
and eax, 0x3f
cmp al, 0x38
je 0x14000a3ee
inc r14d
mov eax, r14d
and eax, 0x3f
cmp al, 0x38
jne 0x14000a3e1
mov ecx, r14d
mov rax, 0xffffffffffffffff
add ecx, 8
cmovb rcx, rax
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov rdx, qword [rsp + 0xc0]
mov r8, rbp
mov rcx, rax
mov qword [rsp + 0x28], rax
call sub.VCRUNTIME140.dll_memcpy
mov r9, qword [rsp + 0x28]
lea eax, [rbp + 1]
mov byte [rbp + r9], 0x80
cmp eax, r14d
jae 0x14000a447
mov ecx, eax
mov r8d, r14d
sub r8d, eax
add rcx, r9
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov r9, qword [rsp + 0x28]
lea ecx, [rbp*8]
mov edx, r14d
add rdx, r9
shr ebp, 0x1d
mov eax, ecx
shr eax, 8
mov byte [rdx + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [rdx + 2], al
mov eax, ebp
mov byte [rdx], cl
shr eax, 8
shr ecx, 0x18
mov byte [rdx + 3], cl
mov byte [rdx + 5], al
mov eax, ebp
shr eax, 0x10
mov byte [rdx + 6], al
xor eax, eax
mov byte [rdx + 4], bpl
shr ebp, 0x18
mov byte [rdx + 7], bpl
mov dword [rsp + 0x20], eax
test r14d, r14d
je 0x14000a863
mov r15d, edi
nop dword [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 0x14000a78a
mov eax, r10d
mov ecx, ebx
not eax
and ecx, r10d
and eax, r11d
or eax, ecx
mov ecx, r9d
jmp 0x14000a7d2
mov eax, r11d
cmp r9d, 0x20
jae 0x14000a7ac
not eax
mov ecx, r11d
and ecx, r10d
and eax, ebx
or eax, ecx
lea ecx, [r9*4 + 1]
add ecx, r9d
jmp 0x14000a7cf
cmp r9d, 0x30
jae 0x14000a7c4
xor eax, ebx
lea ecx, [r9*2 + 5]
xor eax, r10d
add ecx, r9d
jmp 0x14000a7cf
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 + 0xe090]
mov r11d, ebx
mov ebx, r10d
inc r9d
mov r8d, dword [rsp + rdx*4 + 0x30]
add r8d, dword [rdi + r15 + 0xdf90]
add rdi, 4
add r8d, eax
add r8d, ebp
mov ebp, esi
rol r8d, cl
add r10d, r8d
cmp r9d, 0x40
jb 0x14000a770
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 0x14000a4a0
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 eax, r12d
mov byte [r15], r12b
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
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, 0x78
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret