Function at 0x18aa8
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbp
sub rsp, 0x40
mov ebp, r9d
mov esi, r8d
mov r9, rcx
movsxd r15, dword [rsp + 0xa0]
mov rcx, qword [rsp + 0xa8]
xor r8d, r8d
xor edi, edi
test edx, edx
jle 0x18b22
mov eax, r8d
shl eax, 2
movsxd r12, eax
movzx r14d, byte [r12 + r9 + 3]
movzx r10d, byte [r12 + r9 + 2]
movzx r11d, byte [r12 + r9 + 1]
movzx r13d, byte [r12 + r9]
shl r14d, 0x18
shl r10d, 0x10
or r14d, r10d
shl r11d, 8
or r14d, r11d
or r14d, r13d
add eax, 4
mov dword [rcx + rdi*4], r14d
add rdi, 1
add r8d, 1
cmp r8d, edx
jl 0x18adf
cmp edx, 4
jne 0x18be8
mov r11d, dword [rcx]
mov r10d, dword [rcx + 4]
mov r9d, dword [rcx + 8]
mov r8d, dword [rcx + 0xc]
lea r12, [0x0001f0c0]
lea rdi, [rcx + 0x10]
lea rdx, [rcx + r15*4]
cmp r15, 4
jle 0x18dfa
lea r13, [0x00010000]
movzx r14d, r8b
movzx eax, byte [r13 + r14 + 0x10140]
shl eax, 0x18
mov r14d, r8d
shr r14d, 0x18
movzx r14d, byte [r13 + r14 + 0x10140]
shl r14d, 0x10
or eax, r14d
mov r14d, r8d
shr r14d, 0x10
movzx r14d, r14b
movzx r14d, byte [r13 + r14 + 0x10140]
shl r14d, 8
or eax, r14d
mov r14d, r8d
shr r14d, 8
movzx r14d, r14b
movzx r14d, byte [r13 + r14 + 0x10140]
or eax, r14d
xor eax, dword [r12]
xor r11d, eax
add r12, 4
xor r10d, r11d
xor r9d, r10d
xor r8d, r9d
mov dword [rdi], r11d
mov dword [rdi + 4], r10d
mov dword [rdi + 8], r9d
mov dword [rdi + 0xc], r8d
add rdi, 0x10
cmp rdi, rdx
jl 0x18b5a
jmp 0x18dfa
cmp edx, 6
jne 0x18cc2
mov r13d, dword [rcx]
mov r12d, dword [rcx + 4]
mov r11d, dword [rcx + 8]
mov r10d, dword [rcx + 0xc]
mov r9d, dword [rcx + 0x10]
mov r8d, dword [rcx + 0x14]
lea r14, [0x0001f0c0]
mov edi, 6
cmp r15, 6
jle 0x18dfa
mov qword [rsp + 0x30], rbx
lea rdx, [0x00010000]
movzx ebx, r8b
movzx eax, byte [rdx + rbx + 0x10140]
shl eax, 0x18
mov ebx, r8d
shr ebx, 0x18
movzx ebx, byte [rdx + rbx + 0x10140]
shl ebx, 0x10
or eax, ebx
mov ebx, r8d
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [rdx + rbx + 0x10140]
shl ebx, 8
or eax, ebx
mov ebx, r8d
shr ebx, 8
movzx ebx, bl
movzx ebx, byte [rdx + rbx + 0x10140]
or eax, ebx
xor eax, dword [r14]
xor r13d, eax
add r14, 4
mov dword [rcx + rdi*4], r13d
xor r12d, r13d
mov dword [rcx + rdi*4 + 4], r12d
xor r11d, r12d
mov dword [rcx + rdi*4 + 8], r11d
xor r10d, r11d
mov dword [rcx + rdi*4 + 0xc], r10d
xor r9d, r10d
mov dword [rcx + rdi*4 + 0x10], r9d
xor r8d, r9d
mov dword [rcx + rdi*4 + 0x14], r8d
add rdi, 6
cmp rdi, r15
jl 0x18c2a
mov rbx, qword [rsp + 0x30]
jmp 0x18dfa
mov r13d, dword [rcx]
mov r12d, dword [rcx + 4]
mov r11d, dword [rcx + 8]
mov r10d, dword [rcx + 0xc]
mov r9d, dword [rcx + 0x10]
mov r8d, dword [rcx + 0x14]
mov edi, dword [rcx + 0x18]
mov edx, dword [rcx + 0x1c]
lea r14, [0x0001f0c0]
mov eax, 8
cmp r15, 8
jle 0x18dfa
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x30], rbx
lea rsi, [0x00010000]
movzx ebx, dl
movzx ebp, byte [rsi + rbx + 0x10140]
shl ebp, 0x18
mov ebx, edx
shr ebx, 0x18
movzx ebx, byte [rsi + rbx + 0x10140]
shl ebx, 0x10
or ebp, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [rsi + rbx + 0x10140]
shl ebx, 8
or ebp, ebx
mov ebx, edx
shr ebx, 8
movzx ebx, bl
movzx ebx, byte [rsi + rbx + 0x10140]
or ebp, ebx
xor ebp, dword [r14]
xor r13d, ebp
add r14, 4
mov dword [rcx + rax*4], r13d
xor r12d, r13d
mov dword [rcx + rax*4 + 4], r12d
xor r11d, r12d
mov dword [rcx + rax*4 + 8], r11d
xor r10d, r11d
mov dword [rcx + rax*4 + 0xc], r10d
mov ebx, r10d
shr ebx, 0x18
movzx ebx, byte [rsi + rbx + 0x10140]
shl ebx, 0x18
mov ebp, r10d
shr ebp, 0x10
movzx ebp, bpl
movzx ebp, byte [rsi + rbp + 0x10140]
shl ebp, 0x10
or ebx, ebp
mov ebp, r10d
shr ebp, 8
movzx ebp, bpl
movzx ebp, byte [rsi + rbp + 0x10140]
shl ebp, 8
or ebx, ebp
movzx ebp, r10b
movzx ebp, byte [rsi + rbp + 0x10140]
or ebx, ebp
xor r9d, ebx
mov dword [rcx + rax*4 + 0x10], r9d
xor r8d, r9d
mov dword [rcx + rax*4 + 0x14], r8d
xor edi, r8d
mov dword [rcx + rax*4 + 0x18], edi
xor edx, edi
mov dword [rcx + rax*4 + 0x1c], edx
add rax, 8
cmp rax, r15
jl 0x18d09
mov ebp, dword [rsp + 0x20]
mov esi, dword [rsp + 0x28]
mov rbx, qword [rsp + 0x30]
mov rdx, qword [rsp + 0xb0]
shl r15, 2
mov r8d, r15d
call fcn.00016c84
imul ebp, esi
cmp esi, ebp
jge 0x18e80
mov rcx, qword [rsp + 0xb0]
xor edx, edx
sub ebp, esi
movsxd rax, ebp
movsxd rbp, esi
lea rcx, [rcx + rbp*4]
lea r12, [0x00010000]
mov r10d, dword [rcx + rdx*4]
movzx ebp, r10b
mov r11d, dword [r12 + rbp*4 + 0xf140]
mov esi, r10d
shr esi, 8
movzx edi, sil
xor r11d, dword [r12 + rdi*4 + 0xf540]
mov r8d, r10d
shr r8d, 0x10
movzx r9d, r8b
shr r10d, 0x18
xor r11d, dword [r12 + r9*4 + 0xf940]
xor r11d, dword [r12 + r10*4 + 0xfd40]
mov dword [rcx + rdx*4], r11d
add rdx, 1
cmp rdx, rax
jl 0x18e32
add rsp, 0x40
pop rbp
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
ret