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

Disassembly:
push rbx
push rbp
push rsi
push r14
sub rsp, 0x48
mov rax, qword [0x140100258]
xor rax, rsp
mov qword [rsp + 0x30], rax
mov rsi, qword [rsp + 0x90]
mov rbx, r9
mov r14, rdx
mov rbp, rcx
cmp r8d, 0xc
jge 0x14003e317
xor eax, eax
jmp 0x14003e89a
mov eax, dword [0x140103818]
inc eax
mov qword [rsp + 0x40], rdi
mov dword [0x140103818], eax
cmp eax, 1
jne 0x14003e342
xor ecx, ecx
call fcn.14009a8d0
xor eax, 0xbb40e64e
mov ecx, eax
call fcn.1400a5b70
mov r8, rsi
mov rdx, rbx
mov rcx, rbp
call fcn.14003e8c0
xor edi, edi
call fcn.1400a5b44
mov r9d, dword [rbx + 8]
mov r11d, eax
mov r8d, dword [rbx]
mov r10d, r9d
sar r11d, 7
mov edx, r8d
mov ecx, r11d
shr r8d, 8
xor rdx, rcx
and r10d, 0xfffd
or r10d, 2
movzx ecx, dl
xor r8d, dword [rsi + rcx*4]
movzx eax, r8b
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
mov dword [rbx], r8d
inc eax
mov dword [rbx + 4], eax
shr rax, 0x18
xor rax, r9
shr r9d, 8
movzx eax, al
xor r9d, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], r9d
imul eax, r10d
shr eax, 8
xor al, r11b
mov byte [rsp + rdi + 0x20], al
inc rdi
cmp rdi, 0xa
jl 0x14003e352
mov r8, rsi
mov rdx, rbx
mov rcx, rbp
call fcn.14003e8c0
mov edx, dword [rbx]
mov r8d, dword [rbx + 8]
mov r10d, r8d
movzx r9d, byte [rsp + 0x20]
and r10d, 0xfffd
or r10d, 2
mov eax, r9d
xor rax, rdx
shr edx, 8
movzx ecx, al
xor edx, dword [rsi + rcx*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
shr rax, 0x18
xor rax, r8
shr r8d, 8
movzx eax, al
xor r8d, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], r8d
imul eax, r10d
shr eax, 8
xor al, r9b
mov r9, qword [rsp + 0x21]
mov byte [r14], al
mov edx, dword [rbx]
mov r10d, dword [rbx + 8]
and r10d, 0xfffd
movzx eax, r9b
xor rax, rdx
or r10d, 2
movzx ecx, al
shr edx, 8
xor edx, dword [rsi + rcx*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
shr ecx, 8
movzx eax, al
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
mov r9, qword [rsp + 0x22]
mov byte [r14 + 1], al
mov edx, dword [rbx]
mov r10d, dword [rbx + 8]
and r10d, 0xfffd
movzx eax, r9b
xor rax, rdx
or r10d, 2
movzx ecx, al
shr edx, 8
xor edx, dword [rsi + rcx*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
movzx eax, al
shr ecx, 8
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [rsp + 0x23]
mov byte [r14 + 2], al
mov edx, dword [rbx]
mov ecx, edx
mov r10d, dword [rbx + 8]
xor rcx, r9
movzx eax, cl
and r10d, 0xfffd
shr edx, 8
or r10d, 2
xor edx, dword [rsi + rax*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
shr ecx, 8
movzx eax, al
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [rsp + 0x24]
mov byte [r14 + 3], al
mov eax, r9d
mov edx, dword [rbx]
xor rax, rdx
mov r10d, dword [rbx + 8]
movzx ecx, al
and r10d, 0xfffd
shr edx, 8
or r10d, 2
xor edx, dword [rsi + rcx*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
shr ecx, 8
movzx eax, al
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [rsp + 0x25]
mov byte [r14 + 4], al
mov eax, r9d
mov edx, dword [rbx]
xor rax, rdx
mov r10d, dword [rbx + 8]
movzx ecx, al
and r10d, 0xfffd
shr edx, 8
or r10d, 2
xor edx, dword [rsi + rcx*4]
movzx eax, dl
mov dword [rbx], edx
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
shr ecx, 8
movzx eax, al
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [rsp + 0x26]
mov byte [r14 + 5], al
mov eax, r9d
mov edx, dword [rbx]
xor rax, rdx
mov r10d, dword [rbx + 8]
movzx ecx, al
and r10d, 0xfffd
or r10d, 2
shr edx, 8
xor edx, dword [rsi + rcx*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
shr ecx, 8
movzx eax, al
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [rsp + 0x27]
mov byte [r14 + 6], al
mov eax, r9d
mov edx, dword [rbx]
xor rax, rdx
mov r10d, dword [rbx + 8]
movzx ecx, al
and r10d, 0xfffd
or r10d, 2
shr edx, 8
xor edx, dword [rsi + rcx*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
shr ecx, 8
movzx eax, al
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [rsp + 0x28]
mov byte [r14 + 7], al
mov eax, r9d
mov r10d, dword [rbx + 8]
mov edx, dword [rbx]
and r10d, 0xfffd
or r10d, 2
xor rax, rdx
movzx ecx, al
mov r11d, dword [rsp + 0x98]
mov r8d, r11d
shr edx, 8
shr r8d, 0x10
xor edx, dword [rsi + rcx*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
shr ecx, 8
movzx eax, al
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
movzx r9d, byte [rsp + 0x29]
mov byte [r14 + 8], al
mov eax, r9d
mov edx, dword [rbx]
xor rax, rdx
mov r10d, dword [rbx + 8]
movzx ecx, al
and r10d, 0xfffd
shr edx, 8
or r10d, 2
xor edx, dword [rsi + rcx*4]
mov dword [rbx], edx
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
inc eax
mov dword [rbx + 4], eax
mov ecx, dword [rbx + 8]
shr rax, 0x18
xor rax, rcx
shr ecx, 8
movzx eax, al
xor ecx, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], ecx
imul eax, r10d
shr eax, 8
xor al, r9b
mov byte [r14 + 9], al
mov r9d, dword [rbx + 8]
mov r10d, r9d
mov edx, dword [rbx]
and r10d, 0xfffd
mov eax, edx
or r10d, 2
xor rax, r8
shr edx, 8
movzx ecx, al
xor edx, dword [rsi + rcx*4]
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
mov dword [rbx], edx
inc eax
mov dword [rbx + 4], eax
shr rax, 0x18
xor rax, r9
shr r9d, 8
movzx eax, al
xor r9d, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], r9d
imul eax, r10d
shr eax, 8
xor al, r8b
mov rdi, qword [rsp + 0x40]
mov byte [r14 + 0xa], al
mov r9d, dword [rbx + 8]
mov r10d, r9d
mov edx, dword [rbx]
and r10d, 0xfffd
mov eax, edx
shr r11d, 0x18
or r10d, 2
shr edx, 8
mov r8d, r11d
xor rax, r8
movzx ecx, al
xor edx, dword [rsi + rcx*4]
movzx eax, dl
add eax, dword [rbx + 4]
imul eax, eax, 0x8088405
mov dword [rbx], edx
inc eax
mov dword [rbx + 4], eax
shr rax, 0x18
xor rax, r9
shr r9d, 8
movzx eax, al
xor r9d, dword [rsi + rax*4]
mov eax, r10d
xor eax, 1
mov dword [rbx + 8], r9d
imul eax, r10d
shr eax, 8
xor al, r11b
mov byte [r14 + 0xb], al
mov eax, 0xc
mov rcx, qword [rsp + 0x30]
xor rcx, rsp
call fcn.14008e050
add rsp, 0x48
pop r14
pop rsi
pop rbp
pop rbx
ret