Function at 0x1400010d0
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
lea r14, [rdx + 1]
mov esi, 0x98badcfe
movzx eax, r14b
mov dword [rsp + 0xc8], esi
and al, 0x3f
mov r15, r8
mov rdi, rdx
mov r12d, 0x67452301
mov r13d, 0xefcdab89
mov ebp, 0x10325476
mov rbx, r14
cmp al, 0x38
je 0x14000112c
nop
inc rbx
movzx eax, bl
and al, 0x3f
cmp al, 0x38
jne 0x140001120
mov rax, 0xffffffffffffffff
mov rcx, rbx
add rcx, 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, rdi
mov rcx, rax
mov qword [rsp + 0xd8], rax
call sub.VCRUNTIME140.dll_memcpy
mov rdx, qword [rsp + 0xd8]
mov byte [rdx + rdi], 0x80
cmp r14, rbx
jae 0x140001189
lea rcx, [r14 + rdx]
mov r8, rbx
sub r8, r14
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov rdx, qword [rsp + 0xd8]
lea ecx, [rdi*8]
shr rdi, 0x1d
mov byte [rbx + rdx], cl
mov eax, ecx
shr eax, 8
mov byte [rbx + rdx + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [rbx + rdx + 2], al
mov eax, edi
shr eax, 8
shr ecx, 0x18
mov byte [rbx + rdx + 3], cl
mov byte [rbx + rdx + 5], al
mov eax, edi
shr eax, 0x10
mov byte [rbx + rdx + 4], dil
shr edi, 0x18
mov byte [rbx + rdx + 6], al
mov byte [rbx + rdx + 7], dil
test rbx, rbx
je 0x14000155f
lea r14, [rdx + 6]
mov r15d, ebp
lea rdx, [rbx - 1]
shr rdx, 6
inc rdx
mov qword [rsp + 0x20], rdx
nop
movzx eax, byte [r14 - 4]
movzx ecx, byte [r14 - 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 - 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 - 6]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14]
mov dword [rsp + 0x30], ecx
movzx ecx, byte [r14 + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 - 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 - 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 4]
mov dword [rsp + 0x34], ecx
movzx ecx, byte [r14 + 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 8]
mov dword [rsp + 0x38], ecx
movzx ecx, byte [r14 + 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 7]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 6]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0xc]
mov dword [rsp + 0x3c], ecx
movzx ecx, byte [r14 + 0xd]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0xb]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0xa]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x10]
mov dword [rsp + 0x40], ecx
movzx ecx, byte [r14 + 0x11]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0xf]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0xe]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x14]
mov dword [rsp + 0x44], ecx
movzx ecx, byte [r14 + 0x15]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x13]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x12]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x18]
mov dword [rsp + 0x48], ecx
movzx ecx, byte [r14 + 0x19]
shl ecx, 8
or ecx, eax
shl ecx, 8
movzx eax, byte [r14 + 0x17]
or ecx, eax
movzx eax, byte [r14 + 0x16]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x1c]
mov dword [rsp + 0x4c], ecx
movzx ecx, byte [r14 + 0x1d]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x1b]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x1a]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x20]
mov dword [rsp + 0x50], ecx
movzx ecx, byte [r14 + 0x21]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x1f]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x1e]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x24]
mov dword [rsp + 0x54], ecx
movzx ecx, byte [r14 + 0x25]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x23]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x22]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x28]
mov dword [rsp + 0x58], ecx
movzx ecx, byte [r14 + 0x29]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x27]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x26]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x2c]
mov dword [rsp + 0x5c], ecx
movzx ecx, byte [r14 + 0x2d]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x2b]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x2a]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x30]
mov dword [rsp + 0x60], ecx
movzx ecx, byte [r14 + 0x31]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x2f]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x2e]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x34]
mov dword [rsp + 0x64], ecx
movzx ecx, byte [r14 + 0x35]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x33]
shl ecx, 8
or ecx, eax
shl ecx, 8
movzx eax, byte [r14 + 0x32]
xor r9d, r9d
or ecx, eax
mov ebp, r12d
movzx eax, byte [r14 + 0x38]
mov r10d, r13d
mov dword [rsp + 0x68], ecx
mov ebx, esi
movzx ecx, byte [r14 + 0x39]
mov r11d, r15d
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x37]
shl ecx, 8
or ecx, eax
movzx eax, byte [r14 + 0x36]
shl ecx, 8
or ecx, eax
mov dword [rsp + 0x6c], ecx
xor edi, edi
nop
cmp r9d, 0x10
jae 0x14000148a
mov eax, r10d
mov ecx, ebx
not eax
and ecx, r10d
and eax, r11d
or eax, ecx
mov ecx, r9d
jmp 0x1400014d2
mov eax, r11d
cmp r9d, 0x20
jae 0x1400014ac
not eax
mov ecx, r11d
and ecx, r10d
and eax, ebx
or eax, ecx
lea ecx, [r9*4 + 1]
add ecx, r9d
jmp 0x1400014cf
cmp r9d, 0x30
jae 0x1400014c4
xor eax, ebx
lea ecx, [r9*2 + 5]
xor eax, r10d
add ecx, r9d
jmp 0x1400014cf
not eax
or eax, r10d
xor eax, ebx
imul ecx, r9d, 7
and ecx, 0xf
mov edx, ecx
mov esi, r11d
mov r11d, ebx
inc r9d
mov ebx, r10d
mov r8d, dword [rsp + rdx*4 + 0x30]
lea rdx, [0x140000000]
add r8d, dword [rdi + rdx + 0x3410]
mov ecx, dword [rdi + rdx + 0x3510]
add r8d, eax
add r8d, ebp
add rdi, 4
rol r8d, cl
mov ebp, esi
add r10d, r8d
cmp r9d, 0x40
jb 0x140001470
add r12d, esi
add r13d, r10d
mov esi, dword [rsp + 0xc8]
add r15d, r11d
add esi, ebx
add r14, 0x40
sub qword [rsp + 0x20], 1
mov dword [rsp + 0xc8], esi
jne 0x1400011f0
mov rdx, qword [rsp + 0xd8]
mov dword [rsp + 0xc8], r15d
mov ebp, dword [rsp + 0xc8]
mov r15, qword [rsp + 0xd0]
mov rcx, rdx
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, esi
shr eax, 8
mov byte [r15 + 9], al
mov eax, esi
shr eax, 0x10
mov byte [r15 + 0xa], al
mov eax, ebp
shr eax, 8
mov byte [r15 + 0xd], al
mov eax, ebp
shr eax, 0x10
shr r12d, 0x18
mov byte [r15 + 4], r13b
shr r13d, 0x18
mov byte [r15 + 8], sil
shr esi, 0x18
mov byte [r15 + 0xc], bpl
shr ebp, 0x18
mov byte [r15 + 0xf], bpl
mov byte [r15 + 3], r12b
mov byte [r15 + 7], r13b
mov byte [r15 + 0xb], sil
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