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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r14
sub rsp, 0x20
mov rax, qword [0x14021b0e0]
xor rax, rsp
mov qword [rsp + 0x10], rax
mov r11, r8
mov r9d, 0x12345678
mov r10d, 0x23456789
mov dword [rcx + 0x10d6c], r9d
mov r8d, 0x34567890
mov dword [rcx + 0x10d70], r10d
mov dword [rcx + 0x10d74], r8d
mov rdi, rdx
movzx eax, byte [r11]
test al, al
je 0x1400a143a
mov rbx, qword [rcx + 0x10b08]
nop dword [rax]
xor rax, r9
lea r11, [r11 + 1]
movzx edx, al
mov eax, r9d
shr eax, 8
xor eax, dword [rbx + rdx*4]
mov edx, r8d
mov dword [rcx + 0x10d6c], eax
mov r9d, eax
movzx eax, al
add eax, r10d
shr edx, 8
imul r10d, eax, 0x8088405
inc r10d
mov dword [rcx + 0x10d70], r10d
mov eax, r10d
shr rax, 0x18
xor rax, r8
movzx eax, al
xor edx, dword [rbx + rax*4]
mov dword [rcx + 0x10d74], edx
mov r8d, edx
movzx eax, byte [r11]
test al, al
jne 0x1400a13e0
movsd xmm0, qword [rdi]
xor ebp, ebp
mov eax, dword [rdi + 8]
mov r14d, r9d
mov rdi, qword [rcx + 0x10b08]
mov esi, r8d
movsd qword [rsp], xmm0
mov dword [rsp + 8], eax
nop dword [rax]
mov edx, esi
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [rsp + rbp], al
movzx eax, byte [rsp + rbp]
xor rax, r14
movzx edx, al
mov eax, r14d
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, esi
mov dword [rcx + 0x10d6c], eax
mov r9d, eax
movzx eax, al
add eax, r10d
shr edx, 8
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, rsi
movzx eax, al
xor edx, dword [rdi + rax*4]
mov dword [rcx + 0x10d74], edx
mov r11d, edx
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [rsp + rbp + 1], al
movzx eax, byte [rsp + rbp + 1]
xor rax, r9
shr r9d, 8
movzx edx, al
xor r9d, dword [rdi + rdx*4]
mov dword [rcx + 0x10d6c], r9d
mov r10d, r9d
movzx eax, r9b
add eax, r8d
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, r11
shr r11d, 8
movzx eax, al
xor r11d, dword [rdi + rax*4]
mov ebx, r11d
and r11d, 0xfffd
or r11d, 2
mov dword [rcx + 0x10d74], ebx
mov eax, r11d
xor eax, 1
imul eax, r11d
shr eax, 8
xor byte [rsp + rbp + 2], al
movzx eax, byte [rsp + rbp + 2]
xor rax, r10
shr r10d, 8
movzx edx, al
xor r10d, dword [rdi + rdx*4]
movzx eax, r10b
mov r9d, r10d
add eax, r8d
mov dword [rcx + 0x10d6c], r10d
imul r8d, eax, 0x8088405
inc r8d
mov eax, r8d
mov dword [rcx + 0x10d70], r8d
shr rax, 0x18
xor rax, rbx
movzx eax, al
shr ebx, 8
xor ebx, dword [rdi + rax*4]
mov dword [rcx + 0x10d74], ebx
mov r11d, ebx
and ebx, 0xfffd
or ebx, 2
mov eax, ebx
xor eax, 1
imul eax, ebx
shr eax, 8
xor byte [rsp + rbp + 3], al
movzx eax, byte [rsp + rbp + 3]
xor rax, r9
shr r9d, 8
movzx edx, al
xor r9d, dword [rdi + rdx*4]
mov dword [rcx + 0x10d6c], r9d
mov r10d, r9d
movzx eax, r9b
add eax, r8d
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, r11
shr r11d, 8
movzx eax, al
xor r11d, dword [rdi + rax*4]
mov ebx, r11d
and r11d, 0xfffd
or r11d, 2
mov dword [rcx + 0x10d74], ebx
mov eax, r11d
xor eax, 1
imul eax, r11d
shr eax, 8
xor byte [rsp + rbp + 4], al
movzx eax, byte [rsp + rbp + 4]
xor rax, r10
shr r10d, 8
movzx edx, al
xor r10d, dword [rdi + rdx*4]
mov dword [rcx + 0x10d6c], r10d
mov r11d, r10d
movzx eax, r10b
add eax, r8d
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, rbx
shr ebx, 8
movzx eax, al
xor ebx, dword [rdi + rax*4]
mov r9d, ebx
mov dword [rcx + 0x10d74], ebx
and ebx, 0xfffd
or ebx, 2
mov eax, ebx
xor eax, 1
imul eax, ebx
shr eax, 8
xor byte [rsp + rbp + 5], al
movzx eax, byte [rsp + rbp + 5]
xor rax, r11
shr r11d, 8
movzx edx, al
xor r11d, dword [rdi + rdx*4]
movzx eax, r11b
mov r14d, r11d
add eax, r8d
mov dword [rcx + 0x10d6c], r11d
imul edx, eax, 0x8088405
lea eax, [rdx + 1]
mov dword [rcx + 0x10d70], eax
lea r10d, [rdx + 1]
shr rax, 0x18
xor rax, r9
movzx eax, al
shr r9d, 8
xor r9d, dword [rdi + rax*4]
add rbp, 6
mov dword [rcx + 0x10d74], r9d
mov esi, r9d
cmp rbp, 0xc
jl 0x1400a1460
mov rax, qword [rcx + 0xb00]
movzx r8d, byte [rsp + 0xb]
test byte [rax + 0x18], 2
je 0x1400a170f
movzx edx, byte [rcx + 0x10b79]
jmp 0x1400a1716
movzx edx, byte [rcx + 0x10b7f]
cmp r8d, edx
je 0x1400a1725
mov eax, 0xffffffff
jmp 0x1400a17de
mov eax, dword [rcx + 0x10b28]
mov r11d, dword [rcx + 0xa0]
cmp eax, r11d
mov r10, qword [rcx + 0x10b20]
cmovle r11d, eax
test r11d, r11d
je 0x1400a17dc
nop dword [rax]
mov edx, dword [rcx + 0x10d74]
lea r10, [r10 + 1]
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [r10 - 1], al
movzx edx, byte [r10 - 1]
mov r8d, dword [rcx + 0x10d6c]
mov eax, r8d
mov r9, qword [rcx + 0x10b08]
xor rax, rdx
movzx edx, al
shr r8d, 8
xor r8d, dword [r9 + rdx*4]
mov edx, dword [rcx + 0x10d74]
movzx eax, r8b
add eax, dword [rcx + 0x10d70]
imul eax, eax, 0x8088405
mov dword [rcx + 0x10d6c], r8d
inc eax
mov dword [rcx + 0x10d70], eax
shr rax, 0x18
xor rax, rdx
shr edx, 8
movzx eax, al
xor edx, dword [r9 + rax*4]
mov dword [rcx + 0x10d74], edx
sub r11d, 1
jne 0x1400a1750
xor eax, eax
mov rcx, qword [rsp + 0x10]
xor rcx, rsp
call fcn.140147af0
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
add rsp, 0x20
pop r14
pop rdi
pop rsi
ret