Function at 0x14000ede0
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push rbx
push rbp
push rsi
push r12
sub rsp, 0x48
mov rax, qword [0x140031318]
xor rax, rsp
mov qword [rsp + 0x30], rax
cmp r8d, 0xc
mov rsi, qword [rsp + 0x90]
mov rbx, r9
mov rbp, rdx
mov r12, rcx
jge 0x14000ee17
xor eax, eax
jmp 0x14000f213
mov eax, dword [0x140032ce8]
mov qword [rsp + 0x80], rdi
mov qword [rsp + 0x40], r13
inc eax
mov dword [0x140032ce8], eax
cmp eax, 1
jne 0x14000ee4a
xor ecx, ecx
call fcn.140019340
xor eax, 0xbb40e64e
mov ecx, eax
call fcn.140012f14
mov r8, rsi
mov rdx, rbx
mov rcx, r12
call fcn.14000d310
xor r13d, r13d
mov rdi, r13
nop
call fcn.140012f2c
mov r8d, dword [rbx + 8]
mov edx, dword [rbx]
sar eax, 7
mov rcx, rdx
shr edx, 8
movzx r10d, al
mov r9d, r8d
inc rdi
and r9d, 0xfffd
mov eax, r10d
xor rcx, rax
or r9d, 2
movzx eax, cl
mov ecx, dword [rsi + rax*4]
xor ecx, edx
movzx eax, cl
mov dword [rbx], ecx
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov ecx, eax
mov dword [rbx + 4], eax
shr ecx, 0x18
xor rcx, r8
shr r8d, 8
movzx eax, cl
mov eax, dword [rsi + rax*4]
xor eax, r8d
mov dword [rbx + 8], eax
mov eax, r9d
xor eax, 1
imul eax, r9d
shr eax, 8
xor al, r10b
cmp rdi, 0xa
mov byte [rsp + rdi + 0x1f], al
jl 0x14000ee60
mov r8, rsi
mov rdx, rbx
mov rcx, r12
call fcn.14000d310
lea rax, [rsp + 0x20]
mov rdi, rbp
sub rdi, rax
nop word [rax + rax]
mov edx, dword [rbx]
mov r8d, dword [rbx + 8]
movzx r9d, byte [rsp + r13 + 0x20]
mov rax, rdx
shr edx, 8
lea r11, [rsp + r13 + 0x20]
xor rax, r9
mov r10d, r8d
movzx ecx, al
and r10d, 0xfffd
mov eax, dword [rsi + rcx*4]
or r10d, 2
xor eax, edx
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, eax
shr ecx, 0x18
xor rcx, r8
shr r8d, 8
movzx eax, cl
mov eax, dword [rsi + rax*4]
xor eax, r8d
mov dword [rbx + 8], eax
mov eax, r10d
xor eax, 1
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [r11 + 1]
mov byte [rdi + r11], al
mov edx, dword [rbx]
mov r8d, dword [rbx + 8]
mov r10d, r8d
mov rax, r9
xor rax, rdx
shr edx, 8
and r10d, 0xfffd
movzx ecx, al
or r10d, 2
mov eax, dword [rsi + rcx*4]
xor eax, edx
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov ecx, eax
mov dword [rbx + 4], eax
shr ecx, 0x18
xor rcx, r8
shr r8d, 8
movzx eax, cl
mov eax, dword [rsi + rax*4]
xor eax, r8d
mov dword [rbx + 8], eax
mov eax, r10d
xor eax, 1
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [r11 + 2]
mov byte [r13 + rbp + 1], al
mov edx, dword [rbx]
mov r8d, dword [rbx + 8]
mov rax, r9
mov r10d, r8d
xor rax, rdx
shr edx, 8
and r10d, 0xfffd
movzx ecx, al
or r10d, 2
mov eax, dword [rsi + rcx*4]
xor eax, edx
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, eax
shr ecx, 0x18
xor rcx, r8
shr r8d, 8
movzx eax, cl
mov eax, dword [rsi + rax*4]
xor eax, r8d
mov dword [rbx + 8], eax
mov eax, r10d
xor eax, 1
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [r11 + 3]
mov byte [r13 + rbp + 2], al
mov r8d, dword [rbx + 8]
mov edx, dword [rbx]
mov r10d, r8d
mov rax, r9
xor rax, rdx
shr edx, 8
and r10d, 0xfffd
movzx ecx, al
or r10d, 2
mov eax, dword [rsi + rcx*4]
xor eax, edx
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, eax
shr ecx, 0x18
xor rcx, r8
shr r8d, 8
movzx eax, cl
mov eax, dword [rsi + rax*4]
xor eax, r8d
mov dword [rbx + 8], eax
mov eax, r10d
xor eax, 1
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [r11 + 4]
mov byte [r13 + rbp + 3], al
mov r8d, dword [rbx + 8]
mov edx, dword [rbx]
mov rax, rdx
shr edx, 8
mov r10d, r8d
xor rax, r9
and r10d, 0xfffd
movzx ecx, al
or r10d, 2
mov eax, dword [rsi + rcx*4]
xor eax, edx
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov ecx, eax
mov dword [rbx + 4], eax
shr ecx, 0x18
xor rcx, r8
shr r8d, 8
movzx eax, cl
mov eax, dword [rsi + rax*4]
xor eax, r8d
mov dword [rbx + 8], eax
mov eax, r10d
xor eax, 1
imul eax, r10d
shr eax, 8
xor al, r9b
add r13, 5
mov byte [r13 + rbp - 1], al
cmp r13, 0xa
jl 0x14000ef00
mov r9d, dword [rbx + 8]
mov edx, dword [rbx]
mov r11d, dword [rsp + 0x98]
mov r13, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x80]
mov r8d, r11d
shr r8d, 0x10
mov r10d, r9d
shr r11d, 0x18
and r10d, 0xfffd
mov rax, r8
xor rax, rdx
or r10d, 2
shr edx, 8
movzx ecx, al
mov eax, dword [rsi + rcx*4]
xor eax, edx
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, eax
shr ecx, 0x18
xor rcx, r9
shr r9d, 8
movzx eax, cl
mov eax, dword [rsi + rax*4]
xor eax, r9d
mov r9d, r11d
mov dword [rbx + 8], eax
mov eax, r10d
xor eax, 1
imul eax, r10d
shr eax, 8
xor al, r8b
mov byte [rbp + 0xa], al
mov r8d, dword [rbx + 8]
mov edx, dword [rbx]
mov r10d, r8d
mov rax, r9
xor rax, rdx
shr edx, 8
and r10d, 0xfffd
movzx ecx, al
or r10d, 2
mov eax, dword [rsi + rcx*4]
xor eax, edx
mov dword [rbx], eax
movzx eax, al
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov ecx, eax
mov dword [rbx + 4], eax
shr ecx, 0x18
xor rcx, r8
shr r8d, 8
movzx eax, cl
mov eax, dword [rsi + rax*4]
xor eax, r8d
mov dword [rbx + 8], eax
mov eax, r10d
xor eax, 1
imul eax, r10d
shr eax, 8
xor al, r11b
mov byte [rbp + 0xb], al
mov eax, 0xc
mov rcx, qword [rsp + 0x30]
xor rcx, rsp
call fcn.140011230
add rsp, 0x48
pop r12
pop rsi
pop rbp
pop rbx
ret