Function at 0x1400086c0
Capabilities:
Hash data using sha512

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x60]
sub rsp, 0x160
mov rax, qword [0x1400c3040]
xor rax, rsp
mov qword [rbp + 0x50], rax
mov r15, rdx
mov r14, rcx
mov qword [rsp + 0x40], rdx
xor r13d, r13d
mov dword [rsp + 0x20], r13d
mov edx, dword [rcx + 0x48]
mov esi, edx
and esi, 0x7f
mov rdi, qword [rcx]
add rdi, rdx
shl rdi, 3
mov eax, 0x80
mov r12d, 0x100
cmp esi, 0x6f
cmova eax, r12d
mov ebx, eax
mov r8d, eax
sub r8d, edx
add rcx, 0x4c
add rcx, rdx
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov eax, dword [r14 + 0x48]
mov byte [rax + r14 + 0x4c], 0x80
mov byte [rbx + r14 + 0x4b], dil
mov rax, rdi
shr rax, 8
mov byte [rbx + r14 + 0x4a], al
mov rax, rdi
shr rax, 0x10
mov byte [rbx + r14 + 0x49], al
shr rdi, 0x18
mov byte [rbx + r14 + 0x48], dil
mov r8d, r13d
cmp esi, 0x6f
seta r8b
inc r8
lea rdx, [r14 + 0x4c]
mov rcx, r14
call fcn.140008e40
xor edx, edx
mov r8d, 0xf8
lea rcx, [rsp + 0x50]
call sub.VCRUNTIME140.dll_memset
lea rax, [0x1400a47f0]
mov qword [rsp + 0x50], rax
lea rax, [0x1400a43e8]
mov qword [rsp + 0x60], rax
lea rcx, [rbp - 0x18]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::constructor_void____ptr64]
nop
mov dword [rsp + 0x20], 2
xor r8d, r8d
lea rdx, [rsp + 0x68]
lea rcx, [rsp + 0x50]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_iostream_char__struct_std::char_traits_char__::constructor_class_std::basic_streambuf_char__struct_std::char_traits_char______ptr64____ptr64]
nop
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rsi, vtable.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rsp + rcx + 0x50], rsi
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x98]
mov dword [rsp + rcx + 0x4c], edx
lea rcx, [rsp + 0x68]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::constructor_void____ptr64]
lea rax, vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rsp + 0x68], rax
mov qword [rbp - 0x30], r13
mov dword [rbp - 0x28], r13d
lea rdx, [0x140001e70]
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rax, qword [rax]
movsxd rcx, dword [rax + 4]
mov byte [rcx + rbx + 0x58], 0x30
mov edx, 0x10
lea rcx, [rsp + 0x28]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setw_long_long___int64__]
mov r8, rax
mov rax, qword [rbx]
movsxd rcx, dword [rax + 4]
add rcx, rbx
mov rdx, qword [r8 + 8]
call qword [r8]
mov rdx, qword [r14 + 8]
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64_____ptr64]
lea rdx, [0x140001e70]
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rax, qword [rax]
movsxd rcx, dword [rax + 4]
mov byte [rcx + rbx + 0x58], 0x30
mov edx, 0x10
lea rcx, [rsp + 0x28]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setw_long_long___int64__]
mov r8, rax
mov rax, qword [rbx]
movsxd rcx, dword [rax + 4]
add rcx, rbx
mov rdx, qword [r8 + 8]
call qword [r8]
mov rdx, qword [r14 + 0x10]
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64_____ptr64]
lea rdx, [0x140001e70]
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rax, qword [rax]
movsxd rcx, dword [rax + 4]
mov byte [rcx + rbx + 0x58], 0x30
mov edx, 0x10
lea rcx, [rsp + 0x28]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setw_long_long___int64__]
mov r8, rax
mov rax, qword [rbx]
movsxd rcx, dword [rax + 4]
add rcx, rbx
mov rdx, qword [r8 + 8]
call qword [r8]
mov rdx, qword [r14 + 0x18]
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64_____ptr64]
lea rdx, [0x140001e70]
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rax, qword [rax]
movsxd rcx, dword [rax + 4]
mov byte [rcx + rbx + 0x58], 0x30
mov edx, 0x10
lea rcx, [rsp + 0x28]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setw_long_long___int64__]
mov r8, rax
mov rax, qword [rbx]
movsxd rcx, dword [rax + 4]
add rcx, rbx
mov rdx, qword [r8 + 8]
call qword [r8]
mov rdx, qword [r14 + 0x20]
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64_____ptr64]
lea rdx, [0x140001e70]
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rax, qword [rax]
movsxd rcx, dword [rax + 4]
mov byte [rcx + rbx + 0x58], 0x30
mov edx, 0x10
lea rcx, [rsp + 0x28]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setw_long_long___int64__]
mov r8, rax
mov rax, qword [rbx]
movsxd rcx, dword [rax + 4]
add rcx, rbx
mov rdx, qword [r8 + 8]
call qword [r8]
mov rdx, qword [r14 + 0x28]
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64_____ptr64]
lea rdx, [0x140001e70]
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rax, qword [rax]
movsxd rcx, dword [rax + 4]
mov byte [rcx + rbx + 0x58], 0x30
mov edx, 0x10
lea rcx, [rsp + 0x28]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setw_long_long___int64__]
mov r8, rax
mov rax, qword [rbx]
movsxd rcx, dword [rax + 4]
add rcx, rbx
mov rdx, qword [r8 + 8]
call qword [r8]
mov rdx, qword [r14 + 0x30]
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64_____ptr64]
lea rdx, [0x140001e70]
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rax, qword [rax]
movsxd rcx, dword [rax + 4]
mov byte [rcx + rbx + 0x58], 0x30
mov edx, 0x10
lea rcx, [rsp + 0x28]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setw_long_long___int64__]
mov r8, rax
mov rax, qword [rbx]
movsxd rcx, dword [rax + 4]
add rcx, rbx
mov rdx, qword [r8 + 8]
call qword [r8]
mov rdx, qword [r14 + 0x38]
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64_____ptr64]
lea rdx, [0x140001e70]
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rax, qword [rax]
movsxd rcx, dword [rax + 4]
mov byte [rcx + rbx + 0x58], 0x30
mov edx, 0x10
lea rcx, [rsp + 0x28]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setw_long_long___int64__]
mov rdx, qword [rax + 8]
mov r8, qword [rax]
mov rax, qword [rbx]
movsxd rcx, dword [rax + 4]
add rcx, rbx
call r8
mov rdx, qword [r14 + 0x40]
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_long_long_unsigned___int64_____ptr64]
movabs rax, 0x6a09e667f3bcc908
mov qword [r14 + 8], rax
movabs rax, 0xbb67ae8584caa73b
mov qword [r14 + 0x10], rax
movabs rax, 0x3c6ef372fe94f82b
mov qword [r14 + 0x18], rax
movabs rax, 0xa54ff53a5f1d36f1
mov qword [r14 + 0x20], rax
movabs rax, 0x510e527fade682d1
mov qword [r14 + 0x28], rax
movabs rax, 0x9b05688c2b3e6c1f
mov qword [r14 + 0x30], rax
movabs rax, 0x1f83d9abfb41bd6b
mov qword [r14 + 0x38], rax
movabs rax, 0x5be0cd19137e2179
mov qword [r14 + 0x40], rax
mov dword [r14 + 0x48], r13d
mov qword [r14], r13
mov r8d, r12d
xor edx, edx
lea rcx, [r14 + 0x4c]
call sub.VCRUNTIME140.dll_memset
nop
xorps xmm0, xmm0
movups xmmword [r15], xmm0
mov qword [r15 + 0x10], r13
mov qword [r15 + 0x18], 0xf
mov byte [r15], r13b
mov dword [rsp + 0x20], 0xa
movups xmmword [rsp + 0x28], xmm0
mov ecx, dword [rbp - 0x28]
mov eax, ecx
and al, 0x22
cmp al, 2
je 0x140008b7d
mov rax, qword [rbp - 0x58]
mov r8, qword [rax]
test r8, r8
je 0x140008b7d
mov rax, qword [rbp - 0x78]
mov rdx, qword [rax]
cmp r8, qword [rbp - 0x30]
cmovb r8, qword [rbp - 0x30]
sub r8, rdx
jmp 0x140008bae
test cl, 4
jne 0x140008ba4
mov rax, qword [rbp - 0x60]
mov rcx, qword [rax]
test rcx, rcx
je 0x140008ba4
mov rax, qword [rbp - 0x80]
mov rdx, qword [rax]
mov rax, qword [rbp - 0x48]
movsxd r8, dword [rax]
sub r8, rdx
add r8, rcx
jmp 0x140008bae
mov r8, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x28]
test rdx, rdx
je 0x140008bbc
mov rcx, r15
call fcn.140008c50
nop
mov rcx, qword [rsp + 0x50]
movsxd rdx, dword [rcx + 4]
mov qword [rsp + rdx + 0x50], rsi
mov rcx, qword [rsp + 0x50]
movsxd rdx, dword [rcx + 4]
lea r8d, [rdx - 0x98]
mov dword [rsp + rdx + 0x4c], r8d
lea rcx, [rsp + 0x68]
call fcn.140007a80
lea rcx, [rsp + 0x70]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_iostream_char__struct_std::char_traits_char__::destructor_void____ptr64]
lea rcx, [rbp - 0x18]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::destructor_void____ptr64]
mov rax, r15
mov rcx, qword [rbp + 0x50]
xor rcx, rsp
call fcn.1400828d0
mov rbx, qword [rsp + 0x1b0]
add rsp, 0x160
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret