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

Disassembly:
cmp r8, 0xc
jl 0x140094956
mov rax, rsp
mov qword [rax + 8], rcx
push rbp
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x58
mov qword [rax + 0x10], rbx
mov qword [rax - 0x28], rsi
mov r13, rdx
mov r15, r8
mov qword [rax - 0x30], rdi
lea rdx, [rbp - 0x30]
mov r8, r9
mov qword [rbp + 0x38], r9
mov r14, rcx
mov qword [rax - 0x38], r12
call fcn.140094060
mov esi, dword [rbp - 0x28]
mov ebx, dword [rbp - 0x2c]
mov edi, dword [rbp - 0x30]
xor r12d, r12d
call fcn.140112620
mov rcx, qword [rbp - 0x30]
mov rdx, qword [r14 + 8]
sar eax, 7
inc r12
xor rcx, rax
movzx eax, cl
mov ecx, edi
mov edi, dword [rdx + rax*4]
shr ecx, 8
xor edi, ecx
mov ecx, esi
movzx eax, dil
shr ecx, 8
mov dword [rbp - 0x30], edi
add ebx, eax
imul ebx, ebx, 0x8088405
inc ebx
mov eax, ebx
mov dword [rbp - 0x2c], ebx
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov esi, dword [rdx + rax*4]
xor esi, ecx
movzx eax, si
mov dword [rbp - 0x28], esi
or ax, 2
movzx ecx, ax
mov eax, ecx
xor eax, 1
imul eax, ecx
sar eax, 8
mov byte [r12 + r13 - 1], al
cmp r12, 0xa
jl 0x140094474
mov rdx, qword [rbp + 0x38]
mov r12d, 0x12345678
mov esi, 0x23456789
movzx eax, byte [rdx]
mov r14d, 0x34567890
mov dword [rbp - 0x30], r12d
mov dword [rbp - 0x2c], esi
mov dword [rbp - 0x28], r14d
test al, al
je 0x140094563
mov rbx, qword [rbp + 0x28]
mov r8, qword [rbx + 8]
xor rax, qword [rbp - 0x30]
inc rdx
movzx ecx, al
mov eax, r12d
mov r12d, dword [r8 + rcx*4]
shr eax, 8
mov ecx, r14d
xor r12d, eax
shr ecx, 8
movzx eax, r12b
mov dword [rbp - 0x30], r12d
add esi, eax
imul esi, esi, 0x8088405
inc esi
mov eax, esi
mov dword [rbp - 0x2c], esi
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov r14d, dword [r8 + rax*4]
movzx eax, byte [rdx]
xor r14d, ecx
mov dword [rbp - 0x28], r14d
test al, al
jne 0x140094513
sub r15, 0xa
mov qword [rbp - 0x38], 2
mov qword [rbp + 0x38], r15
mov r15, qword [rbp + 0x28]
nop word [rax + rax]
mov rdx, qword [r15 + 8]
movzx r9d, byte [r13]
movzx r8d, word [rbp - 0x28]
or r8w, 2
mov eax, r9d
shr r12d, 8
xor rax, qword [rbp - 0x30]
shr r14d, 8
movzx ecx, al
mov r10d, dword [rdx + rcx*4]
xor r10d, r12d
mov dword [rbp - 0x30], r10d
movzx r11d, r10b
shr r10d, 8
add r11d, esi
imul r11d, r11d, 0x8088405
inc r11d
mov eax, r11d
mov dword [rbp - 0x2c], r11d
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov ebx, dword [rdx + rax*4]
movzx eax, r8w
mov ecx, eax
xor ebx, r14d
xor ecx, 1
mov dword [rbp - 0x28], ebx
movzx r8d, bx
or r8w, 2
shr ebx, 8
imul ecx, eax
sar ecx, 8
xor cl, r9b
movzx r9d, byte [r13 + 1]
mov byte [r13], cl
mov rdx, qword [r15 + 8]
mov eax, r9d
xor rax, qword [rbp - 0x30]
movzx ecx, al
mov edi, dword [rdx + rcx*4]
xor edi, r10d
movzx r10d, dil
mov dword [rbp - 0x30], edi
shr edi, 8
add r10d, r11d
imul r10d, r10d, 0x8088405
inc r10d
mov eax, r10d
mov dword [rbp - 0x2c], r10d
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov r11d, dword [rdx + rax*4]
movzx eax, r8w
mov ecx, eax
xor r11d, ebx
xor ecx, 1
movzx r8d, r11w
mov dword [rbp - 0x28], r11d
or r8w, 2
imul ecx, eax
sar ecx, 8
xor cl, r9b
movzx r9d, byte [r13 + 2]
mov byte [r13 + 1], cl
mov rdx, qword [r15 + 8]
mov eax, r9d
xor rax, qword [rbp - 0x30]
movzx ecx, al
mov ebx, dword [rdx + rcx*4]
xor ebx, edi
movzx edi, bl
mov dword [rbp - 0x30], ebx
add edi, r10d
imul edi, edi, 0x8088405
inc edi
mov eax, edi
mov dword [rbp - 0x2c], edi
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
shr ebx, 8
shr r11d, 8
mov r10d, dword [rdx + rax*4]
movzx eax, r8w
add r13, 5
mov ecx, eax
xor r10d, r11d
xor ecx, 1
mov dword [rbp - 0x28], r10d
movzx r8d, r10w
or r8w, 2
shr r10d, 8
imul ecx, eax
sar ecx, 8
xor cl, r9b
movzx r9d, byte [r13 - 2]
mov byte [r13 - 3], cl
mov rdx, qword [r15 + 8]
mov eax, r9d
xor rax, qword [rbp - 0x30]
movzx ecx, al
mov r11d, dword [rdx + rcx*4]
xor r11d, ebx
movzx ebx, r11b
mov dword [rbp - 0x30], r11d
shr r11d, 8
add ebx, edi
imul ebx, ebx, 0x8088405
inc ebx
mov eax, ebx
mov dword [rbp - 0x2c], ebx
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov edi, dword [rdx + rax*4]
movzx eax, r8w
mov ecx, eax
xor edi, r10d
xor ecx, 1
mov dword [rbp - 0x28], edi
movzx r8d, di
or r8w, 2
shr edi, 8
imul ecx, eax
sar ecx, 8
xor cl, r9b
movzx r9d, byte [r13 - 1]
mov byte [r13 - 2], cl
mov rdx, qword [r15 + 8]
mov eax, r9d
xor rax, qword [rbp - 0x30]
movzx ecx, al
mov r12d, dword [rdx + rcx*4]
xor r12d, r11d
movzx esi, r12b
mov dword [rbp - 0x30], r12d
add esi, ebx
imul esi, esi, 0x8088405
inc esi
mov eax, esi
mov dword [rbp - 0x2c], esi
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov r14d, dword [rdx + rax*4]
movzx eax, r8w
xor r14d, edi
mov ecx, eax
xor ecx, 1
mov dword [rbp - 0x28], r14d
imul ecx, eax
sar ecx, 8
xor cl, r9b
dec qword [rbp - 0x38]
mov byte [r13 - 1], cl
jne 0x140094580
mov edi, dword [rbp + 0x48]
shr r12d, 8
movzx r8d, r14w
mov r9d, edi
shr edi, 0x18
or r8w, 2
shr r9d, 0x10
shr r14d, 8
add r13, 2
mov byte [r13 - 2], r9b
mov rdx, qword [r15 + 8]
movzx eax, r9b
xor rax, qword [rbp - 0x30]
movzx ecx, al
mov r10d, dword [rdx + rcx*4]
xor r10d, r12d
mov r12, qword [rsp + 0x40]
movzx r11d, r10b
mov dword [rbp - 0x30], r10d
shr r10d, 8
add r11d, esi
imul r11d, r11d, 0x8088405
inc r11d
mov eax, r11d
mov dword [rbp - 0x2c], r11d
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov ebx, dword [rdx + rax*4]
movzx eax, r8w
mov ecx, eax
xor ebx, r14d
xor ecx, 1
mov dword [rbp - 0x28], ebx
movzx r8d, bx
or r8w, 2
shr ebx, 8
imul ecx, eax
sar ecx, 8
movzx eax, dil
xor rax, qword [rbp - 0x30]
xor cl, r9b
mov byte [r13 - 2], cl
movzx ecx, al
mov byte [r13 - 1], dil
mov rdx, qword [r15 + 8]
mov r15, qword [rbp + 0x38]
mov esi, dword [rdx + rcx*4]
sub r15, 2
xor esi, r10d
movzx r10d, sil
mov dword [rbp - 0x30], esi
add r10d, r11d
imul r10d, r10d, 0x8088405
inc r10d
mov eax, r10d
mov dword [rbp - 0x2c], r10d
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov r11d, dword [rdx + rax*4]
movzx eax, r8w
xor r11d, ebx
mov ecx, eax
xor ecx, 1
mov dword [rbp - 0x28], r11d
imul ecx, eax
sar ecx, 8
xor cl, dil
mov rdi, qword [rsp + 0x48]
mov byte [r13 - 1], cl
test r15, r15
jle 0x14009493e
mov rbx, qword [rbp + 0x28]
nop dword [rax]
movzx r9d, byte [r13]
mov rdx, qword [rbx + 8]
movzx r8d, word [rbp - 0x28]
mov eax, r9d
or r8w, 2
dec r15
xor rax, qword [rbp - 0x30]
inc r13
movzx ecx, al
mov eax, esi
mov esi, dword [rdx + rcx*4]
shr eax, 8
mov ecx, r11d
xor esi, eax
shr ecx, 8
movzx eax, sil
mov dword [rbp - 0x30], esi
add r10d, eax
imul r10d, r10d, 0x8088405
inc r10d
mov eax, r10d
mov dword [rbp - 0x2c], r10d
shr eax, 0x18
xor rax, qword [rbp - 0x28]
movzx eax, al
mov r11d, dword [rdx + rax*4]
movzx eax, r8w
xor r11d, ecx
mov ecx, eax
xor ecx, 1
mov dword [rbp - 0x28], r11d
imul ecx, eax
sar ecx, 8
xor cl, r9b
mov byte [r13 - 1], cl
test r15, r15
jg 0x1400948c0
mov rbx, qword [rsp + 0x88]
mov rsi, qword [rsp + 0x50]
add rsp, 0x58
pop r15
pop r14
pop r13
pop rbp
repz ret