Function at 0x18000e030
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x28
test r8, r8
je 0x18000e18e
mov r14, r8
mov rdi, rdx
mov rsi, rcx
lea rbx, [0x1800e4f6b]
lea r15, [0x1800e4b08]
lea r12, [0x1800e5820]
jmp 0x18000e08b
cmp byte [rdx + 0xf], 0x23
jne case.0x18000e0aa.2
mov rcx, rdx
call sym._ZN4core3ptr42drop_in_place_LT_std..io..error..Error_GT_17hf7fd8547e3da90a2E.llvm.11248888635009664630
test r14, r14
je 0x18000e18e
mov rcx, rsi
mov rdx, rdi
mov r8, r14
call sym.__flate2::deflate::read::DeflateDecoder_R__as_std::io::Read_::read::h4382376586d22129
test rax, rax
je 0x18000e0c0
mov eax, edx
and eax, 3
movsxd rax, dword [r12 + rax*4]
add rax, r12
jmp rax
cmp byte [rdx + 0x10], 0x23
je 0x18000e07a
jmp case.0x18000e0aa.2
test rdx, rdx
je 0x18000e105
mov rax, r14
sub rax, rdx
jb 0x18000e1b0
mov ecx, dword [rsi + 0xa0]
not ecx
test dl, 1
jne 0x18000e12f
mov r8, rdi
add rdi, rdx
cmp rdx, 1
jne 0x18000e150
jmp 0x18000e17a
mov rax, rdx
shr rax, 0x20
cmp eax, 0x23
je 0x18000e07a
jmp case.0x18000e0aa.2
mov eax, dword [rsi + 0xa4]
cmp eax, dword [rsi + 0xa0]
je 0x18000e1a1
mov r8d, 0x10
mov cl, 0x27
mov rdx, rbx
call sym.std::io::error::Error::new::ha58a84d82014382b
mov rdx, rax
jmp 0x18000e09e
lea r8, [rdi + 1]
movzx r9d, byte [rdi]
xor r9b, cl
movzx r9d, r9b
shr ecx, 8
xor ecx, dword [r15 + r9*4]
add rdi, rdx
cmp rdx, 1
je 0x18000e17a
nop
movzx edx, byte [r8]
xor dl, cl
movzx edx, dl
shr ecx, 8
xor ecx, dword [r15 + rdx*4]
movzx edx, byte [r8 + 1]
xor dl, cl
movzx edx, dl
shr ecx, 8
xor ecx, dword [r15 + rdx*4]
add r8, 2
cmp r8, rdi
jne 0x18000e150
not ecx
mov dword [rsi + 0xa0], ecx
mov r14, rax
test r14, r14
jne 0x18000e08b
xor edx, edx
mov rax, rdx
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
mov dword [rsi + 0xa0], eax
lea rdx, [0x1800e5940]
jmp case.0x18000e0aa.2
lea r8, [0x1800e4f80]
mov rcx, rdx
mov rdx, r14
call sym.core::slice::index::slice_end_index_len_fail::h95608344cc4e85cc
int3
sub al, 0x76
or eax, 0x6625eb00
nop dword cs:[rax + rax]
cmp byte [rdx + 0xf], 0x23
jne 0x18000e32d
mov rcx, rdx
call sym._ZN4core3ptr42drop_in_place_LT_std..io..error..Error_GT_17hf7fd8547e3da90a2E.llvm.11248888635009664630
test r14, r14
je 0x18000e32b
mov rcx, rsi
mov rdx, rdi
mov r8, r14
call sym.__bzip2::read::BzDecoder_R__as_std::io::Read_::read::h1d5270f72e2018f4
test rax, rax
je 0x18000e260
mov eax, edx
and eax, 3
movsxd rax, dword [r12 + rax*4]
add rax, r12
jmp rax
test rdx, rdx
je 0x18000e2a5
mov rax, r14
sub rax, rdx
jb 0x18000e34a
mov ecx, dword [rsi + 0x50]
not ecx
test dl, 1
jne 0x18000e2c9
mov r8, rdi
add rdi, rdx
xlatb
xlatb
cmp rdx, 1
jne 0x18000e2f0
jmp 0x18000e31a
mov eax, dword [rsi + 0x54]
cmp eax, dword [rsi + 0x50]
je 0x18000e33e
mov r8d, 0x10
mov cl, 0x27
mov rdx, rbx
call sym.std::io::error::Error::new::ha58a84d82014382b
mov rdx, rax
jmp 0x18000e23e
lea r8, [rdi + 1]
movzx r9d, byte [rdi]
xor r9b, cl
movzx r9d, r9b
shr ecx, 8
xor ecx, dword [r15 + r9*4]
add rdi, rdx
cmp rdx, 1
je 0x18000e31a
nop dword [rax + rax]
movzx edx, byte [r8]
xor dl, cl
movzx edx, dl
shr ecx, 8
xor ecx, dword [r15 + rdx*4]
movzx edx, byte [r8 + 1]
xor dl, cl
movzx edx, dl
shr ecx, 8
xor ecx, dword [r15 + rdx*4]
add r8, 2
cmp r8, rdi
jne 0x18000e2f0
not ecx
mov dword [rsi + 0x50], ecx
push rax
push rax
mov r14, rax
test r14, r14
jne 0x18000e22b
xor edx, edx
mov rax, rdx
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
mov dword [rsi + 0x50], eax
lea rdx, [0x1800e5940]
jmp 0x18000e32d
lea r8, [0x1800e4f80]
mov rcx, rdx
mov rdx, r14
call sym.core::slice::index::slice_end_index_len_fail::h95608344cc4e85cc
int3
mov al, byte [rax]
add byte [rax], al
mov rsi, r8
mov rdi, rdx
mov rbx, rcx
lea r14, [0x1800e5940]
lea r15, [0x1800e5840]
jmp 0x18000e3a3
mov rcx, rbx
mov ecx, ebx
mov rdx, rdi
mov r8, rsi
call sym.__zip::crc32::Crc32Reader_R__as_std::io::Read_::read::h94efd373dbb16d46
test rax, rax
je case.0x18000e24a.11
mov eax, edx
and eax, 3
movsxd rax, dword [r15 + rax*4]
add rax, r15
jmp rax
test rdx, rdx
je 0x18000e40f
mov rax, rsi
sub rax, rdx
jb 0x18000e414
add rdi, rdx
mov rsi, rax
test rsi, rsi
jne 0x18000e3a3
jmp 0x18000e3fe
xor edx, edx
mov rax, rdx
add rsp, 0x20
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret
mov rdx, r14
jmp 0x18000e400
lea r8, str._rustc_051478957371ee0084a7c0913941d2a8c4757bb9library_std_srciomod.rs
mov rcx, rdx
mov rdx, rsi
call sym.core::slice::index::slice_start_index_len_fail::ha5465e90ddfd4132
int3
iretd
push rsp
cmp eax, dword [rdi + 0x50]
je 0x18000e590
mov r8d, 0x10
mov cl, 0x27
mov rdx, r14
call sym.std::io::error::Error::new::ha58a84d82014382b
dec dword [rax - 0x77]
ret 0xd189
and ecx, 3
mov eax, 1
movsxd rcx, dword [r15 + rcx*4]
add rcx, r15
jmp rcx
dec dword [rax - 0x77]
ret 0xd189
mov dword [rdi + 0x50], eax
mov rax, qword [rsi]
mov rdi, qword [rsi + 0x10]
jle 0x18000e5aa
jle 0x18000e5aa
sub rax, rdi
mov rbx, rdx
cmp rax, rdx
jb 0x18000e5d4
mov rcx, qword [rsi + 8]
add rcx, rdi
add ecx, edi
lea rdx, [rsp + 0x20]
mov r8, rbx
call fcn.1800a6be8
mov rdx, rbx
mov rax, rbx
add rax, rdi
mov qword [rsi + 0x10], rax
xor eax, eax
add rsp, 0x40
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret
mov rcx, rsi
mov rdx, rdi
mov r8, rbx
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::hb4d9ddd161bf89ae
mov rdi, qword [rsi + 0x10]
jmp 0x18000e5a5
add ecx, ebx
jmp rcx
mov rcx, qword [rsi + 8]
add rcx, rdi
lea rdx, [rsp + 0x20]
mov r8, rbx
call fcn.1800a6be8
test dword [rcx], ecx
add byte [rax - 0x77], cl
fimul dword [rax + 1]
fisttp word [rax - 0x77]
mov dword [rsi + 0x10], edi
add byte [rax - 0x77], cl
fimul dword [rax + 1]
fisttp word [rax - 0x77]
mov dword [rsi + 0x10], edi
mov dword [rsi + 0x10], edi
mov rax, r14
add rsp, 0x48
pop rbx
pop rdi
pop rsi
pop r14
ret
invalid
mov rdx, rdi
mov r8, rbx
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::hb4d9ddd161bf89ae
mov rdi, qword [rsi + 0x10]
jmp 0x18000e661
jmp rcx
mov eax, 1
movsxd rcx, dword [r15 + rcx*4]
add rcx, r15
jmp rcx
test rdx, rdx
jne 0x18000e7fa
mov eax, dword [rdi + 0xa4]
cmp eax, dword [rdi + 0xa0]
je 0x18000e880
mov r8d, 0x10
mov cl, 0x27
mov rdx, r14
call sym.std::io::error::Error::new::ha58a84d82014382b
mov rdx, rax
mov ecx, edx
and ecx, 3
loope 0x18000e7c2
mov eax, 1
movsxd rcx, dword [r15 + rcx*4]
add rcx, r15
jmp rcx
cmp rdx, 0x21
jae 0x18000e8db
mov eax, dword [rdi + 0xa0]
not eax
test dl, 1
je 0x18000e82e
lea rbx, [rsp + 0x21]
movzx ecx, byte [rsp + 0x20]
xor cl, al
movzx ecx, cl
lea r8, [0x1800e4b08]
shr eax, 8
xor eax, dword [r8 + rcx*4]
cmp rdx, 1
je 0x18000e87e
lea rcx, [rsp + rdx]
add rcx, 0x20
lea r8, [0x1800e4b08]
nop word cs:[rax + rax]
movzx r9d, byte [rbx]
xor r9b, al
movzx r9d, r9b
shr eax, 8
xor eax, dword [r8 + r9*4]
movzx r9d, byte [rbx + 1]
xor r9b, al
movzx r9d, r9b
movzx ecx, cl
movzx ecx, cl
shr eax, 8
xor eax, dword [r8 + r9*4]
add rbx, 2
cmp rbx, rcx
jne 0x18000e850
not eax
mov dword [rdi + 0xa0], eax
mov rax, qword [rsi]
mov rdi, qword [rsi + 0x10]
sub rax, rdi
mov rbx, rdx
cmp rax, rdx
jb 0x18000e8c7
mov rcx, qword [rsi + 8]
add rcx, rdi
lea rdx, [rsp + 0x20]
mov r8, rbx
call fcn.1800a6be8
add byte [rax - 0x77], cl
fimul dword [rax - 0x77]
fmul dword [rax + 1]
clc
mov qword [rsi + 0x10], rax
xor eax, eax
add rsp, 0x40
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret
mov rcx, rsi
mov rdx, rdi
mov r8, rbx
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::hb4d9ddd161bf89ae
mov rdi, qword [rsi + 0x10]
jmp 0x18000e898
lea r8, [0x1800e4f80]
mov rcx, rdx
mov edx, 0x20
call sym.core::slice::index::slice_end_index_len_fail::h95608344cc4e85cc
int3
lea rcx, [rsp + 0x60]
in eax, 0x4c
sub ebp, esi
int 0x48
cmovae ebp, ecx
mov eax, dword [rsp + 0x48]
sub esp, esi
in al, dx
and al, 0x48
invalid
and al, 0x68
add edx, esi
movzx r9d, byte [rcx]
xor r9b, al
movzx r9d, r9b
shr eax, 8
xor eax, dword [r8 + r9*4]
movzx r9d, byte [rcx + 1]
xor r9b, al
movzx r9d, r9b
shr eax, 8
xor eax, dword [r8 + r9*4]
add rcx, 2
cmp rcx, rdi
jne 0x18000f380
add rsi, 0xa0
not eax
invalid
mov dword [rsi], eax
xor ebx, ebx
mov rax, rbx
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r14
ret
or eax, 0xd1894800
mov rdx, r14
mov ebp, 0x48f98948
mov edx, esi
mov ebp, dword [rdx + 0x10]
lea esi, [0x1800e5940]
jp 0x18000f509
and ecx, dword [rdi]
test dword [rdi + 0x48000000], edx
mov ecx, edx
add eax, edi
invalid
or eax, 0x58d4c00
sahf
or eax, 0x29ba00
add byte [rax], al