Function at 0x1400a2e80
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 [0x1401b5030]
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 0x1400a2f41
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 0x1400a2ee0
movsd xmm0, qword [rsi]
xor edi, edi
mov eax, dword [rsi + 8]
mov ebp, r9d
mov rbx, qword [rcx + 0x10b08]
mov esi, r10d
movsd qword [rsp], xmm0
mov dword [rsp + 8], eax
mov r10d, esi
mov edx, esi
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 + rdi], al
movzx eax, byte [rsp + rdi]
xor rax, rbp
movzx eax, al
mov r8d, dword [rbx + rax*4]
xor r8d, edx
mov dword [rcx + 0x10d6c], r8d
mov r9d, r8d
movzx eax, r8b
add eax, r11d
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, r10
shr r10d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r10d
mov r10d, 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 + rdi + 1], al
movzx eax, byte [rsp + rdi + 1]
xor rax, r9
shr r9d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r9d
movzx eax, dl
mov r9d, 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, r10
shr r10d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r10d
mov r10d, 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 + rdi + 2], al
movzx eax, byte [rsp + rdi + 2]
xor rax, r9
shr r9d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r9d
movzx eax, dl
mov r9d, 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, r10
shr r10d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r10d
mov dword [rcx + 0x10d74], edx
mov r10d, edx
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [rsp + rdi + 3], al
movzx eax, byte [rsp + rdi + 3]
xor rax, r9
shr r9d, 8
movzx eax, al
mov edx, dword [rbx + rax*4]
xor edx, r9d
mov dword [rcx + 0x10d6c], edx
mov r9d, edx
movzx eax, dl
add eax, r8d
imul r8d, eax, 0x8088405
inc r8d
mov dword [rcx + 0x10d70], r8d
mov eax, r8d
shr rax, 0x18
xor rax, r10
shr r10d, 8
movzx eax, al
mov eax, dword [rbx + rax*4]
xor eax, r10d
mov edx, eax
mov dword [rcx + 0x10d74], eax
mov r10d, eax
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
movzx edx, al
movzx eax, byte [rsp + rdi + 4]
xor eax, edx
mov byte [rsp + rdi + 4], al
xor rax, r9
movzx eax, al
shr r9d, 8
mov edx, dword [rbx + rax*4]
xor edx, r9d
movzx eax, dl
mov r9d, edx
add eax, r8d
mov dword [rcx + 0x10d6c], edx
imul edx, eax, 0x8088405
inc edx
mov dword [rcx + 0x10d70], edx
mov r8d, edx
shr rdx, 0x18
xor rdx, r10
shr r10d, 8
movzx eax, dl
mov eax, dword [rbx + rax*4]
xor eax, r10d
mov edx, eax
mov dword [rcx + 0x10d74], eax
mov r10d, eax
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
movzx edx, al
movzx eax, byte [rsp + rdi + 5]
xor eax, edx
mov byte [rsp + rdi + 5], al
xor rax, r9
add rdi, 6
movzx eax, al
shr r9d, 8
mov edx, dword [rbx + rax*4]
xor edx, r9d
movzx eax, dl
mov ebp, edx
add r8d, eax
mov dword [rcx + 0x10d6c], edx
imul r11d, r8d, 0x8088405
inc r11d
mov eax, r11d
mov dword [rcx + 0x10d70], r11d
shr rax, 0x18
xor rax, r10
shr r10d, 8
movzx eax, al
mov eax, dword [rbx + rax*4]
xor eax, r10d
mov dword [rcx + 0x10d74], eax
mov esi, eax
cmp rdi, 0xc
jl 0x1400a2f60
mov rax, qword [rcx + 0xb00]
movzx r8d, byte [rsp + 0xb]
test byte [rax + 0x18], 2
je 0x1400a3228
movzx edx, byte [rcx + 0x10b79]
jmp 0x1400a322f
movzx edx, byte [rcx + 0x10b7f]
cmp r8d, edx
je 0x1400a323e
mov eax, 0xffffffff
jmp 0x1400a3301
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 0x1400a32ff
nop dword [rax]
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 0x1400a3270
xor eax, eax
mov rcx, qword [rsp + 0x10]
xor rcx, rsp
call fcn.14011b0c0
mov rbx, qword [rsp + 0x50]
add rsp, 0x20
pop rdi
pop rsi
pop rbp
ret