Function at 0x140046110
Capabilities:
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
test rdx, rdx
je 0x1400462b5
mov rsi, r8
mov rdi, rdx
not ecx
cmp r8, 0x2f
jb 0x140046856
test dil, 7
je 0x1400462c2
mov r8d, ecx
shr r8d, 8
xor cl, byte [rdi]
lea rdx, [rdi + 1]
movzx r9d, cl
lea rax, [0x14009bbc0]
mov ecx, r8d
xor ecx, dword [rax + r9*4]
mov r9, rsi
dec r9
je 0x1400462bc
mov r8d, edx
and r8d, 7
je 0x1400462bc
mov r8d, ecx
shr r8d, 8
lea rdx, [rdi + 2]
xor cl, byte [rdi + 1]
movzx r9d, cl
mov ecx, r8d
xor ecx, dword [rax + r9*4]
mov r9, rsi
add r9, 0xfffffffffffffffe
je 0x1400462bc
mov r8d, edx
and r8d, 7
je 0x1400462bc
mov r8d, ecx
shr r8d, 8
lea rdx, [rdi + 3]
xor cl, byte [rdi + 2]
movzx r9d, cl
mov ecx, r8d
xor ecx, dword [rax + r9*4]
mov r9, rsi
add r9, 0xfffffffffffffffd
je 0x1400462bc
mov r8d, edx
and r8d, 7
je 0x1400462bc
mov r8d, ecx
shr r8d, 8
lea rdx, [rdi + 4]
xor cl, byte [rdi + 3]
movzx r9d, cl
mov ecx, r8d
xor ecx, dword [rax + r9*4]
mov r9, rsi
add r9, 0xfffffffffffffffc
je 0x1400462bc
mov r8d, edx
and r8d, 7
je 0x1400462bc
mov r8d, ecx
shr r8d, 8
lea rdx, [rdi + 5]
xor cl, byte [rdi + 4]
movzx r9d, cl
mov ecx, r8d
xor ecx, dword [rax + r9*4]
mov r9, rsi
add r9, 0xfffffffffffffffb
je 0x1400462bc
mov r8d, edx
and r8d, 7
je 0x1400462bc
mov r8d, ecx
shr r8d, 8
lea rdx, [rdi + 6]
xor cl, byte [rdi + 5]
movzx r9d, cl
mov ecx, r8d
xor ecx, dword [rax + r9*4]
mov r9, rsi
add r9, 0xfffffffffffffffa
je 0x1400462bc
mov r8d, edx
and r8d, 7
je 0x1400462bc
mov r8d, ecx
shr r8d, 8
lea rdx, [rdi + 7]
xor cl, byte [rdi + 6]
movzx r9d, cl
mov ecx, r8d
xor ecx, dword [rax + r9*4]
mov r9, rsi
add r9, 0xfffffffffffffff9
je 0x1400462bc
mov r8d, edx
and r8d, 7
je 0x1400462bc
add rsi, 0xfffffffffffffff8
mov edx, ecx
shr edx, 8
xor cl, byte [rdi + 7]
add rdi, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
jmp 0x1400462c2
xor eax, eax
jmp 0x14004696c
mov rdi, rdx
mov rsi, r9
movabs rdx, 0xcccccccccccccccd
mov rax, rsi
mul rdx
mov rax, rdx
shr rax, 5
lea rdx, [rax*8]
lea rbx, [rdx + rdx*4]
mov r9, rax
dec r9
je 0x1400465fb
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], rsi
lea rax, [rax + rax*4]
lea rax, [rax*8 - 0x28]
mov qword [rsp + 8], rax
lea r11, [0x14009bfc0]
mov qword [rsp + 0x18], rdi
xor r15d, r15d
xor edx, edx
xor ebx, ebx
xor eax, eax
nop word cs:[rax + rax]
mov qword [rsp], rdi
mov qword [rsp + 0x30], r9
mov r8, qword [rdi]
mov qword [rsp + 0x28], r8
xor ecx, r8d
movzx r8d, cl
movzx esi, ch
mov ebp, dword [r11 + rsi*4 + 0x400]
xor ebp, dword [r11 + r8*4]
mov r8d, ecx
shr r8d, 0xe
and r8d, 0x3fc
xor ebp, dword [r8 + r11 + 0x800]
shr ecx, 0x18
xor ebp, dword [r11 + rcx*4 + 0xc00]
mov rcx, qword [rsp]
mov r12, qword [rcx + 8]
xor edx, r12d
movzx ecx, dl
movzx esi, dh
mov r13d, dword [r11 + rsi*4 + 0x400]
xor r13d, dword [r11 + rcx*4]
mov ecx, edx
shr ecx, 0xe
and ecx, 0x3fc
xor r13d, dword [rcx + r11 + 0x800]
shr edx, 0x18
xor r13d, dword [r11 + rdx*4 + 0xc00]
mov rcx, qword [rsp]
mov r9, qword [rcx + 0x10]
xor ebx, r9d
mov rcx, qword [rsp]
mov r10, qword [rcx + 0x18]
mov rdx, r15
xor edx, r10d
mov rcx, qword [rsp]
mov r14, qword [rcx + 0x20]
xor eax, r14d
movzx ecx, bl
movzx r8d, dl
movzx edi, al
movzx esi, bh
mov esi, dword [r11 + rsi*4 + 0x400]
xor esi, dword [r11 + rcx*4]
movzx ecx, dh
mov r15d, dword [r11 + rcx*4 + 0x400]
xor r15d, dword [r11 + r8*4]
movzx ecx, ah
mov r8d, dword [r11 + rcx*4 + 0x400]
xor r8d, dword [r11 + rdi*4]
mov ecx, ebx
shr ecx, 0xe
and ecx, 0x3fc
xor esi, dword [rcx + r11 + 0x800]
mov ecx, edx
shr ecx, 0xe
and ecx, 0x3fc
xor r15d, dword [rcx + r11 + 0x800]
mov ecx, eax
shr ecx, 0xe
and ecx, 0x3fc
xor r8d, dword [rcx + r11 + 0x800]
shr ebx, 0x18
xor esi, dword [r11 + rbx*4 + 0xc00]
shr edx, 0x18
xor r15d, dword [r11 + rdx*4 + 0xc00]
shr eax, 0x18
xor r8d, dword [r11 + rax*4 + 0xc00]
mov rcx, qword [rsp + 0x28]
mov rax, rcx
shr rax, 0x20
movzx eax, al
xor ebp, dword [r11 + rax*4 + 0x1000]
mov rax, r12
shr rax, 0x20
movzx eax, al
xor r13d, dword [r11 + rax*4 + 0x1000]
mov rax, r9
shr rax, 0x20
movzx eax, al
xor esi, dword [r11 + rax*4 + 0x1000]
mov rax, r10
shr rax, 0x20
movzx eax, al
xor r15d, dword [r11 + rax*4 + 0x1000]
mov rax, r14
shr rax, 0x20
movzx eax, al
xor r8d, dword [r11 + rax*4 + 0x1000]
mov rax, rcx
shr rax, 0x28
movzx eax, al
xor ebp, dword [r11 + rax*4 + 0x1400]
mov rax, r12
shr rax, 0x28
movzx eax, al
xor r13d, dword [r11 + rax*4 + 0x1400]
mov rax, r9
shr rax, 0x28
movzx eax, al
xor esi, dword [r11 + rax*4 + 0x1400]
mov rax, r10
shr rax, 0x28
movzx eax, al
xor r15d, dword [r11 + rax*4 + 0x1400]
mov rax, r14
shr rax, 0x28
movzx eax, al
xor r8d, dword [r11 + rax*4 + 0x1400]
mov rax, rcx
shr rax, 0x30
movzx eax, al
xor ebp, dword [r11 + rax*4 + 0x1800]
mov rax, r12
shr rax, 0x30
movzx eax, al
xor r13d, dword [r11 + rax*4 + 0x1800]
mov rax, r9
shr rax, 0x30
movzx eax, al
xor esi, dword [r11 + rax*4 + 0x1800]
mov rax, r10
shr rax, 0x30
movzx eax, al
xor r15d, dword [r11 + rax*4 + 0x1800]
mov rax, r14
shr rax, 0x30
movzx eax, al
xor r8d, dword [r11 + rax*4 + 0x1800]
mov rax, rcx
shr rax, 0x38
mov ecx, ebp
xor ecx, dword [r11 + rax*4 + 0x1c00]
shr r12, 0x38
mov edx, r13d
xor edx, dword [r11 + r12*4 + 0x1c00]
shr r9, 0x38
mov ebx, esi
xor ebx, dword [r11 + r9*4 + 0x1c00]
mov r9, qword [rsp + 0x30]
shr r10, 0x38
xor r15d, dword [r11 + r10*4 + 0x1c00]
shr r14, 0x38
mov eax, r8d
mov rdi, qword [rsp]
xor eax, dword [r11 + r14*4 + 0x1c00]
add rdi, 0x28
dec r9
jne 0x140046330
mov rdi, qword [rsp + 0x18]
add rdi, qword [rsp + 8]
mov edx, edx
mov r10d, eax
mov r8d, ebx
mov r11d, r15d
mov rsi, qword [rsp + 0x20]
mov rbx, qword [rsp + 0x10]
jmp 0x140046606
xor edx, edx
xor r11d, r11d
xor r10d, r10d
xor r8d, r8d
mov eax, ecx
xor rax, qword [rdi]
movzx ecx, al
shr rax, 8
lea r9, [0x14009bbc0]
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
xor ecx, dword [r9 + rax*4]
xor rdx, qword [rdi + 8]
xor rcx, rdx
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
xor eax, dword [r9 + rcx*4]
xor r8, qword [rdi + 0x10]
xor rax, r8
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
xor ecx, dword [r9 + rax*4]
sub rsi, rbx
xor r11, qword [rdi + 0x18]
xor rcx, r11
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
xor eax, dword [r9 + rcx*4]
xor r10, qword [rdi + 0x20]
xor rax, r10
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
mov eax, dword [r9 + rax*4]
xor rax, rcx
movzx ecx, al
shr rax, 8
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
movzx eax, cl
shr rcx, 8
xor ecx, dword [r9 + rax*4]
add rdi, 0x28
cmp rsi, 8
jb 0x1400468ed
lea rax, [0x14009bbc0]
nop word [rax + rax]
mov edx, ecx
xor cl, byte [rdi]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
xor dl, byte [rdi + 1]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov edx, ecx
xor cl, byte [rdi + 2]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
xor dl, byte [rdi + 3]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov edx, ecx
xor cl, byte [rdi + 4]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
add rsi, 0xfffffffffffffff8
mov ecx, edx
xor dl, byte [rdi + 5]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov edx, ecx
shr edx, 8
xor cl, byte [rdi + 6]
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
shr ecx, 8
xor dl, byte [rdi + 7]
add rdi, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
cmp rsi, 7
ja 0x140046870
test rsi, rsi
je 0x140046903
test sil, 1
jne 0x140046907
mov rdx, rsi
cmp rsi, 1
jne 0x14004692b
jmp 0x14004696a
mov eax, ecx
jmp 0x14004696a
lea rdx, [rsi - 1]
mov eax, ecx
shr eax, 8
xor cl, byte [rdi]
inc rdi
movzx ecx, cl
lea r8, [0x14009bbc0]
xor eax, dword [r8 + rcx*4]
mov ecx, eax
cmp rsi, 1
je 0x14004696a
xor r8d, r8d
lea r9, [0x14009bbc0]
mov eax, ecx
nop word [rax + rax]
mov ecx, eax
shr ecx, 8
xor al, byte [rdi + r8]
movzx eax, al
xor ecx, dword [r9 + rax*4]
mov eax, ecx
shr eax, 8
xor cl, byte [rdi + r8 + 1]
movzx ecx, cl
xor eax, dword [r9 + rcx*4]
add r8, 2
cmp rdx, r8
jne 0x140046940
not eax
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov r8d, r8d
jmp 0x140046110