Function at 0x140313140
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 0x140313b11
not ecx
cmp r8, 0x2e
jbe 0x140313761
test dl, 7
je 0x140313b54
lea r13, [0x140342bc0]
jmp 0x14031318a
test r9b, 7
je 0x140313b15
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 0x140313180
mov qword [rsp + 8], r9
mov r15, 0xffffffffffffffff
mov r14, 0xffffffffffffffff
xor eax, eax
xor r10d, r10d
xor r11d, r11d
xor ebx, ebx
lea rdx, [0x140340bc0]
nop dword [rax + rax]
mov esi, ecx
mov eax, eax
xor rsi, qword [r9]
xor rax, qword [r9 + 0x20]
mov rdi, rax
mov rax, rsi
movzx ecx, sil
mov ebx, ebx
shr rax, 0x38
mov ecx, dword [rdx + rcx*4]
xor rbx, qword [r9 + 8]
mov r10d, r10d
xor ecx, dword [rdx + rax*4 + 0x1c00]
mov rax, rsi
xor r10, qword [r9 + 0x18]
mov r11d, r11d
movzx eax, ah
mov rbp, r10
mov r10, rbx
xor r11, qword [r9 + 0x10]
xor ecx, dword [rdx + rax*4 + 0x400]
mov rax, rsi
shr r10, 0x38
mov r12, r11
shr rax, 0x10
add r9, 0x28
movzx eax, al
xor ecx, dword [rdx + rax*4 + 0x800]
mov rax, rsi
shr rax, 0x18
movzx eax, al
xor ecx, dword [rdx + rax*4 + 0xc00]
mov rax, rsi
shr rax, 0x20
movzx eax, al
xor ecx, dword [rdx + rax*4 + 0x1000]
mov rax, rsi
shr rsi, 0x30
shr rax, 0x28
movzx esi, sil
movzx eax, al
xor ecx, dword [rdx + rax*4 + 0x1400]
movzx eax, bl
xor ecx, dword [rdx + rsi*4 + 0x1800]
movzx esi, bh
mov eax, dword [rdx + rax*4]
xor eax, dword [rdx + r10*4 + 0x1c00]
mov r10, rbx
shr r10, 0x10
xor eax, dword [rdx + rsi*4 + 0x400]
mov rsi, rdi
movzx r10d, r10b
xor eax, dword [rdx + r10*4 + 0x800]
mov r10, rbx
shr r10, 0x18
movzx r10d, r10b
xor eax, dword [rdx + r10*4 + 0xc00]
mov r10, rbx
shr r10, 0x20
movzx r10d, r10b
xor eax, dword [rdx + r10*4 + 0x1000]
mov r10, rbx
shr rbx, 0x30
shr r10, 0x28
movzx ebx, bl
movzx r10d, r10b
xor eax, dword [rdx + r10*4 + 0x1400]
xor eax, dword [rdx + rbx*4 + 0x1800]
movzx r10d, r11b
mov ebx, eax
mov rax, r11
mov r11d, dword [rdx + r10*4]
movzx r10d, bpl
shr rax, 0x38
mov r10d, dword [rdx + r10*4]
shr rsi, 0x38
xor r11d, dword [rdx + rax*4 + 0x1c00]
mov rax, r12
movzx eax, ah
xor r11d, dword [rdx + rax*4 + 0x400]
mov rax, r12
shr rax, 0x10
movzx eax, al
xor r11d, dword [rdx + rax*4 + 0x800]
mov rax, r12
shr rax, 0x18
movzx eax, al
xor r11d, dword [rdx + rax*4 + 0xc00]
mov rax, r12
shr rax, 0x20
movzx eax, al
xor r11d, dword [rdx + rax*4 + 0x1000]
mov rax, r12
shr r12, 0x30
shr rax, 0x28
movzx r12d, r12b
movzx eax, al
xor r11d, dword [rdx + rax*4 + 0x1400]
mov rax, rbp
xor r11d, dword [rdx + r12*4 + 0x1800]
shr rax, 0x38
xor r10d, dword [rdx + rax*4 + 0x1c00]
mov rax, rbp
movzx eax, ah
xor r10d, dword [rdx + rax*4 + 0x400]
mov rax, rbp
shr rax, 0x10
movzx eax, al
xor r10d, dword [rdx + rax*4 + 0x800]
mov rax, rbp
shr rax, 0x18
movzx eax, al
xor r10d, dword [rdx + rax*4 + 0xc00]
mov rax, rbp
shr rax, 0x20
movzx eax, al
xor r10d, dword [rdx + rax*4 + 0x1000]
mov rax, rbp
shr rbp, 0x30
shr rax, 0x28
movzx ebp, bpl
movzx eax, al
xor r10d, dword [rdx + rax*4 + 0x1400]
movzx eax, dil
xor r10d, dword [rdx + rbp*4 + 0x1800]
mov eax, dword [rdx + rax*4]
xor eax, dword [rdx + rsi*4 + 0x1c00]
mov ebp, eax
mov rax, rdi
movzx esi, ah
mov eax, dword [rdx + rsi*4 + 0x400]
mov rsi, rdi
shr rsi, 0x10
movzx esi, sil
xor eax, ebp
xor eax, dword [rdx + rsi*4 + 0x800]
mov rsi, rdi
shr rsi, 0x18
movzx esi, sil
xor eax, dword [rdx + rsi*4 + 0xc00]
mov rsi, rdi
shr rsi, 0x20
movzx esi, sil
xor eax, dword [rdx + rsi*4 + 0x1000]
mov rsi, rdi
shr rdi, 0x30
shr rsi, 0x28
movzx edi, dil
movzx esi, sil
xor eax, dword [rdx + rsi*4 + 0x1400]
xor eax, dword [rdx + rdi*4 + 0x1800]
sub r14, 1
jne 0x1403131d0
mov rdi, qword [rsp + 8]
lea rdx, [r15 + r15*4]
mov r14d, ebx
lea r9, [rdi + rdx*8]
xor rcx, qword [r9]
xor r14, qword [r9 + 8]
movzx edx, cl
shr rcx, 8
mov edx, dword [r13 + rdx*4]
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
xor r14, rdx
movzx edx, r14b
shr r14, 8
mov edx, dword [r13 + rdx*4]
xor rdx, r14
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
xor r11, qword [r9 + 0x10]
xor r10, qword [r9 + 0x18]
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
xor r11, rdx
movzx edx, r11b
shr r11, 8
mov edx, dword [r13 + rdx*4]
xor rdx, r11
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
xor r10, rdx
movzx edx, r10b
shr r10, 8
mov edx, dword [r13 + rdx*4]
xor rdx, r10
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
xor rax, qword [r9 + 0x20]
add r9, 0x28
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov edx, dword [r13 + rdx*4]
shr rcx, 8
xor rdx, rcx
xor rax, rdx
movzx edx, al
shr rax, 8
mov edx, dword [r13 + rdx*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]
cmp r8, 7
jbe 0x140313a4b
mov r10d, ecx
xor cl, byte [r9]
lea rdx, [0x140342bc0]
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 0x140313a3e
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 0x140313a3e
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 0x140313a3e
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 0x140313a3e
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]
shr r11, 3
and r8d, 7
lea r9, [r9 + r11*8 + 8]
test r8, r8
je 0x140313afc
mov eax, ecx
xor cl, byte [r9]
lea rdx, [0x140342bc0]
movzx ecx, cl
shr eax, 8
xor eax, dword [rdx + rcx*4]
mov ecx, eax
cmp r8, 1
je 0x140313afc
xor cl, byte [r9 + 1]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
cmp r8, 2
je 0x140313afc
xor cl, byte [r9 + 2]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
cmp r8, 3
je 0x140313afc
xor cl, byte [r9 + 3]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
cmp r8, 4
je 0x140313afc
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 0x140313afc
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 0x140313afc
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
xor eax, eax
jmp 0x140313b00
movabs rax, 0xcccccccccccccccd
mul r8
shr rdx, 5
lea rax, [rdx + rdx*4]
lea r14, [rdx - 1]
shl rax, 3
sub r8, rax
test r14, r14
je 0x140313b47
mov qword [rsp + 8], r9
mov r15, r14
jmp 0x1403131ba
xor eax, eax
xor r10d, r10d
xor r11d, r11d
jmp 0x14031347d
movabs rax, 0xcccccccccccccccd
lea r13, [0x140342bc0]
mul r8
mov rax, rdx
shr rax, 5
lea r14, [rax - 1]
lea rax, [rax + rax*4]
shl rax, 3
sub r8, rax
jmp 0x140313b35