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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
push r13
mov rax, qword [rsp + 0x38]
or r10d, 0xffffffff
mov rdi, r8
movzx ecx, word [rax + 2]
mov rbp, rdx
movsxd r12, r9d
cmp cx, 2
jne 0x180090310
movzx eax, word [rax + 0xe]
cmp ax, 0x10
jne 0x1800900ff
mov r11, qword [rsp + 0x40]
lea rsi, [rdx + r12*4]
cmp rdx, rsi
jae 0x1800904bf
sub rdi, rdx
lea rbx, [0x1800d1c90]
mov eax, dword [rdi + rbp]
movzx r9d, word [rbp]
movzx ecx, r10b
cdq
shr r10d, 8
add rbp, 4
sub eax, edx
add r11, 4
sar eax, 1
sub r9w, ax
mov word [r11 - 4], r9w
movzx eax, r9b
xor rcx, rax
movzx eax, byte [r11 - 3]
mov edx, dword [rbx + rcx*4]
xor edx, r10d
movzx ecx, dl
shr edx, 8
xor rcx, rax
movzx eax, word [rdi + rbp - 4]
mov r8d, dword [rbx + rcx*4]
add ax, r9w
xor r8d, edx
mov word [r11 - 2], ax
movzx eax, al
movzx ecx, r8b
shr r8d, 8
xor rcx, rax
movzx eax, byte [r11 - 1]
mov edx, dword [rbx + rcx*4]
xor edx, r8d
movzx ecx, dl
shr edx, 8
xor rcx, rax
mov r10d, dword [rbx + rcx*4]
xor r10d, edx
cmp rbp, rsi
jb 0x180090072
jmp 0x1800904bf
cmp ax, 8
jne 0x1800901f8
cmp dword [rsp + 0x58], 0xef6
mov r9, qword [rsp + 0x40]
jle 0x180090188
test r12, r12
jle 0x1800904bf
sub rbp, r8
lea rbx, [0x1800d1c90]
nop dword [rax + rax]
movzx ecx, byte [rdi + rbp]
mov eax, dword [rdi]
add rdi, 4
cdq
add r9, 2
sub eax, edx
sar eax, 1
sub cl, al
sub cl, 0x80
movzx edx, cl
movzx ecx, r10b
shr r10d, 8
mov byte [r9 - 2], dl
xor rcx, rdx
add dl, byte [rdi - 4]
mov r8d, dword [rbx + rcx*4]
movzx ecx, dl
xor r8d, r10d
mov byte [r9 - 1], cl
movzx edx, r8b
shr r8d, 8
xor rdx, rcx
mov r10d, dword [rbx + rdx*4]
xor r10d, r8d
sub r12, 1
jne 0x180090130
jmp 0x1800904bf
test r12, r12
jle 0x1800904bf
sub rbp, r8
lea rbx, [0x1800d1c90]
nop dword [rax + rax]
movzx ecx, byte [rdi + rbp]
mov eax, dword [rdi]
add rdi, 4
cdq
add r9, 2
sub eax, edx
sar eax, 1
sub cl, al
movzx edx, cl
movzx ecx, r10b
shr r10d, 8
mov byte [r9 - 2], dl
movzx eax, byte [rdi - 4]
xor rcx, rdx
mov r8d, dword [rbx + rcx*4]
add al, dl
xor r8d, r10d
movzx ecx, al
movzx edx, r8b
mov byte [r9 - 1], cl
shr r8d, 8
xor rdx, rcx
mov r10d, dword [rbx + rdx*4]
xor r10d, r8d
sub r12, 1
jne 0x1800901a0
jmp 0x1800904bf
cmp ax, 0x18
jne 0x1800904bf
mov r13, qword [rsp + 0x40]
test r9d, r9d
jle 0x1800904bf
sub rbp, r8
lea rbx, [0x1800d1c90]
nop word [rax + rax]
mov ecx, dword [rdi]
mov r11d, dword [rdi + rbp]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
sub r11d, eax
lea esi, [rcx + r11]
jns 0x180090242
add r11d, 0x800000
bts r11d, 0x17
mov byte [r13], r11b
movzx eax, r11b
movzx ecx, r10b
xor rcx, rax
shr r10d, 8
mov r8d, dword [rbx + rcx*4]
mov ecx, r11d
shr r11d, 0x10
shr ecx, 8
xor r8d, r10d
mov byte [r13 + 1], cl
movzx eax, cl
movzx edx, r8b
xor rdx, rax
shr r8d, 8
movzx eax, r11b
mov r9d, dword [rbx + rdx*4]
mov byte [r13 + 2], r11b
xor r9d, r8d
movzx ecx, r9b
shr r9d, 8
xor rcx, rax
mov edx, dword [rbx + rcx*4]
xor edx, r9d
test esi, esi
jns 0x1800902a6
add esi, 0x800000
bts esi, 0x17
mov byte [r13 + 3], sil
movzx ecx, dl
shr edx, 8
movzx eax, sil
add r13, 6
add rdi, 4
xor rcx, rax
mov r8d, dword [rbx + rcx*4]
mov ecx, esi
shr esi, 0x10
shr ecx, 8
xor r8d, edx
mov byte [r13 - 2], cl
movzx eax, cl
movzx edx, r8b
xor rdx, rax
shr r8d, 8
movzx eax, sil
mov r9d, dword [rbx + rdx*4]
mov byte [r13 - 1], sil
xor r9d, r8d
movzx ecx, r9b
shr r9d, 8
xor rcx, rax
mov r10d, dword [rbx + rcx*4]
xor r10d, r9d
sub r12, 1
jne 0x180090220
jmp 0x1800904bf
cmp cx, 1
jne 0x1800904bf
movzx ecx, word [rax + 0xe]
xor r11d, r11d
cmp cx, 8
jne 0x1800903cb
cmp dword [rsp + 0x58], 0xef6
jle 0x180090381
test r9d, r9d
jle 0x1800904bf
mov r8, qword [rsp + 0x40]
lea rbx, [0x1800d1c90]
nop word [rax + rax]
movzx eax, byte [rbp + r11*4]
movzx edx, r10b
inc r11
sub al, 0x80
movzx ecx, al
mov eax, r10d
xor rdx, rcx
mov byte [r11 + r8 - 1], cl
shr eax, 8
mov r10d, dword [rbx + rdx*4]
xor r10d, eax
cmp r11, r12
jl 0x180090350
jmp 0x1800904bf
test r9d, r9d
jle 0x1800904bf
mov r8, qword [rsp + 0x40]
lea rbx, [0x1800d1c90]
nop word [rax + rax]
movzx ecx, byte [rbp + r11*4]
movzx edx, r10b
mov eax, r10d
xor rdx, rcx
mov byte [r11 + r8], cl
shr eax, 8
mov r10d, dword [rbx + rdx*4]
inc r11
xor r10d, eax
cmp r11, r12
jl 0x1800903a0
jmp 0x1800904bf
cmp cx, 0x18
jne 0x180090464
mov rsi, qword [rsp + 0x40]
test r9d, r9d
jle 0x1800904bf
lea rbx, [0x1800d1c90]
nop word [rax + rax]
mov edi, dword [rbp + r11*4]
test edi, edi
jns 0x180090403
add edi, 0x800000
bts edi, 0x17
mov byte [rsi], dil
movzx ecx, r10b
shr r10d, 8
movzx eax, dil
inc r11
add rsi, 3
xor rcx, rax
mov r8d, dword [rbx + rcx*4]
mov ecx, edi
shr edi, 0x10
xor r8d, r10d
shr ecx, 8
mov byte [rsi - 2], cl
movzx eax, cl
movzx edx, r8b
xor rdx, rax
shr r8d, 8
movzx eax, dil
mov r9d, dword [rbx + rdx*4]
mov byte [rsi - 1], dil
xor r9d, r8d
movzx ecx, r9b
shr r9d, 8
xor rcx, rax
mov r10d, dword [rbx + rcx*4]
xor r10d, r9d
cmp r11, r12
jl 0x1800903f0
jmp 0x1800904bf
mov r8, qword [rsp + 0x40]
test r9d, r9d
jle 0x1800904bf
lea rbx, [0x1800d1c90]
nop word [rax + rax]
movzx eax, word [rbp + r11*4]
movzx ecx, r10b
shr r10d, 8
mov word [r8], ax
movzx eax, al
inc r11
xor rcx, rax
movzx eax, byte [r8 + 1]
add r8, 2
mov edx, dword [rbx + rcx*4]
xor edx, r10d
movzx ecx, dl
shr edx, 8
xor rcx, rax
mov r10d, dword [rbx + rcx*4]
xor r10d, edx
cmp r11, r12
jl 0x180090480
mov rax, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x18]
mov rbp, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x28]
mov rdi, qword [rsp + 0x30]
not r10d
mov dword [rax], r10d
xor eax, eax
pop r13
pop r12
ret