Function at 0x18000c2e8
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
mov rax, qword [rcx + 0xf8]
xor r13d, r13d
cmp r8, rax
mov qword [rcx + 0xc8], rdx
mov rbp, rcx
mov r14d, r13d
cmova r8, rax
mov qword [rcx + 0xd0], r8
test r8, r8
je 0x18000c59c
mov rdx, qword [rbp + 0xb8]
lea rdi, [0x1800a1b70]
test rdx, rdx
jne 0x18000c448
mov rax, qword [rbp + 0xf0]
mov rdx, r13
test rax, rax
je 0x18000c448
mov rdx, qword [rbp + 0xa8]
mov ebx, 0x4000
cmp rax, rbx
mov rcx, rbp
cmovb rbx, rax
mov r8d, ebx
call fcn.18000c69c
test eax, eax
je 0x18000c57f
sub qword [rbp + 0xf0], rbx
mov rdx, rbx
test byte [rbp + 0x64], 1
mov r8, qword [rbp + 0xa8]
mov qword [rbp + 0xb0], r8
mov qword [rbp + 0xb8], rbx
je 0x18000c448
mov r9d, r13d
test rbx, rbx
je 0x18000c448
mov r10, r13
mov ecx, dword [rbp + 0x108]
inc r9d
and ecx, 0xfffd
or ecx, 2
mov eax, ecx
xor eax, 1
imul eax, ecx
shr eax, 8
xor byte [r10 + r8], al
mov edx, dword [rbp + 0x100]
mov r8, qword [rbp + 0xa8]
movsx rax, byte [r10 + r8]
xor rax, rdx
mov r10d, r9d
movzx ecx, al
shr edx, 8
xor edx, dword [rdi + rcx*4]
movzx eax, dl
add eax, dword [rbp + 0x104]
imul ecx, eax, 0x8088405
mov dword [rbp + 0x100], edx
mov edx, dword [rbp + 0x108]
inc ecx
mov dword [rbp + 0x104], ecx
movzx eax, byte [rbp + 0x107]
movzx ecx, dl
xor rcx, rax
shr edx, 8
xor edx, dword [rdi + rcx*4]
mov dword [rbp + 0x108], edx
cmp r10, rbx
jb 0x18000c3ba
mov rdx, qword [rbp + 0xb8]
mov r9, qword [rbp + 0x110]
mov r8, rdx
cmp r9, rdx
cmovbe r8, r9
test r8, r8
je 0x18000c494
mov rcx, qword [rbp + 0xb0]
sub rdx, r8
add rcx, r8
sub r9, r8
mov al, byte [rcx - 1]
mov qword [rbp + 0xb8], rdx
mov qword [rbp + 0xb0], rcx
mov qword [rbp + 0x110], r9
jne 0x18000c494
cmp al, byte [rbp + 0x118]
jne 0x18000c588
lea r15, [rbp + 0xb0]
mov r12, qword [rbp + 0xc8]
cmp word [rbp + 0x66], r13w
jne 0x18000c519
mov rsi, qword [rbp + 0xd0]
mov rcx, r12
cmp rsi, rdx
cmovae rsi, rdx
mov rdx, qword [r15]
mov r8d, esi
call fcn.180056680
mov rdi, qword [rbp + 0xc8]
mov r8d, esi
mov ecx, dword [rbp + 0xe8]
mov rdx, rdi
call fcn.18000d3b0
sub qword [rbp + 0xf8], rsi
add r14, rsi
sub qword [rbp + 0xb8], rsi
sub qword [rbp + 0xd0], rsi
add qword [r15], rsi
add qword [rbp + 0xd8], rsi
cmp qword [rbp + 0xf8], r13
mov dword [rbp + 0xe8], eax
lea rax, [rdi + rsi]
mov qword [rbp + 0xc8], rax
jmp 0x18000c571
mov rsi, qword [rbp + 0xd8]
mov edx, 2
mov rcx, r15
call fcn.180009be0
mov edi, eax
cmp eax, 1
ja 0x18000c591
mov rbx, qword [rbp + 0xd8]
mov rdx, r12
mov ecx, dword [rbp + 0xe8]
sub rbx, rsi
mov r8d, ebx
call fcn.18000d3b0
mov dword [rbp + 0xe8], eax
add r14, rbx
mov rax, qword [rbp + 0xf8]
sub rax, rbx
mov qword [rbp + 0xf8], rax
cmp edi, 1
je 0x18000c59c
test rax, rax
je 0x18000c59c
cmp qword [rbp + 0xd0], r13
jmp 0x18000c32c
mov dword [rbp + 0x10], 7
jmp 0x18000c598
mov dword [rbp + 0x10], shutdown
jmp 0x18000c598
mov dword [rbp + 0x10], reloc.WS2_32.dll_select
xor eax, eax
jmp 0x18000c59f
mov rax, r14
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