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

Disassembly:
push rbx
push r13
push r14
sub rsp, 0x30
xor r13d, r13d
mov r14, rcx
test rcx, rcx
je 0x14000958f
mov rbx, qword [rcx + 0x110]
test rbx, rbx
je 0x14000958f
cmp qword [rbx], r13
jne 0x14000922d
mov eax, 0xffffff9c
add rsp, 0x30
pop r14
pop r13
pop rbx
ret
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], rdi
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r15
test r8d, r8d
je 0x140009588
mov rax, qword [rbx + 0xa0]
mov r9d, r8d
mov qword [rbx + 0x18], rdx
mov dword [rbx + 0x20], r8d
cmp r9, rax
jbe 0x140009275
cmp dword [rbx + 0x118], r13d
jne 0x140009275
mov dword [rbx + 0x20], eax
mov r8d, eax
mov ecx, dword [rbx + 0x10]
mov rdx, qword [rbx + 0x98]
lea rax, [rdx + rcx]
cmp r9, rax
jbe 0x140009299
cmp dword [rbx + 0x118], r13d
je 0x140009299
lea r8d, [rcx + rdx]
mov dword [rbx + 0x20], r8d
test r8d, r8d
je 0x140009576
mov edi, 0xfffffffd
nop word [rax + rax]
mov esi, dword [rbx + 0x10]
test esi, esi
jne 0x140009427
mov rax, qword [rbx + 0x98]
test rax, rax
je 0x140009427
mov esi, 0x4000
cmp rax, rsi
jae 0x1400092df
mov esi, eax
test eax, eax
je 0x140009588
mov r8, qword [rbx + 0x110]
add r8, qword [rbx + 0x60]
mov rax, qword [rbx + 0xc8]
mov rdx, qword [rbx + 0x100]
test rax, rax
je 0x14000930b
mov rcx, qword [rbx + 0xe0]
xor r9d, r9d
call rax
jmp 0x140009327
mov eax, r8d
cmp rax, r8
jne 0x14000957e
mov rcx, qword [rbx + 0xe0]
xor r9d, r9d
call qword [rbx + 0xf8]
test eax, eax
jne 0x14000957e
mov r8, qword [rbx]
mov r9d, esi
mov rdx, qword [rbx + 0x100]
mov rcx, qword [rbx + 0xe0]
call qword [rbx + 0xb0]
cmp eax, esi
jne 0x14000957e
cmp dword [r14 + 0x118], 0
je 0x140009410
test esi, esi
je 0x140009410
xor r10d, r10d
mov r11d, esi
nop dword [rax]
mov ecx, dword [r14 + 0x128]
lea r10, [r10 + 1]
mov rax, qword [rbx]
and ecx, 0xfffd
or ecx, 2
mov r9d, ecx
xor r9d, 1
imul r9d, ecx
shr r9d, 8
xor r9b, byte [rax + r10 - 1]
mov byte [rax + r10 - 1], r9b
mov r8, qword [r14 + 0x130]
mov edx, dword [r14 + 0x120]
movsx rax, r9b
xor rax, rdx
shr edx, 8
movzx ecx, al
xor edx, dword [r8 + rcx*4]
movzx eax, dl
add eax, dword [r14 + 0x124]
imul ecx, eax, 0x8088405
mov dword [r14 + 0x120], edx
mov edx, dword [r14 + 0x128]
inc ecx
mov dword [r14 + 0x124], ecx
shr rcx, 0x18
xor rcx, rdx
shr edx, 8
movzx eax, cl
xor edx, dword [r8 + rax*4]
mov dword [r14 + 0x128], edx
mov rax, qword [rbx]
mov byte [r10 + rax - 1], r9b
sub r11, 1
jne 0x140009370
mov eax, esi
add qword [rbx + 0x60], rax
sub qword [rbx + 0x98], rax
mov rax, qword [rbx]
mov qword [rbx + 8], rax
mov dword [rbx + 0x10], esi
mov eax, dword [rbx + 0x108]
test eax, eax
je 0x1400094ed
cmp dword [rbx + 0x118], 0
jne 0x1400094ed
cmp eax, 0xc
je 0x14000956c
mov r15d, dword [rbx + 0x24]
lea rcx, [rbx + 8]
mov r12, qword [rbx + 0x18]
mov edx, 2
call fcn.14000a3d0
mov ebp, eax
test eax, eax
js 0x14000946f
cmp qword [rbx + 0x28], 0
cmovne ebp, edi
mov eax, dword [rbx + 0x24]
movabs rsi, 0x100000000
mov ecx, dword [rbx + 0x90]
add rsi, rax
cmp rax, r15
mov rdx, r12
cmovae rsi, rax
mov rdi, rsi
sub rdi, r15
add qword [rbx + 0x88], rdi
mov r8d, edi
call fcn.14000c090
sub qword [rbx + 0xa0], rdi
sub esi, r15d
add r13d, esi
mov dword [rbx + 0x90], eax
cmp ebp, 1
je 0x140009576
test ebp, ebp
je 0x140009567
mov eax, ebp
mov r12, qword [rsp + 0x28]
mov rdi, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x50]
mov r15, qword [rsp + 0x20]
add rsp, 0x30
pop r14
pop r13
pop rbx
ret
test esi, esi
jne 0x1400094fb
cmp qword [rbx + 0x98], 0
je 0x140009576
cmp dword [rbx + 0x20], esi
cmovb esi, dword [rbx + 0x20]
test esi, esi
je 0x14000952b
xor edx, edx
mov r8d, esi
nop dword [rax + rax]
mov rax, qword [rbx + 8]
lea rdx, [rdx + 1]
mov rcx, qword [rbx + 0x18]
movzx eax, byte [rdx + rax - 1]
mov byte [rdx + rcx - 1], al
sub r8, 1
jne 0x140009510
mov rdx, qword [rbx + 0x18]
mov r8d, esi
mov ecx, dword [rbx + 0x90]
mov edi, esi
add qword [rbx + 0x88], rdi
call fcn.14000c090
sub qword [rbx + 0xa0], rdi
sub dword [rbx + 0x10], esi
sub dword [rbx + 0x20], esi
add qword [rbx + 0x18], rdi
add qword [rbx + 8], rdi
add dword [rbx + 0x24], esi
add r13d, esi
mov dword [rbx + 0x90], eax
mov edi, 0xfffffffd
cmp dword [rbx + 0x20], 0
ja 0x1400092b0
mov eax, r13d
jmp 0x1400094ca
mov eax, 0xffffffff
jmp 0x1400094ca
xor eax, eax
jmp 0x1400094ca
mov eax, 0xffffff9a
add rsp, 0x30
pop r14
pop r13
pop rbx
ret