Function at 0x180092020
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 0x18009204f
mov byte [r9], bpl
test rcx, rcx
je 0x180092333
mov r14, qword [rcx + 0x80]
test r14, r14
je 0x180092333
cmp qword [r14], rbp
jne 0x180092077
mov eax, 0xffffff9c
jmp 0x180092338
test r8d, r8d
jne 0x180092083
xor eax, eax
jmp 0x180092338
mov eax, dword [r14 + 0x80]
mov qword [r14 + 0x18], rdx
mov dword [r14 + 0x20], r8d
cmp r8d, eax
jbe 0x18009209e
mov dword [r14 + 0x20], eax
mov r8d, eax
test r8d, r8d
je 0x18009232e
mov edi, dword [r14 + 0x10]
test edi, edi
jne 0x1800921cf
mov eax, dword [r14 + 0x7c]
mov edi, ebp
test eax, eax
je 0x1800921cf
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.18009137c
test eax, eax
jne 0x180092319
mov r9, qword [r14 + 0x88]
lea r8d, [rax + 1]
mov rcx, qword [r14]
mov edx, ebx
mov esi, ebx
call fcn.1800913f8
cmp rax, 1
jne 0x180092319
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 0x1800921cf
test ebx, ebx
je 0x1800921cf
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 0x18009213f
mov edi, dword [r14 + 0x10]
mov r9d, dword [r14 + 0xa8]
mov r8d, edi
cmp r9d, edi
cmovbe r8d, r9d
test r8d, r8d
je 0x180092222
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 0x180092222
cmp r10b, byte [r14 + 0xac]
jne 0x18009231e
cmp dword [r14 + 0x90], ebp
jne 0x1800922b6
mov ebp, dword [r14 + 0x20]
cmp ebp, edi
mov esi, ebp
cmovae esi, edi
xor r8d, r8d
test esi, esi
je 0x180092261
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 0x180092241
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.180090be0
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 0x180092305
test r15, r15
je 0x180092305
mov byte [r15], 1
jmp 0x180092305
mov ebx, dword [r14 + 0x24]
lea rcx, [r14 + 8]
mov rdi, qword [r14 + 0x18]
call fcn.180090f50
mov esi, dword [r14 + 0x24]
mov rdx, rdi
mov ecx, dword [r14 + 0x74]
sub esi, ebx
mov r8d, esi
mov r13d, eax
call fcn.180090be0
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 0x180092325
test eax, eax
je 0x180092325
test r13d, r13d
jne 0x180092314
cmp dword [r14 + 0x20], ebp
ja 0x1800920a7
test r13d, r13d
je 0x18009232e
mov eax, r13d
jmp 0x180092338
or eax, 0xffffffff
jmp 0x180092338
mov eax, 0xffffff96
jmp 0x180092338
test r15, r15
je 0x18009232e
mov byte [r15], 1
mov eax, r12d
jmp 0x180092338
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