Function at 0x14001f3f0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x68
lea rbp, [rsp + 0x60]
mov qword [rbp], 0xfffffffffffffffe
cmp rdx, 2
jb 0x14001fd18
lea rax, [rdx + 0x10]
cmp rax, r9
ja 0x14001fd32
mov r12, r8
mov r13, rcx
mov rax, rdx
shr rax, 1
cmp rdx, 7
mov qword [rbp - 0x10], r8
mov qword [rbp - 0x18], rcx
jbe 0x14001f86b
cmp byte [r13 + 0x68], 0
setne cl
cmp byte [r13 + 0x30], 0
sete r8b
and r8b, cl
mov rcx, qword [r13 + 0x50]
xor r9d, r9d
cmp rcx, qword [r13 + 0x18]
seta r9b
movzx ecx, r8b
cmove r9d, ecx
cmp byte [r13 + 0xd8], 0
setne cl
cmp byte [r13 + 0xa0], 0
mov r8, qword [r13 + 0xc0]
sete r10b
and r10b, cl
xor ecx, ecx
cmp r8, qword [r13 + 0x88]
seta cl
movzx r8d, r10b
cmove ecx, r8d
movzx r8d, r9b
imul r9, r8, 0x38
xor r8b, 1
movzx r8d, r8b
imul r11, r8, 0x38
lea r8, [r13 + 0x70]
lea r10, [r13 + 0xa8]
test cl, cl
mov rcx, r8
cmovne rcx, r10
cmovne r10, r8
mov r8, qword [rcx + 0x18]
cmp byte [rcx + 0x30], 0
setne bl
cmp byte [r13 + r9 + 0x30], 0
sete sil
and sil, bl
xor edi, edi
cmp r8, qword [r13 + r9 + 0x18]
lea r9, [r13 + r9]
seta dil
movzx ebx, sil
cmovne ebx, edi
cmp byte [r10 + 0x30], 0
lea r8, [r13 + r11]
setne sil
cmp byte [r13 + r11 + 0x30], 0
mov rdi, qword [r10 + 0x18]
sete r14b
and r14b, sil
xor esi, esi
cmp rdi, qword [r13 + r11 + 0x18]
seta sil
movzx r11d, r14b
cmovne r11d, esi
test r11b, r11b
mov rsi, r8
cmovne rsi, rcx
test bl, bl
cmovne rsi, r9
cmovne r9, rcx
cmovne rcx, r8
test r11b, r11b
cmove r8, r10
cmovne rcx, r10
mov r10, qword [rcx + 0x18]
cmp byte [rcx + 0x30], 0
setne r11b
cmp byte [rsi + 0x30], 0
sete bl
and bl, r11b
xor r11d, r11d
cmp r10, qword [rsi + 0x18]
seta r11b
movzx r10d, bl
cmovne r10d, r11d
test r10b, r10b
mov r11, rsi
cmovne r11, rcx
cmovne rcx, rsi
mov r10, qword [r9 + 0x30]
mov qword [r12 + 0x30], r10
movups xmm0, xmmword [r9]
movups xmm1, xmmword [r9 + 0x10]
movups xmm2, xmmword [r9 + 0x20]
movups xmmword [r12 + 0x20], xmm2
movups xmmword [r12 + 0x10], xmm1
movups xmmword [r12], xmm0
imul r9, rax, 0x38
cmp byte [r13 + r9 + 0x68], 0
setne r10b
cmp byte [r13 + r9 + 0x30], 0
sete bl
and bl, r10b
mov rsi, qword [r13 + r9 + 0x50]
xor r10d, r10d
cmp rsi, qword [r13 + r9 + 0x18]
mov rsi, qword [r11 + 0x30]
seta r10b
movzx edi, bl
cmove r10d, edi
cmp byte [r13 + r9 + 0xd8], 0
mov qword [r12 + 0x68], rsi
setne bl
cmp byte [r13 + r9 + 0xa0], 0
mov rsi, qword [r13 + r9 + 0xc0]
sete dil
and dil, bl
xor r14d, r14d
cmp rsi, qword [r13 + r9 + 0x88]
seta r14b
movups xmm0, xmmword [r11]
movzx esi, dil
cmove r14d, esi
movups xmm1, xmmword [r11 + 0x10]
movzx r10d, r10b
imul rsi, r10, 0x38
xor r10b, 1
movzx r10d, r10b
imul rbx, r10, 0x38
test r14b, r14b
lea r14, [r13 + r9 + 0xa8]
lea rdi, [r13 + r9 + 0x70]
mov r10, rdi
cmovne r10, r14
cmove rdi, r14
cmp byte [r10 + 0x30], 0
lea r14, [r13 + r9]
setne r15b
cmp byte [rsi + r14 + 0x30], 0
mov r12, qword [r10 + 0x18]
sete r13b
and r13b, r15b
xor r15d, r15d
cmp r12, qword [rsi + r14 + 0x18]
seta r15b
movups xmm2, xmmword [r11 + 0x20]
movzx r12d, r13b
cmovne r12d, r15d
mov r11, qword [rdi + 0x18]
cmp byte [rdi + 0x30], 0
setne r15b
cmp byte [rbx + r14 + 0x30], 0
sete r13b
and r13b, r15b
xor r15d, r15d
cmp r11, qword [rbx + r14 + 0x18]
lea rsi, [r14 + rsi]
lea r11, [r14 + rbx]
seta r15b
movzx r14d, r13b
mov r13, qword [rbp - 0x18]
cmovne r14d, r15d
test r14b, r14b
mov rbx, r11
cmovne rbx, r10
test r12b, r12b
mov r12, qword [rbp - 0x10]
movups xmmword [r12 + 0x58], xmm2
movups xmmword [r12 + 0x48], xmm1
movups xmmword [r12 + 0x38], xmm0
cmovne rbx, rsi
cmovne rsi, r10
cmovne r10, r11
test r14b, r14b
mov r14, qword [rcx + 0x30]
cmove r11, rdi
cmovne r10, rdi
cmp byte [r10 + 0x30], 0
mov qword [r12 + 0xa0], r14
setne dil
cmp byte [rbx + 0x30], 0
mov r14, qword [r10 + 0x18]
sete r15b
and r15b, dil
xor edi, edi
cmp r14, qword [rbx + 0x18]
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmm2, xmmword [rcx + 0x20]
movups xmmword [r12 + 0x90], xmm2
movups xmmword [r12 + 0x80], xmm1
movups xmmword [r12 + 0x70], xmm0
movups xmm0, xmmword [r8]
movups xmm1, xmmword [r8 + 0x10]
movups xmm2, xmmword [r8 + 0x20]
mov rcx, qword [r8 + 0x30]
mov qword [r12 + 0xd8], rcx
seta dil
movzx ecx, r15b
cmovne ecx, edi
movups xmmword [r12 + 0xa8], xmm0
movups xmmword [r12 + 0xb8], xmm1
test cl, cl
mov rcx, rbx
cmovne rcx, r10
movups xmmword [r12 + 0xc8], xmm2
cmovne r10, rbx
mov r8, qword [rsi + 0x30]
mov qword [r12 + r9 + 0x30], r8
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movups xmmword [r12 + r9 + 0x20], xmm2
movups xmmword [r12 + r9 + 0x10], xmm1
movups xmmword [r12 + r9], xmm0
mov r8, qword [rcx + 0x30]
mov qword [r12 + r9 + 0x68], r8
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmm2, xmmword [rcx + 0x20]
movups xmmword [r12 + r9 + 0x58], xmm2
movups xmmword [r12 + r9 + 0x48], xmm1
movups xmmword [r12 + r9 + 0x38], xmm0
mov rcx, qword [r10 + 0x30]
mov qword [r12 + r9 + 0xa0], rcx
movups xmm0, xmmword [r10]
movups xmm1, xmmword [r10 + 0x10]
movups xmm2, xmmword [r10 + 0x20]
movups xmmword [r12 + r9 + 0x90], xmm2
movups xmmword [r12 + r9 + 0x80], xmm1
movups xmmword [r12 + r9 + 0x70], xmm0
movups xmm0, xmmword [r11]
movups xmm1, xmmword [r11 + 0x10]
movups xmm2, xmmword [r11 + 0x20]
mov rcx, qword [r11 + 0x30]
mov qword [r12 + r9 + 0xd8], rcx
movups xmmword [r12 + r9 + 0xa8], xmm0
movups xmmword [r12 + r9 + 0xb8], xmm1
movups xmmword [r12 + r9 + 0xc8], xmm2
mov ecx, 4
mov r8, rdx
sub r8, rax
cmp rcx, rax
jb 0x14001f8d9
jmp 0x14001fa30
mov rcx, qword [r13 + 0x30]
mov qword [r12 + 0x30], rcx
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmm2, xmmword [r13 + 0x20]
movups xmmword [r12 + 0x20], xmm2
movups xmmword [r12 + 0x10], xmm1
movups xmmword [r12], xmm0
imul rcx, rax, 0x38
mov r8, qword [r13 + rcx + 0x30]
mov qword [r12 + rcx + 0x30], r8
movups xmm0, xmmword [r13 + rcx]
movups xmm1, xmmword [r13 + rcx + 0x10]
movups xmm2, xmmword [r13 + rcx + 0x20]
movups xmmword [r12 + rcx + 0x20], xmm2
movups xmmword [r12 + rcx + 0x10], xmm1
movups xmmword [r12 + rcx], xmm0
mov ecx, 1
mov r8, rdx
sub r8, rax
cmp rcx, rax
jae 0x14001fa30
imul r9, rcx, 0x38
mov r10, rcx
jmp 0x14001f92f
mov rbx, r12
mov r14, qword [rdi + 0x10]
mov qword [rbx + 0x10], r14
movups xmm0, xmmword [rdi]
movups xmmword [rbx], xmm0
mov qword [rbx + 0x18], rsi
movaps xmm0, xmmword [rbp - 0x30]
movups xmmword [rbx + 0x20], xmm0
mov byte [rbx + 0x30], r11b
mov r11d, dword [rbp - 8]
mov esi, dword [rbp - 5]
mov dword [rbx + 0x31], r11d
mov dword [rbx + 0x34], esi
inc r10
add r9, 0x38
cmp r10, rax
je 0x14001fa30
imul rbx, r10, 0x38
movups xmm0, xmmword [r13 + rbx]
movups xmm1, xmmword [r13 + rbx + 0x10]
movups xmm2, xmmword [r13 + rbx + 0x20]
movups xmmword [r12 + rbx + 0x10], xmm1
mov r11, qword [r13 + rbx + 0x30]
mov qword [r12 + rbx + 0x30], r11
movups xmmword [r12 + rbx + 0x20], xmm2
movups xmmword [r12 + rbx], xmm0
test r11b, r11b
setne dil
cmp byte [r12 + rbx - 8], 0
mov rsi, qword [r12 + rbx + 0x18]
sete r14b
and r14b, dil
xor edi, edi
cmp rsi, qword [r12 + rbx - 0x20]
seta dil
movzx r14d, r14b
cmove edi, r14d
cmp dil, 1
jne 0x14001f91f
lea rdi, [rbx + r13]
add rbx, r12
movups xmm0, xmmword [rbx + 0x20]
movaps xmmword [rbp - 0x30], xmm0
mov r14d, dword [rbx + 0x31]
mov ebx, dword [rbx + 0x34]
mov dword [rbp - 8], r14d
mov dword [rbp - 5], ebx
mov rbx, r9
nop word cs:[rax + rax]
mov r14, qword [r12 + rbx - 8]
mov qword [r12 + rbx + 0x30], r14
movups xmm0, xmmword [r12 + rbx - 0x38]
movups xmm1, xmmword [r12 + rbx - 0x28]
movups xmm2, xmmword [r12 + rbx - 0x18]
movups xmmword [r12 + rbx + 0x20], xmm2
movups xmmword [r12 + rbx + 0x10], xmm1
movups xmmword [r12 + rbx], xmm0
cmp rbx, 0x38
je 0x14001f8f0
test r11b, r11b
setne r14b
cmp byte [r12 + rbx - 0x40], 0
sete r15b
and r15b, r14b
xor r14d, r14d
cmp rsi, qword [r12 + rbx - 0x58]
seta r14b
movzx r15d, r15b
cmovne r15d, r14d
add rbx, 0xffffffffffffffc8
test r15b, r15b
jne 0x14001f9c0
add rbx, r12
jmp 0x14001f8f3
imul r9, rax, 0x38
cmp rcx, r8
jae 0x14001fb90
lea r10, [r9 + r13]
mov r11, qword [rbp - 0x10]
add r11, r9
imul rsi, rcx, 0x38
jmp 0x14001fa96
mov r15, r11
mov r13, qword [rbp - 0x18]
mov r12, qword [r14 + 0x10]
mov qword [r15 + 0x10], r12
movups xmm0, xmmword [r14]
movups xmmword [r15], xmm0
mov qword [r15 + 0x18], rbx
movaps xmm0, xmmword [rbp - 0x30]
movups xmmword [r15 + 0x20], xmm0
mov byte [r15 + 0x30], dil
mov edi, dword [rbp - 8]
mov ebx, dword [rbp - 5]
mov dword [r15 + 0x31], edi
mov dword [r15 + 0x34], ebx
inc rcx
add rsi, 0x38
cmp rcx, r8
je 0x14001fb90
imul r15, rcx, 0x38
movups xmm0, xmmword [r10 + r15]
movups xmm1, xmmword [r10 + r15 + 0x10]
movups xmm2, xmmword [r10 + r15 + 0x20]
movups xmmword [r11 + r15 + 0x10], xmm1
mov rdi, qword [r10 + r15 + 0x30]
mov qword [r11 + r15 + 0x30], rdi
movups xmmword [r11 + r15 + 0x20], xmm2
movups xmmword [r11 + r15], xmm0
test dil, dil
setne r14b
cmp byte [r11 + r15 - 8], 0
mov rbx, qword [r11 + r15 + 0x18]
sete r12b
and r12b, r14b
xor r14d, r14d
cmp rbx, qword [r11 + r15 - 0x20]
seta r14b
movzx r12d, r12b
cmove r14d, r12d
cmp r14b, 1
jne 0x14001fa86
lea r14, [r10 + r15]
add r15, r11
movups xmm0, xmmword [r15 + 0x20]
movaps xmmword [rbp - 0x30], xmm0
mov r12d, dword [r15 + 0x31]
mov r15d, dword [r15 + 0x34]
mov dword [rbp - 8], r12d
mov dword [rbp - 5], r15d
mov r15, rsi
nop dword [rax]
mov r12, qword [r11 + r15 - 8]
mov qword [r11 + r15 + 0x30], r12
movups xmm0, xmmword [r11 + r15 - 0x38]
movups xmm1, xmmword [r11 + r15 - 0x28]
movups xmm2, xmmword [r11 + r15 - 0x18]
movups xmmword [r11 + r15 + 0x20], xmm2
movups xmmword [r11 + r15 + 0x10], xmm1
movups xmmword [r11 + r15], xmm0
cmp r15, 0x38
je 0x14001fa50
test dil, dil
setne r12b
cmp byte [r11 + r15 - 0x40], 0
sete r13b
and r13b, r12b
xor r12d, r12d
cmp rbx, qword [r11 + r15 - 0x58]
seta r12b
movzx r13d, r13b
cmovne r13d, r12d
add r15, 0xffffffffffffffc8
test r13b, r13b
jne 0x14001fb20
add r15, r11
jmp 0x14001fa53
mov r11, qword [rbp - 0x10]
lea r8, [r11 + r9]
lea r10, [r11 + r9]
add r10, 0xffffffffffffffc8
imul r12, rdx, 0x38
lea rcx, [r11 + r12]
add rcx, 0xffffffffffffffc8
lea rsi, [r12 + r13]
add rsi, 0xffffffffffffffc8
nop word cs:[rax + rax]
mov rbx, r8
mov rdi, r11
cmp byte [r8 + 0x30], 0
setne r8b
cmp byte [r11 + 0x30], 0
sete r14b
mov r15, qword [rbx + 0x18]
and r14b, r8b
xor r11d, r11d
cmp r15, qword [rdi + 0x18]
seta r11b
movzx r8d, r14b
cmove r11d, r8d
mov r8, rdi
test r11b, r11b
cmovne r8, rbx
mov r14, qword [r8 + 0x30]
mov qword [r13 + 0x30], r14
movups xmm0, xmmword [r8]
movups xmm1, xmmword [r8 + 0x10]
movups xmm2, xmmword [r8 + 0x20]
movups xmmword [r13 + 0x20], xmm2
movzx r8d, r11b
xor r11b, 1
imul r8, r8, 0x38
movups xmmword [r13 + 0x10], xmm1
add r8, rbx
movzx r11d, r11b
imul r11, r11, 0x38
movups xmmword [r13], xmm0
add r11, rdi
add r13, 0x38
cmp byte [rcx + 0x30], 0
mov rdi, r10
setne r10b
cmp byte [rdi + 0x30], 0
mov rbx, qword [rcx + 0x18]
sete r14b
xor r15d, r15d
and r14b, r10b
cmp rbx, qword [rdi + 0x18]
seta r15b
movzx r10d, r14b
cmove r15d, r10d
test r15b, r15b
mov r10, rcx
cmovne r10, rdi
mov rbx, qword [r10 + 0x30]
movups xmm0, xmmword [r10]
movups xmm1, xmmword [r10 + 0x10]
mov qword [rsi + 0x30], rbx
movups xmm2, xmmword [r10 + 0x20]
movups xmmword [rsi + 0x20], xmm2
movzx r10d, r15b
movups xmmword [rsi + 0x10], xmm1
imul rbx, r10, 0x38
add rcx, rbx
add rcx, 0xffffffffffffffc8
neg r10
movups xmmword [rsi], xmm0
imul r10, r10, 0x38
add r10, rdi
add rsi, 0xffffffffffffffc8
dec rax
jne 0x14001fbc0
add r10, 0x38
test dl, 1
je 0x14001fd0a
xor eax, eax
xor edx, edx
cmp r11, r10
setae al
setb dl
mov rsi, r8
cmovb rsi, r11
mov rdi, qword [rsi + 0x30]
mov qword [r13 + 0x30], rdi
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movups xmmword [r13 + 0x20], xmm2
movups xmmword [r13 + 0x10], xmm1
movups xmmword [r13], xmm0
imul rdx, rdx, 0x38
add r11, rdx
imul rax, rax, 0x38
add r8, rax
cmp r11, r10
jne 0x14001fd29
add rcx, 0x38
cmp r8, rcx
jne 0x14001fd29
add rsp, 0x68
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov qword [rbp - 0x38], r12
call fcn.14008f6e0
ud2