Function at 0x14000b780
Capabilities:
Encode data using base64
Hash data using sha512

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x3e8
mov rdi, rdx
mov rdx, qword [rsp + 0x458]
cmp rdx, 0x3f
jbe 0x14000be02
mov r14, r9
mov r15, r8
mov rbx, rcx
mov rsi, qword [rsp + 0x450]
lea r13, [rsi + 0x20]
movzx r9d, byte [rsi + 0x3f]
mov edx, r9d
add edx, 0x113
shr edx, 8
and dl, 1
mov r10b, 1
mov r11b, 0xed
mov eax, 0x3d
lea rcx, [0x14012b720]
nop word cs:[rax + rax]
xor r11b, r9b
movzx r8d, r11b
dec r8d
shr r8d, 8
and r8b, r10b
movzx r9d, byte [rsi + rax + 1]
movzx r11d, byte [rax + rcx - 0x1f]
mov r10d, r9d
sub r10d, r11d
shr r10d, 8
and r10b, r8b
or r10b, dl
cmp rax, 0x1f
je 0x14000b855
xor r11b, r9b
movzx edx, r11b
dec edx
shr edx, 8
and r8b, dl
movzx r9d, byte [rsi + rax]
movzx r11d, byte [rax + rcx - 0x20]
mov edx, r9d
sub edx, r11d
shr edx, 8
and dl, r8b
or dl, r10b
add rax, 0xfffffffffffffffe
mov r10d, r8d
jmp 0x14000b7f0
test r10b, r10b
je 0x14000baff
lea rcx, [rsp + 0x1a0]
mov rdx, r15
mov r8, r14
call sym.crypto::curve25519::GeP3::from_bytes_negate_vartime::h6cdcbeee1e093ce2
cmp dword [rsp + 0x1a0], 0
je 0x14000baff
lea rdx, [rsp + 0x1a4]
lea rcx, [rsp + 0x348]
mov r8d, 0xa0
call sym.memcpy
test r14, r14
je 0x14000baff
cmp r14, 8
jae 0x14000b8b3
xor ecx, ecx
mov rdx, r15
jmp 0x14000b987
cmp r14, 0x20
jae 0x14000b8bf
xor ecx, ecx
xor eax, eax
jmp 0x14000b92d
mov rax, r14
and rax, 0xffffffffffffffe0
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
movdqu xmm2, xmmword [r15 + rcx]
por xmm0, xmm2
movdqu xmm2, xmmword [r15 + rcx + 0x10]
por xmm1, xmm2
add rcx, 0x20
cmp rax, rcx
jne 0x14000b8d0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd ecx, xmm1
cmp rax, r14
je 0x14000b99a
test r14b, 0x18
je 0x14000b981
mov r8, r14
and r8, 0xfffffffffffffff8
lea rdx, [r15 + r8]
movzx ecx, cl
movd xmm0, ecx
nop
movq xmm1, qword [r15 + rax]
por xmm0, xmm1
add rax, 8
cmp r8, rax
jne 0x14000b940
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd ecx, xmm1
cmp r8, r14
jne 0x14000b987
jmp 0x14000b99a
add rax, r15
mov rdx, rax
lea rax, [r15 + r14]
nop dword [rax + rax]
or cl, byte [rdx]
inc rdx
cmp rdx, rax
jne 0x14000b990
test cl, cl
je 0x14000baff
pxor xmm0, xmm0
movdqa xmmword [rsp + 0x100], xmm0
movdqa xmmword [rsp + 0xf0], xmm0
movdqa xmmword [rsp + 0xe0], xmm0
movdqa xmmword [rsp + 0xd0], xmm0
movdqa xmmword [rsp + 0xc0], xmm0
movdqa xmmword [rsp + 0xb0], xmm0
movdqa xmmword [rsp + 0xa0], xmm0
movdqa xmmword [rsp + 0x90], xmm0
movdqa xmmword [rsp + 0x80], xmm0
mov qword [rsp + 0x110], 0
movups xmm0, xmmword [0x14013d258]
movups xmmword [rsp + 0x118], xmm0
movups xmm0, xmmword [0x14013d268]
movups xmmword [rsp + 0x128], xmm0
movups xmm0, xmmword [0x14013d278]
movups xmmword [rsp + 0x138], xmm0
movups xmm0, xmmword [0x14013d288]
movups xmmword [rsp + 0x148], xmm0
lea rcx, [rsp + 0x1a0]
lea rdx, [rsp + 0x80]
mov r8d, 0xd8
call sym.memcpy
mov byte [rsp + 0x278], 0
mov rcx, qword [rsp + 0x1a0]
mov eax, 0x100
add rax, qword [rsp + 0x1a8]
jae 0x14000ba82
inc rcx
je 0x14000bb88
mov qword [rsp + 0x1a0], rcx
mov qword [rsp + 0x1a8], rax
lea rbp, [rsp + 0x238]
mov qword [rsp + 0x80], rbp
lea r12, [rsp + 0x1b0]
lea r9, [rsp + 0x80]
mov r8d, 0x20
mov rcx, r12
mov rdx, rsi
call sym.__crypto::cryptoutil::FixedBuffer128_as_crypto::cryptoutil::FixedBuffer_::input::h15144f9039ed50a3
cmp byte [rsp + 0x278], 0
jne 0x14000be15
mov rax, qword [rsp + 0x1a0]
mov rdx, r14
shr rdx, 0x3d
lea rcx, [r14*8]
add rcx, qword [rsp + 0x1a8]
jae 0x14000bb15
inc rdx
add rax, rdx
jae 0x14000bb23
jmp 0x14000bb88
xor eax, eax
add rsp, 0x3e8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test rdx, rdx
je 0x14000bb23
add rax, rdx
jb 0x14000be2f
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], rcx
mov qword [rsp + 0x80], rbp
lea r9, [rsp + 0x80]
mov rcx, r12
mov rdx, r15
mov r8, r14
call sym.__crypto::cryptoutil::FixedBuffer128_as_crypto::cryptoutil::FixedBuffer_::input::h15144f9039ed50a3
cmp byte [rsp + 0x278], 0
jne 0x14000be15
mov rax, qword [rsp + 0x1a0]
mov rdx, rdi
shr rdx, 0x3d
lea rcx, [rdi*8]
add rcx, qword [rsp + 0x1a8]
jae 0x14000bb9b
inc rdx
add rax, rdx
jae 0x14000bba9
lea rcx, str.Numeric_overflow_occured.
lea r8, [0x14012b0d8]
jmp 0x14000be3d
test rdx, rdx
je 0x14000bba9
add rax, rdx
jb 0x14000be2f
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x1a8], rcx
mov qword [rsp + 0x80], rbp
lea r9, [rsp + 0x80]
mov rcx, r12
mov rdx, rbx
mov r8, rdi
call sym.__crypto::cryptoutil::FixedBuffer128_as_crypto::cryptoutil::FixedBuffer_::input::h15144f9039ed50a3
lea rcx, [rsp + 0x1a0]
call sym._ZN6crypto4sha29Engine5126finish17hc6badddaffdf06e5E.llvm.7797873040375068835
mov rax, qword [rsp + 0x238]
mov rcx, qword [rsp + 0x240]
bswap rax
mov qword [rsp + 0x160], rax
bswap rcx
mov qword [rsp + 0x168], rcx
mov rax, qword [rsp + 0x248]
bswap rax
mov qword [rsp + 0x170], rax
mov rax, qword [rsp + 0x250]
bswap rax
mov qword [rsp + 0x178], rax
mov rax, qword [rsp + 0x258]
bswap rax
mov qword [rsp + 0x180], rax
mov rax, qword [rsp + 0x260]
bswap rax
mov qword [rsp + 0x188], rax
mov rax, qword [rsp + 0x268]
bswap rax
mov qword [rsp + 0x190], rax
mov rax, qword [rsp + 0x270]
bswap rax
mov qword [rsp + 0x198], rax
lea rdi, [rsp + 0x160]
mov edx, 0x40
mov rcx, rdi
call sym.crypto::curve25519::sc_reduce::h337459b3dcda636a
lea rbx, [rsp + 0x80]
lea rdx, [rsp + 0x348]
mov r8d, 0xa0
mov rcx, rbx
call sym.memcpy
mov qword [rsp + 0x20], r13
mov qword [rsp + 0x28], 0x20
lea r14, [rsp + 0x280]
mov r8d, 0x40
mov rcx, r14
mov rdx, rdi
mov r9, rbx
call sym.crypto::curve25519::GeP2::double_scalarmult_vartime::h4173032ee6bc712b
lea rdx, [rsp + 0x2d0]
lea rcx, [rsp + 0x58]
call sym.crypto::curve25519::Fe::invert::h7821cab115f13a38
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0xa0], rax
movups xmm0, xmmword [rsp + 0x58]
movups xmm1, xmmword [rsp + 0x68]
movaps xmmword [rsp + 0x90], xmm1
movaps xmmword [rsp + 0x80], xmm0
lea rdi, [rsp + 0x2f8]
lea r8, [rsp + 0x80]
mov rcx, rdi
mov rdx, r14
call sym.__crypto::curve25519::Fe_as_core::ops::arith::Mul_::mul::h16a32ffd9ef6d280
mov rax, qword [rsp + 0x2c8]
mov qword [rsp + 0x50], rax
movups xmm0, xmmword [rsp + 0x2a8]
movups xmm1, xmmword [rsp + 0x2b8]
movaps xmmword [rsp + 0x40], xmm1
movaps xmmword [rsp + 0x30], xmm0
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0xa0], rax
movups xmm0, xmmword [rsp + 0x58]
movups xmm1, xmmword [rsp + 0x68]
movaps xmmword [rsp + 0x90], xmm1
movaps xmmword [rsp + 0x80], xmm0
lea rbx, [rsp + 0x320]
lea rdx, [rsp + 0x30]
lea r8, [rsp + 0x80]
mov rcx, rbx
call sym.__crypto::curve25519::Fe_as_core::ops::arith::Mul_::mul::h16a32ffd9ef6d280
lea rcx, [rsp + 0x30]
mov rdx, rbx
call sym.crypto::curve25519::Fe::to_bytes::h16569480bc0f9e74
lea rcx, [rsp + 0x80]
mov rdx, rdi
call sym.crypto::curve25519::Fe::to_bytes::h16569480bc0f9e74
movzx eax, byte [rsp + 0x80]
shl al, 7
xor byte [rsp + 0x4f], al
movdqu xmm0, xmmword [rsp + 0x40]
movdqu xmm1, xmmword [rsp + 0x30]
movdqu xmmword [rsp + 0x80], xmm1
movdqu xmmword [rsp + 0x90], xmm0
lea rcx, [rsp + 0x80]
mov r8d, 0x20
mov rdx, rsi
call sym.rust_crypto_util_fixed_time_eq_asm
test eax, eax
sete al
jmp 0x14000bb01
lea r8, str._home_theo_.cargo_registry_src_index.crates.io_6f17d22bba15001f_rust_crypto_0.2.36_src_ed25519.rs
mov ecx, 0x40
call dbg.slice_end_index_len_fail
ud2
lea rcx, str.assertion_failed:__self.finished
lea r8, str._home_theo_.cargo_registry_src_index.crates.io_6f17d22bba15001f_rust_crypto_0.2.36_src_sha2.rs
mov edx, 0x20
call dbg.panic
ud2
lea rcx, str.Numeric_overflow_occured.
lea r8, [0x14012b0f0]
mov edx, 0x19
call sym.std::panicking::begin_panic::h8a6b93740170dc30
ud2