Function at 0x140001680
Capabilities:
Hash data using sha512

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xb8
mov r13, r8
mov rsi, rdx
mov r12, rcx
movzx eax, byte [rsp + 0x120]
mov rcx, qword [0x140251048]
xor rcx, rsp
mov qword [rsp + 0xb0], rcx
test r12, r12
cmove rsi, r12
test r8, r8
je 0x1400016d3
movzx ecx, r9b
cmp cl, 0x40
mov edx, 0x40
cmovb edx, ecx
jmp 0x1400016d5
xor edx, edx
movzx eax, al
cmp al, 0x40
mov edi, 0x40
cmovb edi, eax
xor r15d, r15d
mov dword [rsp + 0x28], edx
test dl, dl
setne r15b
mov rbp, rsi
shr rbp, 7
mov eax, esi
and eax, 0x7f
cmp rax, 1
sbb rbp, 0xffffffffffffffff
add rbp, r15
cmp rbp, 2
mov ecx, 1
cmovae rcx, rbp
mov edx, 0x80
mov qword [rsp + 0x38], rcx
call fcn.14017f034
test rax, rax
je 0x14000175f
mov rbx, rax
mov dword [rsp + 0x2c], edi
movzx ecx, dil
mov qword [rsp + 0x30], rcx
call fcn.140180d88
test rax, rax
je 0x140001766
mov rdi, rax
mov eax, dword [rsp + 0x28]
movzx r14d, al
test al, al
je 0x1400017ef
cmp byte [rsp + 0x28], 1
jne 0x140001775
xor edx, edx
jmp 0x1400017d2
xor edi, edi
jmp 0x14000198a
mov rcx, rbx
call fcn.14017fcb4
xor edi, edi
jmp 0x14000198a
mov r8d, r14d
and r8d, 0x7e
mov r9d, 8
xor edx, edx
nop word cs:[rax + rax]
movzx r10d, byte [r13 + rdx]
lea ecx, [r9 - 8]
and cl, 0x30
shl r10, cl
mov r11d, edx
and r11d, 0x78
or r10, qword [rbx + r11]
mov qword [rbx + r11], r10
movzx eax, byte [r13 + rdx + 1]
mov ecx, r9d
and cl, 0x38
shl rax, cl
or rax, r10
mov qword [rbx + r11], rax
add rdx, 2
add r9, 0x10
cmp r8, rdx
jne 0x140001790
test r14b, 1
je 0x1400017ef
movzx r8d, byte [r13 + rdx]
lea ecx, [rdx*8]
shl r8, cl
and edx, 0x78
or qword [rbx + rdx], r8
test rsi, rsi
je 0x140001835
xor edx, edx
xor r8d, r8d
nop dword [rax]
movzx eax, byte [r12 + r8]
mov ecx, edx
and cl, 0x38
shl rax, cl
mov rcx, r8
shr rcx, 7
add rcx, r15
shl rcx, 7
add rcx, rbx
mov r9d, r8d
and r9d, 0x78
or qword [r9 + rcx], rax
inc r8
add rdx, 8
cmp rsi, r8
jne 0x140001800
shl r14, 8
add r14, qword [rsp + 0x30]
movabs rax, 0x6a09e667f2bdc908
xor rax, r14
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x48], 0
xorps xmm0, xmm0
movaps xmmword [rsp + 0x50], xmm0
movaps xmm0, xmmword [0x140196050]
movaps xmmword [rsp + 0x60], xmm0
movaps xmm0, xmmword [0x140196060]
movaps xmmword [rsp + 0x70], xmm0
movaps xmm0, xmmword [0x140196070]
movaps xmmword [rsp + 0x80], xmm0
movaps xmm0, xmmword [0x140196080]
movaps xmmword [rsp + 0x90], xmm0
mov qword [rsp + 0x60], rax
cmp rbp, 2
jb 0x1400018f8
mov rax, qword [rsp + 0x38]
lea r15, [rax - 1]
xor ebp, ebp
lea r12, [rsp + 0x60]
lea r13, [rsp + 0x50]
xor edx, edx
jmp 0x1400018e5
lea r14, [rdx + 0x80]
mov qword [rsp + 0x50], r14
add rdx, rbx
mov rcx, r12
mov r8, r13
xor r9d, r9d
call fcn.140001e60
mov rdx, r14
dec r15
je 0x1400018f8
cmp rdx, 0xffffffffffffff7f
jb 0x1400018c0
inc rbp
mov qword [rsp + 0x58], rbp
jmp 0x1400018c0
cmp byte [rsp + 0x28], 0
je 0x14000191a
cmp rsi, 0xffffffffffffff7f
jb 0x140001911
mov qword [rsp + 0x48], 1
sub rsi, 0xffffffffffffff80
mov qword [rsp + 0x40], rsi
mov rax, qword [rsp + 0x38]
shl rax, 7
lea rdx, [rax + rbx]
add rdx, 0xffffffffffffff80
lea rcx, [rsp + 0x60]
lea r8, [rsp + 0x40]
mov r9d, 1
call fcn.140001e60
cmp byte [rsp + 0x2c], 0
mov r8, qword [rsp + 0x30]
je 0x140001982
xor eax, eax
jmp 0x140001963
movzx ecx, byte [rsp + rcx + 0xa8]
mov byte [rdi + rax], cl
inc rax
cmp r8, rax
je 0x140001982
mov rcx, rax
and rcx, 7
jne 0x140001950
mov rdx, rax
and rdx, 0xfffffffffffffff8
mov rdx, qword [rsp + rdx + 0x60]
mov qword [rsp + 0xa8], rdx
jmp 0x140001950
mov rcx, rbx
call fcn.14017fcb4
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.14001e910
mov rax, rdi
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret