Function at 0x560b80
Capabilities:
Hash data using sha512

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x468
movdqa xmmword [rsp + 0x450], xmm6
mov sil, 1
cmp r8, 0x20
jne 0x5612f9
cmp qword [rsp + 0x4d0], 0x40
jne 0x5612f9
mov rbx, rdx
mov r14, r9
mov rdi, qword [rsp + 0x4c8]
movdqu xmm0, xmmword [rdi + 0x20]
movdqu xmm1, xmmword [rdi + 0x30]
movdqa xmmword [rsp + 0x30], xmm0
movdqa xmmword [rsp + 0x40], xmm1
pxor xmm6, xmm6
movdqa xmm2, xmm1
punpcklbw xmm2, xmm6
pshufd xmm2, xmm2, 0x4e
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpckhbw xmm1, xmm6
pshufd xmm1, xmm1, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
movdqa xmmword [rsp + 0x30], xmm1
movdqa xmm1, xmm0
punpcklbw xmm1, xmm6
pshufd xmm1, xmm1, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
punpckhbw xmm0, xmm6
pshufd xmm0, xmm0, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm1
movdqa xmmword [rsp + 0x40], xmm0
movdqa xmmword [rsp + 0x120], xmm6
movdqa xmmword [rsp + 0x110], xmm6
movzx eax, byte [rsp + 0x30]
movzx ecx, byte [rsp + 0x31]
movzx edx, byte [rsp + 0x32]
shl eax, 0x10
shl ecx, 8
or ecx, eax
or ecx, edx
movzx eax, byte [rsp + 0x33]
movzx edx, byte [rsp + 0x34]
shl rcx, 0x10
shl eax, 8
or rax, rcx
or rax, rdx
movzx ecx, byte [rsp + 0x35]
movzx edx, byte [rsp + 0x36]
shl rax, 0x10
shl ecx, 8
or rcx, rax
or rcx, rdx
shl rcx, 8
movzx eax, byte [rsp + 0x37]
or rax, rcx
mov qword [rsp + 0x128], rax
movzx eax, byte [rsp + 0x38]
movzx ecx, byte [rsp + 0x39]
movzx edx, byte [rsp + 0x3a]
shl eax, 0x10
shl ecx, 8
or ecx, eax
or ecx, edx
movzx eax, byte [rsp + 0x3b]
movzx edx, byte [rsp + 0x3c]
shl rcx, 0x10
shl eax, 8
or rax, rcx
or rax, rdx
movzx ecx, byte [rsp + 0x3d]
movzx edx, byte [rsp + 0x3e]
shl rax, 0x10
shl ecx, 8
or rcx, rax
or rcx, rdx
shl rcx, 8
movzx eax, byte [rsp + 0x3f]
or rax, rcx
mov qword [rsp + 0x120], rax
movzx eax, byte [rsp + 0x40]
movzx ecx, byte [rsp + 0x41]
movzx edx, byte [rsp + 0x42]
shl eax, 0x10
shl ecx, 8
or ecx, eax
or ecx, edx
movzx eax, byte [rsp + 0x43]
movzx edx, byte [rsp + 0x44]
shl rcx, 0x10
shl eax, 8
or rax, rcx
or rax, rdx
movzx ecx, byte [rsp + 0x45]
movzx edx, byte [rsp + 0x46]
shl rax, 0x10
shl ecx, 8
or rcx, rax
or rcx, rdx
shl rcx, 8
movzx eax, byte [rsp + 0x47]
or rax, rcx
mov qword [rsp + 0x118], rax
movzx eax, byte [rsp + 0x48]
movzx ecx, byte [rsp + 0x49]
movzx edx, byte [rsp + 0x4a]
shl eax, 0x10
shl ecx, 8
or ecx, eax
or ecx, edx
movzx eax, byte [rsp + 0x4b]
movzx edx, byte [rsp + 0x4c]
shl rcx, 0x10
shl eax, 8
or rax, rcx
or rax, rdx
movzx ecx, byte [rsp + 0x4d]
movzx edx, byte [rsp + 0x4e]
shl rax, 0x10
shl ecx, 8
or rcx, rax
or rcx, rdx
shl rcx, 8
movzx eax, byte [rsp + 0x4f]
or rax, rcx
mov qword [rsp + 0x110], rax
lea rdx, [0x0079fad0]
lea rcx, [rsp + 0x110]
mov r8d, 4
call sym.ring_core_0_17_8_LIMBS_less_than
cmp rax, 0xffffffffffffffff
jne 0x5612f9
lea rax, [rdi + 0x20]
movdqu xmm0, xmmword [rax]
movdqu xmm1, xmmword [rax + 0x10]
movdqa xmmword [rsp + 0x330], xmm1
movdqa xmmword [rsp + 0x320], xmm0
movdqa xmmword [rsp + 0x1a0], xmm6
movdqa xmmword [rsp + 0x190], xmm6
movdqa xmmword [rsp + 0x180], xmm6
movdqa xmmword [rsp + 0x170], xmm6
movdqa xmmword [rsp + 0x160], xmm6
movdqa xmmword [rsp + 0x150], xmm6
movdqa xmmword [rsp + 0x140], xmm6
movdqa xmmword [rsp + 0x130], xmm6
movdqa xmmword [rsp + 0x120], xmm6
movdqa xmmword [rsp + 0x110], xmm6
lea rcx, [rsp + 0x110]
mov rdx, rbx
call sym.ring_core_0_17_8_x25519_ge_frombytes_vartime
cmp eax, 1
jne 0x5612f9
mov r15, qword [rsp + 0x4c0]
lea r12, [rsp + 0x3b0]
lea rdx, [rsp + 0x110]
mov r8d, 0xa0
mov rcx, r12
call sym.memcpy
mov rcx, r12
call sym.ring_core_0_17_8_x25519_fe_neg
lea rcx, [rsp + 0x428]
call sym.ring_core_0_17_8_x25519_fe_neg
movups xmm0, xmmword [0x007a1a10]
movups xmmword [rsp + 0x68], xmm0
movups xmm0, xmmword [0x007a1a00]
movups xmmword [rsp + 0x58], xmm0
movups xmm0, xmmword [0x007a19f0]
movups xmmword [rsp + 0x48], xmm0
movups xmm0, xmmword [0x007a19e0]
movups xmmword [rsp + 0x38], xmm0
lea rax, [0x007a19b0]
xorps xmm0, xmm0
movups xmmword [rsp + 0x80], xmm0
movups xmmword [rsp + 0x90], xmm0
movups xmmword [rsp + 0xa0], xmm0
movups xmmword [rsp + 0xb0], xmm0
movups xmmword [rsp + 0xc0], xmm0
movups xmmword [rsp + 0xd0], xmm0
movups xmmword [rsp + 0xe0], xmm0
movups xmmword [rsp + 0xf0], xmm0
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x100], 0
lea r12, [rsp + 0x30]
mov r8d, 0x20
mov rcx, r12
mov rdx, rdi
call sym.ring::digest::Context::update::ha2823350c14423ef
mov r8d, 0x20
mov rcx, r12
mov rdx, rbx
call sym.ring::digest::Context::update::ha2823350c14423ef
mov rcx, r12
mov rdx, r14
mov r8, r15
call sym.ring::digest::Context::update::ha2823350c14423ef
lea rcx, [rsp + 0x110]
mov r8d, 0xd8
mov rdx, r12
call sym.memcpy
mov rax, qword [rsp + 0x110]
mov r9, qword [rax + 0x20]
movups xmm0, xmmword [rsp + 0x70]
movaps xmmword [rsp + 0x250], xmm0
movups xmm0, xmmword [rsp + 0x30]
movups xmm1, xmmword [rsp + 0x40]
movups xmm2, xmmword [rsp + 0x50]
movups xmm3, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0x240], xmm3
movaps xmmword [rsp + 0x230], xmm2
movaps xmmword [rsp + 0x220], xmm1
movaps xmmword [rsp + 0x210], xmm0
cmp r9, 0x81
jae 0x561314
lea r8, [rsp + 0x160]
mov rax, qword [rsp + 0x1e0]
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x368]
lea rdx, [rsp + 0x210]
call sym._ZN4ring6digest12BlockContext6finish17hd326bef02713bf4cE.llvm.8554358814637175261
mov rax, qword [rsp + 0x368]
mov rax, qword [rax + 0x10]
cmp rax, 0x41
jae 0x561328
cmp rax, 0x40
jne 0x56133c
movups xmm0, xmmword [rsp + 0x370]
movups xmm1, xmmword [rsp + 0x380]
movups xmm2, xmmword [rsp + 0x390]
movups xmm3, xmmword [rsp + 0x3a0]
movaps xmmword [rsp + 0x140], xmm3
movaps xmmword [rsp + 0x130], xmm2
movaps xmmword [rsp + 0x120], xmm1
movaps xmmword [rsp + 0x110], xmm0
lea rcx, [rsp + 0x110]
call sym.ring_core_0_17_8_x25519_sc_reduce
movaps xmm0, xmmword [rsp + 0x110]
movaps xmm1, xmmword [rsp + 0x120]
movaps xmmword [rsp + 0x350], xmm1
movaps xmmword [rsp + 0x340], xmm0
pxor xmm6, xmm6
movdqa xmmword [rsp + 0x90], xmm6
movdqa xmmword [rsp + 0x80], xmm6
movdqa xmmword [rsp + 0x70], xmm6
movdqa xmmword [rsp + 0x60], xmm6
movdqa xmmword [rsp + 0x50], xmm6
movdqa xmmword [rsp + 0x40], xmm6
movdqa xmmword [rsp + 0x30], xmm6
mov qword [rsp + 0xa0], 0
lea rcx, [rsp + 0x30]
lea rdx, [rsp + 0x340]
lea r8, [rsp + 0x3b0]
lea r9, [rsp + 0x320]
call sym.ring_core_0_17_8_x25519_ge_double_scalarmult_vartime
mov rax, qword [rsp + 0xa0]
mov qword [rsp + 0x180], rax
movaps xmm0, xmmword [rsp + 0x90]
movaps xmmword [rsp + 0x170], xmm0
movaps xmm0, xmmword [rsp + 0x80]
movaps xmmword [rsp + 0x160], xmm0
movaps xmm0, xmmword [rsp + 0x70]
movaps xmmword [rsp + 0x150], xmm0
movaps xmm0, xmmword [rsp + 0x30]
movaps xmm1, xmmword [rsp + 0x40]
movaps xmm2, xmmword [rsp + 0x50]
movaps xmm3, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0x140], xmm3
movaps xmmword [rsp + 0x130], xmm2
movaps xmmword [rsp + 0x120], xmm1
movaps xmmword [rsp + 0x110], xmm0
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0x280], rax
movups xmm0, xmmword [rsp + 0x148]
movaps xmmword [rsp + 0x270], xmm0
movups xmm0, xmmword [rsp + 0x138]
movaps xmmword [rsp + 0x260], xmm0
mov rax, qword [rsp + 0x180]
mov qword [rsp + 0x2b0], rax
movaps xmm0, xmmword [rsp + 0x160]
movaps xmm1, xmmword [rsp + 0x170]
movaps xmmword [rsp + 0x2a0], xmm1
movaps xmmword [rsp + 0x290], xmm0
movdqa xmmword [rsp + 0x200], xmm6
movdqa xmmword [rsp + 0x1f0], xmm6
movdqa xmmword [rsp + 0x2d0], xmm6
movdqa xmmword [rsp + 0x2c0], xmm6
mov qword [rsp + 0x2e0], 0
lea rbx, [rsp + 0x2c0]
lea rdx, [rsp + 0x290]
mov rcx, rbx
call sym.ring_core_0_17_8_x25519_fe_invert
movdqa xmmword [rsp + 0x300], xmm6
movdqa xmmword [rsp + 0x2f0], xmm6
mov qword [rsp + 0x310], 0
lea r14, [rsp + 0x2f0]
lea rdx, [rsp + 0x110]
mov rcx, r14
mov r8, rbx
call sym.ring_core_0_17_8_x25519_fe_mul_ttt
movdqa xmmword [rsp + 0x220], xmm6
movdqa xmmword [rsp + 0x210], xmm6
mov qword [rsp + 0x230], 0
lea r15, [rsp + 0x210]
lea rdx, [rsp + 0x260]
mov rcx, r15
mov r8, rbx
call sym.ring_core_0_17_8_x25519_fe_mul_ttt
lea rcx, [rsp + 0x1f0]
mov rdx, r15
call sym.ring_core_0_17_8_x25519_fe_tobytes
mov rcx, r14
call sym.ring_core_0_17_8_x25519_fe_isnegative
shl al, 7
xor byte [rsp + 0x20f], al
movdqa xmm0, xmmword [rsp + 0x200]
movdqa xmmword [rsp + 0x220], xmm0
movdqa xmm1, xmmword [rsp + 0x1f0]
movdqa xmmword [rsp + 0x210], xmm1
movdqu xmm2, xmmword [rdi]
movdqu xmm3, xmmword [rdi + 0x10]
pcmpeqb xmm3, xmm0
pcmpeqb xmm2, xmm1
pand xmm2, xmm3
pmovmskb eax, xmm2
cmp eax, 0xffff
jne 0x5612f9
xor esi, esi
mov eax, esi
movaps xmm6, xmmword [rsp + 0x450]
add rsp, 0x468
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
lea r8, str._home_slixe_.cargo_registry_src_index.crates.io_6f17d22bba15001f_ring_0.17.8_src_digest.rs
mov edx, pe_nt_image_headers64
mov rcx, r9
call sym.core::slice::index::slice_end_index_len_fail::h829dac2b01cd87d1
lea r8, str._home_slixe_.cargo_registry_src_index.crates.io_6f17d22bba15001f_ring_0.17.8_src_digest.rs
mov edx, 0x40
mov rcx, rax
call sym.core::slice::index::slice_end_index_len_fail::h829dac2b01cd87d1
lea r8, str._home_slixe_.cargo_registry_src_index.crates.io_6f17d22bba15001f_ring_0.17.8_src_ec_curve25519_scalar.rs
mov ecx, 0x40
mov rdx, rax
call sym.core::slice::__impl__T__::copy_from_slice::len_mismatch_fail::hd4ce5536cba80df1
int3