Function at 0x1400c23a0
Capabilities:
Encode data using xor
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 - 0x90]
sub rsp, 0x190
mov rax, qword [0x14012a5e8]
xor rax, rsp
mov qword [rbp + 0x80], rax
mov esi, select
mov qword [rsp + 0x78], rcx
mov rbx, rdx
lea rdi, [rbp]
mov r14, rcx
lea r15d, [rsi - 8]
mov r8, r15
lea rcx, [rsp + 0x48]
mov rdx, rbx
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x48]
add rbx, r15
mov qword [rdi], rax
add rdi, r15
sub rsi, 1
jne 0x1400c23e8
lea r8d, [rsi + 0x40]
mov rdx, r14
lea rcx, [rbp - 0x80]
call sub.VCRUNTIME140.dll_memcpy
movaps xmm0, xmmword [0x140109490]
lea rax, [0x1401094b0]
movaps xmm1, xmmword [0x1401094a0]
lea r10, [0x140109490]
mov r9, r14
sub r9, rax
xor edx, edx
mov r8d, edx
movups xmmword [rbp - 0x40], xmm0
movups xmmword [rbp - 0x30], xmm1
lea rax, [r8 + r10]
mov rcx, qword [r9 + rax + 0x60]
xor rcx, qword [rax + 0x20]
mov qword [rbp + r8 - 0x20], rcx
add r8, r15
cmp r8, 0x10
jl 0x1400c244b
lea rax, [0x1401094c0]
mov r8, r14
sub r8, rax
lea rax, [rdx + r10]
mov rcx, qword [rax + r8 + 0x80]
xor rcx, qword [rax + 0x30]
mov qword [rbp + rdx - 0x10], rcx
add rdx, r15
cmp rdx, 0x10
jl 0x1400c2473
mov rax, qword [rbp - 0x10]
lea r15, [0x1401094d4]
mov rdi, qword [rbp - 0x58]
mov r12, qword [rbp - 8]
mov r9, qword [rbp - 0x20]
mov r14, qword [rbp - 0x28]
mov rbx, qword [rbp - 0x40]
mov r13, qword [rbp - 0x48]
mov r11, qword [rbp - 0x60]
mov r10, qword [rbp - 0x70]
mov qword [rsp + 0x38], rax
mov rax, qword [rbp - 0x18]
mov qword [rsp + 0x20], rax
mov rax, qword [rbp - 0x30]
mov qword [rsp + 0x58], rax
mov rax, qword [rbp - 0x38]
mov qword [rsp + 0x40], rax
mov rax, qword [rbp - 0x50]
mov qword [rsp + 0x60], rax
mov rax, qword [rbp - 0x68]
mov qword [rsp + 0x30], rax
mov rax, qword [rbp - 0x78]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x48], ntohs
mov qword [rsp + 0x50], rdi
mov eax, dword [r15 - 4]
mov rdx, qword [rbp + rax*8]
mov eax, dword [r15]
add rdx, r11
add rdx, qword [rbp - 0x80]
mov r8, rdx
xor r8, r9
ror r8, 0x20
lea r9, [r8 + rbx]
mov rsi, r9
xor rsi, r11
mov r11, qword [rbp + rax*8]
ror rsi, 0x18
add r11, rsi
add r11, rdx
mov rbx, r11
xor rbx, r8
mov r8, qword [rsp + 0x40]
ror rbx, 0x10
lea rax, [rbx + r9]
xor rsi, rax
mov qword [rsp + 0x68], rax
mov eax, dword [r15 + 4]
rol rsi, 1
mov rdx, qword [rbp + rax*8]
mov eax, dword [r15 + 8]
add rdx, rdi
add rdx, qword [rsp + 0x28]
mov rdi, rdx
xor rdi, qword [rsp + 0x20]
mov rax, qword [rbp + rax*8]
add rax, rdx
ror rdi, 0x20
mov rdx, qword [rsp + 0x38]
add r8, rdi
mov r9, r8
xor r9, qword [rsp + 0x50]
ror r9, 0x18
add rax, r9
xor rdi, rax
mov qword [rsp + 0x28], rax
ror rdi, 0x10
lea rax, [r8 + rdi]
mov r8, qword [rsp + 0x58]
xor r9, rax
mov qword [rsp + 0x40], rax
mov eax, dword [r15 + 0xc]
rol r9, 1
mov rcx, qword [rbp + rax*8]
add rcx, qword [rsp + 0x60]
mov eax, dword [r15 + 0x10]
add r10, rcx
xor rdx, r10
mov qword [rsp + 0x20], r10
ror rdx, 0x20
add r8, rdx
mov rcx, qword [rbp + rax*8]
mov r10, r8
xor r10, qword [rsp + 0x60]
mov rax, qword [rsp + 0x20]
add rax, rcx
ror r10, 0x18
add rax, r10
xor rdx, rax
mov qword [rsp + 0x20], rax
mov eax, dword [r15 + 0x14]
ror rdx, 0x10
add r8, rdx
mov qword [rsp + 0x38], rdx
mov rdx, qword [rsp + 0x30]
xor r10, r8
mov rcx, qword [rbp + rax*8]
mov eax, dword [r15 + 0x18]
add rcx, r13
add rdx, rcx
rol r10, 1
xor r12, rdx
ror r12, 0x20
add r14, r12
xor r13, r14
ror r13, 0x18
add rdx, qword [rbp + rax*8]
mov eax, dword [r15 + 0x1c]
add rdx, r13
xor r12, rdx
mov qword [rsp + 0x30], rdx
ror r12, 0x10
add r14, r12
mov rdx, qword [rbp + rax*8]
xor r13, r14
mov eax, dword [r15 + 0x20]
add rdx, r11
add rdx, r9
rol r13, 1
mov rcx, rdx
xor rcx, r12
mov r12, qword [rbp + rax*8]
ror rcx, 0x20
add r8, rcx
mov r11, r8
xor r11, r9
mov r9, qword [rsp + 0x28]
ror r11, 0x18
add r12, r11
add r12, rdx
mov qword [rbp - 0x80], r12
xor r12, rcx
ror r12, 0x10
lea rax, [r8 + r12]
xor r11, rax
mov qword [rsp + 0x58], rax
mov qword [rbp - 0x30], rax
mov eax, dword [r15 + 0x24]
rol r11, 1
mov qword [rsp + 0x50], r11
mov qword [rbp - 0x58], r11
mov rcx, qword [rbp + rax*8]
mov eax, dword [r15 + 0x28]
add rcx, r10
add r9, rcx
mov rdx, r9
xor rdx, rbx
mov rbx, qword [rsp + 0x68]
mov rcx, qword [rbp + rax*8]
ror rdx, 0x20
add r14, rdx
mov r8, r14
xor r8, r10
mov r10, qword [rsp + 0x20]
ror r8, 0x18
add rcx, r8
add r9, rcx
mov rax, r9
mov qword [rsp + 0x28], r9
xor rax, rdx
mov qword [rbp - 0x78], r9
ror rax, 0x10
add r14, rax
mov qword [rsp + 0x70], rax
mov qword [rbp - 0x20], rax
mov rax, r14
xor rax, r8
rol rax, 1
mov qword [rsp + 0x60], rax
mov qword [rbp - 0x50], rax
mov eax, dword [r15 + 0x2c]
mov rcx, qword [rbp + rax*8]
mov eax, dword [r15 + 0x30]
add rcx, r13
add r10, rcx
mov rdx, r10
xor rdx, rdi
mov rcx, qword [rbp + rax*8]
ror rdx, 0x20
add rbx, rdx
xor r13, rbx
ror r13, 0x18
add rcx, r13
add r10, rcx
mov rax, r10
mov qword [rbp - 0x70], r10
xor rax, rdx
mov r9, qword [rsp + 0x30]
lea r15, [r15 + 0x40]
mov r11, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x50]
ror rax, 0x10
add rbx, rax
mov qword [rsp + 0x20], rax
mov qword [rbp - 0x18], rax
xor r13, rbx
mov eax, dword [r15 - 0xc]
rol r13, 1
mov qword [rbp - 0x40], rbx
mov rcx, qword [rbp + rax*8]
mov eax, dword [r15 - 8]
add rcx, rsi
add r9, rcx
mov rdx, r9
xor rdx, qword [rsp + 0x38]
mov rcx, qword [rbp + rax*8]
ror rdx, 0x20
add r11, rdx
mov r8, r11
xor r8, rsi
ror r8, 0x18
add rcx, r8
add r9, rcx
mov rax, r9
mov qword [rsp + 0x30], r9
xor rax, rdx
mov qword [rbp - 0x68], r9
mov r9, qword [rsp + 0x70]
ror rax, 0x10
add r11, rax
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x40], r11
mov qword [rbp - 0x38], r11
xor r11, r8
rol r11, 1
sub qword [rsp + 0x48], 1
mov qword [rbp - 0x10], rax
jne 0x1400c2505
mov qword [rbp - 0x28], r14
lea rdx, [rbp - 0x80]
mov r14, qword [rsp + 0x78]
lea rcx, [rbp - 0x40]
sub rdx, r14
mov qword [rbp - 8], r12
mov qword [rbp - 0x48], r13
mov r8d, 8
mov qword [rbp - 0x60], r11
mov rax, qword [rdx + r14]
xor rax, qword [rcx]
lea rcx, [rcx + 8]
xor qword [r14], rax
lea r14, [r14 + 8]
sub r8, 1
jne 0x1400c282f
mov rcx, qword [rbp + 0x80]
xor rcx, rsp
call fcn.1400f3170
mov rbx, qword [rsp + 0x1e0]
add rsp, 0x190
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret