Function at 0x14004e190
Capabilities:
Hash data with crc32

Disassembly:
push r14
push rsi
push rdi
push rbx
sub rsp, 0x28
mov rdi, r8
test rdx, rdx
je 0x14004e411
mov rsi, rdx
mov ebx, ecx
cmp rdi, 0x40
jb 0x14004e1e1
cmp dword [0x1401b9230], 0
je 0x14004e1e1
mov r14, rdi
and r14, 0xfffffffffffffff0
not ebx
mov rcx, rsi
mov rdx, r14
mov r8d, ebx
call fcn.140005400
mov ebx, eax
not ebx
and rdi, 0xf
je 0x14004e48a
add rsi, r14
not ebx
test rdi, rdi
je 0x14004e229
mov eax, esi
and eax, 3
test rax, rax
je 0x14004e229
lea rax, [0x14016d660]
nop dword [rax]
mov rcx, rdi
movzx edx, byte [rsi]
add rsi, 1
movzx edi, bl
xor edi, edx
shr ebx, 8
xor ebx, dword [rax + rdi*4]
lea rdi, [rcx - 1]
cmp rcx, 1
je 0x14004e229
mov ecx, esi
and ecx, 3
test rcx, rcx
jne 0x14004e200
cmp rdi, 0x20
jb 0x14004e3b1
lea rax, [0x14016d660]
nop word [rax + rax]
xor ebx, dword [rsi]
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 [rsi + 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 [rsi + 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 [rsi + 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 [rsi + 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 [rsi + 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 [rsi + 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 [rsi + 0x1c]
add rsi, 0x20
movzx edx, cl
movzx ebx, ch
mov ebx, dword [rax + rbx*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
ja 0x14004e240
cmp rdi, 4
jb 0x14004e41f
lea rcx, [0x14016d660]
nop
xor ebx, dword [rsi]
add rsi, 4
movzx edx, bl
movzx eax, bh
mov eax, dword [rcx + rax*4 + 0x800]
xor eax, dword [rcx + rdx*4 + 0xc00]
mov edx, ebx
shr edx, 0x10
movzx edx, dl
xor eax, dword [rcx + rdx*4 + 0x400]
shr ebx, 0x18
xor eax, dword [rcx + rbx*4]
add rdi, 0xfffffffffffffffc
mov ebx, eax
cmp rdi, 3
ja 0x14004e3c0
test rdi, rdi
je 0x14004e426
test dil, 1
jne 0x14004e42a
mov r8, rdi
cmp rdi, 1
jne 0x14004e44f
jmp 0x14004e488
xor ebx, ebx
test rdi, rdi
jne 0x14004e48a
call fcn.14008e4a0
jmp 0x14004e48a
mov eax, ebx
test rdi, rdi
jne 0x14004e400
mov ebx, eax
jmp 0x14004e488
movzx ecx, byte [rsi]
add rsi, 1
movzx edx, al
xor edx, ecx
lea rcx, [0x14016d660]
shr eax, 8
xor eax, dword [rcx + rdx*4]
lea r8, [rdi - 1]
mov ebx, eax
cmp rdi, 1
je 0x14004e488
xor edx, edx
lea rdi, [0x14016d660]
mov ebx, eax
nop word [rax + rax]
movzx eax, byte [rsi + rdx]
movzx ecx, bl
xor ecx, eax
shr ebx, 8
xor ebx, dword [rdi + rcx*4]
movzx eax, byte [rsi + rdx + 1]
movzx ecx, bl
xor ecx, eax
shr ebx, 8
xor ebx, dword [rdi + rcx*4]
add rdx, 2
cmp r8, rdx
jne 0x14004e460
not ebx
mov eax, ebx
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r14
ret