Function at 0x140160410
Capabilities:
Hash data using sha1
Hash data using sha224
Hash data using sha256

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
mov r8d, dword [rcx + 0x34]
mov rbx, rcx
shr r8d, 3
mov eax, 0x3f
and r8d, 0x3f
mov rdi, rdx
mov ecx, r8d
sub eax, r8d
add rcx, rbx
xor edx, edx
mov byte [rcx + 0x90], 0x80
add rcx, 0x91
cmp eax, 8
jae 0x140160492
mov r8d, eax
call sub.VCRUNTIME140.dll_memset
cmp dword [rbx + 0x10], 0xa0
mov rcx, rbx
jne 0x14016046a
call fcn.14015fe40
jmp 0x14016046f
call fcn.1401607a0
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbx + 0x90], xmm0
movups xmmword [rbx + 0xa0], xmm0
movups xmmword [rbx + 0xb0], xmm0
mov qword [rbx + 0xc0], rax
jmp 0x14016049d
add eax, 0xfffffff8
mov r8d, eax
call sub.VCRUNTIME140.dll_memset
movzx eax, byte [rbx + 0x38]
mov rcx, rbx
mov byte [rbx + 0xcb], al
movzx eax, byte [rbx + 0x39]
mov byte [rbx + 0xca], al
movzx eax, byte [rbx + 0x3a]
mov byte [rbx + 0xc9], al
movzx eax, byte [rbx + 0x3b]
mov byte [rbx + 0xc8], al
movzx eax, byte [rbx + 0x34]
mov byte [rbx + 0xcf], al
movzx eax, byte [rbx + 0x35]
mov byte [rbx + 0xce], al
movzx eax, byte [rbx + 0x36]
mov byte [rbx + 0xcd], al
movzx eax, byte [rbx + 0x37]
mov byte [rbx + 0xcc], al
cmp dword [rbx + 0x10], 0xa0
jne 0x140160500
call fcn.14015fe40
jmp 0x140160505
call fcn.1401607a0
mov ecx, dword [rbx + 0x10]
sub ecx, 0xa0
je 0x140160700
sub ecx, 0x40
je 0x140160620
cmp ecx, 0x20
jne 0x14016078b
movzx eax, byte [rbx + 0x14]
mov rcx, rbx
mov byte [rdi + 3], al
movzx eax, byte [rbx + 0x15]
mov byte [rdi + 2], al
movzx eax, byte [rbx + 0x16]
mov byte [rdi + 1], al
movzx eax, byte [rbx + 0x17]
mov byte [rdi], al
movzx eax, byte [rbx + 0x18]
mov byte [rdi + 7], al
movzx eax, byte [rbx + 0x19]
mov byte [rdi + 6], al
movzx eax, byte [rbx + 0x1a]
mov byte [rdi + 5], al
movzx eax, byte [rbx + 0x1b]
mov byte [rdi + 4], al
movzx eax, byte [rbx + 0x1c]
mov byte [rdi + 0xb], al
movzx eax, byte [rbx + 0x1d]
mov byte [rdi + 0xa], al
movzx eax, byte [rbx + 0x1e]
mov byte [rdi + 9], al
movzx eax, byte [rbx + 0x1f]
mov byte [rdi + 8], al
movzx eax, byte [rbx + 0x20]
mov byte [rdi + 0xf], al
movzx eax, byte [rbx + 0x21]
mov byte [rdi + 0xe], al
movzx eax, byte [rbx + 0x22]
mov byte [rdi + 0xd], al
movzx eax, byte [rbx + 0x23]
mov byte [rdi + 0xc], al
movzx eax, byte [rbx + 0x24]
mov byte [rdi + 0x13], al
movzx eax, byte [rbx + 0x25]
mov byte [rdi + 0x12], al
movzx eax, byte [rbx + 0x26]
mov byte [rdi + 0x11], al
movzx eax, byte [rbx + 0x27]
mov byte [rdi + 0x10], al
movzx eax, byte [rbx + 0x28]
mov byte [rdi + 0x17], al
movzx eax, byte [rbx + 0x29]
mov byte [rdi + 0x16], al
movzx eax, byte [rbx + 0x2a]
mov byte [rdi + 0x15], al
movzx eax, byte [rbx + 0x2b]
mov byte [rdi + 0x14], al
movzx eax, byte [rbx + 0x2c]
mov byte [rdi + 0x1b], al
movzx eax, byte [rbx + 0x2d]
mov byte [rdi + 0x1a], al
movzx eax, byte [rbx + 0x2e]
mov byte [rdi + 0x19], al
movzx eax, byte [rbx + 0x2f]
mov byte [rdi + 0x18], al
movzx eax, byte [rbx + 0x30]
mov byte [rdi + 0x1f], al
movzx eax, byte [rbx + 0x31]
mov byte [rdi + 0x1e], al
movzx eax, byte [rbx + 0x32]
mov byte [rdi + 0x1d], al
movzx eax, byte [rbx + 0x33]
mov byte [rdi + 0x1c], al
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
jmp fcn.14015d9b0
movzx eax, byte [rbx + 0x14]
mov rcx, rbx
mov byte [rdi + 3], al
movzx eax, byte [rbx + 0x15]
mov byte [rdi + 2], al
movzx eax, byte [rbx + 0x16]
mov byte [rdi + 1], al
movzx eax, byte [rbx + 0x17]
mov byte [rdi], al
movzx eax, byte [rbx + 0x18]
mov byte [rdi + 7], al
movzx eax, byte [rbx + 0x19]
mov byte [rdi + 6], al
movzx eax, byte [rbx + 0x1a]
mov byte [rdi + 5], al
movzx eax, byte [rbx + 0x1b]
mov byte [rdi + 4], al
movzx eax, byte [rbx + 0x1c]
mov byte [rdi + 0xb], al
movzx eax, byte [rbx + 0x1d]
mov byte [rdi + 0xa], al
movzx eax, byte [rbx + 0x1e]
mov byte [rdi + 9], al
movzx eax, byte [rbx + 0x1f]
mov byte [rdi + 8], al
movzx eax, byte [rbx + 0x20]
mov byte [rdi + 0xf], al
movzx eax, byte [rbx + 0x21]
mov byte [rdi + 0xe], al
movzx eax, byte [rbx + 0x22]
mov byte [rdi + 0xd], al
movzx eax, byte [rbx + 0x23]
mov byte [rdi + 0xc], al
movzx eax, byte [rbx + 0x24]
mov byte [rdi + 0x13], al
movzx eax, byte [rbx + 0x25]
mov byte [rdi + 0x12], al
movzx eax, byte [rbx + 0x26]
mov byte [rdi + 0x11], al
movzx eax, byte [rbx + 0x27]
mov byte [rdi + 0x10], al
movzx eax, byte [rbx + 0x28]
mov byte [rdi + 0x17], al
movzx eax, byte [rbx + 0x29]
mov byte [rdi + 0x16], al
movzx eax, byte [rbx + 0x2a]
mov byte [rdi + 0x15], al
movzx eax, byte [rbx + 0x2b]
mov byte [rdi + 0x14], al
movzx eax, byte [rbx + 0x2c]
mov byte [rdi + 0x1b], al
movzx eax, byte [rbx + 0x2d]
mov byte [rdi + 0x1a], al
movzx eax, byte [rbx + 0x2e]
mov byte [rdi + 0x19], al
movzx eax, byte [rbx + 0x2f]
mov byte [rdi + 0x18], al
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
jmp fcn.14015d9b0
movzx eax, byte [rbx + 0x14]
mov byte [rdi + 3], al
movzx eax, byte [rbx + 0x15]
mov byte [rdi + 2], al
movzx eax, byte [rbx + 0x16]
mov byte [rdi + 1], al
movzx eax, byte [rbx + 0x17]
mov byte [rdi], al
movzx eax, byte [rbx + 0x18]
mov byte [rdi + 7], al
movzx eax, byte [rbx + 0x19]
mov byte [rdi + 6], al
movzx eax, byte [rbx + 0x1a]
mov byte [rdi + 5], al
movzx eax, byte [rbx + 0x1b]
mov byte [rdi + 4], al
movzx eax, byte [rbx + 0x1c]
mov byte [rdi + 0xb], al
movzx eax, byte [rbx + 0x1d]
mov byte [rdi + 0xa], al
movzx eax, byte [rbx + 0x1e]
mov byte [rdi + 9], al
movzx eax, byte [rbx + 0x1f]
mov byte [rdi + 8], al
movzx eax, byte [rbx + 0x20]
mov byte [rdi + 0xf], al
movzx eax, byte [rbx + 0x21]
mov byte [rdi + 0xe], al
movzx eax, byte [rbx + 0x22]
mov byte [rdi + 0xd], al
movzx eax, byte [rbx + 0x23]
mov byte [rdi + 0xc], al
movzx eax, byte [rbx + 0x24]
mov byte [rdi + 0x13], al
movzx eax, byte [rbx + 0x25]
mov byte [rdi + 0x12], al
movzx eax, byte [rbx + 0x26]
mov byte [rdi + 0x11], al
movzx eax, byte [rbx + 0x27]
mov byte [rdi + 0x10], al
mov rcx, rbx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
jmp fcn.14015d9b0