Function at 0x5a8800
Capabilities:
Hash data with crc32

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x20
lea rbp, [rsp + 0x20]
mov r9, rdx
test r9, r9
je 0x5a8854
not ecx
cmp r8, 0x2f
jae 0x5a885b
cmp r8, 8
jae 0x5a8ea7
test r8, r8
je 0x5a8f5b
test r8b, 1
jne 0x5a8bde
mov rdx, r8
cmp r8, 1
jne 0x5a8c09
jmp 0x5a8f5d
xor eax, eax
jmp 0x5a8f5f
test r9b, 7
je 0x5a8897
lea rax, [0x005f5df0]
nop dword [rax + rax]
movzx edx, cl
shr ecx, 8
movzx ebx, byte [r9]
inc r9
xor edx, ebx
xor ecx, dword [rax + rdx*4]
cmp r8, 1
lea r8, [r8 - 1]
je 0x5a8897
mov edx, r9d
and edx, 7
test rdx, rdx
jne 0x5a8870
movabs rdx, 0xcccccccccccccccd
mov rax, r8
mul rdx
shr rdx, 5
imul rax, rdx, 0xffffffffffffffd8
mov ebx, ecx
xor rbx, qword [r9]
xor r14d, r14d
cmp rdx, 1
je 0x5a8c4e
mov qword [rbp - 8], r8
mov qword [rbp - 0x18], rax
lea rcx, [rdx + rdx*4]
lea rax, [r9 + rcx*8 - 0x28]
mov qword [rbp - 0x10], rax
mov eax, 1
sub rax, rdx
add r9, 0x28
lea r10, [0x005f61f0]
xor edx, edx
xor esi, esi
mov r8, rbx
xor ebx, ebx
nop word cs:[rax + rax]
mov qword [rbp - 0x20], rax
mov eax, esi
mov r12, qword [r9 - 0x20]
mov r15, qword [r9 - 0x18]
xor rax, r12
movzx r11d, al
movzx esi, ah
mov esi, dword [r10 + rsi*4 + 0x400]
xor esi, dword [r10 + r11*4]
mov rcx, rax
shr rcx, 0xe
and ecx, 0x3fc
xor esi, dword [rcx + r10 + 0x800]
shr rax, 0x16
and eax, 0x3fc
xor esi, dword [rax + r10 + 0xc00]
mov eax, ebx
xor rax, r15
movzx edi, al
movzx ebx, ah
mov ebx, dword [r10 + rbx*4 + 0x400]
xor ebx, dword [r10 + rdi*4]
mov rcx, rax
shr rcx, 0xe
and ecx, 0x3fc
xor ebx, dword [rcx + r10 + 0x800]
shr rax, 0x16
and eax, 0x3fc
xor ebx, dword [rax + r10 + 0xc00]
mov ecx, edx
mov r13, qword [r9 - 0x10]
xor rcx, r13
movzx eax, cl
movzx edx, ch
mov edx, dword [r10 + rdx*4 + 0x400]
xor edx, dword [r10 + rax*4]
mov rax, rcx
shr rax, 0xe
and eax, 0x3fc
xor edx, dword [rax + r10 + 0x800]
shr rcx, 0x16
and ecx, 0x3fc
xor edx, dword [rcx + r10 + 0xc00]
mov ecx, r14d
mov r11, qword [r9 - 8]
xor rcx, r11
movzx eax, cl
movzx edi, ch
mov r14d, dword [r10 + rdi*4 + 0x400]
xor r14d, dword [r10 + rax*4]
mov rax, rcx
shr rax, 0xe
and eax, 0x3fc
xor r14d, dword [rax + r10 + 0x800]
shr rcx, 0x16
and ecx, 0x3fc
xor r14d, dword [rcx + r10 + 0xc00]
mov rax, r8
movzx edi, al
movzx ecx, ah
mov r8d, dword [r10 + rcx*4 + 0x400]
xor r8d, dword [r10 + rdi*4]
mov rdi, rax
shr rax, 0xe
and eax, 0x3fc
xor r8d, dword [rax + r10 + 0x800]
mov rax, rdi
shr rax, 0x16
and eax, 0x3fc
xor r8d, dword [rax + r10 + 0xc00]
mov rax, rdi
shr rax, 0x1e
and eax, 0x3fc
xor r8d, dword [rax + r10 + 0x1000]
mov rax, r12
shr rax, 0x1e
and eax, 0x3fc
xor esi, dword [rax + r10 + 0x1000]
mov rax, r15
shr rax, 0x1e
and eax, 0x3fc
xor ebx, dword [rax + r10 + 0x1000]
mov rax, r13
shr rax, 0x1e
and eax, 0x3fc
xor edx, dword [rax + r10 + 0x1000]
mov rax, r11
shr rax, 0x1e
and eax, 0x3fc
xor r14d, dword [rax + r10 + 0x1000]
mov rax, rdi
shr rax, 0x26
and eax, 0x3fc
xor r8d, dword [rax + r10 + 0x1400]
mov rax, r12
shr rax, 0x26
and eax, 0x3fc
xor esi, dword [rax + r10 + 0x1400]
mov rax, r15
shr rax, 0x26
and eax, 0x3fc
xor ebx, dword [rax + r10 + 0x1400]
mov rax, r13
shr rax, 0x26
and eax, 0x3fc
xor edx, dword [rax + r10 + 0x1400]
mov rax, r11
shr rax, 0x26
and eax, 0x3fc
xor r14d, dword [rax + r10 + 0x1400]
mov rax, rdi
shr rax, 0x2e
and eax, 0x3fc
xor r8d, dword [rax + r10 + 0x1800]
mov rax, r12
shr rax, 0x2e
and eax, 0x3fc
xor esi, dword [rax + r10 + 0x1800]
mov rax, r15
shr rax, 0x2e
and eax, 0x3fc
xor ebx, dword [rax + r10 + 0x1800]
mov rax, r13
shr rax, 0x2e
and eax, 0x3fc
xor edx, dword [rax + r10 + 0x1800]
mov rax, r11
shr rax, 0x2e
and eax, 0x3fc
xor r14d, dword [rax + r10 + 0x1800]
mov rax, qword [rbp - 0x20]
shr rdi, 0x38
xor r8d, dword [r10 + rdi*4 + 0x1c00]
shr r12, 0x38
xor esi, dword [r10 + r12*4 + 0x1c00]
shr r15, 0x38
xor ebx, dword [r10 + r15*4 + 0x1c00]
shr r13, 0x38
xor edx, dword [r10 + r13*4 + 0x1c00]
shr r11, 0x38
xor r14d, dword [r10 + r11*4 + 0x1c00]
xor r8, qword [r9]
add r9, 0x28
inc rax
jne 0x5a8900
mov ecx, esi
mov esi, r14d
mov r14d, ebx
mov edi, edx
mov r9, qword [rbp - 0x10]
mov rax, qword [rbp - 0x18]
mov rbx, r8
mov r8, qword [rbp - 8]
jmp 0x5a8c54
lea rdx, [r8 - 1]
mov eax, ecx
shr eax, 8
movzx ebx, byte [r9]
inc r9
movzx ecx, cl
xor ecx, ebx
lea rbx, [0x005f5df0]
xor eax, dword [rbx + rcx*4]
mov ecx, eax
cmp r8, 1
je 0x5a8f5d
lea rbx, [0x005f5df0]
mov eax, ecx
nop word cs:[rax + rax]
movzx ecx, al
shr eax, 8
movzx edi, byte [r9]
xor ecx, edi
xor eax, dword [rbx + rcx*4]
movzx ecx, al
shr eax, 8
movzx edi, byte [r9 + 1]
xor ecx, edi
xor eax, dword [rbx + rcx*4]
add r9, 2
add rdx, 0xfffffffffffffffe
jne 0x5a8c20
jmp 0x5a8f5d
xor ecx, ecx
xor edi, edi
xor esi, esi
add r8, rax
mov rax, rbx
shr rax, 8
movzx ebx, bl
lea rdx, [0x005f5df0]
mov ebx, dword [rdx + rbx*4]
xor rbx, rax
movzx eax, bl
shr rbx, 8
mov eax, dword [rdx + rax*4]
xor rax, rbx
movzx ebx, al
shr rax, 8
mov ebx, dword [rdx + rbx*4]
xor rbx, rax
movzx eax, bl
shr rbx, 8
mov eax, dword [rdx + rax*4]
xor rax, rbx
movzx ebx, al
shr rax, 8
mov ebx, dword [rdx + rbx*4]
xor rbx, rax
movzx eax, bl
shr rbx, 8
mov eax, dword [rdx + rax*4]
xor rax, rbx
movzx ebx, al
shr rax, 8
mov ebx, dword [rdx + rbx*4]
xor rbx, rax
movzx eax, bl
shr rbx, 8
mov eax, dword [rdx + rax*4]
mov ebx, ebx
xor rcx, qword [r9 + 8]
xor rcx, rbx
xor rcx, rax
mov rax, rcx
shr rax, 8
movzx ecx, cl
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
mov ecx, ecx
xor r14, qword [r9 + 0x10]
xor r14, rcx
xor r14, rax
mov rax, r14
shr rax, 8
movzx ecx, r14b
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
mov ecx, ecx
xor rdi, qword [r9 + 0x18]
xor rdi, rcx
xor rdi, rax
mov rax, rdi
shr rax, 8
movzx ecx, dil
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
mov ecx, ecx
xor rsi, qword [r9 + 0x20]
xor rsi, rcx
xor rsi, rax
mov rax, rsi
shr rax, 8
movzx ecx, sil
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [rdx + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [rdx + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
xor ecx, dword [rdx + rax*4]
add r9, 0x28
cmp r8, 8
jb 0x5a882f
lea r11, [r8 - 8]
mov rdx, r11
and rdx, 0xfffffffffffffff8
lea r10, [rdx + 8]
lea rdi, [0x005f5df0]
mov rsi, r9
add r8, 0xfffffffffffffff8
movzx ebx, cl
shr ecx, 8
movzx eax, byte [rsi]
xor ebx, eax
xor ecx, dword [rdi + rbx*4]
movzx eax, cl
shr ecx, 8
movzx ebx, byte [rsi + 1]
xor eax, ebx
xor ecx, dword [rdi + rax*4]
movzx eax, cl
shr ecx, 8
movzx ebx, byte [rsi + 2]
xor eax, ebx
xor ecx, dword [rdi + rax*4]
movzx eax, cl
shr ecx, 8
movzx ebx, byte [rsi + 3]
xor eax, ebx
xor ecx, dword [rdi + rax*4]
movzx eax, cl
shr ecx, 8
movzx ebx, byte [rsi + 4]
xor eax, ebx
xor ecx, dword [rdi + rax*4]
movzx eax, cl
shr ecx, 8
movzx ebx, byte [rsi + 5]
xor eax, ebx
xor ecx, dword [rdi + rax*4]
movzx eax, cl
shr ecx, 8
movzx ebx, byte [rsi + 6]
xor eax, ebx
xor ecx, dword [rdi + rax*4]
movzx eax, cl
shr ecx, 8
movzx ebx, byte [rsi + 7]
xor eax, ebx
xor ecx, dword [rdi + rax*4]
add rsi, 8
cmp r8, 7
ja 0x5a8ec0
sub r11, rdx
add r9, r10
mov r8, r11
test r8, r8
jne 0x5a8838
mov eax, ecx
not eax
add rsp, 0x20
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret