Function at 0x1400ba940
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, 0x40
mov rbx, r9
mov r15, r8
mov rdi, rdx
mov rbp, rcx
lea rax, vtable.CZipAutoBuffer.0
mov qword [rsp + 0x20], rax
mov ecx, reloc.OLEAUT32.dll_VariantTimeToDosDateTime
call fcn.1400934b0
mov r14, rax
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x30], reloc.OLEAUT32.dll_VariantTimeToDosDateTime
mov rdx, rdi
mov rcx, rbp
call fcn.1400bac70
xor ecx, ecx
call fcn.1402b2cb8
mov rcx, rax
call fcn.1402b2260
xor esi, esi
mov edi, esi
lea r12, [0x1403464e0]
call fcn.1402b2234
mov ecx, eax
sar ecx, 6
movzx edx, cl
movzx r10d, al
test cl, cl
cmovne r10d, edx
mov r9d, dword [rbp + 0x10]
mov eax, r9d
and eax, 0xfffd
or eax, 2
mov r8d, eax
xor r8d, 1
imul r8d, eax
sar r8d, 8
mov edx, dword [rbp + 8]
movsx eax, r10b
xor rax, rdx
movzx ecx, al
shr edx, 8
xor edx, dword [r12 + rcx*4]
mov dword [rbp + 8], edx
movzx eax, dl
add eax, dword [rbp + 0xc]
imul eax, eax, 0x8088405
inc eax
mov dword [rbp + 0xc], eax
shr eax, 0x18
xor rax, r9
movzx ecx, al
shr r9d, 8
xor r9d, dword [r12 + rcx*4]
mov dword [rbp + 0x10], r9d
xor r10b, r8b
mov byte [rdi + r14], r10b
inc rdi
cmp rdi, 0xa
jl 0x1400ba9b5
movzx r11d, word [r15 + 0x10]
shl r11d, 0x10
mov r10d, r11d
sar r10d, 0x10
mov r8d, dword [rbp + 0x10]
mov r9d, r8d
and r9d, 0xfffd
or r9d, 2
mov edx, dword [rbp + 8]
movsx eax, r10b
xor rax, rdx
movzx ecx, al
shr edx, 8
xor edx, dword [r12 + rcx*4]
mov dword [rbp + 8], edx
movzx eax, dl
add eax, dword [rbp + 0xc]
imul eax, eax, 0x8088405
inc eax
mov dword [rbp + 0xc], eax
shr eax, 0x18
xor rax, r8
movzx ecx, al
shr r8d, 8
xor r8d, dword [r12 + rcx*4]
mov dword [rbp + 0x10], r8d
mov eax, r9d
xor eax, 1
imul eax, r9d
sar eax, 8
xor al, r10b
mov byte [r14 + 0xa], al
sar r11d, 0x18
mov r8d, dword [rbp + 0x10]
mov r9d, r8d
and r9d, 0xfffd
or r9d, 2
mov edx, dword [rbp + 8]
movsx eax, r11b
xor rax, rdx
movzx ecx, al
shr edx, 8
xor edx, dword [r12 + rcx*4]
mov dword [rbp + 8], edx
movzx eax, dl
add eax, dword [rbp + 0xc]
imul eax, eax, 0x8088405
inc eax
mov dword [rbp + 0xc], eax
shr eax, 0x18
xor rax, r8
movzx ecx, al
shr r8d, 8
xor r8d, dword [r12 + rcx*4]
mov dword [rbp + 0x10], r8d
mov eax, r9d
xor eax, 1
imul eax, r9d
sar eax, 8
xor al, r11b
mov byte [r14 + 0xb], al
mov eax, dword [rbx + 0x70]
shr eax, 4
test al, 1
jne 0x1400babb8
mov ebp, esi
nop word [rax + rax]
mov r9d, dword [rbx + 0x18]
mov edi, dword [rbx + 0x38]
sub edi, r9d
jne 0x1400bab88
test r9d, r9d
je 0x1400bab69
mov rcx, qword [rbx + 8]
mov rax, qword [rcx]
mov r8d, r9d
mov rdx, qword [rbx + 0x30]
call qword [rax + 0x60]
mov eax, dword [rbx + 0x70]
shr eax, 4
test al, 1
je 0x1400bab63
mov eax, dword [rbx + 0x18]
add qword [rbx + 0x40], rax
mov dword [rbx + 0x18], esi
mov r9d, esi
mov eax, dword [rbx + 0x70]
and eax, 0x90
cmp al, 0x90
jne 0x1400bab85
mov rcx, rbx
call fcn.1400b00b0
mov qword [rbx + 0x20], rax
mov r9d, dword [rbx + 0x18]
mov edi, dword [rbx + 0x38]
mov eax, reloc.OLEAUT32.dll_VariantTimeToDosDateTime
sub eax, ebp
cmp eax, edi
cmovb edi, eax
mov r8d, edi
mov edx, ebp
add rdx, r14
mov ecx, r9d
add rcx, qword [rbx + 0x30]
call fcn.14029d6c0
add ebp, edi
add dword [rbx + 0x18], edi
cmp ebp, 0xc
jb 0x1400bab30
jmp 0x1400bac36
mov rcx, rbx
call fcn.1400b0520
mov r10, rax
cmp rax, 1
jae 0x1400bac0f
nop dword [rax]
mov eax, dword [rbx + 0x70]
and eax, 0x30
cmp al, 0x30
jne 0x1400babf1
cmp qword [rbx + 0x40], 0
jne 0x1400babf1
cmp dword [rbx + 0x18], 0
jne 0x1400babf1
mov qword [rbx + 0x20], 1
jmp 0x1400babfe
mov edx, 1
mov rcx, rbx
call fcn.1400afc60
mov rcx, rbx
call fcn.1400b0520
mov r10, rax
cmp rax, 1
jb 0x1400babd0
mov edi, reloc.OLEAUT32.dll_VariantTimeToDosDateTime
sub edi, esi
mov eax, edi
cmp r10, rax
cmovb edi, r10d
mov edx, esi
add rdx, r14
mov r8d, edi
mov rcx, rbx
call fcn.1400b0450
add esi, edi
cmp esi, 0xc
jb 0x1400babb8
add qword [r15 + 0x18], 0xc
mov rcx, r14
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x78]
add rsp, 0x40
pop r15
pop r14
pop r12
jmp fcn.1400934c0