Function at 0x8e9850
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
mov r15, qword [rsp + 0xd0]
mov eax, edx
mov esi, edx
shl edx, 6
mov qword [rsp + 0xc0], r8
shl eax, 5
mov qword [rsp + 0xc8], r9
mov r13, rcx
lea r14, [r15 + rdx*4]
mov ebx, eax
mov dword [rsp + 0x2c], eax
lea r12, [r15 + rbx*4]
test eax, eax
jle 0x8e9b1e
xor edx, edx
nop dword [rax]
mov eax, dword [r13 + rdx*4]
mov dword [r15 + rdx*4], eax
add rdx, 1
cmp rbx, rdx
jne 0x8e98a0
cmp qword [rsp + 0xc0], 0
je 0x8e9adb
movsxd rax, dword [rsp + 0x2c]
mov qword [rsp + 0xd0], r15
mov r15, r12
xor ebp, ebp
mov r12, qword [rsp + 0xd0]
mov qword [rsp + 0xb0], r13
lea rdi, [rax*8]
mov qword [rsp + 0x38], rdi
lea rdi, [rax*4]
neg rax
shl rax, 2
mov qword [rsp + 0x30], rdi
add rdi, qword [rsp + 0xc8]
mov r13, rax
nop
mov edx, dword [rsp + 0x2c]
lea r8, [r13 + rdi]
test edx, edx
je 0x8e9b08
xor edx, edx
nop dword [rax + rax]
mov eax, dword [r12 + rdx*4]
mov dword [r8 + rdx*4], eax
add rdx, 1
cmp rbx, rdx
jne 0x8e9928
mov rdx, r15
mov r9d, esi
mov r8, r14
mov rcx, r12
call fcn.008e9770
xor edx, edx
nop dword [rax]
mov eax, dword [r15 + rdx*4]
mov dword [rdi + rdx*4], eax
add rdx, 1
cmp rbx, rdx
jne 0x8e9950
mov r9d, esi
mov r8, r14
mov rdx, r12
mov rcx, r15
call fcn.008e9770
add rbp, 2
add rdi, qword [rsp + 0x38]
cmp qword [rsp + 0xc0], rbp
ja 0x8e9910
mov eax, dword [rsp + 0x2c]
mov qword [rsp + 0xd0], r12
mov r12, r15
mov r13, rbx
mov r15, qword [rsp + 0xd0]
mov ebx, esi
xor ebp, ebp
mov rsi, qword [rsp + 0xc8]
lea ecx, [rax - 0xf]
lea edx, [rax - 0x10]
shl rcx, 2
shl rdx, 2
lea rax, [r15 + rcx]
lea rdi, [r15 + rdx]
mov qword [rsp + 0x40], rax
lea rax, [r12 + rdx]
mov qword [rsp + 0x50], rax
lea rax, [r12 + rcx]
mov qword [rsp + 0x58], rax
mov rax, qword [rsp + 0xc0]
mov qword [rsp + 0x38], rdi
lea rdi, [rax - 1]
mov rax, rdi
shr rax, 1
mov qword [rsp + 0x48], rax
nop dword [rax + rax]
mov rax, qword [rsp + 0x40]
mov ecx, dword [rax]
mov rax, qword [rsp + 0x38]
mov edx, dword [rax]
shl rcx, 0x20
mov eax, dword [rsp + 0x2c]
or rcx, rdx
and rcx, rdi
imul rcx, qword [rsp + 0x30]
add rcx, rsi
test eax, eax
je 0x8e9ab0
xor edx, edx
nop word [rax + rax]
mov eax, dword [rcx + rdx*4]
xor dword [r15 + rdx*4], eax
add rdx, 1
cmp r13, rdx
jne 0x8e9a30
mov rdx, r12
mov rcx, r15
mov r9d, ebx
mov r8, r14
call fcn.008e9770
mov rax, qword [rsp + 0x58]
mov ecx, dword [rax]
mov rax, qword [rsp + 0x50]
mov edx, dword [rax]
shl rcx, 0x20
or rcx, rdx
xor edx, edx
and rcx, rdi
imul rcx, qword [rsp + 0x30]
add rcx, rsi
nop dword [rax]
mov eax, dword [rcx + rdx*4]
xor dword [r12 + rdx*4], eax
add rdx, 1
cmp r13, rdx
jne 0x8e9a78
mov rdx, r15
mov r9d, ebx
mov r8, r14
mov rcx, r12
call fcn.008e9770
lea rdx, [rbp + 1]
cmp qword [rsp + 0x48], rbp
je 0x8e9ac8
mov rbp, rdx
jmp 0x8e99f8
mov r9d, ebx
mov r8, r14
mov rdx, r12
mov rcx, r15
call fcn.008e9770
jmp 0x8e9a88
mov ecx, dword [rsp + 0x2c]
mov rbx, r13
mov r13, qword [rsp + 0xb0]
test ecx, ecx
jle 0x8e9af2
xor edx, edx
nop dword [rax]
mov eax, dword [r15 + rdx*4]
mov dword [r13 + rdx*4], eax
add rdx, 1
cmp rdx, rbx
jne 0x8e9ae0
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r9d, esi
mov r8, r14
mov rdx, r15
mov rcx, r12
call fcn.008e9770
jmp 0x8e9960
cmp qword [rsp + 0xc0], 0
jne 0x8e98c1
jmp 0x8e9af2