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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov qword [rsp + 0x80], r8
mov rsi, rdx
test rdx, rdx
je 0x409480
cmp qword [rsp + 0x80], 0x2e
not ecx
mov r8d, ecx
jbe 0x409326
mov rax, qword [rsp + 0x80]
lea rdi, [0x0041c960]
nop word [rax + rax]
test sil, 7
je 0x409434
add rsi, 1
mov edx, r8d
xor r8b, byte [rsi - 1]
shr edx, 8
movzx r8d, r8b
xor edx, dword [rdi + r8*4]
mov r8d, edx
sub rax, 1
jne 0x4090f0
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x10], 0xffffffffffffffff
mov rax, qword [rsp + 0x10]
mov qword [rsp], rsi
xor r11d, r11d
xor r15d, r15d
mov qword [rsp + 0x78], rsi
xor r12d, r12d
xor r13d, r13d
lea r9, [0x0041a960]
mov qword [rsp + 8], rax
mov qword [rsp + 0x18], rdi
nop dword [rax]
mov rax, qword [rsp]
mov edx, 1
mov rdi, qword [rax]
mov rsi, qword [rax + 8]
add rax, 0x28
mov rbx, qword [rax - 0x18]
mov r10, qword [rax - 0x10]
xor rdi, r8
mov r14, qword [rax - 8]
xor rsi, r13
mov qword [rsp], rax
movzx eax, dil
xor rbx, r12
xor r10, r15
mov rbp, rdi
mov r8d, dword [r9 + rax*4]
movzx eax, sil
xor r14, r11
mov r13d, dword [r9 + rax*4]
movzx eax, bl
mov r12d, dword [r9 + rax*4]
movzx eax, r10b
mov r15d, dword [r9 + rax*4]
movzx eax, r14b
mov r11d, dword [r9 + rax*4]
nop dword [rax]
lea ecx, [rdx*8]
mov rdi, rbp
movsxd rax, edx
add edx, 1
shr rdi, cl
shl rax, 8
movzx edi, dil
add rdi, rax
xor r8d, dword [r9 + rdi*4]
mov rdi, rsi
shr rdi, cl
movzx edi, dil
add rdi, rax
xor r13d, dword [r9 + rdi*4]
mov rdi, rbx
shr rdi, cl
movzx edi, dil
add rdi, rax
xor r12d, dword [r9 + rdi*4]
mov rdi, r10
shr rdi, cl
movzx edi, dil
add rdi, rax
xor r15d, dword [r9 + rdi*4]
mov rdi, r14
shr rdi, cl
movzx ecx, dil
add rax, rcx
xor r11d, dword [r9 + rax*4]
cmp edx, 8
jne 0x4091b8
sub qword [rsp + 8], 1
jne 0x409158
mov rax, qword [rsp + 0x10]
mov rsi, qword [rsp + 0x78]
mov ecx, r12d
mov edx, r15d
mov rdi, qword [rsp + 0x18]
lea rax, [rax + rax*4]
lea rsi, [rsi + rax*8]
mov eax, r13d
mov qword [rsp + 0x10], rax
xor r8, qword [rsi]
mov eax, 8
nop dword [rax]
mov r9, r8
movzx r8d, r8b
mov r8d, dword [rdi + r8*4]
shr r9, 8
xor r8, r9
sub eax, 1
jne 0x409260
mov r8d, r8d
mov rax, qword [rsp + 0x10]
xor rax, qword [rsi + 8]
xor rax, r8
mov r8d, 8
nop dword [rax]
mov r9, rax
movzx eax, al
mov eax, dword [rdi + rax*4]
shr r9, 8
xor rax, r9
sub r8d, 1
jne 0x409290
mov eax, eax
xor rcx, qword [rsi + 0x10]
xor rcx, rax
mov eax, 8
nop dword [rax]
mov r8, rcx
movzx ecx, cl
mov ecx, dword [rdi + rcx*4]
shr r8, 8
xor rcx, r8
sub eax, 1
jne 0x4092b8
mov rax, qword [rsi + 0x18]
mov ecx, ecx
xor rax, rdx
mov edx, 8
xor rax, rcx
nop
mov rcx, rax
movzx eax, al
mov eax, dword [rdi + rax*4]
shr rcx, 8
xor rax, rcx
sub edx, 1
jne 0x4092e0
mov eax, eax
xor r11, qword [rsi + 0x20]
xor r11, rax
mov eax, 8
nop dword [rax + rax]
mov rdx, r11
movzx r11d, r11b
mov r11d, dword [rdi + r11*4]
shr rdx, 8
xor r11, rdx
sub eax, 1
jne 0x409308
mov r8d, r11d
add rsi, 0x28
cmp qword [rsp + 0x80], 7
jbe 0x409484
mov rax, qword [rsp + 0x80]
lea rdi, [0x0041c960]
sub rax, 8
shr rax, 3
lea rcx, [rsi + rax*8 + 8]
nop dword [rax]
mov eax, r8d
xor r8b, byte [rsi]
add rsi, 8
movzx r8d, r8b
shr eax, 8
xor eax, dword [rdi + r8*4]
mov edx, eax
xor al, byte [rsi - 7]
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor dl, byte [rsi - 6]
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
xor al, byte [rsi - 5]
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor dl, byte [rsi - 4]
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
xor al, byte [rsi - 3]
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor dl, byte [rsi - 2]
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov r8d, eax
xor al, byte [rsi - 1]
movzx eax, al
shr r8d, 8
xor r8d, dword [rdi + rax*4]
cmp rsi, rcx
jne 0x409358
and qword [rsp + 0x80], 7
cmp qword [rsp + 0x80], 0
je 0x40941e
mov rdx, qword [rsp + 0x80]
lea rdi, [0x0041c960]
add rdx, rcx
nop dword [rax]
add rcx, 1
mov eax, r8d
xor r8b, byte [rcx - 1]
shr eax, 8
movzx r8d, r8b
xor eax, dword [rdi + r8*4]
mov r8d, eax
cmp rcx, rdx
jne 0x409400
mov eax, r8d
not eax
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movabs rdx, 0xcccccccccccccccd
mov qword [rsp + 0x80], rax
mov rax, rdx
mul qword [rsp + 0x80]
shr rdx, 5
lea rax, [rdx + rdx*4]
shl rax, 3
sub qword [rsp + 0x80], rax
sub rdx, 1
mov qword [rsp + 0x10], rdx
jne 0x40912a
xor r11d, r11d
xor edx, edx
xor ecx, ecx
jmp 0x409254
xor eax, eax
jmp 0x409423
mov rcx, rsi
jmp 0x4093e0
mov r8d, r8d
jmp 0x4090a0