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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
cmp byte [edx + 0x2c], 0
je 0x1000b64b
mov eax, dword [edx + 0x34]
cmp eax, dword [edx + 0x30]
jne 0x1000b742
add edx, 0x30
xor ebx, ebx
jmp 0x1000b8ad
mov edi, dword [ebp + 0x10]
cmp dword [ebp + 0x14], 0
lea eax, [edx + 0x28]
mov dword [ebp - 0x2c], eax
je 0x1000b759
mov edi, dword [edx + 8]
mov ecx, dword [edx + 0xc]
lea eax, [edx + 0x18]
mov dword [ebp - 0x30], eax
nop word [eax + eax]
mov ebx, dword [edx]
cmp edi, ecx
mov esi, edi
jb 0x1000b6c8
mov eax, dword [edx + 4]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], eax
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], eax
push 0
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x30]
lea eax, [ebp - 0x28]
push eax
mov edi, edx
call sym.__LT_std..io..Take_LT_T_GT__u20_as_u20_std..io..Read_GT_::read_buf::h9a1aba1d4b209483
add esp, 0x10
cmp byte [ebp - 0x28], 4
jne 0x1000b856
movq xmm0, qword [ebp - 0x18]
xor esi, esi
mov edx, edi
mov dword [edi + 8], 0
movd ecx, xmm0
movq qword [edi + 0xc], xmm0
mov eax, ecx
mov dword [ebp - 0x38], ecx
mov ecx, dword [edx + 0x28]
mov dword [ebp - 0x34], esi
add ebx, esi
sub eax, esi
mov esi, dword [ecx + 8]
mov ecx, dword [ecx + 0x18]
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x10], ecx
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push eax
push ebx
push dword [ebp - 0x2c]
mov esi, edx
call sym.bzip2::mem::Decompress::decompress::ha41c033600d9604d
add esp, 0x14
mov ebx, dword [esi + 0x28]
mov ecx, dword [esi + 0xc]
mov edi, dword [ebx + 8]
mov ebx, dword [ebx + 0x18]
sub edi, dword [ebp - 0x3c]
add edi, dword [esi + 8]
cmp edi, ecx
cmovae edi, ecx
test al, 1
mov dword [esi + 8], edi
jne 0x1000b7fa
cmp dl, 4
je 0x1000b829
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp + 0xc]
cmp dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x10]
je 0x1000b847
cmp ebx, eax
je 0x1000b670
jmp 0x1000b847
push 0x10
push 0x1012854f
push 0x27
push esi
call sym.std::io::error::Error::new::hcee6dc8917941000
add esp, 0x10
jmp 0x1000b8b5
mov ecx, dword [edx + 8]
mov eax, dword [edx + 0xc]
mov ebx, dword [edx]
cmp ecx, eax
jb 0x1000b7b9
mov ecx, dword [edx + 4]
mov dword [ebp - 0x20], ebx
mov edi, edx
lea eax, [edx + 0x18]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x18], 0
lea edx, [ebp - 0x28]
mov dword [ebp - 0x14], ecx
lea ecx, [ebp - 0x20]
push 0
push ecx
push eax
push edx
call sym.__LT_std..io..Take_LT_T_GT__u20_as_u20_std..io..Read_GT_::read_buf::h9a1aba1d4b209483
add esp, 0x10
cmp byte [ebp - 0x28], 4
jne 0x1000b84e
movq xmm0, qword [ebp - 0x18]
mov dword [edi + 8], 0
mov edx, edi
xor ecx, ecx
movq qword [edi + 0xc], xmm0
mov edi, dword [ebp + 0x10]
movd eax, xmm0
add ebx, ecx
sub eax, ecx
mov ecx, dword [edx + 0x28]
mov esi, ebx
mov ebx, dword [ecx + 8]
mov ecx, dword [ecx + 0x18]
mov dword [ebp - 0x10], ecx
push 0
push edi
push eax
push esi
push dword [ebp - 0x2c]
mov esi, edx
call sym.bzip2::mem::Decompress::decompress::ha41c033600d9604d
add esp, 0x14
mov ecx, dword [esi + 0x28]
mov edi, dword [ecx + 8]
sub edi, ebx
mov ebx, dword [esi + 0xc]
add edi, dword [esi + 8]
cmp edi, ebx
cmovae edi, ebx
mov ebx, dword [ecx + 0x18]
test al, 1
mov dword [esi + 8], edi
je 0x1000b831
movzx eax, dl
lea ecx, [ebp - 0x20]
push eax
push 0x14
push ecx
call sym.std::io::error::Error::new::hce761d0f071a25a0
add esp, 0xc
movzx eax, byte [ebp - 0x20]
mov ah, byte [ebp - 0x1f]
movzx ecx, word [ebp - 0x1e]
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
cmp al, 4
je 0x1000b86a
jmp 0x1000b8bf
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
jmp 0x1000b83c
cmp dl, 4
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
jne 0x1000b847
mov esi, dword [ebp + 8]
sub ebx, eax
mov byte [edx + 0x2c], 1
jmp 0x1000b86a
mov esi, dword [ebp + 8]
sub ebx, eax
jmp 0x1000b86a
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x24]
jmp 0x1000b85f
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x24]
mov esi, dword [ebp + 8]
mov ecx, eax
mov edx, edi
shr ecx, 0x10
cmp al, 4
jne 0x1000b8bf
mov eax, dword [ebp + 0x14]
test ebx, ebx
je 0x1000b635
cmp ebx, eax
ja 0x1000b8d6
add edx, 0x30
mov edi, dword [ebp + 0x10]
xor ecx, ecx
mov eax, dword [edx]
mov dword [ebp - 0x10], edx
not eax
nop dword [eax + eax]
movzx edx, byte [edi + ecx]
inc ecx
xor dl, al
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0x101280f0]
cmp ebx, ecx
jne 0x1000b890
mov edx, dword [ebp - 0x10]
not eax
mov dword [esi + 4], ebx
mov dword [edx], eax
mov byte [esi], 4
mov eax, esi
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
movzx edx, ah
shl ecx, 0x10
movzx eax, al
mov dword [esi + 4], ebx
shl edx, 8
or edx, ecx
or eax, edx
mov dword [esi], eax
jmp 0x1000b8b5
push 0x10128560
push eax
push ebx
call sym.core::slice::index::slice_end_index_len_fail::hb7bcdcb5c84f7e98
nop word cs:[eax + eax]
nop dword [eax]