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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rsi, rcx
cmp byte [rcx + 0x48], 0
je 0x18000aad0
mov eax, dword [rsi + 0x54]
cmp eax, dword [rsi + 0x50]
jne 0x18000ac55
add rsi, 0x50
xor ecx, ecx
jmp 0x18000ae64
mov rbx, r8
mov rdi, rdx
lea r14, [rsi + 0x40]
test r8, r8
je 0x18000ac6e
mov r9, qword [rsi + 0x10]
mov r8, qword [rsi + 0x18]
nop dword [rax + rax]
mov rdx, qword [rsi]
cmp r9, r8
jb 0x18000abd7
mov rax, qword [rsi + 8]
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], 0
mov rbp, qword [rsi + 0x20]
mov qword [rsp + 0x40], rbp
mov r12, qword [rsi + 0x38]
test r12, r12
je 0x18000ab5c
cmp r12, rax
jbe 0x18000ab61
mov r13, rdx
mov rcx, qword [rsi + 0x28]
mov rax, qword [rsi + 0x30]
lea rdx, [rsp + 0x28]
xor r8d, r8d
call qword [rax + 0x48]
test rax, rax
jne 0x18000adb4
mov r8, qword [rsp + 0x38]
sub r12, r8
mov qword [rsi + 0x38], r12
mov rbp, qword [rsp + 0x40]
jmp 0x18000abc1
xor r8d, r8d
jmp 0x18000abc4
cmp r12, rbp
mov rax, rbp
cmovb rax, r12
mov r13, rdx
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x60], rax
mov rcx, qword [rsi + 0x28]
mov rax, qword [rsi + 0x30]
lea rdx, [rsp + 0x48]
xor r8d, r8d
call qword [rax + 0x48]
test rax, rax
jne 0x18000adb4
mov r8, qword [rsp + 0x58]
mov rax, qword [rsp + 0x60]
cmp rbp, r8
cmovbe rbp, r8
cmp rbp, rax
cmovbe rbp, rax
sub r12, r8
mov qword [rsi + 0x38], r12
mov rdx, r13
mov qword [rsi + 0x10], 0
mov qword [rsi + 0x18], r8
mov qword [rsi + 0x20], rbp
xor r9d, r9d
mov r15, r8
sub r15, r9
test rdx, rdx
je 0x18000adb7
add rdx, r9
mov rax, qword [rsi + 0x40]
mov r13, qword [rax + 0xc]
mov r12, qword [rax + 0x24]
mov qword [rsp + 0x20], rbx
mov rcx, r14
mov r8, r15
mov r9, rdi
call sym.bzip2::mem::Decompress::decompress::hcc5a5601fe4dfb0c
mov r8, qword [rsi + 0x18]
mov rcx, qword [rsi + 0x40]
mov r9, qword [rcx + 0xc]
sub r9, r13
mov rcx, qword [rcx + 0x24]
add r9, qword [rsi + 0x10]
cmp r9, r8
cmovae r9, r8
mov qword [rsi + 0x10], r9
test al, 1
jne 0x18000adad
sub rcx, r12
cmp dl, 4
je 0x18000adc9
test r15, r15
je 0x18000adcd
test rcx, rcx
je 0x18000aaf0
jmp 0x18000adcd
lea rdx, [0x180122f13]
mov r8d, 0x10
mov cl, 0x27
call sym.std::io::error::Error::new::h720855faca3c6763
jmp 0x18000adb4
mov r12, qword [rsi]
mov rax, qword [rsi + 0x10]
mov r15, qword [rsi + 0x18]
cmp rax, r15
jb 0x18000ad56
mov rax, qword [rsi + 8]
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], 0
mov rbp, qword [rsi + 0x20]
mov qword [rsp + 0x40], rbp
mov r13, qword [rsi + 0x38]
test r13, r13
je 0x18000ace2
cmp r13, rax
jbe 0x18000ace7
mov rcx, qword [rsi + 0x28]
mov rax, qword [rsi + 0x30]
lea rdx, [rsp + 0x28]
xor r8d, r8d
call qword [rax + 0x48]
mov r15, rax
test rax, rax
jne 0x18000adb7
mov r15, qword [rsp + 0x38]
sub r13, r15
mov qword [rsi + 0x38], r13
mov rbp, qword [rsp + 0x40]
jmp 0x18000ad44
xor r15d, r15d
jmp 0x18000ad44
cmp r13, rbp
mov rax, rbp
cmovb rax, r13
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x50], r13
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x60], rax
mov rcx, qword [rsi + 0x28]
mov rax, qword [rsi + 0x30]
lea rdx, [rsp + 0x48]
xor r8d, r8d
call qword [rax + 0x48]
test rax, rax
jne 0x18000adb4
mov r15, qword [rsp + 0x58]
mov rax, qword [rsp + 0x60]
cmp rbp, r15
cmovbe rbp, r15
cmp rbp, rax
cmovbe rbp, rax
sub r13, r15
mov qword [rsi + 0x38], r13
mov qword [rsi + 0x10], 0
mov qword [rsi + 0x18], r15
mov qword [rsi + 0x20], rbp
xor eax, eax
sub r15, rax
test r12, r12
je 0x18000adb7
add r12, rax
mov rax, qword [rsi + 0x40]
mov rbp, qword [rax + 0xc]
mov r13, qword [rax + 0x24]
mov qword [rsp + 0x20], 0
mov rcx, r14
mov rdx, r12
mov r8, r15
mov r9, rdi
call sym.bzip2::mem::Decompress::decompress::hcc5a5601fe4dfb0c
mov r8, qword [rsi + 0x18]
mov rcx, qword [rsi + 0x40]
mov r9, qword [rcx + 0xc]
sub r9, rbp
mov rcx, qword [rcx + 0x24]
add r9, qword [rsi + 0x10]
cmp r9, r8
cmovae r9, r8
mov qword [rsi + 0x10], r9
test al, 1
je 0x18000adc1
mov cl, 0x14
call sym.std::io::error::Error::new::hc22efca1356bd7f2
mov r15, rax
mov eax, 1
jmp 0x18000ae6b
sub rcx, r13
cmp dl, 4
jne 0x18000adcd
mov byte [rsi + 0x48], 1
test rcx, rcx
je 0x18000aab9
cmp rcx, rbx
ja 0x18000ae7f
mov eax, dword [rsi + 0x50]
not eax
test cl, 1
jne 0x18000adf4
mov rdx, rdi
cmp rcx, 1
jne 0x18000ae17
jmp 0x18000ae5e
lea rdx, [rdi + 1]
movzx r8d, byte [rdi]
xor r8b, al
movzx r8d, r8b
lea r9, [0x180122ab4]
shr eax, 8
xor eax, dword [r9 + r8*4]
cmp rcx, 1
je 0x18000ae5e
add rdi, rcx
lea r8, [0x180122ab4]
nop word cs:[rax + rax]
movzx r9d, byte [rdx]
xor r9b, al
movzx r9d, r9b
shr eax, 8
xor eax, dword [r8 + r9*4]
movzx r9d, byte [rdx + 1]
xor r9b, al
movzx r9d, r9b
shr eax, 8
xor eax, dword [r8 + r9*4]
add rdx, 2
cmp rdx, rdi
jne 0x18000ae30
add rsi, 0x50
not eax
mov dword [rsi], eax
xor eax, eax
mov r15, rcx
mov rdx, r15
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea r8, [0x180122f28]
mov rdx, rbx
call sym.core::slice::index::slice_end_index_len_fail::hdaa9bbd2fcad4cbb
int3