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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
cmp dx, 1
jne 0x14005ab19
mov qword [rcx + 8], 2
lea rax, str.Compression_method_not_supportedAES_encrypted_files_cannot_be_decrypted_without_the_aes_crypto_feature.
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], 0x20
jmp 0x14005ada6
movzx edx, byte [rsp + 0x130]
mov rsi, qword [rsp + 0x118]
mov rax, qword [rsp + 0x110]
test rsi, rsi
je 0x14005ab7b
cmp dl, 2
jne 0x14005abb7
mov rdx, qword [rsp + 0x120]
cmp byte [rsp + 0x108], 0
je 0x14005abd7
mov r15, qword [rsp + 0x100]
mov r8, r15
shr r8, 0x23
and r8d, 0x1fe0
shr r15, 0x15
and r15d, 0xf800
or r15, r8
shl r15, 0x10
jmp 0x14005abda
cmp dl, 2
jne 0x14005ae82
mov r14, qword [rax]
mov rsi, qword [rax + 8]
mov edi, dword [rax + 0x10]
mov r12d, dword [rax + 0x14]
xor edx, edx
mov qword [rcx], 0
mov qword [rcx + 8], rdx
mov qword [rcx + 0x10], r14
mov qword [rcx + 0x18], rsi
mov dword [rcx + 0x20], edi
mov dword [rcx + 0x24], r12d
mov qword [rcx + 0x28], rax
jmp 0x14005adad
mov qword [rcx + 8], 2
lea rax, [0x1400bcdb8]
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], 0x47
jmp 0x14005ada6
xor r15d, r15d
test rdx, rdx
mov qword [rsp + 0x28], rcx
je 0x14005ac43
mov ebx, 0x34567890
mov r12d, 0x23456789
mov edi, 0x12345678
xor r8d, r8d
lea rcx, [0x1400bcfd0]
nop
movzx r10d, byte [rsi + r8]
xor r10b, dil
movzx r10d, r10b
shr edi, 8
xor edi, dword [rcx + r10*4]
movzx r10d, dil
add r10d, r12d
imul r12d, r10d, 0x8088405
inc r12d
mov r10d, r12d
shr r10d, 0x18
movzx r11d, bl
xor r11d, r10d
shr ebx, 8
xor ebx, dword [rcx + r11*4]
inc r8
cmp rdx, r8
jne 0x14005ac00
jmp 0x14005ac53
mov edi, 0x12345678
mov r12d, 0x23456789
mov ebx, 0x34567890
mov rdx, qword [rax]
mov r14, qword [rax + 8]
mov rsi, qword [rax + 0x10]
shl r9, 0x20
mov qword [rsp + 0x48], r15
or r9, r15
mov qword [rsp + 0x50], r9
mov dword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
lea rax, [rsp + 0x30]
mov qword [rsp + 0x40], rax
mov r15d, 0xc
mov qword [rsp + 0x58], r14
jmp 0x14005acb3
test r15, r15
je 0x14005adcc
test rsi, rsi
je 0x14005ad8e
cmp r15, rsi
mov r9, rsi
cmovb r9, r15
mov rax, qword [r14 + 0x18]
lea rcx, [rsp + 0x68]
mov rbp, rdx
mov r8, qword [rsp + 0x40]
call qword [0x1400e5010]
cmp qword [rsp + 0x68], 0
mov r13, qword [rsp + 0x70]
je case.default.0x14005acfe
mov eax, r13d
and eax, 3
lea rcx, [0x1400bd5d0]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
cmp byte [r13 + 0x10], 0x23
mov rdx, rbp
je 0x14005acaa
jmp 0x14005ad95
sub rsi, r13
jb 0x14005ae8e
test r13, r13
je 0x14005ad8e
mov rax, r15
sub rax, r13
jb 0x14005aecb
mov rdx, rbp
add qword [rsp + 0x40], r13
mov r15, rax
jmp 0x14005acaa
lea r13, [0x1400bca40]
mov rcx, qword [rsp + 0x28]
mov qword [rcx + 8], 0
mov qword [rcx + 0x10], r13
mov qword [rcx], 2
mov rax, rcx
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor ecx, ecx
lea rax, [0x1400bcfd0]
nop word cs:[rax + rax]
mov r8d, ebx
or r8d, 3
mov r9d, r8d
and r9d, 0xfffffffe
imul r9d, r8d
shr r9d, 8
xor r9b, byte [rsp + rcx + 0x30]
mov byte [rsp + rcx + 0x30], r9b
lea r8, [rcx + 1]
mov ecx, edi
xor cl, r9b
movzx ecx, cl
shr edi, 8
xor edi, dword [rax + rcx*4]
movzx ecx, dil
add ecx, r12d
imul r12d, ecx, 0x8088405
inc r12d
mov ecx, r12d
shr ecx, 0x18
movzx r9d, bl
xor r9d, ecx
shr ebx, 8
xor ebx, dword [rax + r9*4]
mov rcx, r8
cmp r8, 0xc
jne 0x14005ade0
movzx eax, byte [rsp + 0x3b]
cmp byte [rsp + 0x108], 0
mov rcx, qword [rsp + 0x50]
mov r8, qword [rsp + 0x48]
je 0x14005ae69
shr r8d, 0x18
cmp al, r8b
mov rcx, qword [rsp + 0x28]
je 0x14005ae76
jmp 0x14005ae82
shr rcx, 0x38
cmp al, cl
mov rcx, qword [rsp + 0x28]
jne 0x14005ae82
test rdx, rdx
je 0x14005ae82
mov eax, ebx
jmp 0x14005ab94
mov qword [rcx], 1
jmp 0x14005adad
lea rax, str.number_of_read_bytes_exceeds_limit
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x70], 1
lea rax, [0x1400bca70]
mov qword [rsp + 0x78], rax
xorps xmm0, xmm0
movups xmmword [rsp + 0x80], xmm0
lea rdx, str._rustc_25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04library_std_srciomod.rsfailed_to_fill_whole_buffer
lea rcx, [rsp + 0x68]
call fcn.1400aab20
lea r8, str._rustc_25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04library_std_srciomod.rsfailed_to_fill_whole_buffer
mov rcx, r13
mov rdx, r15
call fcn.1400ab000
int3