Function at 0x4156a0
Capabilities:
Encode data using xor
Hash data using sha512

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x148
vmovups xmm2, xmmword [rdx]
vmovups xmm3, xmmword [rdx + 0x10]
movabs rbp, 0x5be0cd19137e2179
movabs r11, 0xa54ff53a5f1d36f1
vmovups xmm4, xmmword [rdx + 0x20]
vmovups xmm5, xmmword [rdx + 0x30]
mov rax, qword [rcx]
mov rbx, rcx
mov qword [rsp + 0x190], rcx
mov qword [rsp + 0xc0], rax
mov r14, rax
mov rax, qword [rcx + 0x10]
vmovups xmmword [rsp + 0x40], xmm2
vmovups xmmword [rsp + 0x50], xmm3
vmovups xmm2, xmmword [rdx + 0x40]
vmovups xmm3, xmmword [rdx + 0x50]
vmovups xmmword [rsp + 0x60], xmm4
vmovups xmmword [rsp + 0x70], xmm5
mov qword [rsp + 0xd0], rax
mov r10, rax
vmovups xmm4, xmmword [rdx + 0x60]
vmovups xmm5, xmmword [rdx + 0x70]
mov rdx, qword [rcx + 8]
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0xc8], rdx
mov rdx, qword [rcx + 0x18]
vmovups xmmword [rsp + 0x80], xmm2
mov qword [rsp + 0xe0], rax
mov rsi, rax
vmovups xmmword [rsp + 0x90], xmm3
mov rax, qword [rcx + 0x30]
vmovups xmmword [rsp + 0xa0], xmm4
mov qword [rsp + 0xd8], rdx
mov rdx, qword [rcx + 0x28]
vmovups xmmword [rsp + 0xb0], xmm5
mov qword [rsp + 0xf0], rax
mov r12, rax
movabs rax, 0x1f83d9abfb41bd6b
mov qword [rsp + 0xe8], rdx
mov rdx, qword [rcx + 0x38]
mov qword [rsp + 0xf8], rdx
xor rax, qword [rbx + 0x50]
mov r15, qword [rbx + 0x58]
mov qword [rsp + 0x10], r11
movabs r11, 0x3c6ef372fe94f82b
movabs rdx, 0x510e527fade682d1
mov r8, qword [rsp + 0xc8]
mov r13, qword [rsp + 0xe8]
mov qword [rsp + 8], r11
movabs r11, 0xbb67ae8584caa73b
mov r9, qword [rsp + 0xd8]
mov rdi, qword [rsp + 0xf8]
xor r15, rbp
xor rdx, qword [rcx + 0x40]
movabs rbp, 0x6a09e667f3bcc908
movabs rcx, 0x9b05688c2b3e6c1f
mov qword [rsp + 0x18], rax
xor rcx, qword [rbx + 0x48]
mov qword [rsp + 0x20], r15
lea rbx, [0x006b92a0]
nop word [rax + rax]
mov r15d, dword [rbx]
mov rax, qword [rsp + r15*8 + 0x40]
mov r15d, dword [rbx + 4]
add rax, rsi
add r14, rax
xor rdx, r14
add r14, qword [rsp + r15*8 + 0x40]
mov r15, qword [rsp + 0x10]
rorx rdx, rdx, 0x20
add rbp, rdx
xor rsi, rbp
rorx rsi, rsi, 0x18
add r14, rsi
xor rdx, r14
rorx rdx, rdx, 0x10
lea rax, [rbp + rdx]
xor rsi, rax
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x18]
rorx rsi, rsi, 0x3f
mov qword [rsp + 0x38], rsi
mov esi, dword [rbx + 8]
mov rbp, qword [rsp + rsi*8 + 0x40]
mov esi, dword [rbx + 0xc]
add rbp, r13
add r8, rbp
xor rcx, r8
add r8, qword [rsp + rsi*8 + 0x40]
rorx rcx, rcx, 0x20
add r11, rcx
xor r13, r11
rorx r13, r13, 0x18
add r8, r13
xor rcx, r8
rorx rcx, rcx, 0x10
add r11, rcx
xor r13, r11
mov qword [rsp + 0x30], r11
mov r11d, dword [rbx + 0x10]
rorx r13, r13, 0x3f
mov rbp, qword [rsp + r11*8 + 0x40]
mov r11d, dword [rbx + 0x14]
add rbp, r12
add r10, rbp
mov rbp, qword [rsp + 8]
xor rax, r10
add r10, qword [rsp + r11*8 + 0x40]
mov r11d, dword [rbx + 0x18]
rorx rax, rax, 0x20
add rbp, rax
xor r12, rbp
mov rsi, rbp
mov rbp, qword [rsp + r11*8 + 0x40]
rorx r12, r12, 0x18
add r10, r12
xor rax, r10
add rbp, rdi
rorx rax, rax, 0x10
add r9, rbp
mov rbp, qword [rsp + 0x20]
add rsi, rax
xor r12, rsi
rorx r12, r12, 0x3f
xor rbp, r9
rorx rbp, rbp, 0x20
add r15, rbp
xor rdi, r15
mov r11, r15
mov r15d, dword [rbx + 0x1c]
rorx rdi, rdi, 0x18
add r9, qword [rsp + r15*8 + 0x40]
mov r15d, dword [rbx + 0x20]
add r14, qword [rsp + r15*8 + 0x40]
mov r15d, dword [rbx + 0x24]
add r9, rdi
xor rbp, r9
rorx rbp, rbp, 0x10
add r11, rbp
add r14, r13
xor rdi, r11
xor rbp, r14
add r14, qword [rsp + r15*8 + 0x40]
rorx rdi, rdi, 0x3f
rorx rbp, rbp, 0x20
add rsi, rbp
xor r13, rsi
mov r15, rsi
mov esi, dword [rbx + 0x28]
rorx r13, r13, 0x18
add r14, r13
xor rbp, r14
add r8, qword [rsp + rsi*8 + 0x40]
mov esi, dword [rbx + 0x2c]
rorx rbp, rbp, 0x10
add r15, rbp
mov qword [rsp + 0x20], rbp
mov qword [rsp + 8], r15
xor r13, r15
rorx r13, r13, 0x3f
add r8, r12
xor rdx, r8
add r8, qword [rsp + rsi*8 + 0x40]
mov r15, qword [rsp + 0x28]
rorx rdx, rdx, 0x20
mov rsi, qword [rsp + 0x38]
add r11, rdx
xor r12, r11
rorx r12, r12, 0x18
add r8, r12
xor rdx, r8
rorx rdx, rdx, 0x10
lea rbp, [r11 + rdx]
mov r11d, dword [rbx + 0x30]
xor r12, rbp
mov qword [rsp + 0x10], rbp
rorx r12, r12, 0x3f
add r10, qword [rsp + r11*8 + 0x40]
mov r11d, dword [rbx + 0x34]
add r10, rdi
xor rcx, r10
add r10, qword [rsp + r11*8 + 0x40]
mov r11d, dword [rbx + 0x38]
rorx rcx, rcx, 0x20
lea rbp, [r15 + rcx]
mov r15d, dword [rbx + 0x3c]
xor rdi, rbp
rorx rdi, rdi, 0x18
add r10, rdi
xor rcx, r10
add r9, qword [rsp + r11*8 + 0x40]
mov r11, qword [rsp + 0x30]
add rbx, 0x40
rorx rcx, rcx, 0x10
add rbp, rcx
xor rdi, rbp
rorx rdi, rdi, 0x3f
add r9, rsi
xor rax, r9
add r9, qword [rsp + r15*8 + 0x40]
rorx rax, rax, 0x20
add r11, rax
xor rsi, r11
rorx rsi, rsi, 0x18
add r9, rsi
xor rax, r9
rorx rax, rax, 0x10
add r11, rax
mov qword [rsp + 0x18], rax
lea rax, [0x006b95a0]
xor rsi, r11
rorx rsi, rsi, 0x3f
cmp rbx, rax
jne 0x415830
mov rbx, qword [rsp + 0x190]
vmovq xmm2, rbp
vmovq xmm3, r14
vpinsrq xmm0, xmm2, r11, 1
vpinsrq xmm1, xmm3, r8, 1
vmovq xmm4, qword [rsp + 8]
vmovq xmm5, r10
vmovq xmm2, rdx
vxorps xmm0, xmm0, xmm1
vpinsrq xmm1, xmm5, r9, 1
vmovq xmm3, rsi
mov rax, qword [rsp + 0x18]
mov r15, qword [rsp + 0x20]
vmovq xmm5, r12
vxorps xmm0, xmm0, xmmword [rbx]
vmovups xmmword [rbx], xmm0
vpinsrq xmm0, xmm4, qword [rsp + 0x10], 1
vmovq xmm4, rax
vxorps xmm0, xmm0, xmm1
vxorps xmm0, xmm0, xmmword [rbx + 0x10]
vpinsrq xmm1, xmm3, r13, 1
vmovups xmmword [rbx + 0x10], xmm0
vpinsrq xmm0, xmm2, rcx, 1
vxorps xmm0, xmm0, xmm1
vxorps xmm0, xmm0, xmmword [rbx + 0x20]
vpinsrq xmm1, xmm5, rdi, 1
vmovups xmmword [rbx + 0x20], xmm0
vpinsrq xmm0, xmm4, r15, 1
vxorps xmm0, xmm0, xmm1
vxorps xmm0, xmm0, xmmword [rbx + 0x30]
vmovups xmmword [rbx + 0x30], xmm0
add rsp, 0x148
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret