Function at 0x10041f830
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 0x10041f813
not ecx
lea rdi, [0x10042d0c0]
mov rax, r8
cmp r8, 0x2e
ja 0x10041f570
cmp qword [rsp + 0x80], 7
jbe 0x10041f81a
mov rax, qword [rsp + 0x80]
lea rdi, [0x10042d0c0]
sub rax, 8
shr rax, 3
lea r8, [rsi + rax*8 + 8]
nop dword [rax]
mov rax, rcx
xor cl, byte [rsi]
add rsi, 8
movzx ecx, cl
shr rax, 8
mov edx, dword [rdi + rcx*4]
xor rax, rdx
mov rdx, rax
xor al, byte [rsi - 7]
movzx eax, al
shr rdx, 8
mov eax, dword [rdi + rax*4]
xor rdx, rax
mov rax, rdx
xor dl, byte [rsi - 6]
movzx edx, dl
shr rax, 8
mov edx, dword [rdi + rdx*4]
xor rax, rdx
mov rdx, rax
xor al, byte [rsi - 5]
movzx eax, al
shr rdx, 8
mov eax, dword [rdi + rax*4]
xor rdx, rax
mov rax, rdx
xor dl, byte [rsi - 4]
movzx edx, dl
shr rax, 8
mov edx, dword [rdi + rdx*4]
xor rax, rdx
mov rdx, rax
xor al, byte [rsi - 3]
movzx eax, al
shr rdx, 8
mov eax, dword [rdi + rax*4]
xor rdx, rax
mov rax, rdx
xor dl, byte [rsi - 2]
movzx edx, dl
shr rax, 8
mov edx, dword [rdi + rdx*4]
xor rax, rdx
mov rcx, rax
xor al, byte [rsi - 1]
movzx eax, al
shr rcx, 8
mov eax, dword [rdi + rax*4]
xor rcx, rax
cmp rsi, r8
jne 0x10041f468
and qword [rsp + 0x80], 7
cmp qword [rsp + 0x80], 0
je 0x10041f555
mov rdx, qword [rsp + 0x80]
lea rdi, [0x10042d0c0]
add rdx, r8
nop word [rax + rax]
add r8, 1
mov rax, rcx
xor cl, byte [r8 - 1]
shr rax, 8
movzx ecx, cl
mov ecx, dword [rdi + rcx*4]
xor rcx, rax
cmp r8, rdx
jne 0x10041f538
mov eax, 0xffffffff
xor rax, rcx
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test sil, 7
je 0x10041f7c3
add rsi, 1
mov rdx, rcx
xor cl, byte [rsi - 1]
shr rdx, 8
movzx ecx, cl
mov ecx, dword [rdi + rcx*4]
xor rcx, rdx
sub rax, 1
jne 0x10041f570
mov qword [rsp + 0x80], rax
mov r13d, ecx
mov qword [rsp + 0x10], 0xffffffffffffffff
mov rax, qword [rsp + 0x10]
mov qword [rsp], rsi
xor r11d, r11d
xor r9d, r9d
mov qword [rsp + 0x78], rsi
xor r15d, r15d
xor r12d, r12d
lea rdx, [0x10042b0c0]
mov qword [rsp + 8], rax
mov qword [rsp + 0x18], rdi
nop word cs:[rax + rax]
mov rax, qword [rsp]
mov r8d, 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, r13
mov r14, qword [rax - 8]
xor rsi, r12
mov qword [rsp], rax
movzx eax, dil
xor rbx, r15
xor r10, r9
mov rbp, rdi
mov r13d, dword [rdx + rax*4]
movzx eax, sil
xor r14, r11
mov r12d, dword [rdx + rax*4]
movzx eax, bl
mov r15d, dword [rdx + rax*4]
movzx eax, r10b
mov r9d, dword [rdx + rax*4]
movzx eax, r14b
mov r11d, dword [rdx + rax*4]
nop
lea ecx, [r8*8]
mov rdi, rbp
movsxd rax, r8d
add r8d, 1
shr rdi, cl
shl rax, 8
movzx edi, dil
add rdi, rax
xor r13d, dword [rdx + rdi*4]
mov rdi, rsi
shr rdi, cl
movzx edi, dil
add rdi, rax
xor r12d, dword [rdx + rdi*4]
mov rdi, rbx
shr rdi, cl
movzx edi, dil
add rdi, rax
xor r15d, dword [rdx + rdi*4]
mov rdi, r10
shr rdi, cl
movzx edi, dil
add rdi, rax
xor r9d, dword [rdx + rdi*4]
mov rdi, r14
shr rdi, cl
movzx ecx, dil
add rax, rcx
xor r11d, dword [rdx + rax*4]
cmp r8d, 8
jne 0x10041f640
sub qword [rsp + 8], 1
jne 0x10041f5e0
mov rax, qword [rsp + 0x10]
mov rsi, qword [rsp + 0x78]
mov ecx, r13d
mov rdi, qword [rsp + 0x18]
lea rax, [rax + rax*4]
lea rsi, [rsi + rax*8]
mov eax, r12d
mov qword [rsp + 0x10], rax
mov eax, r15d
xor rcx, qword [rsi]
mov edx, 8
nop word [rax + rax]
mov r8, rcx
movzx ecx, cl
mov ecx, dword [rdi + rcx*4]
shr r8, 8
xor rcx, r8
sub edx, 1
jne 0x10041f6f0
mov ecx, ecx
mov rdx, qword [rsp + 0x10]
xor rdx, qword [rsi + 8]
xor rdx, rcx
mov ecx, 8
nop dword [rax + rax]
mov r8, rdx
movzx edx, dl
mov edx, dword [rdi + rdx*4]
shr r8, 8
xor rdx, r8
sub ecx, 1
jne 0x10041f720
mov edx, edx
xor rax, qword [rsi + 0x10]
xor rax, rdx
mov edx, 8
nop dword [rax + rax]
mov rcx, rax
movzx eax, al
mov eax, dword [rdi + rax*4]
shr rcx, 8
xor rax, rcx
sub edx, 1
jne 0x10041f748
mov eax, eax
xor r9, qword [rsi + 0x18]
xor r9, rax
mov eax, 8
nop dword [rax + rax]
mov rdx, r9
movzx r9d, r9b
mov r9d, dword [rdi + r9*4]
shr rdx, 8
xor r9, rdx
sub eax, 1
jne 0x10041f770
xor r11, qword [rsi + 0x20]
mov r9d, r9d
mov eax, 8
xor r11, r9
nop word cs:[rax + rax]
mov rdx, r11
movzx r11d, r11b
mov r11d, dword [rdi + r11*4]
shr rdx, 8
xor r11, rdx
sub eax, 1
jne 0x10041f7a0
mov ecx, r11d
add rsi, 0x28
jmp 0x10041f43a
movabs rdx, 0xcccccccccccccccd
mov qword [rsp + 0x80], rax
mov r13d, ecx
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 0x10041f5ab
xor r11d, r11d
xor r9d, r9d
xor eax, eax
jmp 0x10041f6df
xor eax, eax
jmp 0x10041f55d
mov r8, rsi
jmp 0x10041f515
mov r8d, r8d
jmp 0x10041f400