Function at 0x140005600
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg
Hash data with crc32

Disassembly:
push r12
push r13
push r15
sub rsp, 0x30
xor r13d, r13d
xor r12d, r12d
mov r15, r9
test r9, r9
je 0x14000561b
mov byte [r9], r12b
mov qword [rsp + 0x50], rbx
test rcx, rcx
je 0x14000596b
mov rbx, qword [rcx + 0x80]
test rbx, rbx
je 0x14000596b
cmp qword [rbx], r12
jne 0x140005653
mov eax, 0xffffff9c
mov rbx, qword [rsp + 0x50]
add rsp, 0x30
pop r15
pop r13
pop r12
ret
test r8d, r8d
jne 0x14000566a
xor eax, eax
mov rbx, qword [rsp + 0x50]
add rsp, 0x30
pop r15
pop r13
pop r12
ret
mov eax, dword [rbx + 0x80]
mov qword [rbx + 0x18], rdx
mov dword [rbx + 0x20], r8d
cmp r8d, eax
jbe 0x140005683
mov dword [rbx + 0x20], eax
mov r8d, eax
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], r14
test r8d, r8d
je 0x140005966
lea rcx, [rbx + 8]
mov r14, rcx
lea rbp, [0x140026790]
nop
cmp dword [rbx + 0x10], 0
jne 0x1400057ec
mov eax, dword [rbx + 0x7c]
mov r14, rcx
test eax, eax
je 0x1400057ec
mov rcx, qword [rbx + 0x88]
mov edi, 0x4000
mov edx, dword [rbx + 0x94]
cmp eax, edi
cmovb edi, eax
add edx, dword [rbx + 0x60]
cmp byte [rcx], 0
je 0x140005706
cmp byte [rcx + 1], 0
je 0x140005923
add edx, dword [rcx + 0x14]
xor r9d, r9d
mov rcx, qword [rcx + 8]
xor r8d, r8d
call qword [sym.imp.KERNEL32.dll_SetFilePointer]
jmp 0x140005709
mov dword [rcx + 0x2c], edx
mov r9, qword [rbx + 0x88]
mov r8d, 1
mov rcx, qword [rbx]
mov edx, edi
mov esi, edi
call fcn.140004b50
cmp rax, 1
jne 0x140005923
add dword [rbx + 0x60], edi
lea r14, [rbx + 8]
sub dword [rbx + 0x7c], edi
cmp byte [rbx + 0x98], 0
mov r11, qword [rbx]
mov qword [rbx + 8], r11
mov dword [rbx + 0x10], edi
je 0x1400057ec
lea r14, [rbx + 8]
test edi, edi
je 0x1400057ec
nop dword [rax]
mov r9d, dword [rbx + 0xa4]
lea r11, [r11 + 1]
mov edx, dword [rbx + 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 [r11 - 1]
movsx rax, r8b
xor rcx, rax
movzx eax, cl
movzx ecx, r9b
shr r9d, 8
xor edx, dword [rbp + rax*4]
movzx eax, dl
add eax, dword [rbx + 0xa0]
imul eax, eax, 0x8088405
mov dword [rbx + 0x9c], edx
inc eax
mov dword [rbx + 0xa0], eax
shr rax, 0x18
xor rcx, rax
xor r9d, dword [rbp + rcx*4]
mov dword [rbx + 0xa4], r9d
mov byte [r11 - 1], r8b
sub rsi, 1
jne 0x140005760
lea r14, [rbx + 8]
mov r10d, dword [rbx + 0xa8]
mov r8d, dword [rbx + 0x10]
cmp r10d, r8d
mov r9d, r8d
cmovbe r9d, r10d
test r9d, r9d
je 0x140005842
mov rdx, qword [r14]
lea eax, [r9 - 1]
sub r8d, r9d
movzx r11d, byte [rax + rdx]
sub dword [rbx + 0x80], r9d
mov eax, r9d
add rax, rdx
mov dword [rbx + 0x10], r8d
sub r10d, r9d
mov qword [r14], rax
mov dword [rbx + 0xa8], r10d
jne 0x140005842
cmp r11b, byte [rbx + 0xac]
jne 0x14000594c
cmp dword [rbx + 0x90], 0
jne 0x1400058c0
mov esi, dword [rbx + 0x20]
cmp esi, r8d
cmovae esi, r8d
xor r8d, r8d
test esi, esi
je 0x140005878
nop dword [rax]
mov rax, qword [r14]
mov rcx, qword [rbx + 0x18]
movzx eax, byte [r8 + rax]
mov byte [r8 + rcx], al
inc r8d
cmp r8d, esi
jb 0x140005860
mov rdi, qword [rbx + 0x18]
mov r8d, esi
mov ecx, dword [rbx + 0x74]
mov rdx, rdi
call fcn.140004bf0
sub dword [rbx + 0x80], esi
add r12d, esi
sub dword [rbx + 0x10], esi
sub dword [rbx + 0x20], esi
add dword [rbx + 0x24], esi
mov ecx, esi
add qword [r14], rcx
cmp dword [rbx + 0x80], 0
mov dword [rbx + 0x74], eax
lea rax, [rsi + rdi]
mov qword [rbx + 0x18], rax
jne 0x140005914
test r15, r15
je 0x140005914
mov byte [r15], 1
jmp 0x140005914
mov edi, dword [rbx + 0x24]
mov edx, 2
mov rsi, qword [rbx + 0x18]
mov rcx, r14
call fcn.140002af0
mov ebp, dword [rbx + 0x24]
mov rdx, rsi
mov ecx, dword [rbx + 0x74]
sub ebp, edi
mov r8d, ebp
mov r13d, eax
call fcn.140004bf0
mov ecx, dword [rbx + 0x80]
add r12d, ebp
sub ecx, ebp
mov dword [rbx + 0x74], eax
mov dword [rbx + 0x80], ecx
cmp r13d, 1
je 0x14000595d
test ecx, ecx
je 0x14000595d
test r13d, r13d
jne 0x140005958
lea rbp, [0x140026790]
cmp dword [rbx + 0x20], 0
jbe 0x140005953
lea rcx, [rbx + 8]
jmp 0x1400056b0
mov eax, 0xffffffff
mov rdi, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x58]
mov r14, qword [rsp + 0x20]
mov rbx, qword [rsp + 0x50]
add rsp, 0x30
pop r15
pop r13
pop r12
ret
mov eax, 0xffffff96
jmp 0x140005928
test r13d, r13d
je 0x140005966
mov eax, r13d
jmp 0x140005928
test r15, r15
je 0x140005966
mov byte [r15], 1
mov eax, r12d
jmp 0x140005928
mov rbx, qword [rsp + 0x50]
mov eax, 0xffffff9a
add rsp, 0x30
pop r15
pop r13
pop r12
ret