Function at 0x14008ccf0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rbx, r9
mov r12, r8
mov qword [rsp + 0x30], rdx
mov r14, rcx
mov rsi, qword [rsp + 0xa0]
cmp byte [rsi + 0x28], 0
jne 0x14008cd84
mov rcx, qword [rsi + 0x10]
mov r15, qword [rsi + 0x20]
cmp rcx, qword [rsi + 0x18]
jne 0x14008cd70
lea rax, [rcx + rcx*2]
shr rax, 1
test rcx, rcx
mov r13d, 0x20
cmovne r13, rax
cmp r13, rcx
jbe 0x14008cd7e
mov rax, r13
shr rax, 0x3d
jne 0x14008cd7e
lea rdx, [r13*8]
mov rcx, qword [rsi + 8]
call fcn.1400ae2f0
test rax, rax
je 0x14008cd7e
mov qword [rsi + 8], rax
mov qword [rsi + 0x18], r13
mov rcx, qword [rsi + 0x10]
jmp 0x14008cd74
mov rax, qword [rsi + 8]
mov qword [rax + rcx*8], r15
inc qword [rsi + 0x10]
jmp 0x14008cd84
mov word [rsi + 0x28], 0x101
mov rcx, rsi
call fcn.140084300
xor ebp, ebp
test rax, rax
je 0x14008d0a7
mov r15, rax
lea r9, [rbx + 0x18]
mov r8, qword [r14 + 8]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rsi
mov rcx, rax
mov rdx, r12
call fcn.140087180
test eax, eax
je 0x14008d0a7
mov qword [rsp + 0x20], rsi
mov rcx, r15
mov rdx, r15
mov r8, rbx
mov r9, rbx
call fcn.140086730
test eax, eax
je 0x14008d0a7
mov r8, qword [r14 + 0x10]
movsxd rcx, dword [r15 + 8]
movsxd rdx, dword [r8 + 8]
cmp ecx, edx
jge 0x14008ce12
mov r9, qword [r8]
xor eax, eax
mov r10, rcx
nop word cs:[rax + rax]
or rax, qword [r9 + r10*8]
inc r10
cmp rdx, r10
jne 0x14008ce00
cmp edx, ecx
jl 0x14008ce18
jmp 0x14008ce2c
xor eax, eax
cmp edx, ecx
jge 0x14008ce2c
mov r9, qword [r15]
mov r10, rdx
nop
or rax, qword [r9 + r10*8]
inc r10
cmp rcx, r10
jne 0x14008ce20
cmp ecx, edx
cmovl edx, ecx
test edx, edx
jle 0x14008ce53
mov r9, qword [r15]
mov r10, qword [r8]
mov edx, edx
xor r11d, r11d
mov r12, qword [r10 + r11*8]
xor r12, qword [r9 + r11*8]
or rax, r12
inc r11
cmp rdx, r11
jne 0x14008ce40
mov edx, dword [r15 + 0x10]
mov r11d, dword [r8 + 0x10]
xor r11d, edx
mov r8, qword [r14 + 0x18]
movsxd r10, dword [r8 + 8]
cmp ecx, r10d
jge 0x14008ce8e
mov r12, qword [r8]
xor r9d, r9d
mov r13, rcx
nop word cs:[rax + rax]
or r9, qword [r12 + r13*8]
inc r13
cmp r10, r13
jne 0x14008ce80
jmp 0x14008ce91
xor r9d, r9d
movsxd r11, r11d
cmp r10d, ecx
jge 0x14008ceac
mov r12, qword [r15]
mov r13, r10
nop
or r9, qword [r12 + r13*8]
inc r13
cmp rcx, r13
jne 0x14008cea0
or rax, r11
cmp ecx, r10d
cmovl r10d, ecx
test r10d, r10d
jle 0x14008cee3
mov rcx, qword [r15]
mov r11, qword [r8]
mov r10d, r10d
xor r12d, r12d
nop word [rax + rax]
mov r13, qword [r11 + r12*8]
xor r13, qword [rcx + r12*8]
or r9, r13
inc r12
cmp r10, r12
jne 0x14008ced0
test rax, rax
sete al
xor edx, dword [r8 + 0x10]
movsxd rcx, edx
or rcx, r9
sete cl
or cl, al
movzx r12d, cl
neg r12
cmp dword [r14 + 0x20], 2
jl 0x14008d096
mov ebp, 1
nop
cmp dword [r14 + 0x24], ebp
jne 0x14008cf20
cmp r12, 0xffffffffffffffff
jne 0x14008d096
mov qword [rsp + 0x20], rsi
mov rcx, r15
mov rdx, r15
mov r8, r15
mov r9, rbx
call fcn.140086730
test eax, eax
je 0x14008d0d9
mov rcx, qword [r14 + 0x18]
movsxd rax, dword [r15 + 8]
movsxd rdx, dword [rcx + 8]
cmp eax, edx
jge 0x14008cf80
mov r9, qword [rcx]
mov r10, rax
xor r8d, r8d
nop word [rax + rax]
or r8, qword [r9 + r10*8]
inc r10
cmp rdx, r10
jne 0x14008cf60
cmp edx, eax
jl 0x14008cf87
jmp 0x14008cf9c
xor r8d, r8d
cmp edx, eax
jge 0x14008cf9c
mov r9, qword [r15]
mov r10, rdx
nop dword [rax]
or r8, qword [r9 + r10*8]
inc r10
cmp rax, r10
jne 0x14008cf90
cmp eax, edx
cmovl edx, eax
test edx, edx
jle 0x14008cfc3
mov r9, qword [r15]
mov r10, qword [rcx]
mov edx, edx
xor r11d, r11d
mov r13, qword [r10 + r11*8]
xor r13, qword [r9 + r11*8]
or r8, r13
inc r11
cmp rdx, r11
jne 0x14008cfb0
mov edx, dword [r15 + 0x10]
mov ecx, dword [rcx + 0x10]
xor ecx, edx
movsxd rcx, ecx
or rcx, r8
mov rcx, r12
mov r8, 0xffffffffffffffff
cmove rcx, r8
mov r8, qword [r14 + 0x10]
movsxd r10, dword [r8 + 8]
cmp eax, r10d
jge 0x14008d020
mov r11, qword [r8]
mov r13, rax
xor r9d, r9d
nop word cs:[rax + rax]
or r9, qword [r11 + r13*8]
inc r13
cmp r10, r13
jne 0x14008d000
cmp r10d, eax
jl 0x14008d028
jmp 0x14008d03c
xor r9d, r9d
cmp r10d, eax
jge 0x14008d03c
mov r11, qword [r15]
mov r13, r10
nop
or r9, qword [r11 + r13*8]
inc r13
cmp rax, r13
jne 0x14008d030
cmp eax, r10d
cmovl r10d, eax
test r10d, r10d
jle 0x14008d073
mov rax, qword [r15]
mov r11, qword [r8]
mov r10d, r10d
xor r13d, r13d
nop word cs:[rax + rax]
mov rdi, qword [r11 + r13*8]
xor rdi, qword [rax + r13*8]
or r9, rdi
inc r13
cmp r10, r13
jne 0x14008d060
xor edx, dword [r8 + 0x10]
movsxd rax, edx
or rax, r9
mov edx, ecx
and edx, 1
or rdx, rax
je 0x14008d096
inc ebp
mov r12, rcx
cmp ebp, dword [r14 + 0x20]
jl 0x14008cf10
and r12d, 1
mov rax, qword [rsp + 0x30]
mov dword [rax], r12d
mov ebp, 1
cmp byte [rsi + 0x28], 0
jne 0x14008d0c6
mov rax, qword [rsi + 8]
mov rcx, qword [rsi + 0x10]
lea rdx, [rcx - 1]
mov qword [rsi + 0x10], rdx
mov rax, qword [rax + rcx*8 - 8]
mov qword [rsi + 0x20], rax
mov eax, ebp
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor ebp, ebp
cmp byte [rsi + 0x28], 0
jne 0x14008d0c6
jmp 0x14008d0ad