Function at 0x14001bd40
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
mov qword [rsp + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0x20
mov rax, qword [rcx + 0xf8]
xor ebp, ebp
mov rbx, rcx
cmp r8, rax
mov qword [rcx + 0xc8], rdx
cmova r8, rax
mov qword [rcx + 0xd0], r8
test r8, r8
je 0x14001bfe4
lea r12, [0x1400da4d0]
nop
cmp qword [rbx + 0xb8], 0
jne 0x14001bea4
mov rax, qword [rbx + 0xf0]
test rax, rax
je 0x14001bea4
mov rdx, qword [rbx + 0xa8]
mov edi, 0x4000
mov rcx, rbx
cmp rax, rdi
cmovb rdi, rax
mov r8d, edi
call fcn.14001b070
test eax, eax
je 0x14001c006
mov rax, qword [rbx + 0xa8]
sub qword [rbx + 0xf0], rdi
test byte [rbx + 0x64], 1
mov qword [rbx + 0xb0], rax
mov qword [rbx + 0xb8], rdi
je 0x14001bea4
xor r8d, r8d
test rdi, rdi
je 0x14001bea4
xor r9d, r9d
nop dword [rax]
mov edx, dword [rbx + 0x108]
mov rcx, qword [rbx + 0xa8]
inc r8d
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [rcx + r9], al
mov rax, qword [rbx + 0xa8]
mov edx, dword [rbx + 0x100]
movsx rcx, byte [r9 + rax]
mov r9d, r8d
xor rcx, rdx
shr edx, 8
movzx eax, cl
mov ecx, dword [r12 + rax*4]
xor ecx, edx
mov edx, dword [rbx + 0x108]
movzx eax, cl
mov dword [rbx + 0x100], ecx
add eax, dword [rbx + 0x104]
imul ecx, eax, 0x8088405
inc ecx
mov dword [rbx + 0x104], ecx
movzx eax, byte [rbx + 0x107]
movzx ecx, dl
xor rcx, rax
shr edx, 8
mov eax, dword [r12 + rcx*4]
xor eax, edx
mov dword [rbx + 0x108], eax
cmp r9, rdi
jb 0x14001be10
mov rdx, qword [rbx + 0x110]
mov r8, qword [rbx + 0xb8]
cmp rdx, r8
cmova rdx, r8
test rdx, rdx
je 0x14001bef4
mov rax, qword [rbx + 0xb0]
sub r8, rdx
lea rcx, [rax + rdx]
movzx eax, byte [rax + rdx - 1]
sub qword [rbx + 0x110], rdx
mov qword [rbx + 0xb8], r8
mov qword [rbx + 0xb0], rcx
jne 0x14001bef4
cmp al, byte [rbx + 0x118]
jne 0x14001c011
cmp word [rbx + 0x66], 0
jne 0x14001bf77
mov rax, qword [rbx + 0xd0]
mov rsi, qword [rbx + 0xb8]
mov rdx, qword [rbx + 0xb0]
mov rcx, qword [rbx + 0xc8]
cmp rax, rsi
cmovb rsi, rax
mov r8d, esi
call fcn.1400cc4c0
mov rdi, qword [rbx + 0xc8]
mov ecx, dword [rbx + 0xe8]
mov rdx, rdi
mov r8d, esi
call fcn.14001ab40
sub qword [rbx + 0xf8], rsi
sub qword [rbx + 0xb8], rsi
sub qword [rbx + 0xd0], rsi
add qword [rbx + 0xb0], rsi
add qword [rbx + 0xd8], rsi
mov dword [rbx + 0xe8], eax
lea rax, [rdi + rsi]
add rbp, rsi
mov qword [rbx + 0xc8], rax
jmp 0x14001bfcc
mov r14, qword [rbx + 0xd8]
mov r15, qword [rbx + 0xc8]
lea rcx, [rbx + 0xb0]
call fcn.14001ac70
mov esi, eax
cmp eax, 1
ja 0x14001c01c
mov rdi, qword [rbx + 0xd8]
mov ecx, dword [rbx + 0xe8]
mov rdx, r15
sub rdi, r14
mov r8d, edi
call fcn.14001ab40
sub qword [rbx + 0xf8], rdi
add rbp, rdi
mov dword [rbx + 0xe8], eax
cmp esi, 1
je 0x14001bfe4
cmp qword [rbx + 0xf8], 0
je 0x14001bfe4
cmp qword [rbx + 0xd0], 0
jne 0x14001bd90
mov rax, rbp
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r14
pop r12
ret
mov dword [rbx + 0x10], 7
xor eax, eax
jmp 0x14001bfe7
mov dword [rbx + 0x10], 0x13
xor eax, eax
jmp 0x14001bfe7
mov dword [rbx + 0x10], 0x12
xor eax, eax
jmp 0x14001bfe7