Function at 0x140040000
Capabilities:
Hash data with crc32

Disassembly:
push r14
push rsi
push rdi
push rbx
sub rsp, 0x28
mov rdi, r8
test rdx, rdx
jne 0x140040029
xor ebx, ebx
test rdi, rdi
jne 0x14004001d
call fcn.140055da0
mov eax, ebx
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r14
ret
mov r14, rdx
mov ebx, ecx
cmp rdi, 0x40
jb 0x140040041
cmp dword [0x140139ad0], 0
jne 0x140040202
not ebx
test rdi, rdi
je 0x1400400b6
mov eax, r14d
and eax, 3
test rax, rax
je 0x1400400b6
lea rsi, [r14 + 1]
movzx eax, byte [r14]
movzx edx, bl
xor edx, eax
lea rax, [0x140109f20]
shr ebx, 8
xor ebx, dword [rax + rdx*4]
mov rdx, rdi
dec rdx
je 0x1400400b0
mov ecx, esi
and ecx, 3
test rcx, rcx
je 0x1400400b0
movzx ecx, byte [r14 + 1]
add r14, 2
movzx edx, bl
xor edx, ecx
shr ebx, 8
xor ebx, dword [rax + rdx*4]
mov rcx, rdi
add rcx, 0xfffffffffffffffe
je 0x1400400ab
mov edx, r14d
and edx, 3
test rdx, rdx
jne 0x140040274
mov rdi, rcx
jmp 0x1400400b6
mov r14, rsi
mov rdi, rdx
cmp rdi, 0x20
jae 0x1400402ae
cmp rdi, 4
jb 0x140040196
xor ebx, dword [r14]
movzx eax, bl
lea rcx, [0x140109f20]
movzx edx, bh
mov rsi, rbx
mov edx, dword [rcx + rdx*4 + 0x800]
xor edx, dword [rcx + rax*4 + 0xc00]
shr esi, 0x10
movzx eax, sil
xor edx, dword [rcx + rax*4 + 0x400]
shr ebx, 0x18
mov eax, edx
xor eax, dword [rcx + rbx*4]
mov rbx, rax
lea rax, [rdi - 4]
cmp rax, 4
jb 0x1400401a5
xor ebx, dword [r14 + 4]
movzx eax, bl
movzx edx, bh
mov rsi, rbx
mov edx, dword [rcx + rdx*4 + 0x800]
xor edx, dword [rcx + rax*4 + 0xc00]
shr esi, 0x10
movzx eax, sil
xor edx, dword [rcx + rax*4 + 0x400]
shr ebx, 0x18
mov eax, edx
xor eax, dword [rcx + rbx*4]
mov rbx, rax
lea rax, [rdi - 8]
cmp rax, 4
jb 0x1400401ab
xor ebx, dword [r14 + 8]
add r14, 0xc
movzx eax, bl
movzx edx, bh
mov edx, dword [rcx + rdx*4 + 0x800]
xor edx, dword [rcx + rax*4 + 0xc00]
mov eax, ebx
shr eax, 0x10
movzx eax, al
xor edx, dword [rcx + rax*4 + 0x400]
shr ebx, 0x18
xor edx, dword [rcx + rbx*4]
add rdi, 0xfffffffffffffff4
mov rax, rdi
cmp rdi, 4
jae 0x14004022f
mov ebx, edx
jmp 0x140040199
mov rax, rdi
test rax, rax
jne 0x1400401b1
not ebx
jmp 0x14004001d
add r14, 4
jmp 0x140040199
add r14, 8
jmp 0x140040199
movzx ecx, byte [r14]
movzx edx, bl
xor edx, ecx
lea rcx, [0x140109f20]
shr ebx, 8
xor ebx, dword [rcx + rdx*4]
cmp rax, 1
je 0x14004019e
movzx edx, byte [r14 + 1]
movzx edi, bl
xor edi, edx
shr ebx, 8
xor ebx, dword [rcx + rdi*4]
cmp rax, 2
je 0x14004019e
mov edx, 2
movzx esi, byte [r14 + rdx]
movzx edi, bl
xor edi, esi
shr ebx, 8
xor ebx, dword [rcx + rdi*4]
inc rdx
cmp rax, rdx
je 0x14004019e
jmp 0x1400401e8
mov rsi, rdi
and rsi, 0xfffffffffffffff0
not ebx
mov rcx, r14
mov rdx, rsi
mov r8d, ebx
call fcn.14000bd70
mov ebx, eax
not ebx
and rdi, 0xf
je 0x14004001d
add r14, rsi
jmp 0x140040041
xor edx, dword [r14]
add r14, 4
movzx ebx, dl
movzx esi, dh
mov edi, dword [rcx + rsi*4 + 0x800]
xor edi, dword [rcx + rbx*4 + 0xc00]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
xor edi, dword [rcx + rbx*4 + 0x400]
mov rbx, rdi
shr edx, 0x18
xor ebx, dword [rcx + rdx*4]
add rax, 0xfffffffffffffffc
mov edx, ebx
cmp rax, 3
jbe 0x140040199
jmp 0x14004022f
mov ecx, 2
sub rcx, rdi
mov rdi, rcx
movzx ecx, byte [r14]
inc r14
movzx edx, bl
xor edx, ecx
shr ebx, 8
xor ebx, dword [rax + rdx*4]
cmp rdi, 0xffffffffffffffff
lea rdi, [rdi + 1]
je 0x1400402a6
mov ecx, r14d
and ecx, 3
test rcx, rcx
jne 0x14004027f
neg rdi
jmp 0x1400400b6
lea rax, [0x140109f20]
xor ebx, dword [r14]
movzx edx, bl
movzx ecx, bh
mov ecx, dword [rax + rcx*4 + 0x800]
xor ecx, dword [rax + rdx*4 + 0xc00]
mov edx, ebx
shr edx, 0x10
movzx edx, dl
xor ecx, dword [rax + rdx*4 + 0x400]
shr ebx, 0x18
xor ecx, dword [rax + rbx*4]
xor ecx, dword [r14 + 4]
movzx ebx, cl
movzx edx, ch
mov edx, dword [rax + rdx*4 + 0x800]
xor edx, dword [rax + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor edx, dword [rax + rbx*4 + 0x400]
shr ecx, 0x18
xor edx, dword [rax + rcx*4]
xor edx, dword [r14 + 8]
movzx ebx, dl
movzx ecx, dh
mov ecx, dword [rax + rcx*4 + 0x800]
xor ecx, dword [rax + rbx*4 + 0xc00]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [rax + rbx*4 + 0x400]
shr edx, 0x18
xor ecx, dword [rax + rdx*4]
xor ecx, dword [r14 + 0xc]
movzx ebx, cl
movzx edx, ch
mov edx, dword [rax + rdx*4 + 0x800]
xor edx, dword [rax + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor edx, dword [rax + rbx*4 + 0x400]
shr ecx, 0x18
xor edx, dword [rax + rcx*4]
xor edx, dword [r14 + 0x10]
movzx ebx, dl
movzx ecx, dh
mov ecx, dword [rax + rcx*4 + 0x800]
xor ecx, dword [rax + rbx*4 + 0xc00]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [rax + rbx*4 + 0x400]
shr edx, 0x18
xor ecx, dword [rax + rdx*4]
xor ecx, dword [r14 + 0x14]
movzx ebx, cl
movzx edx, ch
mov edx, dword [rax + rdx*4 + 0x800]
xor edx, dword [rax + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor edx, dword [rax + rbx*4 + 0x400]
shr ecx, 0x18
xor edx, dword [rax + rcx*4]
xor edx, dword [r14 + 0x18]
movzx ebx, dl
movzx ecx, dh
mov ecx, dword [rax + rcx*4 + 0x800]
xor ecx, dword [rax + rbx*4 + 0xc00]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [rax + rbx*4 + 0x400]
shr edx, 0x18
xor ecx, dword [rax + rdx*4]
xor ecx, dword [r14 + 0x1c]
add r14, 0x20
movzx edx, cl
movzx esi, ch
mov ebx, dword [rax + rsi*4 + 0x800]
xor ebx, dword [rax + rdx*4 + 0xc00]
mov edx, ecx
shr edx, 0x10
movzx edx, dl
xor ebx, dword [rax + rdx*4 + 0x400]
shr ecx, 0x18
xor ebx, dword [rax + rcx*4]
add rdi, 0xffffffffffffffe0
cmp rdi, 0x1f
jbe 0x1400400c0
jmp 0x1400402b5
mov r8d, r8d
jmp 0x140040000