Function at 0x477a10
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
test rdx, rdx
mov rbx, rdx
je 0x478450
cmp r8, 0x2e
not ecx
ja 0x477df0
cmp r8, 7
jbe 0x477d0b
mov eax, ecx
xor al, byte [rbx]
lea rdx, [0x004bb880]
mov r9d, ecx
lea r10, [r8 - 8]
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
mov eax, ecx
xor cl, byte [rbx + 1]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 2]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 3]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 4]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 5]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov r9d, eax
xor al, byte [rbx + 6]
shr r9d, 8
movzx eax, al
xor r9d, dword [rdx + rax*4]
mov eax, r9d
xor r9b, byte [rbx + 7]
shr eax, 8
movzx r9d, r9b
xor eax, dword [rdx + r9*4]
cmp r10, 7
mov ecx, eax
jbe 0x477cfe
mov r9d, eax
xor al, byte [rbx + 8]
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
mov eax, ecx
xor cl, byte [rbx + 9]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 0xa]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 0xb]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 0xc]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 0xd]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov r9d, eax
xor al, byte [rbx + 0xe]
shr r9d, 8
movzx eax, al
xor r9d, dword [rdx + rax*4]
mov eax, r9d
xor r9b, byte [rbx + 0xf]
shr eax, 8
movzx r9d, r9b
xor eax, dword [rdx + r9*4]
mov ecx, eax
lea rax, [r8 - 0x10]
cmp rax, 7
jbe 0x477cfe
mov eax, ecx
xor al, byte [rbx + 0x10]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
mov eax, ecx
xor cl, byte [rbx + 0x11]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 0x12]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 0x13]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 0x14]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 0x15]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov r9d, eax
xor al, byte [rbx + 0x16]
shr r9d, 8
movzx eax, al
xor r9d, dword [rdx + rax*4]
mov eax, r9d
xor r9b, byte [rbx + 0x17]
shr eax, 8
movzx r9d, r9b
xor eax, dword [rdx + r9*4]
mov ecx, eax
lea rax, [r8 - 0x18]
cmp rax, 7
jbe 0x477cfe
mov eax, ecx
xor al, byte [rbx + 0x18]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
mov eax, ecx
xor cl, byte [rbx + 0x19]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 0x1a]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 0x1b]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 0x1c]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 0x1d]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov r9d, eax
xor al, byte [rbx + 0x1e]
shr r9d, 8
movzx eax, al
xor r9d, dword [rdx + rax*4]
mov eax, r9d
xor r9b, byte [rbx + 0x1f]
shr eax, 8
movzx r9d, r9b
xor eax, dword [rdx + r9*4]
mov ecx, eax
lea rax, [r8 - 0x20]
cmp rax, 7
jbe 0x477cfe
mov eax, ecx
xor al, byte [rbx + 0x20]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
mov eax, ecx
xor cl, byte [rbx + 0x21]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 0x22]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 0x23]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov ecx, eax
xor al, byte [rbx + 0x24]
shr ecx, 8
movzx eax, al
xor ecx, dword [rdx + rax*4]
mov eax, ecx
xor cl, byte [rbx + 0x25]
shr eax, 8
movzx ecx, cl
xor eax, dword [rdx + rcx*4]
mov r9d, eax
xor al, byte [rbx + 0x26]
shr r9d, 8
movzx eax, al
xor r9d, dword [rdx + rax*4]
mov eax, r9d
xor r9b, byte [rbx + 0x27]
shr eax, 8
movzx r9d, r9b
xor eax, dword [rdx + r9*4]
mov ecx, eax
and r10, 0xfffffffffffffff8
and r8d, 7
lea rbx, [rbx + r10 + 8]
test r8, r8
je 0x477dd9
mov eax, ecx
xor al, byte [rbx]
lea rdx, [0x004bb880]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
cmp r8, 1
je 0x477dd9
mov eax, ecx
xor al, byte [rbx + 1]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
cmp r8, 2
je 0x477dd9
mov eax, ecx
xor al, byte [rbx + 2]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
cmp r8, 3
je 0x477dd9
mov eax, ecx
xor al, byte [rbx + 3]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
cmp r8, 4
je 0x477dd9
mov eax, ecx
xor al, byte [rbx + 4]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
cmp r8, 5
je 0x477dd9
mov eax, ecx
xor al, byte [rbx + 5]
mov r9d, ecx
shr r9d, 8
movzx eax, al
mov ecx, dword [rdx + rax*4]
xor ecx, r9d
cmp r8, 6
je 0x477dd9
mov eax, ecx
xor al, byte [rbx + 6]
mov r8d, ecx
shr r8d, 8
movzx eax, al
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
lea r13, [0x004bb880]
nop word [rax + rax]
mov r9, rbx
and r9d, 7
je 0x478410
add rbx, 1
mov eax, ecx
mov edx, ecx
xor al, byte [rbx - 1]
shr edx, 8
movzx eax, al
xor edx, dword [r13 + rax*4]
sub r8, 1
mov ecx, edx
jne 0x477e00
mov qword [rsp + 8], 0xffffffffffffffff
mov r15, qword [rsp + 8]
lea rdx, [0x004b9880]
mov dword [rsp + 4], ecx
mov r14, rbx
xor r10d, r10d
xor r11d, r11d
xor ecx, ecx
xor r9d, r9d
mov eax, dword [rsp + 4]
mov r12d, r9d
mov ebp, ecx
xor rax, qword [r14]
mov edi, r11d
xor r12, qword [r14 + 8]
xor rbp, qword [r14 + 0x10]
mov esi, r10d
xor rdi, qword [r14 + 0x18]
xor rsi, qword [r14 + 0x20]
add r14, 0x28
mov r9, rax
movzx ecx, al
shr r9, 0x38
mov ecx, dword [rdx + rcx*4]
mov r10, rbp
xor ecx, dword [rdx + r9*4 + 0x1c00]
mov r9, rax
shr r9, 0x10
movzx r9d, r9b
mov r11d, ecx
movzx ecx, ah
mov ecx, dword [rdx + rcx*4 + 0x400]
xor ecx, r11d
xor ecx, dword [rdx + r9*4 + 0x800]
mov r9, rax
shr r9, 0x18
movzx r11d, dil
movzx r9d, r9b
mov r11d, dword [rdx + r11*4]
xor ecx, dword [rdx + r9*4 + 0xc00]
mov r9, rax
shr r9, 0x20
movzx r9d, r9b
xor ecx, dword [rdx + r9*4 + 0x1000]
mov r9, rax
shr rax, 0x30
shr r9, 0x28
movzx eax, al
movzx r9d, r9b
xor ecx, dword [rdx + r9*4 + 0x1400]
movzx r9d, r12b
xor ecx, dword [rdx + rax*4 + 0x1800]
mov r9d, dword [rdx + r9*4]
mov rax, rbp
movzx eax, ah
mov dword [rsp + 4], ecx
mov rcx, r12
shr rcx, 0x38
xor r9d, dword [rdx + rcx*4 + 0x1c00]
mov rcx, r12
movzx ecx, ch
xor r9d, dword [rdx + rcx*4 + 0x400]
mov rcx, r12
shr rcx, 0x10
movzx ecx, cl
xor r9d, dword [rdx + rcx*4 + 0x800]
mov rcx, r12
shr rcx, 0x18
movzx ecx, cl
xor r9d, dword [rdx + rcx*4 + 0xc00]
mov rcx, r12
shr rcx, 0x20
movzx ecx, cl
xor r9d, dword [rdx + rcx*4 + 0x1000]
mov rcx, r12
shr r12, 0x30
shr rcx, 0x28
movzx r12d, r12b
movzx ecx, cl
xor r9d, dword [rdx + rcx*4 + 0x1400]
movzx ecx, bpl
xor r9d, dword [rdx + r12*4 + 0x1800]
shr r10, 0x38
mov ecx, dword [rdx + rcx*4]
xor ecx, dword [rdx + r10*4 + 0x1c00]
mov r10, rbp
shr r10, 0x10
xor ecx, dword [rdx + rax*4 + 0x400]
mov rax, rdi
movzx r10d, r10b
movzx eax, ah
xor ecx, dword [rdx + r10*4 + 0x800]
mov r10, rbp
shr r10, 0x18
movzx r10d, r10b
xor ecx, dword [rdx + r10*4 + 0xc00]
mov r10, rbp
shr r10, 0x20
movzx r10d, r10b
xor ecx, dword [rdx + r10*4 + 0x1000]
mov r10, rbp
shr rbp, 0x30
shr r10, 0x28
movzx ebp, bpl
movzx r10d, r10b
xor ecx, dword [rdx + r10*4 + 0x1400]
mov r10, rdi
shr r10, 0x38
xor ecx, dword [rdx + rbp*4 + 0x1800]
xor r11d, dword [rdx + r10*4 + 0x1c00]
mov r10, rdi
shr r10, 0x10
xor r11d, dword [rdx + rax*4 + 0x400]
mov rax, rsi
movzx r10d, r10b
xor r11d, dword [rdx + r10*4 + 0x800]
mov r10, rdi
shr r10, 0x18
movzx r10d, r10b
xor r11d, dword [rdx + r10*4 + 0xc00]
mov r10, rdi
shr r10, 0x20
movzx r10d, r10b
xor r11d, dword [rdx + r10*4 + 0x1000]
mov r10, rdi
shr rdi, 0x30
shr r10, 0x28
movzx edi, dil
movzx r10d, r10b
xor r11d, dword [rdx + r10*4 + 0x1400]
movzx r10d, sil
xor r11d, dword [rdx + rdi*4 + 0x1800]
mov rdi, rsi
mov r10d, dword [rdx + r10*4]
shr rdi, 0x38
xor r10d, dword [rdx + rdi*4 + 0x1c00]
movzx edi, ah
xor r10d, dword [rdx + rdi*4 + 0x400]
mov rdi, rsi
shr rdi, 0x10
movzx edi, dil
xor r10d, dword [rdx + rdi*4 + 0x800]
mov rdi, rsi
shr rdi, 0x18
movzx edi, dil
xor r10d, dword [rdx + rdi*4 + 0xc00]
mov rdi, rsi
shr rdi, 0x20
movzx edi, dil
xor r10d, dword [rdx + rdi*4 + 0x1000]
mov rdi, rsi
shr rsi, 0x30
shr rdi, 0x28
movzx esi, sil
movzx edi, dil
xor r10d, dword [rdx + rdi*4 + 0x1400]
xor r10d, dword [rdx + rsi*4 + 0x1800]
sub r15, 1
jne 0x477e52
mov rax, qword [rsp + 8]
lea rdx, [rax + rax*4]
lea rbx, [rbx + rdx*8]
mov edx, ecx
mov eax, dword [rsp + 4]
xor r9, qword [rbx + 8]
xor rax, qword [rbx]
movzx ecx, al
shr rax, 8
mov ecx, dword [r13 + rcx*4]
xor rax, rcx
mov rsi, rax
movzx eax, al
mov ecx, dword [r13 + rax*4]
shr rsi, 8
xor rcx, rsi
mov rsi, rcx
movzx ecx, cl
mov eax, dword [r13 + rcx*4]
shr rsi, 8
xor rax, rsi
mov rsi, rax
movzx eax, al
mov ecx, dword [r13 + rax*4]
shr rsi, 8
xor rcx, rsi
mov rsi, rcx
movzx ecx, cl
mov eax, dword [r13 + rcx*4]
shr rsi, 8
xor rax, rsi
mov rsi, rax
movzx eax, al
mov ecx, dword [r13 + rax*4]
shr rsi, 8
xor rcx, rsi
mov rsi, rcx
movzx ecx, cl
mov eax, dword [r13 + rcx*4]
shr rsi, 8
xor rax, rsi
mov rcx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rcx, 8
xor rax, rcx
xor r9, rax
movzx eax, r9b
shr r9, 8
mov eax, dword [r13 + rax*4]
xor r9, rax
mov rax, r9
movzx r9d, r9b
mov ecx, dword [r13 + r9*4]
shr rax, 8
xor rcx, rax
mov r9, rcx
movzx ecx, cl
mov eax, dword [r13 + rcx*4]
shr r9, 8
xor rax, r9
mov r9, rax
movzx eax, al
mov ecx, dword [r13 + rax*4]
shr r9, 8
xor rcx, r9
mov r9, rcx
movzx ecx, cl
mov eax, dword [r13 + rcx*4]
shr r9, 8
xor rax, r9
mov r9, rax
movzx eax, al
mov ecx, dword [r13 + rax*4]
shr r9, 8
xor rcx, r9
mov r9, rcx
movzx ecx, cl
mov eax, dword [r13 + rcx*4]
shr r9, 8
xor rax, r9
xor rdx, qword [rbx + 0x10]
xor r11, qword [rbx + 0x18]
mov r9, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr r9, 8
mov rcx, rdx
mov rdx, r9
xor rdx, rax
xor rcx, rdx
movzx eax, cl
shr rcx, 8
mov eax, dword [r13 + rax*4]
xor rcx, rax
mov rax, rcx
movzx ecx, cl
mov edx, dword [r13 + rcx*4]
shr rax, 8
xor rdx, rax
mov rcx, rdx
movzx edx, dl
mov eax, dword [r13 + rdx*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov edx, dword [r13 + rax*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov eax, dword [r13 + rdx*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov edx, dword [r13 + rax*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov eax, dword [r13 + rdx*4]
shr rcx, 8
xor rax, rcx
mov rdx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rdx, 8
xor rax, rdx
xor r11, rax
movzx eax, r11b
shr r11, 8
mov eax, dword [r13 + rax*4]
xor r11, rax
mov rax, r11
movzx r11d, r11b
mov edx, dword [r13 + r11*4]
shr rax, 8
xor rdx, rax
mov rcx, rdx
movzx edx, dl
mov eax, dword [r13 + rdx*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov edx, dword [r13 + rax*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov eax, dword [r13 + rdx*4]
shr rcx, 8
xor rax, rcx
xor r10, qword [rbx + 0x20]
add rbx, 0x28
mov rcx, rax
movzx eax, al
mov edx, dword [r13 + rax*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov eax, dword [r13 + rdx*4]
shr rcx, 8
xor rax, rcx
mov rdx, rax
movzx eax, al
mov eax, dword [r13 + rax*4]
shr rdx, 8
xor rax, rdx
xor r10, rax
movzx eax, r10b
shr r10, 8
mov eax, dword [r13 + rax*4]
xor r10, rax
mov rdx, r10
movzx r10d, r10b
mov eax, dword [r13 + r10*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
mov eax, dword [r13 + rdx*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov edx, dword [r13 + rax*4]
shr rcx, 8
xor rdx, rcx
mov rcx, rdx
movzx edx, dl
mov eax, dword [r13 + rdx*4]
shr rcx, 8
xor rax, rcx
mov rcx, rax
movzx eax, al
mov edx, dword [r13 + rax*4]
shr rcx, 8
xor rdx, rcx
mov rax, rdx
movzx edx, dl
mov ecx, dword [r13 + rdx*4]
shr rax, 8
xor ecx, eax
jmp 0x477a38
mov rax, r8
movabs rdx, 0xcccccccccccccccd
mul rdx
shr rdx, 5
lea rax, [rdx + rdx*4]
shl rax, 3
sub r8, rax
sub rdx, 1
mov qword [rsp + 8], rdx
jne 0x477e34
xor r10d, r10d
xor r11d, r11d
xor edx, edx
mov dword [rsp + 4], ecx
jmp 0x478111
xor eax, eax
jmp 0x477ddd
mov r8d, r8d
jmp 0x477a10