Function at 0x14021ef20
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
mov qword [rsp + 8], rcx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
xor r15d, r15d
mov rbx, rcx
add rcx, 8
mov dword [rsp + 0x20], r15d
mov r14d, r15d
mov dword [rsp + 0x24], r15d
mov rbp, r9
mov r12d, r8d
mov r13, rdx
call fcn.140094bb0
cdq
lea rcx, [rbx + 0x38]
and edx, 3
add eax, edx
sar eax, 2
movsxd rdi, eax
call fcn.140094bb0
cdq
lea rcx, [rbx + 8]
and edx, 3
add eax, edx
sar eax, 2
mov dword [rsp + 0x2c], eax
call fcn.140094880
lea rcx, [rbx + 0x38]
mov rsi, rax
call fcn.140094880
mov qword [rsp + 0x30], rax
mov rbx, rdi
test edi, edi
jle 0x14021f126
mov ecx, dword [rsp + 0x90]
mov r11d, r15d
nop word [rax + rax]
movsxd rdx, r14d
lea eax, [r14 + 1]
movzx r8d, byte [rdx + rbp]
cdq
idiv ecx
shl r8d, 8
movsxd rax, edx
movzx r9d, byte [rax + rbp]
lea eax, [rdx + 1]
cdq
or r9d, r8d
idiv ecx
shl r9d, 8
movsxd rax, edx
movzx r10d, byte [rax + rbp]
lea eax, [rdx + 1]
cdq
or r10d, r9d
idiv ecx
shl r10d, 8
movsxd rax, edx
movzx r8d, byte [rax + rbp]
lea eax, [rdx + 1]
cdq
or r8d, r10d
xor dword [rsi + r11*4], r8d
inc r11
idiv ecx
mov r14d, edx
cmp r11, rbx
jl 0x14021efc0
mov rdi, qword [rsp + 0x70]
mov rbp, r15
mov r10d, dword [rsp + 0x20]
mov r14d, r15d
mov r11d, dword [rsp + 0x24]
nop dword [rax]
nop word [rax + rax]
movsxd rax, r14d
movzx ecx, byte [rax + r13]
lea eax, [r14 + 1]
cdq
shl ecx, 8
idiv r12d
movsxd rax, edx
movzx r8d, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or r8d, ecx
idiv r12d
shl r8d, 8
movsxd rax, edx
movzx r9d, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or r9d, r8d
idiv r12d
shl r9d, 8
movsxd rax, edx
movzx ecx, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or ecx, r9d
idiv r12d
xor r10d, ecx
movsxd rax, edx
mov dword [rsp + 0x70], r10d
movzx ecx, byte [rax + r13]
lea eax, [rdx + 1]
cdq
shl ecx, 8
idiv r12d
movsxd rax, edx
movzx r8d, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or r8d, ecx
idiv r12d
shl r8d, 8
movsxd rax, edx
movzx r9d, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or r9d, r8d
idiv r12d
shl r9d, 8
xor r8d, r8d
movsxd rax, edx
movzx ecx, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or ecx, r9d
idiv r12d
xor r11d, ecx
mov rcx, rdi
mov r14d, edx
mov dword [rsp + 0x74], r11d
lea rdx, [rsp + 0x70]
call fcn.14021ee00
mov r10d, dword [rsp + 0x70]
mov r11d, dword [rsp + 0x74]
mov dword [rsi + rbp*4], r10d
mov dword [rsi + rbp*4 + 4], r11d
add rbp, 2
cmp rbp, rbx
jl 0x14021f040
jmp 0x14021f135
mov rdi, qword [rsp + 0x70]
mov r10d, dword [rsp + 0x20]
mov r11d, dword [rsp + 0x24]
movsxd rbx, dword [rsp + 0x2c]
test rbx, rbx
jle 0x14021f239
nop dword [rax]
nop word [rax + rax]
movsxd rax, r14d
movzx ecx, byte [rax + r13]
lea eax, [r14 + 1]
cdq
shl ecx, 8
idiv r12d
movsxd rax, edx
movzx r8d, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or r8d, ecx
idiv r12d
shl r8d, 8
movsxd rax, edx
movzx r9d, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or r9d, r8d
idiv r12d
shl r9d, 8
movsxd rax, edx
movzx ecx, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or ecx, r9d
idiv r12d
xor r10d, ecx
movsxd rax, edx
mov dword [rsp + 0x70], r10d
movzx ecx, byte [rax + r13]
lea eax, [rdx + 1]
cdq
shl ecx, 8
idiv r12d
movsxd rax, edx
movzx r8d, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or r8d, ecx
idiv r12d
shl r8d, 8
movsxd rax, edx
movzx r9d, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or r9d, r8d
idiv r12d
shl r9d, 8
xor r8d, r8d
movsxd rax, edx
movzx ecx, byte [rax + r13]
lea eax, [rdx + 1]
cdq
or ecx, r9d
idiv r12d
xor r11d, ecx
mov rcx, rdi
mov r14d, edx
mov dword [rsp + 0x74], r11d
lea rdx, [rsp + 0x70]
call fcn.14021ee00
mov rax, qword [rsp + 0x30]
mov r10d, dword [rsp + 0x70]
mov r11d, dword [rsp + 0x74]
mov dword [rax + r15*4], r10d
mov dword [rax + r15*4 + 4], r11d
add r15, 2
cmp r15, rbx
jl 0x14021f150
lea r11, [rsp + 0x40]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret