Function at 0x180092f2c
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 0x180092f5b
mov byte [r9], bpl
test rcx, rcx
je 0x18009323f
mov r14, qword [rcx + 0x80]
test r14, r14
je 0x18009323f
cmp qword [r14], rbp
jne 0x180092f83
mov eax, 0xffffff9c
jmp 0x180093244
test r8d, r8d
jne 0x180092f8f
xor eax, eax
jmp 0x180093244
mov eax, dword [r14 + 0x80]
mov qword [r14 + 0x18], rdx
mov dword [r14 + 0x20], r8d
cmp r8d, eax
jbe 0x180092faa
mov dword [r14 + 0x20], eax
mov r8d, eax
test r8d, r8d
je 0x18009323a
mov edi, dword [r14 + 0x10]
test edi, edi
jne 0x1800930db
mov eax, dword [r14 + 0x7c]
mov edi, ebp
test eax, eax
je 0x1800930db
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.180092298
test eax, eax
jne 0x180093225
mov r9, qword [r14 + 0x88]
lea r8d, [rax + 1]
mov rcx, qword [r14]
mov edx, ebx
mov esi, ebx
call fcn.180092314
cmp rax, 1
jne 0x180093225
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 0x1800930db
test ebx, ebx
je 0x1800930db
lea r11, [0x1802b2ab0]
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 0x18009304b
mov edi, dword [r14 + 0x10]
mov r9d, dword [r14 + 0xa8]
mov r8d, edi
cmp r9d, edi
cmovbe r8d, r9d
test r8d, r8d
je 0x18009312e
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 0x18009312e
cmp r10b, byte [r14 + 0xac]
jne 0x18009322a
cmp dword [r14 + 0x90], ebp
jne 0x1800931c2
mov ebp, dword [r14 + 0x20]
cmp ebp, edi
mov esi, ebp
cmovae esi, edi
xor r8d, r8d
test esi, esi
je 0x18009316d
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 0x18009314d
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.180091afc
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 0x180093211
test r15, r15
je 0x180093211
mov byte [r15], 1
jmp 0x180093211
mov ebx, dword [r14 + 0x24]
lea rcx, [r14 + 8]
mov rdi, qword [r14 + 0x18]
call fcn.180091e6c
mov esi, dword [r14 + 0x24]
mov rdx, rdi
mov ecx, dword [r14 + 0x74]
sub esi, ebx
mov r8d, esi
mov r13d, eax
call fcn.180091afc
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 0x180093231
test eax, eax
je 0x180093231
test r13d, r13d
jne 0x180093220
cmp dword [r14 + 0x20], ebp
ja 0x180092fb3
test r13d, r13d
je 0x18009323a
mov eax, r13d
jmp 0x180093244
or eax, 0xffffffff
jmp 0x180093244
mov eax, 0xffffff96
jmp 0x180093244
test r15, r15
je 0x18009323a
mov byte [r15], 1
mov eax, r12d
jmp 0x180093244
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