Function at 0x140004510
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r14
push rsi
push rdi
push rbx
mov eax, 0x10e0
call fcn.140027510
sub rsp, rax
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x1050], xmm6
mov qword [rbp + 0x1048], 0xfffffffffffffffe
cmp r9, 0x20
ja 0x140004801
mov rdi, r9
movabs rax, 0x101010000
bt rax, r9
jae 0x140004801
cmp qword [rbp + 0x10b8], 0xc
jne 0x1400047e9
mov rbx, r8
mov r14b, dl
mov rsi, rcx
mov rax, qword [rbp + 0x10b0]
mov byte [rbp + 0x100e], 0
mov word [rbp + 0x100c], 0
mov rcx, qword [rax]
mov qword [rbp + 0x1000], rcx
mov eax, dword [rax + 8]
mov dword [rbp + 0x1008], eax
mov byte [rbp + 0x100f], 1
mov qword [rsp + 0x20], 0x10
lea r9, [rbp + 0x1000]
mov ecx, edx
mov rdx, r8
mov r8, rdi
call fcn.140003fa0
mov rcx, rax
xorps xmm6, xmm6
movaps xmmword [rbp + 0xff0], xmm6
movaps xmmword [rbp + 0xfe0], xmm6
mov qword [rbp + 0x1028], rdx
mov rax, qword [rdx + 0x18]
mov byte [rbp + 0x1047], 1
mov qword [rsp + 0x20], 0x10
lea rdx, [rbp + 0xff0]
lea r9, [rbp + 0xfe0]
mov r8d, 0x10
mov qword [rbp + 0x1020], rcx
call rax
movaps xmmword [rbp + 0x1010], xmm6
mov byte [rbp + 0x1047], 1
mov qword [rsp + 0x20], 0x10
lea r9, [rbp + 0xff0]
mov ecx, r14d
mov rdx, rbx
mov r8, rdi
call fcn.140003fa0
mov qword [rbp + 0x1038], rdx
mov r10, qword [rdx + 0x18]
mov byte [rbp + 0x1046], 1
mov qword [rsp + 0x20], 0x10
lea rdx, [rbp + 0xff0]
lea r9, [rbp + 0x1010]
mov r8d, 0x10
mov qword [rbp + 0x1030], rax
mov rcx, rax
call r10
mov rdi, qword [rbp + 0x10c8]
mov rbx, qword [rbp + 0x10c0]
lea rcx, [rbp - 0x50]
mov r8d, 0x800
mov dl, 1
call sub.VCRUNTIME140.dll_memset
mov eax, dword [rbp + 0x1010]
mov r8d, dword [rbp + 0x1014]
bswap eax
bswap r8d
mov r9d, dword [rbp + 0x1018]
bswap r9d
mov edx, dword [rbp + 0x101c]
bswap edx
mov ecx, 0xc
nop
mov dword [rbp + rcx - 0x5c], edx
mov dword [rbp + rcx - 0x58], r9d
mov dword [rbp + rcx - 0x54], r8d
mov dword [rbp + rcx - 0x50], eax
mov r10d, eax
shld r10d, r8d, 0x1f
shld r8d, r9d, 0x1f
shld r9d, edx, 0x1f
shr eax, 1
and edx, 1
neg edx
and edx, 0xe1000000
xor eax, edx
add rcx, 0x10
mov edx, r9d
mov r9d, r8d
mov r8d, r10d
cmp rcx, 0x80c
jne 0x1400046c0
lea r14, [rbp + 0x7b0]
lea rdx, [rbp - 0x50]
mov r8d, 0x800
mov rcx, r14
call sub.VCRUNTIME140.dll_memcpy
lea rcx, [rbp + 0xfb0]
xorps xmm0, xmm0
movups xmmword [rbp + 0xfb0], xmm0
movups xmmword [rbp + 0xfb9], xmm0
mov byte [rbp + 0xfd9], 0
lea rdx, [rbp + 0xfc0]
lea rax, [rbp + 0xfc8]
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], rax
mov r8, rbx
mov r9, rdi
call fcn.140004f70
lea rcx, [rsi + 0x20]
lea rdx, [rbp + 0x7b0]
mov r8d, 0x830
call sub.VCRUNTIME140.dll_memcpy
movaps xmm0, xmmword [rbp + 0xfe0]
mov rax, qword [rbp + 0x1020]
mov qword [rsi + 0x10], rax
mov rax, qword [rbp + 0x1028]
mov qword [rsi + 0x18], rax
mov byte [rsi + 0x850], 0
movups xmmword [rsi], xmm0
mov rcx, qword [rbp + 0x1030]
mov rax, qword [rbp + 0x1038]
call qword [rax]
mov rax, qword [rbp + 0x1038]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x1400047d1
mov r8, qword [rax + 0x10]
mov rcx, qword [rbp + 0x1030]
call fcn.140003e90
mov rax, rsi
movaps xmm6, xmmword [rbp + 0x1050]
add rsp, 0x10e0
pop rbx
pop rdi
pop rsi
pop r14
pop rbp
ret
lea rcx, [0x14002be86]
lea r8, [0x14002bf18]
mov edx, 0x23
call fcn.140028c30
lea rcx, str.assertion_failed:_key.len____16__key.len____24__key.len____32
lea r8, [0x14002bf78]
mov edx, 0x47
call fcn.140028c30
int3