Function at 0x18000bec0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
mov r10, rcx
mov rsi, rdx
mov ecx, r8d
sub ecx, 0x80
je 0x18000bf06
sub ecx, 0x40
je 0x18000befd
cmp ecx, 0x40
je 0x18000bef4
mov eax, 1
jmp 0x18000c379
mov dword [r10], 0xe
jmp 0x18000bf0d
mov dword [r10], 0xc
jmp 0x18000bf0d
mov dword [r10], 0xa
movsxd r11, r8d
lea rdx, [r10 + 4]
sar r11, 5
xor ebx, ebx
test r11, r11
jle 0x18000bf5a
mov rdi, rdx
lea r9, [rsi + 2]
sub rdi, rsi
movzx eax, byte [r9]
movzx ecx, byte [r9 + 1]
lea r9, [r9 + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [r9 - 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [r9 - 6]
shl ecx, 8
or ecx, eax
mov dword [rdi + r9 - 6], ecx
sub r11, 1
jne 0x18000bf29
lea rsi, [0x180000000]
sub r8d, 0x80
je 0x18000c10e
sub r8d, 0x40
je 0x18000c06d
cmp r8d, 0x40
jne 0x18000c190
mov edi, dword [rdx]
lea r9, [rdx + 0x1e]
lea r11, [0x1800d4800]
mov r8d, dword [r9 - 2]
movzx eax, r8b
mov ecx, dword [rsi + rax*4 + 0xd4000]
mov eax, r8d
shr rax, 0x18
shl ecx, 8
xor ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r9]
lea r9, [r9 + 0x20]
shl ecx, 8
xor ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r9 - 0x21]
shl ecx, 8
xor ecx, dword [rsi + rax*4 + 0xd4000]
xor ecx, dword [r11]
add r11, 4
mov eax, dword [r9 - 0x3a]
xor ecx, edi
xor eax, ecx
mov dword [r9 - 0x1e], ecx
mov dword [r9 - 0x1a], eax
mov edi, ecx
mov ecx, dword [r9 - 0x36]
xor ecx, eax
mov eax, dword [r9 - 0x32]
xor eax, ecx
mov dword [r9 - 0x16], ecx
mov ecx, eax
shr rax, 0x18
mov dword [r9 - 0x12], ecx
mov edx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r9 - 0x10]
shl edx, 8
xor edx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r9 - 0x11]
shl edx, 8
xor edx, dword [rsi + rax*4 + 0xd4000]
movzx eax, cl
mov ecx, dword [r9 - 0x26]
shl edx, 8
xor edx, dword [rsi + rax*4 + 0xd4000]
xor edx, dword [r9 - 0x2e]
mov eax, dword [r9 - 0x2a]
xor eax, edx
mov dword [r9 - 0xe], edx
xor ecx, eax
mov dword [r9 - 0xa], eax
mov dword [r9 - 6], ecx
lea rax, [0x1800d481c]
xor ecx, r8d
mov dword [r9 - 2], ecx
cmp r11, rax
jl 0x18000bf8f
jmp 0x18000c190
mov r9d, dword [rdx]
lea r8, [rdx + 0x16]
lea r11, [0x1800d4800]
mov edx, dword [r8 - 2]
movzx eax, dl
mov ecx, dword [rsi + rax*4 + 0xd4000]
mov eax, edx
shl ecx, 8
shr rax, 0x18
xor ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r8]
lea r8, [r8 + 0x18]
shl ecx, 8
xor ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r8 - 0x19]
shl ecx, 8
xor ecx, dword [rsi + rax*4 + 0xd4000]
xor ecx, dword [r11]
add r11, 4
mov eax, dword [r8 - 0x2a]
xor ecx, r9d
xor eax, ecx
mov dword [r8 - 0x16], ecx
mov r9d, ecx
mov dword [r8 - 0x12], eax
mov ecx, dword [r8 - 0x26]
xor ecx, eax
mov eax, dword [r8 - 0x22]
xor eax, ecx
mov dword [r8 - 0xe], ecx
mov ecx, dword [r8 - 0x1e]
xor ecx, eax
mov dword [r8 - 0xa], eax
mov dword [r8 - 6], ecx
lea rax, str.e6cccc
xor ecx, edx
mov dword [r8 - 2], ecx
cmp r11, rax
jl 0x18000c07b
jmp 0x18000c190
mov r9d, dword [rdx]
lea r8, [rdx + 0xe]
lea r11, [0x1800d4800]
mov edx, dword [r8 - 2]
movzx eax, dl
mov ecx, dword [rsi + rax*4 + 0xd4000]
mov eax, edx
shl ecx, 8
shr rax, 0x18
xor ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r8]
lea r8, [r8 + 0x10]
shl ecx, 8
xor ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r8 - 0x11]
shl ecx, 8
xor ecx, dword [rsi + rax*4 + 0xd4000]
mov eax, dword [r8 - 0x1a]
xor r9d, ecx
xor r9d, dword [r11]
add r11, 4
mov ecx, dword [r8 - 0x16]
xor eax, r9d
xor ecx, eax
mov dword [r8 - 0xa], eax
mov dword [r8 - 6], ecx
lea rax, [0x1800d4828]
xor ecx, edx
mov dword [r8 - 0xe], r9d
mov dword [r8 - 2], ecx
cmp r11, rax
jl 0x18000c11c
mov eax, dword [r10]
test eax, eax
js 0x18000c1f2
lea rdx, [r10 + 0x108]
mov eax, dword [r10]
sub eax, ebx
shl eax, 2
cdqe
mov ecx, dword [r10 + rax*4 + 4]
mov dword [rdx - 4], ecx
mov eax, dword [r10]
sub eax, ebx
shl eax, 2
cdqe
mov ecx, dword [r10 + rax*4 + 8]
mov dword [rdx], ecx
lea rdx, [rdx + 0x10]
mov eax, dword [r10]
sub eax, ebx
shl eax, 2
cdqe
mov ecx, dword [r10 + rax*4 + 0xc]
mov dword [rdx - 0xc], ecx
mov eax, dword [r10]
sub eax, ebx
inc ebx
shl eax, 2
cdqe
mov ecx, dword [r10 + rax*4 + 0x10]
mov dword [rdx - 8], ecx
mov eax, dword [r10]
cmp ebx, eax
jle 0x18000c19e
mov ebx, 1
lea r11, [r10 + 0x114]
cmp eax, ebx
jle 0x18000c377
mov r9d, dword [r11]
inc ebx
mov eax, r9d
shr rax, 0x18
mov edx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r11 + 2]
mov r8d, dword [rsi + rdx*4 + 0xd3c00]
mov ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r11 + 1]
xor r8d, dword [rsi + rcx*4 + 0xd3400]
mov ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, r9b
mov r9d, dword [r11 + 4]
xor r8d, dword [rsi + rcx*4 + 0xd2c00]
mov ecx, dword [rsi + rax*4 + 0xd4000]
mov eax, r9d
shr rax, 0x18
xor r8d, dword [rsi + rcx*4 + 0xd2400]
mov edx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r11 + 6]
mov dword [r11], r8d
lea r11, [r11 + 0x10]
mov r8d, dword [rsi + rdx*4 + 0xd3c00]
mov ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r11 - 0xb]
xor r8d, dword [rsi + rcx*4 + 0xd3400]
mov ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, r9b
mov r9d, dword [r11 - 8]
xor r8d, dword [rsi + rcx*4 + 0xd2c00]
mov ecx, dword [rsi + rax*4 + 0xd4000]
mov eax, r9d
shr rax, 0x18
xor r8d, dword [rsi + rcx*4 + 0xd2400]
mov edx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r11 - 6]
mov dword [r11 - 0xc], r8d
mov r8d, dword [rsi + rdx*4 + 0xd3c00]
mov ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r11 - 7]
xor r8d, dword [rsi + rcx*4 + 0xd3400]
mov ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, r9b
mov r9d, dword [r11 - 4]
xor r8d, dword [rsi + rcx*4 + 0xd2c00]
mov ecx, dword [rsi + rax*4 + 0xd4000]
mov eax, r9d
shr rax, 0x18
xor r8d, dword [rsi + rcx*4 + 0xd2400]
mov edx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r11 - 2]
mov dword [r11 - 8], r8d
mov r8d, dword [rsi + rdx*4 + 0xd3c00]
mov ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, byte [r11 - 3]
xor r8d, dword [rsi + rcx*4 + 0xd3400]
mov ecx, dword [rsi + rax*4 + 0xd4000]
movzx eax, r9b
xor r8d, dword [rsi + rcx*4 + 0xd2c00]
mov ecx, dword [rsi + rax*4 + 0xd4000]
xor r8d, dword [rsi + rcx*4 + 0xd2400]
mov dword [r11 - 4], r8d
cmp ebx, dword [r10]
jl 0x18000c206
xor eax, eax
mov rbx, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
mov rdi, qword [rsp + 0x18]
ret