Function at 0x140087070
Capabilities:
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x18
mov r9, rdx
test rdx, rdx
je 0x140087a98
not ecx
lea r13, [0x1400b4040]
cmp r8, 0x2e
ja 0x140087480
cmp r8, 7
jbe 0x140087389
mov r10d, ecx
xor cl, byte [r9]
lea rdx, [0x1400b4040]
movzx ecx, cl
shr r10d, 8
lea r11, [r8 - 8]
xor r10d, dword [rdx + rcx*4]
mov ecx, r10d
xor cl, byte [r9 + 1]
mov eax, r10d
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 2]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 3]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 4]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 5]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov r10d, eax
xor al, byte [r9 + 6]
movzx eax, al
shr r10d, 8
xor r10d, dword [rdx + rax*4]
mov ecx, r10d
xor r10b, byte [r9 + 7]
movzx r10d, r10b
shr ecx, 8
xor ecx, dword [rdx + r10*4]
cmp r11, 7
jbe 0x14008737c
mov r10d, ecx
xor cl, byte [r9 + 8]
movzx ecx, cl
shr r10d, 8
xor r10d, dword [rdx + rcx*4]
mov ecx, r10d
xor cl, byte [r9 + 9]
mov eax, r10d
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 0xa]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 0xb]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 0xc]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 0xd]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov r10d, eax
xor al, byte [r9 + 0xe]
movzx eax, al
shr r10d, 8
xor r10d, dword [rdx + rax*4]
lea rax, [r8 - 0x10]
mov ecx, r10d
xor r10b, byte [r9 + 0xf]
movzx r10d, r10b
shr ecx, 8
xor ecx, dword [rdx + r10*4]
cmp rax, 7
jbe 0x14008737c
mov r10d, ecx
xor cl, byte [r9 + 0x10]
movzx ecx, cl
shr r10d, 8
xor r10d, dword [rdx + rcx*4]
mov ecx, r10d
xor cl, byte [r9 + 0x11]
mov eax, r10d
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 0x12]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 0x13]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 0x14]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 0x15]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov r10d, eax
xor al, byte [r9 + 0x16]
movzx eax, al
shr r10d, 8
xor r10d, dword [rdx + rax*4]
lea rax, [r8 - 0x18]
mov ecx, r10d
xor r10b, byte [r9 + 0x17]
movzx r10d, r10b
shr ecx, 8
xor ecx, dword [rdx + r10*4]
cmp rax, 7
jbe 0x14008737c
mov r10d, ecx
xor cl, byte [r9 + 0x18]
movzx eax, cl
shr r10d, 8
mov ecx, dword [rdx + rax*4]
xor ecx, r10d
mov eax, ecx
xor cl, byte [r9 + 0x19]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 0x1a]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 0x1b]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 0x1c]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 0x1d]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov r10d, eax
xor al, byte [r9 + 0x1e]
movzx eax, al
shr r10d, 8
xor r10d, dword [rdx + rax*4]
lea rax, [r8 - 0x20]
mov ecx, r10d
xor r10b, byte [r9 + 0x1f]
movzx r10d, r10b
shr ecx, 8
xor ecx, dword [rdx + r10*4]
cmp rax, 7
jbe 0x14008737c
mov r10d, ecx
xor cl, byte [r9 + 0x20]
movzx eax, cl
shr r10d, 8
mov ecx, dword [rdx + rax*4]
xor ecx, r10d
mov eax, ecx
xor cl, byte [r9 + 0x21]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 0x22]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 0x23]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [r9 + 0x24]
movzx eax, al
shr ecx, 8
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [r9 + 0x25]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov r10d, eax
xor al, byte [r9 + 0x26]
movzx eax, al
shr r10d, 8
xor r10d, dword [rdx + rax*4]
mov ecx, r10d
xor r10b, byte [r9 + 0x27]
movzx r10d, r10b
shr ecx, 8
xor ecx, dword [rdx + r10*4]
and r11, 0xfffffffffffffff8
and r8d, 7
lea r9, [r9 + r11 + 8]
test r8, r8
je 0x14008743a
mov eax, ecx
xor cl, byte [r9]
lea rdx, [0x1400b4040]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
cmp r8, 1
je 0x14008743a
xor cl, byte [r9 + 1]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
cmp r8, 2
je 0x14008743a
xor cl, byte [r9 + 2]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
cmp r8, 3
je 0x14008743a
xor cl, byte [r9 + 3]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
cmp r8, 4
je 0x14008743a
xor cl, byte [r9 + 4]
mov r10d, eax
movzx eax, cl
shr r10d, 8
mov ecx, dword [rdx + rax*4]
xor ecx, r10d
cmp r8, 5
je 0x14008743a
mov r10d, ecx
xor cl, byte [r9 + 5]
movzx eax, cl
shr r10d, 8
mov ecx, dword [rdx + rax*4]
xor ecx, r10d
cmp r8, 6
je 0x14008743a
mov r8d, ecx
xor cl, byte [r9 + 6]
movzx eax, cl
shr r8d, 8
mov ecx, dword [rdx + rax*4]
xor ecx, r8d
mov eax, ecx
not eax
add rsp, 0x18
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test r9b, 7
je 0x140087a66
add r9, 1
mov eax, ecx
xor cl, byte [r9 - 1]
shr eax, 8
movzx ecx, cl
xor eax, dword [r13 + rcx*4]
mov ecx, eax
sub r8, 1
jne 0x140087480
mov qword [rsp + 8], r9
mov r15, 0xffffffffffffffff
mov r14, 0xffffffffffffffff
xor edx, edx
xor r10d, r10d
xor r11d, r11d
xor ebx, ebx
lea rax, [0x1400b2040]
nop dword [rax + rax]
mov rdi, qword [r9 + 0x20]
mov esi, ecx
mov edx, edx
xor rsi, qword [r9]
movzx ecx, sil
mov ebx, ebx
mov r10d, r10d
xor rbx, qword [r9 + 8]
xor rdi, rdx
mov rdx, rsi
mov ecx, dword [rax + rcx*4]
xor r10, qword [r9 + 0x18]
shr rdx, 0x38
mov rbp, r10
mov r10, rbx
mov r11d, r11d
xor ecx, dword [rax + rdx*4 + 0x1c00]
mov rdx, rsi
shr r10, 0x38
xor r11, qword [r9 + 0x10]
movzx edx, dh
mov r12, r11
add r9, 0x28
xor ecx, dword [rax + rdx*4 + 0x400]
mov rdx, rsi
shr rdx, 0x10
movzx edx, dl
xor ecx, dword [rax + rdx*4 + 0x800]
mov rdx, rsi
shr rdx, 0x18
movzx edx, dl
xor ecx, dword [rax + rdx*4 + 0xc00]
mov rdx, rsi
shr rdx, 0x20
movzx edx, dl
xor ecx, dword [rax + rdx*4 + 0x1000]
mov rdx, rsi
shr rsi, 0x30
shr rdx, 0x28
movzx esi, sil
movzx edx, dl
xor ecx, dword [rax + rdx*4 + 0x1400]
movzx edx, bl
xor ecx, dword [rax + rsi*4 + 0x1800]
movzx esi, bh
mov edx, dword [rax + rdx*4]
xor edx, dword [rax + r10*4 + 0x1c00]
mov r10, rbx
shr r10, 0x10
xor edx, dword [rax + rsi*4 + 0x400]
mov rsi, rdi
movzx r10d, r10b
xor edx, dword [rax + r10*4 + 0x800]
mov r10, rbx
shr r10, 0x18
movzx r10d, r10b
xor edx, dword [rax + r10*4 + 0xc00]
mov r10, rbx
shr r10, 0x20
movzx r10d, r10b
xor edx, dword [rax + r10*4 + 0x1000]
mov r10, rbx
shr rbx, 0x30
shr r10, 0x28
movzx ebx, bl
movzx r10d, r10b
xor edx, dword [rax + r10*4 + 0x1400]
xor edx, dword [rax + rbx*4 + 0x1800]
movzx r10d, r11b
mov ebx, edx
mov rdx, r11
mov r11d, dword [rax + r10*4]
movzx r10d, bpl
shr rdx, 0x38
mov r10d, dword [rax + r10*4]
shr rsi, 0x38
xor r11d, dword [rax + rdx*4 + 0x1c00]
mov rdx, r12
movzx edx, dh
xor r11d, dword [rax + rdx*4 + 0x400]
mov rdx, r12
shr rdx, 0x10
movzx edx, dl
xor r11d, dword [rax + rdx*4 + 0x800]
mov rdx, r12
shr rdx, 0x18
movzx edx, dl
xor r11d, dword [rax + rdx*4 + 0xc00]
mov rdx, r12
shr rdx, 0x20
movzx edx, dl
xor r11d, dword [rax + rdx*4 + 0x1000]
mov rdx, r12
shr r12, 0x30
shr rdx, 0x28
movzx r12d, r12b
movzx edx, dl
xor r11d, dword [rax + rdx*4 + 0x1400]
mov rdx, rbp
xor r11d, dword [rax + r12*4 + 0x1800]
shr rdx, 0x38
xor r10d, dword [rax + rdx*4 + 0x1c00]
mov rdx, rbp
movzx edx, dh
xor r10d, dword [rax + rdx*4 + 0x400]
mov rdx, rbp
shr rdx, 0x10
movzx edx, dl
xor r10d, dword [rax + rdx*4 + 0x800]
mov rdx, rbp
shr rdx, 0x18
movzx edx, dl
xor r10d, dword [rax + rdx*4 + 0xc00]
mov rdx, rbp
shr rdx, 0x20
movzx edx, dl
xor r10d, dword [rax + rdx*4 + 0x1000]
mov rdx, rbp
shr rbp, 0x30
shr rdx, 0x28
movzx ebp, bpl
movzx edx, dl
xor r10d, dword [rax + rdx*4 + 0x1400]
movzx edx, dil
xor r10d, dword [rax + rbp*4 + 0x1800]
mov edx, dword [rax + rdx*4]
xor edx, dword [rax + rsi*4 + 0x1c00]
mov ebp, edx
mov rdx, rdi
movzx esi, dh
mov edx, dword [rax + rsi*4 + 0x400]
mov rsi, rdi
shr rsi, 0x10
movzx esi, sil
xor edx, ebp
xor edx, dword [rax + rsi*4 + 0x800]
mov rsi, rdi
shr rsi, 0x18
movzx esi, sil
xor edx, dword [rax + rsi*4 + 0xc00]
mov rsi, rdi
shr rsi, 0x20
movzx esi, sil
xor edx, dword [rax + rsi*4 + 0x1000]
mov rsi, rdi
shr rdi, 0x30
shr rsi, 0x28
movzx edi, dil
movzx esi, sil
xor edx, dword [rax + rsi*4 + 0x1400]
xor edx, dword [rax + rdi*4 + 0x1800]
sub r14, 1
jne 0x1400874d0
mov rdi, qword [rsp + 8]
lea rax, [r15 + r15*4]
mov r14d, ebx
lea r9, [rdi + rax*8]
xor rcx, qword [r9]
xor r14, qword [r9 + 8]
movzx eax, cl
shr rcx, 8
mov eax, dword [r13 + rax*4]
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
xor r14, rax
movzx eax, r14b
shr r14, 8
mov eax, dword [r13 + rax*4]
xor rax, r14
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
xor r11, qword [r9 + 0x10]
xor r10, qword [r9 + 0x18]
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
xor r11, rax
movzx eax, r11b
shr r11, 8
mov eax, dword [r13 + rax*4]
xor rax, r11
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
xor r10, rax
movzx eax, r10b
shr r10, 8
mov eax, dword [r13 + rax*4]
xor rax, r10
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
xor rdx, qword [r9 + 0x20]
add r9, 0x28
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
xor rdx, rax
movzx eax, dl
shr rdx, 8
mov eax, dword [r13 + rax*4]
xor rax, rdx
mov rdx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rdx, 8
xor rax, rdx
mov rdx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rdx, 8
xor rax, rdx
mov rdx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rdx, 8
xor rax, rdx
mov rdx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rdx, 8
xor rax, rdx
mov rdx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rdx, 8
xor rax, rdx
mov rcx, rax
movzx eax, al
mov edx, dword [r13 + rax*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
shr rcx, 8
xor ecx, dword [r13 + rdx*4]
jmp 0x14008709f
movabs rax, 0xcccccccccccccccd
mul r8
mov r14, rdx
shr r14, 5
lea rax, [r14 + r14*4]
shl rax, 3
sub r8, rax
sub r14, 1
je 0x140087a9f
mov qword [rsp + 8], r9
mov r15, r14
jmp 0x1400874ba
xor eax, eax
jmp 0x14008743e
xor edx, edx
xor r10d, r10d
xor r11d, r11d
jmp 0x14008777d