Function at 0x1800922b0
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg
Hash data with crc32

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
xor ebp, ebp
mov r15, r9
mov r13d, ebp
mov r12d, ebp
test r9, r9
je 0x1800922df
mov byte [r9], bpl
test rcx, rcx
je 0x1800925c3
mov r14, qword [rcx + 0x80]
test r14, r14
je 0x1800925c3
cmp qword [r14], rbp
jne 0x180092307
mov eax, 0xffffff9c
jmp 0x1800925c8
test r8d, r8d
jne 0x180092313
xor eax, eax
jmp 0x1800925c8
mov eax, dword [r14 + 0x80]
mov qword [r14 + 0x18], rdx
mov dword [r14 + 0x20], r8d
cmp r8d, eax
jbe 0x18009232e
mov dword [r14 + 0x20], eax
mov r8d, eax
test r8d, r8d
je 0x1800925be
mov edi, dword [r14 + 0x10]
test edi, edi
jne 0x18009245f
mov eax, dword [r14 + 0x7c]
mov edi, ebp
test eax, eax
je 0x18009245f
mov edx, dword [r14 + 0x94]
mov ebx, 0x4000
mov rcx, qword [r14 + 0x88]
cmp eax, ebx
cmovb ebx, eax
add edx, dword [r14 + 0x60]
xor r8d, r8d
call fcn.18009160c
test eax, eax
jne 0x1800925a9
mov r9, qword [r14 + 0x88]
lea r8d, [rax + 1]
mov rcx, qword [r14]
mov edx, ebx
mov esi, ebx
call fcn.180091688
cmp rax, 1
jne 0x1800925a9
add dword [r14 + 0x60], ebx
mov edi, ebx
sub dword [r14 + 0x7c], ebx
mov r10, qword [r14]
mov qword [r14 + 8], r10
mov dword [r14 + 0x10], ebx
cmp byte [r14 + 0x98], bpl
je 0x18009245f
test ebx, ebx
je 0x18009245f
lea r11, [0x1802b1ab0]
mov r9d, dword [r14 + 0xa4]
mov edx, dword [r14 + 0x9c]
mov eax, r9d
and eax, 0xfffd
mov ecx, edx
or eax, 2
shr edx, 8
mov r8d, eax
xor r8d, 1
imul r8d, eax
shr r8d, 8
xor r8b, byte [r10]
movsx rax, r8b
xor rcx, rax
movzx eax, cl
xor edx, dword [r11 + rax*4]
movzx eax, dl
add eax, dword [r14 + 0xa0]
imul ecx, eax, 0x8088405
mov dword [r14 + 0x9c], edx
inc ecx
mov dword [r14 + 0xa0], ecx
movzx eax, byte [r14 + 0xa3]
movzx ecx, r9b
xor rcx, rax
shr r9d, 8
xor r9d, dword [r11 + rcx*4]
mov dword [r14 + 0xa4], r9d
mov byte [r10], r8b
inc r10
sub rsi, 1
jne 0x1800923cf
mov edi, dword [r14 + 0x10]
mov r9d, dword [r14 + 0xa8]
mov r8d, edi
cmp r9d, edi
cmovbe r8d, r9d
test r8d, r8d
je 0x1800924b2
mov rdx, qword [r14 + 8]
lea eax, [r8 - 1]
sub edi, r8d
mov r10b, byte [rax + rdx]
sub dword [r14 + 0x80], r8d
mov eax, r8d
add rax, rdx
mov dword [r14 + 0x10], edi
sub r9d, r8d
mov qword [r14 + 8], rax
mov dword [r14 + 0xa8], r9d
jne 0x1800924b2
cmp r10b, byte [r14 + 0xac]
jne 0x1800925ae
cmp dword [r14 + 0x90], ebp
jne 0x180092546
mov ebp, dword [r14 + 0x20]
cmp ebp, edi
mov esi, ebp
cmovae esi, edi
xor r8d, r8d
test esi, esi
je 0x1800924f1
mov rax, qword [r14 + 8]
mov rcx, qword [r14 + 0x18]
mov al, byte [r8 + rax]
mov byte [r8 + rcx], al
inc r8d
cmp r8d, esi
jb 0x1800924d1
mov edi, dword [r14 + 0x10]
mov ebp, dword [r14 + 0x20]
mov rbx, qword [r14 + 0x18]
mov r8d, esi
mov ecx, dword [r14 + 0x74]
mov rdx, rbx
call fcn.180090e70
sub dword [r14 + 0x80], esi
sub ebp, esi
add dword [r14 + 0x24], esi
sub edi, esi
mov ecx, esi
add r12d, esi
add qword [r14 + 8], rcx
mov dword [r14 + 0x20], ebp
xor ebp, ebp
mov dword [r14 + 0x74], eax
lea rax, [rsi + rbx]
mov dword [r14 + 0x10], edi
mov qword [r14 + 0x18], rax
cmp dword [r14 + 0x80], ebp
jne 0x180092595
test r15, r15
je 0x180092595
mov byte [r15], 1
jmp 0x180092595
mov ebx, dword [r14 + 0x24]
lea rcx, [r14 + 8]
mov rdi, qword [r14 + 0x18]
call fcn.1800911e0
mov esi, dword [r14 + 0x24]
mov rdx, rdi
mov ecx, dword [r14 + 0x74]
sub esi, ebx
mov r8d, esi
mov r13d, eax
call fcn.180090e70
mov dword [r14 + 0x74], eax
add r12d, esi
mov eax, dword [r14 + 0x80]
sub eax, esi
mov dword [r14 + 0x80], eax
cmp r13d, 1
je 0x1800925b5
test eax, eax
je 0x1800925b5
test r13d, r13d
jne 0x1800925a4
cmp dword [r14 + 0x20], ebp
ja 0x180092337
test r13d, r13d
je 0x1800925be
mov eax, r13d
jmp 0x1800925c8
or eax, 0xffffffff
jmp 0x1800925c8
mov eax, 0xffffff96
jmp 0x1800925c8
test r15, r15
je 0x1800925be
mov byte [r15], 1
mov eax, r12d
jmp 0x1800925c8
mov eax, 0xffffff9a
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
ret