Function at 0x10041cfd0
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 0x10041cfb3
not ecx
lea rdi, [0x10042ac00]
mov rax, r8
cmp r8, 0x2e
ja 0x10041cd10
cmp qword [rsp + 0x80], 7
jbe 0x10041cfba
mov rax, qword [rsp + 0x80]
lea rdi, [0x10042ac00]
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 0x10041cc08
and qword [rsp + 0x80], 7
cmp qword [rsp + 0x80], 0
je 0x10041ccf5
mov rdx, qword [rsp + 0x80]
lea rdi, [0x10042ac00]
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 0x10041ccd8
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 0x10041cf63
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 0x10041cd10
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, [0x100428c00]
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 0x10041cde0
sub qword [rsp + 8], 1
jne 0x10041cd80
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 0x10041ce90
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 0x10041cec0
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 0x10041cee8
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 0x10041cf10
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 0x10041cf40
mov ecx, r11d
add rsi, 0x28
jmp 0x10041cbda
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 0x10041cd4b
xor r11d, r11d
xor r9d, r9d
xor eax, eax
jmp 0x10041ce7f
xor eax, eax
jmp 0x10041ccfd
mov r8, rsi
jmp 0x10041ccb5
mov r8d, r8d
jmp 0x10041cba0