Function at 0x1400037a0
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, 0x128
mov r13, rdx
mov r14, rcx
cmp byte [rdx + 0xc9], 0
je 0x140003ad5
mov r12, qword [r13 + 0x98]
mov rax, qword [r13 + 0xa8]
lea rcx, [rax - 1]
imul rcx, rcx, 0xb0
add rcx, r12
xor r15d, r15d
sub rax, 1
cmovae r15, rcx
jb 0x140004331
imul r10, rax, 0xb0
mov rbp, qword [r12 + r10 + 0x48]
cmp rbp, 0xffff
jbe 0x140003821
lea rdx, [0x1404601ac]
mov r8d, 0x1e
mov cl, 0x15
call fcn.1401f08f0
jmp 0x140003ddc
test rbp, rbp
je 0x140003abd
mov rax, qword [r12 + r10 + 0x38]
mov rcx, rbp
cmp rcx, 3
jbe 0x14000422e
movzx r8d, word [rax]
mov word [rsp + 0x3e], r8w
cmp r8w, 1
je 0x140004247
cmp r8w, 0x20
jb 0x140003d15
movzx edx, word [rax + 2]
movzx r8d, r8w
cmp r8d, 0x4c40
jg 0x1400038c0
cmp r8d, 0x2704
jle 0x14000390f
cmp r8d, 0x4452
jle 0x140003969
cmp r8d, 0x4703
jle 0x140003a1a
cmp r8d, 0x4704
je 0x140003d15
cmp r8d, 0x470f
je 0x140003d15
cmp r8d, 0x4b46
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x7074
jg 0x14000392c
cmp r8d, 0x5454
jle 0x140003995
cmp r8d, 0x5854
jle 0x140003a35
cmp r8d, 0x5855
je 0x140003d15
cmp r8d, 0x6375
je 0x140003d15
cmp r8d, 0x6542
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x64
jg 0x1400039c1
add r8d, 0xffffffe0
cmp r8d, 4
jb 0x140003d15
jmp 0x140003aa0
cmp r8d, 0x9900
jle 0x1400039ee
cmp r8d, 0xa21f
jg 0x140003a50
lea r9d, [r8 - 0x9901]
cmp r9d, 2
jb 0x140003d15
cmp r8d, 0xa11e
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x334c
jg 0x140003a6b
cmp r8d, 0x2705
je 0x140003d15
cmp r8d, 0x2805
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x4f4b
jg 0x140003a86
cmp r8d, 0x4c41
je 0x140003d15
cmp r8d, 0x4d49
jne 0x140003aa0
jmp 0x140003d15
lea r9d, [r8 - 0x65]
cmp r9d, 2
jb 0x140003d15
cmp r8d, 0x7c8
je 0x140003d15
cmp r8d, 0x2605
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x7075
je 0x140003d15
cmp r8d, 0x756e
je 0x140003d15
cmp r8d, 0x7855
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x4453
je 0x140003d15
cmp r8d, 0x4690
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x5455
je 0x140003d15
cmp r8d, 0x554e
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0xa220
je 0x140003d15
cmp r8d, 0xfd4a
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x334d
je 0x140003d15
cmp r8d, 0x4341
jne 0x140003aa0
jmp 0x140003d15
cmp r8d, 0x4f4c
je 0x140003d15
cmp r8d, 0x5356
je 0x140003d15
add rcx, 0xfffffffffffffffc
cmp rcx, rdx
jb 0x140004280
add rax, 4
add rax, rdx
sub rcx, rdx
jne 0x140003832
cmp byte [r13 + 0xca], 0
je 0x140003ede
mov word [r13 + 0xc9], 0
lea rbx, [rsp + 0x50]
mov rcx, rbx
mov rdx, r13
xor r8d, r8d
xor r9d, r9d
call fcn.140002530
mov rax, qword [rsp + 0x50]
cmp rax, 4
jne 0x140003d01
mov rax, qword [r13 + 0x70]
mov qword [rsp + 0xc0], rax
movups xmm0, xmmword [r13 + 0x60]
movaps xmmword [rsp + 0xb0], xmm0
movups xmm0, xmmword [r13 + 0x50]
movaps xmmword [rsp + 0xa0], xmm0
movups xmm0, xmmword [r13 + 0x40]
movaps xmmword [rsp + 0x90], xmm0
movdqu xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmm2, xmmword [r13 + 0x20]
movups xmm3, xmmword [r13 + 0x30]
movaps xmmword [rsp + 0x80], xmm3
movaps xmmword [rsp + 0x70], xmm2
movaps xmmword [rsp + 0x60], xmm1
movdqa xmmword [rsp + 0x50], xmm0
mov qword [r13], 2
cmp dword [rsp + 0x50], 3
jne 0x14000434b
lea rdi, [r13 + 8]
mov rsi, qword [rsp + 0x58]
test rsi, rsi
je 0x140003e00
mov qword [rsp + 0x48], rdi
mov qword [rsp + 0x30], r14
mov r15, qword [rsp + 0x80]
cmp r15, 0xb
jbe 0x14000431b
mov rbp, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x68]
mov r14, qword [rsp + 0x70]
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x28], r13
movzx r8d, byte [r13 + 0x7f]
mov eax, dword [rsp + 0x90]
mov ecx, dword [rsp + 0x88]
mov edx, dword [rsp + 0x8c]
mov byte [r14 + 0xb], r8b
xor r8d, r8d
lea r9, [0x14045fc74]
nop word cs:[rax + rax]
movzx r10d, byte [r14 + r8]
mov r12d, eax
or r12d, 3
mov r11d, r12d
and r11d, 0xfffffffe
imul r11d, r12d
mov r12d, ecx
xor r12b, r10b
movzx r12d, r12b
shr ecx, 8
xor ecx, dword [r9 + r12*4]
movzx r12d, cl
add r12d, edx
imul edx, r12d, 0x8088405
inc edx
mov r12d, edx
shr r12d, 0x18
movzx r13d, al
xor r13d, r12d
shr r11d, 8
shr eax, 8
xor eax, dword [r9 + r13*4]
xor r11b, r10b
mov byte [r14 + r8], r11b
inc r8
cmp r15, r8
jne 0x140003bf0
mov r12, r14
nop word cs:[rax + rax]
cmp rdi, rbp
mov rcx, rbp
cmovb rcx, rdi
mov r13, rbp
sub r13, rcx
add rcx, rsi
cmp r15, r13
cmovb r13, r15
mov rdx, r12
mov r8, r13
call sub.VCRUNTIME140.dll_memcpy
test r13, r13
je 0x140003e5b
add rdi, r13
add r12, r13
sub r15, r13
jne 0x140003c60
cmp qword [rsp + 0x40], 0
je 0x140003cb3
mov rcx, qword [0x1404a3498]
xor edx, edx
mov r8, r14
call qword [sym.imp.kernel32.dll_HeapFree]
mov r13, qword [rsp + 0x28]
mov rcx, r13
call fcn.140005340
mov qword [r13], 3
mov qword [r13 + 8], 0
mov qword [r13 + 0x10], rsi
mov qword [r13 + 0x18], rbp
mov qword [r13 + 0x20], rdi
cmp qword [rsp + 0x50], 3
mov r14, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x48]
je 0x140003e35
lea rcx, [rsp + 0x50]
call fcn.140005340
jmp 0x140003e35
movdqu xmm0, xmmword [rsp + 0x58]
movdqu xmmword [r14 + 8], xmm0
mov qword [r14], rax
jmp 0x140003dec
lea rax, [rsp + 0x3e]
mov qword [rsp + 0xd0], rax
lea rax, [0x140054250]
mov qword [rsp + 0xd8], rax
mov qword [rsp + 0x50], 2
mov qword [rsp + 0x60], 0
mov qword [rsp + 0x68], 6
mov qword [rsp + 0x70], 0
movabs rax, 0xc00000020
mov qword [rsp + 0x78], rax
mov byte [rsp + 0x80], 3
lea rax, [0x140460170]
mov qword [rsp + 0xe0], rax
mov qword [rsp + 0xe8], 2
lea rax, [rsp + 0x50]
mov qword [rsp + 0x100], rax
mov qword [rsp + 0x108], 1
lea rax, [rsp + 0xd0]
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0xf8], 1
lea rdi, [rsp + 0x110]
lea rdx, [rsp + 0xe0]
mov rcx, rdi
call fcn.14004eac0
mov rcx, rdi
call fcn.1401f0be0
movq xmm0, rax
xor eax, eax
mov qword [r14], rax
movdqu xmmword [r14 + 8], xmm0
add rsp, 0x128
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rsi, [rsp + 0x58]
mov rcx, r13
call fcn.140005340
mov qword [r13], 3
movdqu xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movups xmm3, xmmword [rsi + 0x30]
movups xmmword [rdi + 0x30], xmm3
movups xmmword [rdi + 0x20], xmm2
movups xmmword [rdi + 0x10], xmm1
movdqu xmmword [rdi], xmm0
cmp qword [rdi], 0
jne 0x140004365
cmp byte [r13 + 0xcb], 0
je 0x140003ea6
mov byte [r13 + 0xc8], 0
mov byte [r13 + 0xcb], 0
jmp 0x140003ed2
cmp qword [rsp + 0x40], 0
je 0x140003e75
mov rcx, qword [0x1404a3498]
xor edx, edx
mov r8, r14
call qword [sym.imp.kernel32.dll_HeapFree]
lea rax, [0x14043be88]
mov rcx, qword [rsp + 0x30]
mov qword [rcx + 8], rax
mov qword [rcx], 0
cmp dword [rsp + 0x50], 3
je 0x140003dec
lea rcx, [rsp + 0x50]
call fcn.140005340
jmp 0x140003dec
mov rax, qword [r13 + 0x98]
mov rcx, qword [r13 + 0xa8]
lea rdx, [rcx - 1]
imul rdx, rdx, 0xb0
add rdx, rax
xor edi, edi
sub rcx, 1
cmovae rdi, rdx
jae 0x140003f87
mov qword [r14], 4
jmp 0x140003dec
cmp dword [r13], 3
jne 0x140004365
cmp qword [r13 + 8], 0
jne 0x140004365
mov qword [rsp + 0x30], r14
test rbp, rbp
mov qword [rsp + 0x28], r13
je 0x140004137
lea rax, [r12 + r10]
add rax, 0x48
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x40], r10
mov rbx, qword [r12 + r10 + 0x38]
mov rsi, qword [r13 + 0x10]
mov rdi, qword [r13 + 0x18]
mov r13, qword [r13 + 0x20]
nop word [rax + rax]
cmp r13, rdi
mov rcx, rdi
cmovb rcx, r13
mov r14, rdi
sub r14, rcx
add rcx, rsi
cmp rbp, r14
cmovb r14, rbp
mov rdx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcpy
add r13, r14
test r14, r14
je 0x14000420d
add rbx, r14
sub rbp, r14
jne 0x140003f30
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x20], r13
mov r13, rax
mov rax, qword [rsp + 0x48]
mov rax, qword [rax]
mov r10, qword [rsp + 0x40]
jmp 0x140004141
mov qword [rsp + 0x30], r14
lea rdx, [r13 + 0x10]
mov qword [rsp + 0x48], rdx
mov edx, dword [r13 + 0x7c]
imul rcx, rcx, 0xb0
mov dword [rax + rcx + 0x9c], edx
mov r8, qword [r13 + 0x90]
mov qword [rax + rcx + 0x78], r8
mov r8, qword [r13 + 0x20]
mov qword [rsp + 0x40], r8
sub r8, qword [r13 + 0x88]
lea r12, [rax + rcx]
add r12, 0x78
mov qword [rax + rcx + 0x70], r8
mov rsi, qword [rax + rcx + 0x80]
add rsi, 0xe
mov dword [rsp + 0x50], edx
mov rax, r13
mov r13, qword [r13 + 0x10]
mov qword [rsp + 0x28], rax
mov rbp, qword [rax + 0x18]
mov r14d, 4
nop word cs:[rax + rax]
cmp rsi, rbp
mov rcx, rbp
cmovb rcx, rsi
mov r15, rbp
sub r15, rcx
add rcx, r13
cmp r14, r15
cmovb r15, r14
mov rdx, rbx
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add rsi, r15
test r15, r15
je 0x140004112
add rbx, r15
sub r14, r15
jne 0x140004000
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x20], rsi
cmp byte [rdi + 0xa8], 0
je 0x140004256
mov rax, qword [r12 + 8]
mov rcx, qword [rdi + 0x18]
lea rsi, [rax + rcx]
add rsi, 0x22
mov rax, qword [r12]
mov qword [rsp + 0x50], rax
mov edi, 8
lea rbx, [rsp + 0x50]
cmp rsi, rbp
mov rcx, rbp
cmovb rcx, rsi
mov r14, rbp
sub r14, rcx
add rcx, r13
cmp rdi, r14
cmovb r14, rdi
mov rdx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcpy
add rsi, r14
test r14, r14
je 0x140004112
add rbx, r14
sub rdi, r14
jne 0x140004073
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x20], rsi
mov rax, qword [r12 - 8]
mov qword [rsp + 0x50], rax
mov edi, 8
lea rbx, [rsp + 0x50]
cmp rsi, rbp
mov rcx, rbp
cmovb rcx, rsi
mov r14, rbp
sub r14, rcx
add rcx, r13
cmp rdi, r14
cmovb r14, rdi
mov rdx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcpy
add rsi, r14
test r14, r14
je 0x140004112
add rbx, r14
sub rdi, r14
jne 0x1400040c5
mov r14, qword [rsp + 0x30]
mov r13, qword [rsp + 0x28]
mov rax, qword [rsp + 0x40]
mov qword [r13 + 0x20], rax
jmp 0x140003e49
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x20], rsi
lea rax, [0x14043be88]
mov r14, qword [rsp + 0x30]
mov qword [r14 + 8], rax
mov qword [r14], 0
jmp 0x140003dec
mov rsi, qword [r13 + 0x10]
mov rdi, qword [r13 + 0x18]
xor eax, eax
lea rcx, [r12 + r10]
add rcx, 0x90
mov r12, qword [rcx]
add r12, rax
mov qword [r13 + 0x88], r12
mov qword [rcx], r12
cmp byte [r15 + 0xa8], 0
lea ecx, [rax + 0x14]
cmove ecx, eax
mov r13, qword [r15 + 0x80]
add r13, 0x1c
mov word [rsp + 0x50], cx
mov ebp, 2
lea rbx, [rsp + 0x50]
nop word cs:[rax + rax]
cmp r13, rdi
mov rcx, rdi
cmovb rcx, r13
mov r14, rdi
sub r14, rcx
add rcx, rsi
cmp rbp, r14
cmovb r14, rbp
mov rdx, rbx
mov r8, r14
call sub.VCRUNTIME140.dll_memcpy
add r13, r14
test r14, r14
je 0x14000420d
add rbx, r14
sub rbp, r14
jne 0x140004190
mov r13, qword [rsp + 0x28]
mov qword [r13 + 0x20], r12
movzx r8d, word [r15 + 0x98]
mov r9d, dword [r15]
mov eax, dword [r15 + 4]
mov dword [rsp + 0x20], eax
lea rcx, [rsp + 0x50]
mov rdx, r13
call fcn.140002530
mov rax, qword [rsp + 0x50]
cmp rax, 4
mov r14, qword [rsp + 0x30]
je 0x140003acb
movdqu xmm0, xmmword [rsp + 0x58]
jmp 0x140003de3
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x20], r13
lea rax, [0x14043be88]
movq xmm0, rax
xor eax, eax
mov r14, qword [rsp + 0x30]
jmp 0x140003de3
lea rdx, str.Incomplete_extra_data_headerExtra_data_exceeds_extra_fieldIo
mov r8d, 0x1c
mov cl, 0x27
call fcn.1401f08f0
jmp 0x140003ddc
lea rdx, str.No_custom_ZIP64_extra_data_allowedExtra_data_size_exceeds_extra_fieldExtra_data_header_ID__requires_crate_feature__unreserved_
mov r8d, 0x22
jmp 0x14000428d
mov rax, r12
mov rax, qword [r12 - 8]
mov rcx, rax
shr rcx, 0x20
je 0x140004299
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.1401ae530
jmp 0x140004122
lea rdx, [0x140460112]
mov r8d, 0x23
mov cl, 0x27
call fcn.1401f08f0
jmp 0x140003ddc
mov dword [rsp + 0x50], eax
mov edi, 4
lea rbx, [rsp + 0x50]
mov r14, qword [rsp + 0x30]
cmp rsi, rbp
mov rcx, rbp
cmovb rcx, rsi
mov r15, rbp
sub r15, rcx
add rcx, r13
cmp rdi, r15
cmovb r15, rdi
mov rdx, rbx
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add rsi, r15
test r15, r15
je 0x140004306
add rbx, r15
sub rdi, r15
jne 0x1400042ac
mov r13, qword [rsp + 0x28]
mov qword [r13 + 0x20], rsi
mov edx, dword [r12]
mov rcx, qword [rsp + 0x48]
call fcn.14000d620
test rax, rax
jne 0x140004127
jmp 0x140004104
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x20], rsi
lea rax, [0x14043be88]
jmp 0x140004127
lea r8, str.C:Users_rosesxrq.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_srczipcrypto.rs
mov ecx, 0xb
mov rdx, r15
call fcn.1403897b0
ud2
lea rcx, str.called__Option::unwrap____on_a__None__value
lea r8, str.C:Users_rosesxrq.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_srcwrite.rs
mov edx, 0x2b
call fcn.1403898b0
ud2
lea rcx, str.internal_error:_entered_unreachable_codeattempt_to_divide_by_zero_rustc_a28077b28a02b92985b3a3faecf92813155f1ea1librarycore_src_slice_sort.rs
lea r8, str.C:Users_rosesxrq.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_srcwrite.rs
mov edx, 0x28
call fcn.1403898b0
ud2
lea rax, [0x140398470]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], 1
lea rax, [0x14045f5e8]
mov qword [rsp + 0x60], rax
pxor xmm0, xmm0
movdqu xmmword [rsp + 0x68], xmm0
lea rdx, str.C:Users_rosesxrq.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_srcwrite.rs
lea rcx, [rsp + 0x50]
call fcn.1403896f0
ud2