Function at 0x140009910
Capabilities:
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 rsi, rdx
mov r10, r8
test rdx, rdx
je 0x140009d50
not ecx
lea rdi, [0x140016540]
mov r8d, ecx
cmp r10, 0x2e
ja 0x140009a80
cmp r10, 7
jbe 0x1400099fc
lea r11, [r10 - 8]
mov rdx, rsi
lea rdi, [0x140016540]
mov rax, r11
shr rax, 3
lea r9, [rsi + rax*8 + 8]
nop dword [rax]
mov eax, r8d
xor r8b, byte [rdx]
add rdx, 8
movzx r8d, r8b
shr eax, 8
xor eax, dword [rdi + r8*4]
mov ecx, eax
xor al, byte [rdx - 7]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdi + rax*4]
mov eax, ecx
xor cl, byte [rdx - 6]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdi + rcx*4]
mov ecx, eax
xor al, byte [rdx - 5]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdi + rax*4]
mov eax, ecx
xor cl, byte [rdx - 4]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdi + rcx*4]
mov ecx, eax
xor al, byte [rdx - 3]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdi + rax*4]
mov eax, ecx
xor cl, byte [rdx - 2]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdi + rcx*4]
mov r8d, eax
xor al, byte [rdx - 1]
movzx eax, al
shr r8d, 8
xor r8d, dword [rdi + rax*4]
cmp rdx, r9
jne 0x140009970
and r11, 0xfffffffffffffff8
and r10d, 7
lea rsi, [rsi + r11 + 8]
test r10, r10
je 0x140009a3e
add r10, rsi
lea rdi, [0x140016540]
nop word cs:[rax + rax]
nop word cs:[rax + rax]
add rsi, 1
mov eax, r8d
xor r8b, byte [rsi - 1]
shr eax, 8
movzx r8d, r8b
xor eax, dword [rdi + r8*4]
mov r8d, eax
cmp rsi, r10
jne 0x140009a20
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
test sil, 7
je 0x140009d23
add rsi, 1
mov eax, r8d
xor r8b, byte [rsi - 1]
shr eax, 8
movzx r8d, r8b
xor eax, dword [rdi + r8*4]
mov r8d, eax
sub r10, 1
jne 0x140009a80
mov rbx, rsi
mov rax, 0xffffffffffffffff
mov rdx, 0xffffffffffffffff
mov qword [rsp + 8], rax
xor r11d, r11d
xor r15d, r15d
xor r12d, r12d
mov qword [rsp + 0x10], rbx
xor r13d, r13d
lea r9, [0x140014540]
mov qword [rsp + 0x80], r10
mov qword [rsp + 0x18], rdi
mov qword [rsp], rdx
mov rdx, rsi
nop dword [rax + rax]
mov rdi, qword [rdx + 8]
xor r8, qword [rdx]
add rdx, 0x28
mov r10d, 1
mov rsi, qword [rdx - 0x18]
mov rbx, qword [rdx - 0x10]
movzx ecx, r8b
mov rbp, r8
xor rdi, r13
mov r14, qword [rdx - 8]
mov r8d, dword [r9 + rcx*4]
mov qword [rsp + 0x78], rdx
xor rsi, r12
movzx ecx, dil
xor rbx, r15
mov r13d, dword [r9 + rcx*4]
movzx ecx, sil
xor r14, r11
mov r12d, dword [r9 + rcx*4]
movzx ecx, bl
mov r15d, dword [r9 + rcx*4]
movzx ecx, r14b
mov r11d, dword [r9 + rcx*4]
nop dword [rax + rax]
lea ecx, [r10*8]
mov rdx, rbp
movsxd rax, r10d
add r10d, 1
shr rdx, cl
shl rax, 8
movzx edx, dl
add rdx, rax
xor r8d, dword [r9 + rdx*4]
mov rdx, rdi
shr rdx, cl
movzx edx, dl
add rdx, rax
xor r13d, dword [r9 + rdx*4]
mov rdx, rsi
shr rdx, cl
movzx edx, dl
add rdx, rax
xor r12d, dword [r9 + rdx*4]
mov rdx, rbx
shr rdx, cl
movzx edx, dl
add rdx, rax
xor r15d, dword [r9 + rdx*4]
mov rdx, r14
shr rdx, cl
movzx edx, dl
add rax, rdx
xor r11d, dword [r9 + rax*4]
cmp r10d, 8
jne 0x140009b50
sub qword [rsp], 1
mov rdx, qword [rsp + 0x78]
jne 0x140009af0
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov edx, r13d
mov ecx, r12d
mov r10, qword [rsp + 0x80]
mov rdi, qword [rsp + 0x18]
lea rax, [rax + rax*4]
lea rsi, [rbx + rax*8]
mov eax, r15d
xor r8, qword [rsi]
mov r9d, 8
nop word [rax + rax]
mov rbx, r8
movzx r8d, r8b
mov r8d, dword [rdi + r8*4]
shr rbx, 8
xor r8, rbx
sub r9d, 1
jne 0x140009c00
mov r8d, r8d
xor rdx, qword [rsi + 8]
xor rdx, r8
mov r8d, 8
nop word cs:[rax + rax]
nop word cs:[rax + rax]
nop
mov r9, rdx
movzx edx, dl
mov edx, dword [rdi + rdx*4]
shr r9, 8
xor rdx, r9
sub r8d, 1
jne 0x140009c40
xor rcx, qword [rsi + 0x10]
mov edx, edx
xor rdx, rcx
mov ecx, 8
nop word cs:[rax + rax]
nop word cs:[rax + rax]
nop word [rax + rax]
mov r8, rdx
movzx edx, dl
mov edx, dword [rdi + rdx*4]
shr r8, 8
xor rdx, r8
sub ecx, 1
jne 0x140009c80
mov edx, edx
xor rax, qword [rsi + 0x18]
xor rax, rdx
mov edx, 8
nop word cs:[rax + rax]
nop word cs:[rax + rax]
nop dword [rax]
mov rcx, rax
movzx eax, al
mov eax, dword [rdi + rax*4]
shr rcx, 8
xor rax, rcx
sub edx, 1
jne 0x140009cc0
mov eax, eax
xor r11, qword [rsi + 0x20]
xor r11, rax
mov eax, 8
nop word cs:[rax + rax]
nop word cs:[rax + rax]
nop dword [rax]
mov rdx, r11
movzx r11d, r11b
mov r11d, dword [rdi + r11*4]
shr rdx, 8
xor r11, rdx
sub eax, 1
jne 0x140009d00
mov r8d, r11d
add rsi, 0x28
jmp 0x140009945
movabs rax, 0xcccccccccccccccd
mul r10
shr rdx, 5
lea rax, [rdx + rdx*4]
shl rax, 3
sub r10, rax
sub rdx, 1
je 0x140009d57
mov rax, rdx
mov rbx, rsi
jmp 0x140009aba
xor eax, eax
jmp 0x140009a43
xor r11d, r11d
xor eax, eax
xor ecx, ecx
jmp 0x140009bf1
mov r8d, r8d
jmp 0x140009910