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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x158
lea rbp, [rsp + 0x80]
mov qword [rbp + 0xd0], 0xfffffffffffffffe
mov r13, rdx
mov rsi, rcx
cmp byte [rdx + 0xb9], 0
je 0x14004a564
mov rcx, qword [r13 + 0x78]
test rcx, rcx
je 0x14004ab1d
mov rax, qword [r13 + 0x70]
imul rcx, rcx, 0xb0
mov r8, qword [rcx + rax - 0x70]
cmp r8, 0xffff
jbe 0x14004a2a8
lea rdx, [0x14027e2b4]
mov r8d, 0x1e
mov cl, 0x15
call fcn.1400bc6e0
jmp 0x14004a712
lea r14, [rcx + rax]
add r14, 0xffffffffffffff50
test r8, r8
je 0x14004a54c
mov rax, qword [r14 + 0x38]
mov rcx, r8
cmp rcx, 3
jbe 0x14004aa93
movzx r9d, word [rax]
mov word [rbp + 0xbe], r9w
cmp r9w, 1
je 0x14004aaa7
cmp r9w, 0x20
jb 0x14004a67f
movzx edx, word [rax + 2]
movzx r9d, r9w
cmp r9d, 0x4c40
jg 0x14004a353
cmp r9d, 0x2704
jle 0x14004a3a2
cmp r9d, 0x4452
jle 0x14004a425
cmp r9d, 0x4703
jle 0x14004a4c4
cmp r9d, 0x4704
je 0x14004a67f
cmp r9d, 0x470f
je 0x14004a67f
cmp r9d, 0x4b46
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x7074
jg 0x14004a3bb
cmp r9d, 0x5454
jle 0x14004a451
cmp r9d, 0x5854
jle 0x14004a4df
cmp r9d, 0x5855
je 0x14004a67f
cmp r9d, 0x6375
je 0x14004a67f
cmp r9d, 0x6542
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x64
jg 0x14004a3f8
add r9d, 0xffffffe0
cmp r9d, 4
jb 0x14004a67f
jmp 0x14004a52f
cmp r9d, 0x9900
jle 0x14004a47d
cmp r9d, 0xa21f
jg 0x14004a4a9
lea r10d, [r9 - 0x9901]
cmp r10d, 2
jb 0x14004a67f
cmp r9d, 0xa11e
jne 0x14004a52f
jmp 0x14004a67f
lea r10d, [r9 - 0x65]
cmp r10d, 2
jb 0x14004a67f
cmp r9d, 0x7c8
je 0x14004a67f
cmp r9d, 0x2605
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x334c
jg 0x14004a4fa
cmp r9d, 0x2705
je 0x14004a67f
cmp r9d, 0x2805
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x4f4b
jg 0x14004a515
cmp r9d, 0x4c41
je 0x14004a67f
cmp r9d, 0x4d49
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x7075
je 0x14004a67f
cmp r9d, 0x756e
je 0x14004a67f
cmp r9d, 0x7855
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0xa220
je 0x14004a67f
cmp r9d, 0xfd4a
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x4453
je 0x14004a67f
cmp r9d, 0x4690
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x5455
je 0x14004a67f
cmp r9d, 0x554e
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x334d
je 0x14004a67f
cmp r9d, 0x4341
jne 0x14004a52f
jmp 0x14004a67f
cmp r9d, 0x4f4c
je 0x14004a67f
cmp r9d, 0x5356
je 0x14004a67f
add rcx, 0xfffffffffffffffc
cmp rcx, rdx
jb 0x14004aace
add rax, 4
add rax, rdx
sub rcx, rdx
jne 0x14004a2c3
cmp byte [r13 + 0xba], 0
je 0x14004a92b
mov word [r13 + 0xb9], 0
lea rcx, [rbp + 0x40]
mov rdx, r13
xor r8d, r8d
xor r9d, r9d
call fcn.140052c10
cmp dword [rbp + 0x40], 4
jne 0x14004a908
mov rax, qword [r13 + 0x60]
mov qword [rbp + 0xa0], rax
movups xmm0, xmmword [r13 + 0x50]
movaps xmmword [rbp + 0x90], xmm0
movups xmm0, xmmword [r13 + 0x40]
movaps xmmword [rbp + 0x80], xmm0
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmm2, xmmword [r13 + 0x20]
movups xmm3, xmmword [r13 + 0x30]
movaps xmmword [rbp + 0x70], xmm3
movaps xmmword [rbp + 0x60], xmm2
movaps xmmword [rbp + 0x50], xmm1
movaps xmmword [rbp + 0x40], xmm0
mov qword [r13], 0
mov rcx, qword [rbp + 0x40]
mov rax, rcx
mov qword [rbp + 8], rcx
cmp rcx, 1
jne 0x14004ab29
lea r12, [r13 + 8]
lea rax, [rbp + 0x48]
movabs r14, 0x8000000000000000
cmp qword [rbp + 0x48], r14
jne 0x14004a724
mov qword [rbp + 0xb0], r12
mov rcx, r13
mov qword [rbp + 0xc0], r13
call fcn.140047ae0
mov r15, qword [rbp + 0xc0]
mov qword [r15], 1
lea rax, [rbp + 0x48]
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmm2, xmmword [rax + 0x20]
mov r12, qword [rbp + 0xb0]
movups xmmword [r12 + 0x20], xmm2
movups xmmword [r12 + 0x10], xmm1
movups xmmword [r12], xmm0
cmp qword [r12], r14
jne 0x14004ab4a
cmp byte [r15 + 0xbb], 0
je 0x14004a85d
mov byte [r15 + 0xb8], 0
mov byte [r15 + 0xbb], 0
mov qword [rsi], 4
jmp 0x14004a917
lea rax, [rbp + 0xbe]
mov qword [rbp - 8], rax
lea rax, [0x14001d950]
mov qword [rbp], rax
mov qword [rbp + 0x40], 2
mov qword [rbp + 0x50], 0
mov qword [rbp + 0x58], 6
mov qword [rbp + 0x60], 0
movabs rax, 0xc00000020
mov qword [rbp + 0x68], rax
mov byte [rbp + 0x70], 3
lea rax, [0x14027e278]
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x30], 2
lea rax, [rbp + 0x40]
mov qword [rbp - 0x18], rax
mov qword [rbp - 0x10], 1
lea rax, [rbp - 8]
mov qword [rbp - 0x28], rax
mov qword [rbp - 0x20], 1
lea rdi, [rbp - 0x50]
lea rdx, [rbp - 0x38]
mov rcx, rdi
call fcn.140017e10
mov rcx, rdi
call fcn.1400bcbc0
xor ecx, ecx
mov qword [rsi], rcx
mov qword [rsi + 8], rax
mov qword [rsi + 0x10], rdx
jmp 0x14004a917
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmm2, xmmword [rax + 0x20]
movaps xmmword [rbp + 0x30], xmm2
movaps xmmword [rbp + 0x20], xmm1
movaps xmmword [rbp + 0x10], xmm0
mov r8, qword [rbp + 0x20]
cmp r8, 0xb
jbe 0x14004ab7c
mov eax, dword [r13 + 0x9c]
mov r15, qword [rbp + 0x18]
shr eax, 0x18
mov byte [r15 + 0xb], al
mov edx, dword [rbp + 0x38]
mov ecx, dword [rbp + 0x30]
mov eax, dword [rbp + 0x34]
xor r9d, r9d
lea r10, [0x14027dd80]
cmp r8, r9
je 0x14004a7d6
nop word cs:[rax + rax]
movzx ebx, byte [r15 + r9]
mov edi, edx
or edi, 3
mov r11d, edi
and r11d, 0xfffffffe
imul r11d, edi
shr r11d, 8
xor r11b, bl
mov edi, ecx
xor dil, bl
shr ecx, 8
movzx edi, dil
xor ecx, dword [r10 + rdi*4]
movzx edi, cl
add eax, edi
imul eax, eax, 0x8088405
inc eax
mov edi, eax
shr edi, 0x18
movzx ebx, dl
xor ebx, edi
shr edx, 8
xor edx, dword [r10 + rbx*4]
mov byte [r15 + r9], r11b
inc r9
cmp r8, r9
jne 0x14004a780
mov dword [rbp + 0x38], edx
mov dword [rbp + 0x30], ecx
mov dword [rbp + 0x34], eax
mov rbx, qword [rbp + 0x28]
mov rcx, rbx
mov rdx, r15
call case.0x14004c8b3.17
mov rdi, rax
mov qword [rbp + 0xc0], r15
test rax, rax
je 0x14004a809
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rbx, rdi
cmp qword [rbp + 0x10], 0
je 0x14004a826
mov rcx, qword [0x1402d3850]
xor edx, edx
mov r8, qword [rbp + 0xc0]
call qword [sym.imp.KERNEL32.dll_HeapFree]
test rdi, rdi
je 0x14004a9fd
mov qword [rsi], 0
mov qword [rsi + 8], rbx
cmp dword [rbp + 0x40], 1
jne 0x14004aa59
cmp qword [rbp + 0x48], r14
jne 0x14004a917
mov rcx, qword [rbp + 0x50]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x14004a917
mov rax, qword [r15 + 0x78]
test rax, rax
je 0x14004a673
mov rbx, qword [r15 + 0x70]
imul r14, rax, 0xb0
mov eax, dword [r15 + 0x9c]
mov dword [r14 + rbx - 0x14], eax
mov rax, qword [r15 + 0xb0]
mov qword [r14 + rbx - 0x38], rax
mov rdi, qword [r15 + 0x10]
mov qword [rbp + 0x40], 0
lea r8, [rbp + 0x40]
mov rcx, rdi
xor edx, edx
mov r9d, 1
call qword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
je 0x14004aa75
lea r8, [r14 + rbx]
add r8, 0xffffffffffffff50
mov rbx, qword [rbp + 0x40]
mov rax, rbx
sub rax, qword [r15 + 0xa8]
mov qword [r8 + 0x70], rax
lea rcx, [rbp + 0x40]
mov rdx, rdi
call fcn.140052350
cmp dword [rbp + 0x40], 4
jne 0x14004a908
mov rcx, rdi
xor edx, edx
mov r8, rbx
call fcn.140092d90
test rax, rax
je 0x14004a663
mov qword [rsi], 0
mov qword [rsi + 8], rdx
jmp 0x14004a917
mov rax, qword [rbp + 0x50]
mov qword [rsi + 0x10], rax
movups xmm0, xmmword [rbp + 0x40]
movups xmmword [rsi], xmm0
add rsp, 0x158
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
cmp dword [r13], 1
jne 0x14004ab4a
movabs rax, 0x8000000000000000
cmp qword [r13 + 8], rax
jne 0x14004ab4a
mov rdx, qword [r14 + 0x38]
mov rdi, qword [r13 + 0x10]
mov rcx, rdi
call case.0x14004c8b3.17
test rax, rax
jne 0x14004a712
mov r15, qword [r14 + 0x40]
mov rbx, qword [r14 + 0x90]
add rbx, r15
mov qword [r13 + 0xa8], rbx
mov qword [r14 + 0x90], rbx
movzx r12d, byte [r14 + 0xa8]
mov rdx, qword [r14 + 0x80]
add rdx, 0x1c
mov qword [rbp + 0x40], 0
lea r8, [rbp + 0x40]
mov rcx, rdi
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
je 0x14004aabb
lea eax, [r15 + 0x14]
test r12b, r12b
cmove eax, r15d
mov word [rbp + 0x40], ax
lea rdx, [rbp + 0x40]
mov r8d, 2
mov rcx, rdi
call case.0x14004c8b3.17
test rax, rax
jne 0x14004a712
mov rcx, rdi
xor edx, edx
mov r8, rbx
call fcn.140092d90
mov rcx, rax
test rax, rax
je 0x14004aae2
mov rax, rdx
jmp 0x14004a712
mov qword [rbp + 0xb0], rbx
mov rcx, r13
mov qword [rbp + 0xc0], r13
call fcn.140047ae0
mov r15, qword [rbp + 0xc0]
mov qword [r15], 1
movabs r14, 0x8000000000000000
mov qword [r15 + 8], r14
mov rax, qword [rbp + 0xb0]
mov qword [r15 + 0x10], rax
cmp dword [rbp + 0x40], 1
jne 0x14004aa67
cmp qword [rbp + 0x48], r14
jne 0x14004a64b
mov rcx, qword [rbp + 0x50]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x14004a64b
lea rcx, [rbp + 0x40]
call fcn.140047ae0
jmp 0x14004a917
lea rcx, [rbp + 0x40]
call fcn.140047ae0
jmp 0x14004a64b
call qword [sym.imp.KERNEL32.dll_GetLastError]
shl rax, 0x20
or rax, 2
mov qword [rsi], 0
mov qword [rsi + 8], rax
jmp 0x14004a917
lea rdx, str.Incomplete_extra_data_headerExtra_data_exceeds_extra_field
mov r8d, 0x1c
mov cl, 0x27
jmp 0x14004a29e
lea rdx, str.No_custom_ZIP64_extra_data_allowedExtra_data_size_exceeds_extra_fieldExtra_data_header_ID__requires_crate_feature__unreserved_
mov r8d, 0x22
mov cl, 0x27
jmp 0x14004a29e
call qword [sym.imp.KERNEL32.dll_GetLastError]
shl rax, 0x20
or rax, 2
jmp 0x14004a712
lea rdx, [0x14027e21a]
mov r8d, 0x23
mov cl, 0x27
jmp 0x14004a29e
movzx r8d, word [r14 + 0x98]
mov r9d, dword [r14 + 0x60]
mov eax, dword [r14 + 0x64]
mov dword [rsp + 0x20], eax
lea rcx, [rbp + 0x40]
mov rdx, r13
call fcn.140052c10
mov rcx, qword [rbp + 0x40]
cmp rcx, 4
je 0x14004a55a
mov rax, qword [rbp + 0x48]
mov rdx, qword [rbp + 0x50]
jmp 0x14004a714
lea rcx, str.C:Usersdiddy.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_srcwrite.rs
call fcn.14025f580
mov byte [rbp + 0xcf], 1
lea rcx, str.internal_error:_entered_unreachable_code_rustc_3f5fd8dd41153bc5fdca9427e9e05be2c767ba23library_std_src_threadmod.rs
lea r8, str.C:Usersdiddy.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_srcwrite.rs
mov edx, 0x28
call fcn.14025f1e0
jmp 0x14004ab93
lea rax, [0x14026f980]
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], 1
mov qword [rbp + 0x50], 8
xorps xmm0, xmm0
movups xmmword [rbp + 0x58], xmm0
lea rdx, str.C:Usersdiddy.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_srcwrite.rs
lea rcx, [rbp + 0x40]
call fcn.14025f050
lea rax, str.C:Usersdiddy.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_srczipcrypto.rs
mov ecx, 0xb
mov rdx, r8
mov r8, rax
call fcn.14025f100
ud2