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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov ebp, 0xffffff9a
test rcx, rcx
je 0x1400b45e2
mov rsi, rcx
mov r13, qword [rcx + 0x110]
test r13, r13
je 0x1400b45e2
cmp qword [r13], 0
je 0x1400b45dd
xor ebp, ebp
test r8d, r8d
je 0x1400b45e2
mov qword [r13 + 0x18], rdx
mov dword [r13 + 0x20], r8d
mov edx, r8d
mov rax, qword [r13 + 0x98]
mov ecx, dword [r13 + 0x10]
lea r8, [rax + rcx]
cmp r8, rdx
jae 0x1400b4364
cmp dword [r13 + 0x118], 0
je 0x1400b4364
add eax, ecx
mov dword [r13 + 0x20], eax
je 0x1400b45e2
lea rax, [r13 + 8]
mov qword [rsp + 0x30], rax
lea r12, [r13 + 0xa8]
xor edi, edi
mov ebx, 0xff
mov qword [rsp + 0x28], r12
mov r14d, dword [r13 + 0x10]
test r14d, r14d
jne 0x1400b44c5
mov r14, qword [r13 + 0x98]
test r14, r14
je 0x1400b44c2
mov eax, 0x4000
cmp r14, rax
cmovae r14, rax
mov rdx, qword [r13 + 0x100]
mov r8, qword [r13 + 0x110]
add r8, qword [r13 + 0x60]
mov rcx, r12
xor r9d, r9d
call fcn.1400ca716
mov ebp, 0xffffffff
test eax, eax
jne 0x1400b45e2
mov r8, qword [r13]
mov rax, qword [r13 + 0xb0]
mov rdx, qword [r13 + 0x100]
mov rcx, qword [r13 + 0xe0]
mov r9d, r14d
call qword [0x140191008]
cmp eax, r14d
jne 0x1400b45e2
cmp dword [rsi + 0x118], 0
je 0x1400b44a9
xor eax, eax
mov edx, dword [rsi + 0x128]
mov ecx, edx
and ecx, 0xfffd
or edx, 2
xor ecx, 3
imul ecx, edx
shr ecx, 8
mov rdx, qword [r13]
xor cl, byte [rdx + rax]
mov byte [rdx + rax], cl
mov rdx, qword [rsi + 0x130]
mov r8d, dword [rsi + 0x120]
mov r9d, dword [rsi + 0x128]
mov r10d, r8d
xor r10b, cl
movzx r10d, r10b
shr r8d, 8
xor r8d, dword [rdx + r10*4]
mov dword [rsi + 0x120], r8d
and r8d, ebx
add r8d, dword [rsi + 0x124]
imul r8d, r8d, 0x8088405
inc r8d
mov dword [rsi + 0x124], r8d
shr r8d, 0x18
mov r10d, r9d
and r10d, ebx
xor r10d, r8d
shr r9d, 8
xor r9d, dword [rdx + r10*4]
mov dword [rsi + 0x128], r9d
mov rdx, qword [r13]
mov byte [rdx + rax], cl
inc rax
cmp r14, rax
jne 0x1400b440d
add qword [r13 + 0x60], r14
sub qword [r13 + 0x98], r14
mov rax, qword [r13]
mov qword [r13 + 8], rax
mov dword [r13 + 0x10], r14d
jmp 0x1400b44c5
xor r14d, r14d
mov eax, dword [r13 + 0x108]
test eax, eax
je 0x1400b44de
cmp dword [r13 + 0x118], 0
je 0x1400b456f
test r14d, r14d
jne 0x1400b44f1
cmp qword [r13 + 0x98], 0
je 0x1400b45f5
mov eax, dword [r13 + 0x20]
cmp eax, r14d
cmovb r14d, eax
test r14d, r14d
je 0x1400b451e
mov r15d, r14d
xor eax, eax
mov rcx, qword [r13 + 8]
mov rdx, qword [r13 + 0x18]
mov cl, byte [rcx + rax]
mov byte [rdx + rax], cl
inc rax
cmp r15, rax
jne 0x1400b4506
jmp 0x1400b4521
xor r15d, r15d
add qword [r13 + 0x88], r15
mov rdx, qword [r13 + 0x18]
mov ecx, dword [r13 + 0x90]
mov r8d, r14d
call fcn.140063970
mov dword [r13 + 0x90], eax
sub qword [r13 + 0xa0], r15
sub dword [r13 + 0x10], r14d
sub dword [r13 + 0x20], r14d
add qword [r13 + 0x18], r15
add qword [r13 + 8], r15
add dword [r13 + 0x24], r14d
add edi, r14d
cmp dword [r13 + 0x20], 0
mov ebp, edi
jne 0x1400b4380
jmp 0x1400b45e2
cmp eax, 0xc
je 0x1400b4560
mov ebp, dword [r13 + 0x24]
mov r15, qword [r13 + 0x18]
mov rcx, qword [rsp + 0x30]
mov edx, 2
call fcn.1400290f0
mov r14d, eax
test eax, eax
js 0x1400b45a0
cmp qword [r13 + 0x28], 0
mov eax, 0xfffffffd
cmovne r14d, eax
mov r12d, dword [r13 + 0x24]
mov ecx, dword [r13 + 0x90]
sub r12, rbp
add qword [r13 + 0x88], r12
mov rdx, r15
mov r8d, r12d
call fcn.140063970
mov dword [r13 + 0x90], eax
sub qword [r13 + 0xa0], r12
add edi, r12d
test r14d, r14d
jne 0x1400b45f9
mov r12, qword [rsp + 0x28]
jmp 0x1400b4560
mov ebp, 0xffffff9c
mov eax, ebp
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ebp, edi
jmp 0x1400b45e2
mov ebp, edi
cmp r14d, 1
je 0x1400b45e2
mov ebp, r14d
jmp 0x1400b45e2