Function at 0x180092238
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 0x180092267
mov byte [r9], bpl
test rcx, rcx
je 0x18009254b
mov r14, qword [rcx + 0x80]
test r14, r14
je 0x18009254b
cmp qword [r14], rbp
jne 0x18009228f
mov eax, 0xffffff9c
jmp 0x180092550
test r8d, r8d
jne 0x18009229b
xor eax, eax
jmp 0x180092550
mov eax, dword [r14 + 0x80]
mov qword [r14 + 0x18], rdx
mov dword [r14 + 0x20], r8d
cmp r8d, eax
jbe 0x1800922b6
mov dword [r14 + 0x20], eax
mov r8d, eax
test r8d, r8d
je 0x180092546
mov edi, dword [r14 + 0x10]
test edi, edi
jne 0x1800923e7
mov eax, dword [r14 + 0x7c]
mov edi, ebp
test eax, eax
je 0x1800923e7
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.180091594
test eax, eax
jne 0x180092531
mov r9, qword [r14 + 0x88]
lea r8d, [rax + 1]
mov rcx, qword [r14]
mov edx, ebx
mov esi, ebx
call fcn.180091610
cmp rax, 1
jne 0x180092531
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 0x1800923e7
test ebx, ebx
je 0x1800923e7
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 0x180092357
mov edi, dword [r14 + 0x10]
mov r9d, dword [r14 + 0xa8]
mov r8d, edi
cmp r9d, edi
cmovbe r8d, r9d
test r8d, r8d
je 0x18009243a
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 0x18009243a
cmp r10b, byte [r14 + 0xac]
jne 0x180092536
cmp dword [r14 + 0x90], ebp
jne 0x1800924ce
mov ebp, dword [r14 + 0x20]
cmp ebp, edi
mov esi, ebp
cmovae esi, edi
xor r8d, r8d
test esi, esi
je 0x180092479
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 0x180092459
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.180090df8
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 0x18009251d
test r15, r15
je 0x18009251d
mov byte [r15], 1
jmp 0x18009251d
mov ebx, dword [r14 + 0x24]
lea rcx, [r14 + 8]
mov rdi, qword [r14 + 0x18]
call fcn.180091168
mov esi, dword [r14 + 0x24]
mov rdx, rdi
mov ecx, dword [r14 + 0x74]
sub esi, ebx
mov r8d, esi
mov r13d, eax
call fcn.180090df8
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 0x18009253d
test eax, eax
je 0x18009253d
test r13d, r13d
jne 0x18009252c
cmp dword [r14 + 0x20], ebp
ja 0x1800922bf
test r13d, r13d
je 0x180092546
mov eax, r13d
jmp 0x180092550
or eax, 0xffffffff
jmp 0x180092550
mov eax, 0xffffff96
jmp 0x180092550
test r15, r15
je 0x180092546
mov byte [r15], 1
mov eax, r12d
jmp 0x180092550
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