Function at 0x140054205
Capabilities:
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, 0xd8
mov r14, r9
mov r15, r8
mov rsi, rdx
mov rdi, rcx
movzx eax, byte [rdx]
test rax, rax
je 0x1400542cd
cmp eax, 1
jne 0x1400542f5
lea rdx, [rsi + 8]
mov rcx, rdi
mov r8, r15
mov r9, r14
call fcn.14005634c
mov eax, dword [rsi + 0x28]
mov r11d, dword [rsi + 0x20]
mov ecx, dword [rsi + 0x24]
xor edx, edx
lea r8, [0x140126f58]
mov r9d, 0xff
cmp r14, rdx
je 0x1400544fd
mov edi, eax
or edi, 3
mov r10d, edi
and r10d, 0xfffffffe
imul r10d, edi
shr r10d, 8
xor r10b, byte [r15 + rdx]
mov edi, r11d
shr edi, 8
xor r11b, r10b
movzx r11d, r11b
xor edi, dword [r8 + r11*4]
mov dword [rsi + 0x20], edi
mov r11d, edi
and edi, r9d
add edi, ecx
imul ecx, edi, 0x8088405
inc ecx
mov dword [rsi + 0x24], ecx
mov edi, ecx
shr edi, 0x18
mov ebx, eax
shr ebx, 8
and eax, r9d
xor eax, edi
xor ebx, dword [r8 + rax*4]
mov dword [rsi + 0x28], ebx
mov byte [r15 + rdx], r10b
inc rdx
mov eax, ebx
jmp 0x140054264
add rsi, 8
mov rcx, rdi
mov rdx, rsi
mov r8, r15
mov r9, r14
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.14005634c
mov rcx, qword [rsi + 0x30]
test rcx, rcx
je 0x14005434c
lea r12, [rsi + 8]
cmp rcx, r14
cmovae rcx, r14
lea r9, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_zip_1.1.2_src_aes.rs
mov rdx, r15
mov r8, r14
call fcn.140055b6f
mov r9, rdx
lea rbx, [rsp + 0x50]
mov rcx, rbx
mov rdx, r12
mov r8, rax
call fcn.14005634c
cmp qword [rbx], 0
je 0x140054357
mov rax, qword [rsp + 0x58]
mov qword [rdi + 8], rax
mov qword [rdi], 1
jmp 0x1400544fd
xorps xmm0, xmm0
movups xmmword [rdi], xmm0
jmp 0x1400544fd
mov rcx, qword [rsp + 0x58]
sub qword [rsi + 0x30], rcx
cmp rcx, r14
ja 0x1400546b4
lea rax, [rsi + 0x38]
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
lea rax, [rsi + 0x98]
movzx ebp, byte [rsi + 0xd8]
mov r13d, 0x40
sub r13, rbp
mov rbx, rcx
sub rbx, r13
mov qword [rsp + 0x30], rax
jae 0x1400543ef
lea r9, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_block_buffer_0.10.4_src_lib.rs
mov edx, 0x40
mov rbx, rcx
mov rcx, rax
mov r8, rbp
call fcn.14001a177
mov r8, rdx
lea r9, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_block_buffer_0.10.4_src_lib.rs
mov rcx, rbx
mov rdx, rax
call fcn.140055b6f
lea rcx, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_block_buffer_0.10.4_src_lib.rs
mov qword [rsp + 0x20], rcx
mov rcx, rax
mov r8, r15
mov r9, rbx
call fcn.140059c51
mov rax, rbx
add rbp, rbx
jmp 0x1400544bb
mov qword [rsp + 0x40], rcx
mov r8, rcx
mov rdx, r15
test rbp, rbp
je 0x14005445b
lea rcx, [r15 + r13]
mov qword [rsp + 0x38], rcx
lea r9, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_block_buffer_0.10.4_src_lib.rs
mov edx, 0x40
mov rcx, rax
mov r8, rbp
call fcn.14001a177
lea rcx, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_block_buffer_0.10.4_src_lib.rs
mov qword [rsp + 0x20], rcx
mov rcx, rax
mov r8, r15
mov r9, r13
call fcn.140059c51
lea rcx, [rsp + 0x50]
mov r8d, 1
mov rdx, qword [rsp + 0x30]
call fcn.140055c9f
mov rdx, qword [rsp + 0x38]
mov rax, qword [rsp + 0x30]
mov r8, rbx
mov r13, r8
and r13, 0xffffffffffffffc0
mov ebp, r8d
and ebp, 0x3f
add r13, rdx
cmp r8, 0x40
jb 0x140054484
shr r8, 6
lea rcx, [rsp + 0x50]
call fcn.140055c9f
mov rax, qword [rsp + 0x30]
lea r9, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_block_buffer_0.10.4_src_lib.rs
mov r8d, 0x40
mov rcx, rbp
mov rdx, rax
call fcn.140055b6f
lea rcx, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_block_buffer_0.10.4_src_lib.rs
mov qword [rsp + 0x20], rcx
mov rcx, rax
mov r8, r13
mov r9, rbp
call fcn.140059c51
mov rax, qword [rsp + 0x40]
mov byte [rsi + 0xd8], bpl
mov r13, qword [rsi + 0x20]
mov rbx, qword [rsi + 0x28]
lea r9, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_zip_1.1.2_src_aes.rs
mov rbp, rax
mov rcx, rax
mov rdx, r15
mov r8, r14
call fcn.140055b6f
mov r8, rdx
mov rcx, r13
mov rdx, rax
call qword [rbx + 0x18]
cmp qword [rsi + 0x30], 0
je 0x140054511
mov qword [rdi + 8], rbp
and qword [rdi], 0
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rsi + 0xe0], 0
jne 0x1400546c3
mov rbx, rbp
lea r14, [rsp + 0x80]
and word [r14 + 8], 0
and qword [r14], 0
mov byte [rsi + 0xe0], 1
mov r15d, 0xa
lea rbp, [rsp + 0x50]
test r15, r15
je 0x1400545a4
mov rcx, rbp
mov rdx, r12
mov r8, r14
mov r9, r15
call fcn.14005634c
cmp qword [rsp + 0x50], 0
je 0x140054582
mov r13, qword [rsp + 0x58]
mov rcx, r13
call fcn.140056286
test al, al
je 0x14005469c
mov rcx, r13
call fcn.1400562c2
jmp 0x140054545
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x140054695
mov rax, r15
sub rax, rcx
jb 0x1400546a5
add r14, rcx
mov r15, rax
jmp 0x140054545
lea r14, [rsp + 0xb0]
mov rcx, r14
call fcn.1400564f9
lea r15, [rsp + 0xc4]
mov rcx, r15
call fcn.1400564f9
mov rcx, qword [rsp + 0x48]
mov r12, qword [rsp + 0x30]
mov rdx, r12
mov r8, r15
call fcn.140055b8f
mov eax, dword [rsi + 0x70]
lea rcx, [rsp + 0x50]
mov dword [rcx + 0x18], eax
movups xmm0, xmmword [rsi + 0x60]
movups xmmword [rcx + 8], xmm0
mov rax, qword [rsi + 0x58]
mov qword [rcx], rax
mov eax, dword [r15 + 0x10]
mov dword [r12 + 0x10], eax
movups xmm0, xmmword [r15]
movups xmmword [r12], xmm0
mov byte [rsi + 0xd8], 0x14
mov rdx, r12
mov r8, r14
call fcn.140055b8f
mov eax, dword [rsi + 0x90]
mov dword [rsi + 0x50], eax
movups xmm0, xmmword [rsi + 0x80]
movups xmmword [rsi + 0x40], xmm0
mov rax, qword [rsi + 0x78]
mov qword [rsi + 0x38], rax
mov byte [rsi + 0xd8], 0
mov eax, dword [r14 + 0x10]
mov dword [rsp + 0xa0], eax
movups xmm0, xmmword [r14]
movaps xmmword [rsp + 0x90], xmm0
xor ecx, ecx
xor eax, eax
cmp rcx, 0xa
je 0x140054670
mov dl, byte [rsp + rcx + 0x80]
xor dl, byte [rsp + rcx + 0x90]
inc rcx
or al, dl
jmp 0x140054655
test al, al
je 0x14005468d
lea rdx, str.Invalid_authentication_code__this_could_be_due_to_an_invalid_password_or_errors_in_the_dataTried_to_use_an_already_finalized_HMAC._This_is_a_bug_
mov r8d, 0x5b
mov cl, 0x15
call fcn.14001ae17
jmp 0x14005433c
mov rbp, rbx
jmp 0x1400544f5
lea r13, str.failed_to_fill_whole_buffer
mov qword [rdi + 8], r13
jmp 0x140054340
lea r8, str._rustc_11f32b73e0dc9287e305b5b9980d24aecdc8c17flibrary_std_srciomod.rs
mov rdx, r15
call fcn.14000d450
lea r8, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_zip_1.1.2_src_aes.rs
mov rdx, r14
call fcn.14000dec0
lea rax, [0x140126278]
lea rcx, [rsp + 0x50]
mov qword [rcx], rax
mov qword [rcx + 8], 1
lea rax, [0x140127358]
mov qword [rcx + 0x10], rax
xorps xmm0, xmm0
movups xmmword [rcx + 0x18], xmm0
lea rdx, str._home_wav_.cargo_registry_src_index.crates.io_6f17d22bba15001f_zip_1.1.2_src_aes.rs
call fcn.14000d3f0
int3