Function at 0x1400015f0
Capabilities:
Hash data using sha512

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x50]
sub rsp, 0x150
mov rax, qword [0x140253f68]
xor rax, rsp
mov qword [rbp + 0x40], rax
mov rax, qword [rcx]
movaps xmm2, xmmword [0x14023a340]
movaps xmm0, xmmword [0x14023a320]
movq rdi, xmm2
xor rdi, qword [r8]
movaps xmm1, xmmword [0x14023a330]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x18], rax
mov rax, qword [rcx + 8]
mov qword [rbp - 0x80], rax
mov r14, rax
mov rax, qword [rcx + 0x10]
mov qword [rbp - 0x78], rax
mov qword [rsp + 0x30], rax
mov rax, qword [rcx + 0x18]
mov qword [rbp - 0x70], rax
mov qword [rsp + 0x10], rax
mov rax, qword [rcx + 0x20]
mov qword [rbp - 0x60], rax
mov r13, rax
mov rax, qword [rcx + 0x28]
mov qword [rbp - 0x58], rax
mov rsi, rax
mov rax, qword [rcx + 0x30]
movaps xmmword [rbp + 0x20], xmm2
mov r12, qword [rbp + 0x28]
xor r12, qword [r8 + 8]
mov qword [rbp - 0x50], rax
mov qword [rsp + 0x38], rax
mov rax, qword [rcx + 0x38]
mov qword [rbp - 0x48], rax
mov r15, rax
mov qword [rsp + 8], rdx
mov qword [rsp + 0x78], rcx
movups xmmword [rbp], xmm0
movaps xmm0, xmmword [0x14023a350]
movups xmmword [rbp + 0x30], xmm0
mov rbx, qword [rbp + 0x30]
movups xmmword [rbp + 0x10], xmm1
test r9d, r9d
je 0x1400016d4
not rbx
mov rax, qword [rbp + 0x18]
lea r11, [0x14023a362]
mov r10, qword [rbp + 0x38]
mov r8, qword [rbp]
mov rcx, qword [rsp + 0x10]
mov qword [rsp + 0x40], rax
mov rax, qword [rbp + 0x10]
mov qword [rsp + 0x28], rax
mov rax, qword [rbp + 8]
mov qword [rsp + 0x20], rax
mov qword [rsp], r11
jmp 0x140001715
mov r8, qword [rsp + 0x10]
movzx eax, byte [r11 - 2]
mov r9, rdi
mov rdx, qword [rdx + rax*8]
mov rax, qword [rsp + 0x18]
add rdx, r13
add rax, rdx
xor r9, rax
mov qword [rsp + 0x18], rax
xor rdi, rax
shr r9, 0x20
movzx eax, byte [r11 - 1]
shl rdi, 0x20
xor r9, rdi
mov rdi, qword [rsp + 8]
mov r11, qword [rdi + rax*8]
lea rdx, [r8 + r9]
add r11, qword [rsp + 0x18]
mov rax, r9
mov r8, r13
xor r13, rdx
xor r8, rdx
shr r13, 0x18
shl r8, 0x28
xor r8, r13
mov r13, qword [rsp]
add r11, r8
xor rax, r11
xor r9, r11
shl rax, 0x30
shr r9, 0x10
xor rax, r9
mov r9, r12
mov qword [rsp + 0x10], rax
add rax, rdx
mov rdx, rax
mov qword [rbp], rax
xor rax, r8
xor rdx, r8
add rax, rax
shr rdx, 0x3f
xor rdx, rax
mov r8, rsi
movzx eax, byte [r13]
mov qword [rsp + 0x50], rdx
mov rdx, qword [rdi + rax*8]
movzx eax, byte [r13 + 1]
add rdx, rsi
add r14, rdx
mov rdx, qword [rsp + 0x20]
xor r9, r14
xor r12, r14
shl r12, 0x20
shr r9, 0x20
xor r9, r12
mov r12, qword [rdi + rax*8]
add rdx, r9
mov rax, r9
xor rsi, rdx
xor r8, rdx
shr rsi, 0x18
add r12, r14
shl r8, 0x28
xor r8, rsi
add r12, r8
xor rax, r12
xor r9, r12
shl rax, 0x30
shr r9, 0x10
xor rax, r9
mov qword [rsp + 0x20], rax
add rax, rdx
mov rsi, rax
mov qword [rbp + 8], rax
xor rax, r8
xor rsi, r8
add rax, rax
shr rsi, 0x3f
xor rsi, rax
movzx eax, byte [r13 + 2]
mov rdx, qword [rdi + rax*8]
mov rdi, qword [rsp + 0x38]
mov r14, qword [rsp + 0x30]
add rdx, rdi
add r14, rdx
mov r8, rdi
mov rdx, qword [rsp + 0x28]
mov r9, r14
xor r9, rbx
mov rax, r14
xor rax, rbx
shr r9, 0x20
shl rax, 0x20
xor r9, rax
movzx eax, byte [r13 + 3]
add rdx, r9
xor r8, rdx
xor rdi, rdx
shr r8, 0x18
shl rdi, 0x28
xor r8, rdi
mov rdi, qword [rsp + 8]
mov r13, qword [rdi + rax*8]
mov rax, r9
mov rdi, qword [rsp]
add r13, r8
add r13, r14
xor rax, r13
xor r9, r13
shl rax, 0x30
shr r9, 0x10
xor rax, r9
mov r9, r10
mov qword [rsp + 0x60], rax
lea rbx, [rdx + rax]
mov rdx, qword [rsp + 8]
mov r14, rbx
mov rax, rbx
xor rax, r8
xor r14, r8
add rax, rax
shr r14, 0x3f
xor r14, rax
mov r8, r15
movzx eax, byte [rdi + 4]
mov rdx, qword [rdx + rax*8]
movzx eax, byte [rdi + 5]
add rdx, r15
mov rdi, qword [rsp + 8]
add rcx, rdx
mov rdx, qword [rsp + 0x40]
xor r10, rcx
xor r9, rcx
shl r10, 0x20
shr r9, 0x20
mov rax, qword [rdi + rax*8]
xor r9, r10
add rdx, r9
mov r10, r9
xor r15, rdx
xor r8, rdx
shr r15, 0x18
shl r8, 0x28
xor r8, r15
add rax, r8
add rax, rcx
mov rcx, qword [rsp + 8]
xor r10, rax
mov qword [rsp + 0x58], rax
xor r9, rax
shl r10, 0x30
shr r9, 0x10
xor r10, r9
lea rdi, [rdx + r10]
mov r15, rdi
mov rax, rdi
xor rax, r8
xor r15, r8
add rax, rax
shr r15, 0x3f
xor r15, rax
mov rax, qword [rsp]
movzx eax, byte [rax + 6]
mov r9, qword [rcx + rax*8]
add r9, rsi
add r9, r11
mov r11, r9
mov rax, r9
xor rax, r10
xor r11, r10
shl rax, 0x20
shr r11, 0x20
xor r11, rax
lea r8, [rbx + r11]
mov rbx, qword [rsp]
mov r10, r8
mov rax, r8
xor rax, rsi
xor r10, rsi
shr rax, 0x18
shl r10, 0x28
xor r10, rax
movzx eax, byte [rbx + 7]
mov rsi, r10
mov rdx, qword [rcx + rax*8]
mov rax, r11
add rdx, r10
add rdx, r9
xor rax, rdx
mov qword [rsp + 0x18], rdx
shl rax, 0x30
xor r11, rdx
shr r11, 0x10
xor rax, r11
mov r11, r14
mov qword [rsp + 0x48], rax
add rax, r8
xor r10, rax
mov qword [rsp + 0x28], rax
xor rsi, rax
add r10, r10
movzx eax, byte [rbx + 8]
shr rsi, 0x3f
xor rsi, r10
mov r8, qword [rcx + rax*8]
add r8, r14
add r8, r12
mov r10, r8
mov rax, r8
xor rax, qword [rsp + 0x10]
xor r10, qword [rsp + 0x10]
shl rax, 0x20
shr r10, 0x20
xor r10, rax
movzx eax, byte [rbx + 9]
lea r9, [rdi + r10]
xor r14, r9
xor r11, r9
shr r14, 0x18
shl r11, 0x28
xor r11, r14
mov r14, qword [rcx + rax*8]
add r14, r8
add r14, r11
mov rdi, r14
mov rax, r14
xor rax, r10
xor rdi, r10
shr rax, 0x10
shl rdi, 0x30
xor rdi, rax
lea rcx, [r9 + rdi]
mov rax, rcx
mov qword [rbp - 0x68], rcx
mov qword [rsp + 0x40], rcx
xor rax, r11
xor rcx, r11
add rax, rax
shr rcx, 0x3f
xor rcx, rax
movzx eax, byte [rbx + 0xa]
mov qword [rsp + 0x38], rcx
mov rcx, qword [rsp + 8]
mov r8, qword [rcx + rax*8]
mov r9, qword [rbp]
add r8, r15
add r8, r13
mov r10, r15
mov r11, r8
mov rax, r8
xor rax, qword [rsp + 0x20]
xor r11, qword [rsp + 0x20]
shl rax, 0x20
shr r11, 0x20
xor r11, rax
movzx eax, byte [rbx + 0xb]
add r9, r11
mov r12, r11
xor r10, r9
mov qword [rbp], r9
xor r15, r9
shl r10, 0x28
mov rax, qword [rcx + rax*8]
add rax, r8
shr r15, 0x18
mov r8, qword [rbp + 8]
xor r10, r15
add rax, r10
xor r11, rax
mov qword [rsp + 0x30], rax
xor r12, rax
shr r11, 0x10
shl r12, 0x30
xor r12, r11
lea r15, [r9 + r12]
mov rax, r15
mov qword [rsp + 0x10], r15
mov qword [rsp + 0x70], rax
xor r15, r10
xor rax, r10
shr r15, 0x3f
add rax, rax
xor r15, rax
movzx eax, byte [rbx + 0xc]
mov rbx, qword [rsp + 0x50]
mov r11, rbx
mov r9, qword [rcx + rax*8]
add r9, rbx
add r9, qword [rsp + 0x58]
mov r10, r9
mov rax, r9
xor rax, qword [rsp + 0x60]
xor r10, qword [rsp + 0x60]
shl rax, 0x20
shr r10, 0x20
xor r10, rax
mov rax, qword [rsp]
add r8, r10
xor rbx, r8
mov qword [rbp + 8], r8
shr rbx, 0x18
xor r11, r8
movzx eax, byte [rax + 0xd]
shl r11, 0x28
xor r11, rbx
mov rcx, qword [rcx + rax*8]
add rcx, r9
add rcx, r11
mov rbx, rcx
mov rax, rcx
xor rax, r10
xor rbx, r10
shr rax, 0x10
shl rbx, 0x30
xor rbx, rax
lea r13, [r8 + rbx]
mov r8, r13
mov qword [rsp + 0x20], r13
xor r13, r11
mov rax, r8
xor rax, r11
shr r13, 0x3f
mov r11, qword [rsp]
add rax, rax
xor r13, rax
mov r10, qword [rsp + 0x48]
lea rax, [0x14023a422]
mov rdx, qword [rsp + 8]
add r11, 0x10
mov qword [rsp], r11
cmp r11, rax
jl 0x140001710
xor r14, qword [rbp - 0x80]
xor rdi, r13
xor rsi, qword [rbp - 0x58]
xor r14, r8
xor rbx, qword [rbp - 0x50]
xor rsi, r12
xor rdi, qword [rbp - 0x60]
xor r15, r10
xor rbx, qword [rsp + 0x38]
mov rax, qword [rsp + 0x68]
xor rax, qword [rsp + 0x70]
xor rax, qword [rsp + 0x18]
mov qword [rsp + 0x10], rcx
mov rcx, qword [rsp + 0x78]
mov qword [rcx], rax
mov rax, qword [rbp - 0x78]
xor rax, qword [rsp + 0x28]
xor rax, qword [rsp + 0x30]
mov qword [rcx + 0x10], rax
mov rax, qword [rsp + 0x10]
xor rax, qword [rbp - 0x70]
xor rax, qword [rbp - 0x68]
xor r15, qword [rbp - 0x48]
mov qword [rcx + 0x38], r15
mov qword [rcx + 8], r14
mov qword [rcx + 0x18], rax
mov qword [rcx + 0x20], rdi
mov qword [rcx + 0x28], rsi
mov qword [rcx + 0x30], rbx
mov rcx, qword [rbp + 0x40]
xor rcx, rsp
call fcn.14016b490
lea r11, [rsp + 0x150]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret