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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
sub rsp, 0x20
mov rax, qword [0x1401b7030]
xor rax, rsp
mov qword [rsp + 0x10], rax
mov r9d, 0x12345678
mov r11d, 0x23456789
mov r10d, 0x34567890
mov dword [rcx + 0x10d6c], r9d
mov dword [rcx + 0x10d70], r11d
mov rbx, r8
mov dword [rcx + 0x10d74], r10d
mov rsi, rdx
movzx eax, byte [r8]
test al, al
je 0x1400a4a11
mov rdi, qword [rcx + 0x10b08]
nop word [rax + rax]
xor rax, r9
lea rbx, [rbx + 1]
movzx edx, al
mov eax, r9d
shr eax, 8
mov r8d, dword [rdi + rdx*4]
mov edx, r10d
xor r8d, eax
shr edx, 8
movzx eax, r8b
mov r9d, r8d
add eax, r11d
mov dword [rcx + 0x10d6c], r8d
imul r11d, eax, 0x8088405
inc r11d
mov dword [rcx + 0x10d70], r11d
mov eax, r11d
shr rax, 0x18
xor rax, r10
movzx eax, al
mov eax, dword [rdi + rax*4]
xor eax, edx
mov r10d, eax
mov dword [rcx + 0x10d74], eax
movzx eax, byte [rbx]
test al, al
jne 0x1400a49b0
movsd xmm0, qword [rsi]
mov ebp, r9d
mov eax, dword [rsi + 8]
mov edi, r10d
mov rbx, qword [rcx + 0x10b08]
xor esi, esi
movsd qword [rsp], xmm0
mov dword [rsp + 8], eax
mov edx, edi
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
mov edx, ebp
shr edx, 8
shr eax, 8
xor byte [rsp + rsi], al
movzx eax, byte [rsp + rsi]
xor rax, rbp
movzx eax, al
mov r8d, dword [rbx + rax*4]
xor r8d, edx
mov edx, edi
mov dword [rcx + 0x10d6c], r8d
mov r10d, r8d
movzx eax, r8b
add eax, r11d
shr edx, 8
imul r9d, eax, 0x8088405
inc r9d
mov dword [rcx + 0x10d70], r9d
mov eax, r9d
shr rax, 0x18
xor rax, rdi
movzx eax, al
mov r8d, dword [rbx + rax*4]
xor r8d, edx
mov dword [rcx + 0x10d74], r8d
mov r11d, r8d
and r8d, 0xfffd
or r8d, 2
mov eax, r8d
xor eax, 1
imul eax, r8d
shr eax, 8
xor byte [rsp + rsi + 1], al
movzx eax, byte [rsp + rsi + 1]
xor rax, r10
shr r10d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r10d
movzx eax, dl
mov r10d, edx
add eax, r9d
mov dword [rcx + 0x10d6c], edx
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
mov edx, dword [rbx + rax*4]
xor edx, r11d
mov r9d, edx
mov dword [rcx + 0x10d74], edx
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [rsp + rsi + 2], al
movzx eax, byte [rsp + rsi + 2]
xor rax, r10
shr r10d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r10d
movzx eax, dl
mov r10d, edx
add eax, r8d
mov dword [rcx + 0x10d6c], edx
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, r9
shr r9d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r9d
mov r9d, edx
mov dword [rcx + 0x10d74], edx
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [rsp + rsi + 3], al
movzx eax, byte [rsp + rsi + 3]
xor rax, r10
shr r10d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r10d
mov r10d, edx
movzx eax, dl
add eax, r8d
mov dword [rcx + 0x10d6c], edx
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, r9
shr r9d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r9d
mov r9d, edx
mov dword [rcx + 0x10d74], edx
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [rsp + rsi + 4], al
movzx eax, byte [rsp + rsi + 4]
xor rax, r10
shr r10d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r10d
movzx eax, dl
mov r10d, edx
add eax, r8d
mov dword [rcx + 0x10d6c], edx
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, r9
shr r9d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r9d
mov r9d, edx
mov dword [rcx + 0x10d74], edx
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [rsp + rsi + 5], al
movzx eax, byte [rsp + rsi + 5]
xor rax, r10
shr r10d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r10d
mov ebp, edx
movzx eax, dl
add rsi, 6
add eax, r8d
mov dword [rcx + 0x10d6c], edx
imul edx, eax, 0x8088405
lea eax, [rdx + 1]
mov dword [rcx + 0x10d70], eax
lea r11d, [rdx + 1]
shr rax, 0x18
xor rax, r9
shr r9d, 8
movzx eax, al
mov eax, dword [rbx + rax*4]
xor eax, r9d
mov dword [rcx + 0x10d74], eax
mov edi, eax
cmp rsi, 0xc
jl 0x1400a4a30
mov rax, qword [rcx + 0xb00]
movzx r8d, byte [rsp + 0xb]
test byte [rax + 0x18], 2
je 0x1400a4cf0
movzx edx, byte [rcx + 0x10b79]
jmp 0x1400a4cf7
movzx edx, byte [rcx + 0x10b7f]
cmp r8d, edx
je 0x1400a4d06
mov eax, 0xffffffff
jmp 0x1400a4dc1
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 0x1400a4dbf
nop word [rax + 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
mov eax, dword [r9 + rdx*4]
mov edx, dword [rcx + 0x10d74]
xor eax, r8d
mov dword [rcx + 0x10d6c], eax
movzx eax, al
add eax, dword [rcx + 0x10d70]
imul eax, eax, 0x8088405
inc eax
mov dword [rcx + 0x10d70], eax
shr rax, 0x18
xor rax, rdx
shr edx, 8
movzx eax, al
mov eax, dword [r9 + rax*4]
xor eax, edx
mov dword [rcx + 0x10d74], eax
sub r11d, 1
jne 0x1400a4d30
xor eax, eax
mov rcx, qword [rsp + 0x10]
xor rcx, rsp
call fcn.14011c340
mov rbx, qword [rsp + 0x50]
add rsp, 0x20
pop rdi
pop rsi
pop rbp
ret