Function at 0x140005853
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, 0x108
mov r14, rdx
mov rbx, rcx
cmp byte [rdx + 0xb9], 0
je 0x140005a4c
mov rax, qword [r14 + 0x78]
sub rax, 1
jb 0x140005f65
imul r15, rax, 0xb0
add r15, qword [r14 + 0x70]
mov rax, qword [r15 + 0x38]
mov r12, qword [r15 + 0x40]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x70], r12
cmp r12, 0xffff
jbe 0x1400058c6
lea rdx, [0x1402cb5ec]
mov r8d, 0x1e
mov cl, 0x15
call fcn.140049937
jmp 0x140005a19
lea rsi, [rsp + 0x78]
lea rdi, [rsp + 0x68]
lea r13, [0x1402cb47e]
test r12, r12
je 0x140005a35
cmp r12, 4
jb 0x140005d1e
mov rcx, rsi
mov rdx, rdi
call fcn.14013755f
cmp word [rsp + 0x78], 0
jne 0x140005a2b
movzx ebp, word [rsp + 0x7a]
mov word [rsp + 0x2e], bp
mov rcx, rsi
mov rdx, rdi
call fcn.14013755f
cmp word [rsp + 0x78], 0
jne 0x140005a2b
cmp bp, 1
je 0x140005d2d
cmp bp, 0x20
jb 0x14000597c
movzx ecx, word [rsp + 0x7a]
add r12, 0xfffffffffffffffc
xor eax, eax
cmp rax, 0x62
je 0x140005953
lea rdx, [rax + 2]
cmp word [rax + r13], bp
mov rax, rdx
jne 0x14000593d
jmp 0x14000597c
cmp r12, rcx
jb 0x140005d9b
mov rdx, qword [rsp + 0x70]
mov r12, rdx
sub r12, rcx
jb 0x140005f71
add qword [rsp + 0x68], rcx
mov qword [rsp + 0x70], r12
jmp 0x1400058d7
lea rax, [rsp + 0x2e]
lea rcx, [rsp + 0xe0]
mov qword [rcx], rax
lea rax, [fcn.14003a830]
mov qword [rcx + 8], rax
mov eax, 2
mov qword [rsp + 0x78], rax
and qword [rsp + 0x88], 0
mov qword [rsp + 0x90], 6
and qword [rsp + 0x98], 0
movabs rdx, 0xc00000020
mov qword [rsp + 0xa0], rdx
mov byte [rsp + 0xa8], 3
lea r8, [0x1402cb5b0]
lea rdx, [rsp + 0x30]
mov qword [rdx], r8
mov qword [rdx + 8], rax
mov qword [rdx + 0x20], rsi
mov eax, 1
mov qword [rdx + 0x28], rax
mov qword [rdx + 0x10], rcx
mov qword [rdx + 0x18], rax
lea rsi, [rsp + 0xf0]
mov rcx, rsi
call fcn.140033570
mov rcx, rsi
call fcn.1401377c0
xor ecx, ecx
mov qword [rbx], rcx
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rdx
jmp 0x140005d87
mov rax, qword [rsp + 0x80]
jmp 0x140005a19
cmp byte [r14 + 0xba], 0
je 0x140005daf
and word [r14 + 0xb9], 0
lea rsi, [rsp + 0x78]
mov rcx, rsi
mov rdx, r14
xor r8d, r8d
xor r9d, r9d
call fcn.1400049e6
mov rax, qword [rsi]
cmp rax, 4
jne 0x140005b01
lea rax, [rsp + 0x78]
mov ecx, 0xd
mov rdi, rax
mov rsi, r14
rep movsq qword [rdi], qword [rsi]
and qword [r14], 0
movabs rcx, 0x8000000000000000
mov rax, qword [rax]
cmp rax, 1
jne 0x140005f7d
lea rsi, [rsp + 0x80]
cmp qword [rsi], rcx
jne 0x140005b15
lea rdi, [r14 + 8]
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movaps xmmword [rsp + 0x50], xmm2
movaps xmmword [rsp + 0x40], xmm1
movaps xmmword [rsp + 0x30], xmm0
mov rcx, r14
call fcn.14000948a
mov qword [r14], 1
movaps xmm0, xmmword [rsp + 0x30]
movaps xmm1, xmmword [rsp + 0x40]
movaps xmm2, xmmword [rsp + 0x50]
movups xmmword [rdi + 0x20], xmm2
movups xmmword [rdi + 0x10], xmm1
movups xmmword [rdi], xmm0
cmp dword [rsp + 0x78], 1
jne 0x140005c8a
jmp 0x140005c94
movups xmm0, xmmword [rsp + 0x80]
movups xmmword [rbx + 8], xmm0
mov qword [rbx], rax
jmp 0x140005d87
mov qword [rsp + 0x60], rax
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movaps xmmword [rsp + 0x50], xmm2
movaps xmmword [rsp + 0x40], xmm1
movaps xmmword [rsp + 0x30], xmm0
mov r8, qword [rsp + 0x40]
cmp r8, 0xb
jbe 0x140005f9c
mov eax, dword [r14 + 0x9c]
mov rdi, qword [rsp + 0x38]
shr eax, 0x18
mov byte [rdi + 0xb], al
mov r13d, dword [rsp + 0x58]
mov r15d, dword [rsp + 0x50]
mov eax, dword [rsp + 0x54]
xor ecx, ecx
lea r9, [0x1402cb60c]
mov r10d, 0xff
cmp r8, rcx
je 0x140005bd9
mov r11b, byte [rdi + rcx]
mov r12d, r15d
shr r12d, 8
xor r15b, r11b
movzx r15d, r15b
xor r12d, dword [r9 + r15*4]
mov r15d, r12d
and r12d, r10d
add r12d, eax
imul eax, r12d, 0x8088405
inc eax
mov r12d, eax
shr r12d, 0x18
mov edx, r13d
shr edx, 8
mov ebp, r13d
and ebp, r10d
xor ebp, r12d
xor edx, dword [r9 + rbp*4]
or r13d, 3
mov ebp, r13d
and ebp, 0xfffffffe
imul ebp, r13d
shr ebp, 8
xor bpl, r11b
mov byte [rdi + rcx], bpl
inc rcx
mov r13d, edx
jmp 0x140005b72
mov dword [rsp + 0x58], r13d
mov dword [rsp + 0x50], r15d
mov dword [rsp + 0x54], eax
mov r15, qword [rsp + 0x48]
mov rcx, r15
mov rdx, rdi
call fcn.1401373a9
mov r12, rax
test rax, rax
je 0x140005c41
lea rcx, [rsp + 0x30]
call fcn.140009660
and qword [rbx], 0
mov qword [rbx + 8], r12
cmp dword [rsp + 0x78], 1
movabs rax, 0x8000000000000000
jne 0x140005cd1
cmp qword [rsp + 0x80], rax
jne 0x140005d87
mov rcx, rsi
call fcn.1400093c1
jmp 0x140005d87
mov rcx, qword [rsp + 0x30]
mov rdx, rdi
call fcn.14006f3b3
mov rcx, r14
call fcn.14000948a
mov qword [r14], 1
movabs rax, 0x8000000000000000
mov qword [r14 + 8], rax
mov qword [r14 + 0x10], r15
cmp dword [rsp + 0x78], 1
jne 0x140005c8a
cmp qword [rsp + 0x80], rax
jne 0x140005c94
mov rcx, rsi
call fcn.1400093c1
jmp 0x140005c94
lea rcx, [rsp + 0x78]
call fcn.14000948a
mov rcx, r14
call fcn.14000498e
cmp byte [r14 + 0xbb], 0
je 0x140005cb8
xor eax, eax
mov byte [r14 + 0xb8], al
mov byte [r14 + 0xbb], al
jmp 0x140005cc5
mov rsi, rax
mov rax, qword [r14 + 0x78]
sub rax, 1
jae 0x140005ce0
mov qword [rbx], 4
jmp 0x140005d87
lea rcx, [rsp + 0x78]
call fcn.14000948a
jmp 0x140005d87
imul r15, rax, 0xb0
add r15, qword [r14 + 0x70]
mov eax, dword [r14 + 0x9c]
mov dword [r15 + 0x9c], eax
mov rax, qword [r14 + 0xb0]
mov qword [r15 + 0x78], rax
mov rcx, qword [rsi]
call fcn.140003b75
mov rdi, rdx
test rax, rax
je 0x140005d3c
and qword [rbx], 0
mov qword [rbx + 8], rdi
jmp 0x140005d87
lea rdx, str.Incomplete_extra_data_headerExtra_data_exceeds_extra_field
mov r8d, 0x1c
jmp 0x140005da8
lea rdx, [0x1402cb45b]
mov r8d, 0x22
jmp 0x140005da8
mov rax, rdi
sub rax, qword [r14 + 0xa8]
mov qword [r15 + 0x70], rax
mov r8, qword [r15 + 0x80]
add r8, 0xe
mov rcx, qword [rsi]
xor edx, edx
call fcn.1400fca00
test rax, rax
jne 0x140005d7f
mov edx, dword [r15 + 0x9c]
mov rcx, qword [rsi]
call fcn.140015c11
mov rdx, rax
test rax, rax
je 0x140005e1c
and qword [rbx], 0
mov qword [rbx + 8], rdx
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rdx, str.Extra_data_size_exceeds_extra_fieldExtra_data_header_ID__requires_crate_feature__unreserved_
mov r8d, 0x23
mov cl, 0x27
jmp 0x1400058bc
mov rcx, r14
call fcn.14000498e
mov rsi, rax
mov rdx, qword [r15 + 0x38]
mov r8, qword [r15 + 0x40]
mov rcx, qword [rax]
call fcn.1401373a9
test rax, rax
jne 0x140005a19
mov rdi, qword [r15 + 0x40]
add rdi, qword [r15 + 0x90]
mov qword [r14 + 0xa8], rdi
mov qword [r15 + 0x90], rdi
mov bpl, byte [r15 + 0xa8]
mov r12, qword [r15 + 0x40]
mov r8, qword [r15 + 0x80]
add r8, 0x1c
mov rcx, qword [rsi]
xor edx, edx
call fcn.1400fca00
mov rcx, rax
test rax, rax
je 0x140005e79
mov rax, rdx
jmp 0x140005a19
cmp byte [r15 + 0xa8], 0
je 0x140005ef5
mov rax, qword [r15 + 0x10]
mov rcx, qword [r15 + 0x80]
lea r8, [rcx + rax]
add r8, 0x22
mov rcx, qword [rsi]
xor edx, edx
call fcn.1400fca00
test rax, rax
jne 0x140005d7f
mov rdx, qword [r15 + 0x78]
mov rcx, qword [rsi]
call fcn.140015cae
mov rdx, rax
test rax, rax
jne 0x140005d7f
mov rdx, qword [r15 + 0x70]
mov rcx, qword [rsi]
call fcn.140015cae
jmp 0x140005f3e
lea edx, [r12 + 0x14]
test bpl, bpl
cmove edx, r12d
mov rcx, qword [rsi]
call fcn.140015bde
test rax, rax
jne 0x140005a19
mov rcx, qword [rsi]
xor edx, edx
mov r8, rdi
call fcn.1400fca00
mov rcx, rax
test rax, rax
jne 0x140005e14
movzx r8d, word [r15 + 0x98]
mov r9d, dword [r15 + 0x60]
mov eax, dword [r15 + 0x64]
mov dword [rsp + 0x20], eax
lea rsi, [rsp + 0x78]
mov rcx, rsi
mov rdx, r14
call fcn.1400049e6
mov rcx, qword [rsi]
cmp rcx, 4
je 0x140005a43
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
jmp 0x140005a1b
mov rdx, qword [r15 + 0x70]
mov rax, rdx
shr rax, 0x20
je 0x140005f1e
lea rdx, str.Large_file_option_has_not_been_setShould_have_switched_to_stored_and_unencrypted_beforehand
mov r8d, 0x22
mov cl, 0x27
call fcn.1400db0ee
mov rdx, rax
jmp 0x140005d7f
mov rcx, qword [rsi]
call fcn.140015c11
mov rdx, rax
test rax, rax
jne 0x140005d7f
mov edx, dword [r15 + 0x78]
mov rcx, qword [rsi]
call fcn.140015c11
mov rdx, rax
test rax, rax
jne 0x140005d7f
mov rcx, qword [rsi]
xor edx, edx
mov r8, rdi
call fcn.1400fca00
test rax, rax
jne 0x140005d7f
jmp 0x140005ca6
lea rcx, str._home_ellie_.cargo_registry_src_index.crates.io_6f17d22bba15001f_zip_0.6.6_src_write.rs
call fcn.14003a940
lea r8, str._home_ellie_.cargo_registry_src_index.crates.io_6f17d22bba15001f_zip_0.6.6_src_write.rs
call fcn.140036110
mov qword [rsp + 0x60], rax
lea rcx, str.internal_error:_entered_unreachable_code_rustc_051478957371ee0084a7c0913941d2a8c4757bb9library_std_src_threadmod.rs
lea r8, str._home_ellie_.cargo_registry_src_index.crates.io_6f17d22bba15001f_zip_0.6.6_src_write.rs
mov edx, 0x28
call fcn.140036dc0
jmp 0x140005fb3
lea rax, str._home_ellie_.cargo_registry_src_index.crates.io_6f17d22bba15001f_zip_0.6.6_src_zipcrypto.rs
mov ecx, 0xb
mov rdx, r8
mov r8, rax
call fcn.140036180
ud2