Function at 0x14002be00
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, rdx
mov rsi, rcx
mov edi, dword [rcx + 0x10]
mov rcx, rdx
call qword [rsi + 8]
mov ecx, eax
cdq
idiv edi
xor ecx, edi
sar ecx, 0x1f
and ecx, edi
test edx, edx
cmove ecx, edx
add ecx, edx
mov rax, qword [rsi + 0x48]
movsxd rcx, ecx
mov rdi, qword [rax + rcx*8]
test rdi, rdi
je 0x14002be66
mov r14, qword [rsi]
nop word cs:[rax + rax]
mov rcx, qword [rdi]
mov rdx, rbx
call r14
test eax, eax
jne 0x14002bec5
mov rdi, qword [rdi + 0x10]
test rdi, rdi
jne 0x14002be50
mov edi, dword [rsi + 0x10]
mov rcx, rbx
call qword [rsi + 8]
mov ecx, eax
cdq
idiv edi
xor ecx, edi
sar ecx, 0x1f
and ecx, edi
test edx, edx
cmove ecx, edx
add ecx, edx
mov r15, qword [rsi + 0x48]
movsxd r14, ecx
mov r12, qword [r15 + r14*8]
test r12, r12
je 0x14002bed0
mov rdi, qword [rsi]
nop word cs:[rax + rax]
mov rcx, qword [r12]
mov rdx, rbx
call rdi
test eax, eax
jne 0x14002bfb7
mov r12, qword [r12 + 0x10]
test r12, r12
jne 0x14002bea0
mov r15, qword [rsi + 0x48]
mov r13, qword [r15 + r14*8]
jmp 0x14002bed3
mov r14d, 1
jmp 0x14002bfc3
xor r13d, r13d
mov edi, dword [rsi + 0x10]
mov r12d, dword [rsi + 0x18]
mov ebp, dword [rsi + 0x40]
mov ecx, 0x18
call qword [rsi + 0x30]
test rax, rax
je 0x14002bfc0
mov qword [rax], rbx
mov qword [rax + 8], 0
mov qword [rax + 0x10], r13
mov qword [r15 + r14*8], rax
inc ebp
mov dword [rsi + 0x40], ebp
mov eax, ebp
cdq
idiv edi
mov r14d, 1
cmp eax, r12d
jl 0x14002bfc3
mov r9d, dword [rsi + 0x10]
mov rcx, qword [rsi + 0x48]
test r9d, r9d
jle 0x14002bf42
cmp r9d, 1
jne 0x14002c056
lea rdx, [rsp + 0x20]
xor eax, eax
test r9b, 1
jne 0x14002c0d5
mov eax, dword [rsi + 0x14]
imul eax, r9d
cdqe
imul rax, rax, 0x51eb851f
mov rdx, rax
shr rdx, 0x3f
sar rax, 0x25
add eax, edx
lea edx, [r9 + 1]
cmp eax, edx
cmovle eax, edx
mov ebx, 0xd
cmp eax, 0xe
jl 0x14002c01b
or eax, 1
mov edx, 0xaaaaaaab
imul rdx, rax
shr rdx, 0x21
lea r8d, [rdx + rdx*2]
lea ebx, [rax + 2]
mov edx, eax
sub edx, r8d
cmovne ebx, eax
cmp ebx, 0x19
jb 0x14002c01b
cmp edx, 1
mov eax, 4
cmovne eax, edx
test edx, edx
mov r8d, 2
cmovne r8d, eax
jmp 0x14002bfea
mov qword [r12 + 8], 0
xor r14d, r14d
mov eax, r14d
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
add ebx, r8d
mov eax, 6
sub eax, r8d
mov r8d, eax
cmp ebx, 0x18
jle 0x14002c01b
mov r10d, 0xb
lea r11d, [r10 - 6]
mov eax, ebx
cdq
idiv r11d
test edx, edx
je 0x14002bfd7
add r11d, 2
mov eax, ebx
cdq
idiv r11d
test edx, edx
je 0x14002bfd7
mov eax, r10d
imul eax, r10d
add r10d, 6
cmp eax, ebx
jle 0x14002bff0
lea r8d, [rbx*8]
shl r9d, 3
mov edx, r9d
call qword [rsi + 0x28]
test rax, rax
je 0x14002bfc0
test ebx, ebx
jle 0x14002c150
mov edx, ebx
mov ecx, edx
and ecx, 7
cmp ebx, 8
jae 0x14002c105
xor r8d, r8d
jmp 0x14002c130
mov r8d, r9d
and r8d, 0xfffffffe
lea rdx, [rsp + 0x20]
xor eax, eax
jmp 0x14002c080
mov rdx, r10
add rax, 2
cmp rax, r8
je 0x14002bf38
mov r11, qword [rcx + rax*8]
test r11, r11
je 0x14002c0b0
nop dword [rax]
mov r10, r11
mov qword [rdx + 0x10], r11
mov r11, qword [r11 + 0x10]
mov rdx, r10
test r11, r11
jne 0x14002c090
jmp 0x14002c0b3
mov r10, rdx
mov r11, qword [rcx + rax*8 + 8]
test r11, r11
je 0x14002c070
nop dword [rax]
mov rdx, r11
mov qword [r10 + 0x10], r11
mov r11, qword [r11 + 0x10]
mov r10, rdx
test r11, r11
jne 0x14002c0c0
jmp 0x14002c073
mov rax, qword [rcx + rax*8]
test rax, rax
je 0x14002bf42
nop word cs:[rax + rax]
mov qword [rdx + 0x10], rax
mov rdx, rax
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x14002c0f0
jmp 0x14002bf42
and edx, 0xfffffff8
xor r8d, r8d
xorps xmm0, xmm0
nop
movups xmmword [rax + r8*8], xmm0
movups xmmword [rax + r8*8 + 0x10], xmm0
movups xmmword [rax + r8*8 + 0x20], xmm0
movups xmmword [rax + r8*8 + 0x30], xmm0
add r8, 8
cmp rdx, r8
jne 0x14002c110
test rcx, rcx
je 0x14002c150
lea rdx, [rax + r8*8]
xor r8d, r8d
nop dword [rax]
mov qword [rdx + r8*8], 0
inc r8
cmp rcx, r8
jne 0x14002c140
mov dword [rsi + 0x10], ebx
mov qword [rsi + 0x48], rax
mov rbx, qword [rsp + 0x30]
test rbx, rbx
je 0x14002bfc3
nop word cs:[rax + rax]
mov rcx, qword [rbx]
mov rdi, qword [rbx + 0x10]
mov ebp, dword [rsi + 0x10]
call qword [rsi + 8]
mov ecx, eax
cdq
idiv ebp
xor ecx, ebp
sar ecx, 0x1f
and ecx, ebp
test edx, edx
cmove ecx, edx
add ecx, edx
mov rax, qword [rsi + 0x48]
movsxd rcx, ecx
mov rdx, qword [rax + rcx*8]
mov qword [rbx + 0x10], rdx
mov qword [rax + rcx*8], rbx
mov rbx, rdi
test rdi, rdi
jne 0x14002c170
jmp 0x14002bfc3