Function at 0x14004e0c0
Capabilities:
Hash data with crc32

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x28
test rdx, rdx
je 0x14004e1ae
mov r12, rdx
mov ebx, ecx
mov r15d, r8d
cmp r8d, 0x40
jb 0x14004e0f1
cmp dword [0x1401772ec], 0
jne 0x14004e2fc
not ebx
test r15, r15
je 0x14004e1db
mov eax, r12d
and eax, 3
test rax, rax
je 0x14004e1db
lea rdi, [r12 + 1]
movzx eax, byte [r12]
movzx edx, bl
xor edx, eax
lea rax, [0x14014db40]
shr ebx, 8
xor ebx, dword [rax + rdx*4]
mov rdx, r15
dec rdx
je 0x14004e251
mov ecx, edi
and ecx, 3
test rcx, rcx
je 0x14004e251
lea rsi, [r12 + 2]
movzx edx, byte [r12 + 1]
movzx edi, bl
xor edi, edx
shr ebx, 8
xor ebx, dword [rax + rdi*4]
mov rdx, r15
add rdx, 0xfffffffffffffffe
je 0x14004e1d5
mov ecx, esi
and ecx, 3
test rcx, rcx
je 0x14004e1d5
lea rsi, [r12 + 3]
movzx edx, byte [r12 + 2]
movzx edi, bl
xor edi, edx
shr ebx, 8
xor ebx, dword [rax + rdi*4]
mov rdx, r15
add rdx, 0xfffffffffffffffd
je 0x14004e1d5
mov ecx, esi
and ecx, 3
test rcx, rcx
je 0x14004e1d5
movzx ecx, byte [r12 + 3]
add r12, 4
movzx edx, bl
xor edx, ecx
shr ebx, 8
xor ebx, dword [rax + rdx*4]
add r15, 0xfffffffffffffffc
jmp 0x14004e1db
test r8d, r8d
jne 0x14004e4f4
lea rcx, [0x1401772f0]
lea rdx, [0x140105100]
xor ebx, ebx
xor r8d, r8d
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_InitOnceExecuteOnce]
jmp 0x14004e1f2
mov r12, rsi
mov r15, rdx
cmp r15, 0x20
jae 0x14004e329
cmp r15, 4
jae 0x14004e202
test r15, r15
jne 0x14004e256
not ebx
mov eax, ebx
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
xor ebx, dword [r12]
add r12, 4
mov eax, 0xff
mov edi, ebx
and edi, eax
lea rcx, [0x14014db40]
mov edx, ebx
shr edx, 8
and edx, eax
mov esi, dword [rcx + rdx*4 + 0x800]
xor esi, dword [rcx + rdi*4 + 0xc00]
mov edi, ebx
shr edi, 0x10
and edi, eax
xor esi, dword [rcx + rdi*4 + 0x400]
shr ebx, 0x18
xor esi, dword [rcx + rbx*4]
add r15, 0xfffffffffffffffc
cmp r15, 4
jae 0x14004e2b5
mov ebx, esi
jmp 0x14004e1eb
mov r12, rdi
jmp 0x14004e1d8
movzx eax, byte [r12]
movzx ecx, bl
xor ecx, eax
lea rax, [0x14014db40]
shr ebx, 8
xor ebx, dword [rax + rcx*4]
cmp r15, 1
je 0x14004e1f0
movzx ecx, byte [r12 + 1]
movzx edx, bl
xor edx, ecx
shr ebx, 8
xor ebx, dword [rax + rdx*4]
cmp r15, 2
je 0x14004e1f0
mov ecx, 2
movzx edx, byte [r12 + rcx]
movzx edi, bl
xor edi, edx
shr ebx, 8
xor ebx, dword [rax + rdi*4]
inc rcx
cmp r15, rcx
je 0x14004e1f0
jmp 0x14004e297
xor esi, dword [r12]
add r12, 4
mov edi, esi
and edi, eax
mov edx, esi
shr edx, 8
and edx, eax
mov ebx, dword [rcx + rdx*4 + 0x800]
xor ebx, dword [rcx + rdi*4 + 0xc00]
mov edx, esi
shr edx, 0x10
and edx, eax
xor ebx, dword [rcx + rdx*4 + 0x400]
shr esi, 0x18
xor ebx, dword [rcx + rsi*4]
add r15, 0xfffffffffffffffc
mov esi, ebx
cmp r15, 3
jbe 0x14004e1eb
jmp 0x14004e2b5
mov r14d, r15d
and r14d, 0xfffffff0
not ebx
mov rcx, r12
mov rdx, r14
mov r8d, ebx
call fcn.14004e500
mov ebx, eax
not ebx
and r15, 0xf
je 0x14004e1f2
add r12, r14
jmp 0x14004e0f1
mov r8d, 0xff
lea rcx, [0x14014db40]
xor ebx, dword [r12]
mov edi, ebx
and edi, r8d
mov edx, ebx
shr edx, 8
and edx, r8d
mov eax, dword [rcx + rdx*4 + 0x800]
xor eax, dword [rcx + rdi*4 + 0xc00]
mov esi, ebx
shr esi, 0x10
and esi, r8d
xor eax, dword [rcx + rsi*4 + 0x400]
shr ebx, 0x18
xor eax, dword [rcx + rbx*4]
xor eax, dword [r12 + 4]
mov ebx, eax
and ebx, r8d
mov edx, eax
shr edx, 8
and edx, r8d
mov edi, dword [rcx + rdx*4 + 0x800]
xor edi, dword [rcx + rbx*4 + 0xc00]
mov edx, eax
shr edx, 0x10
and edx, r8d
xor edi, dword [rcx + rdx*4 + 0x400]
shr eax, 0x18
xor edi, dword [rcx + rax*4]
xor edi, dword [r12 + 8]
mov eax, edi
and eax, r8d
mov edx, edi
shr edx, 8
and edx, r8d
mov ebx, dword [rcx + rdx*4 + 0x800]
xor ebx, dword [rcx + rax*4 + 0xc00]
mov eax, edi
shr eax, 0x10
and eax, r8d
xor ebx, dword [rcx + rax*4 + 0x400]
shr edi, 0x18
xor ebx, dword [rcx + rdi*4]
xor ebx, dword [r12 + 0xc]
mov eax, ebx
and eax, r8d
mov edx, ebx
shr edx, 8
and edx, r8d
mov edi, dword [rcx + rdx*4 + 0x800]
xor edi, dword [rcx + rax*4 + 0xc00]
mov eax, ebx
shr eax, 0x10
and eax, r8d
xor edi, dword [rcx + rax*4 + 0x400]
shr ebx, 0x18
xor edi, dword [rcx + rbx*4]
xor edi, dword [r12 + 0x10]
mov eax, edi
and eax, r8d
mov edx, edi
shr edx, 8
and edx, r8d
mov ebx, dword [rcx + rdx*4 + 0x800]
xor ebx, dword [rcx + rax*4 + 0xc00]
mov eax, edi
shr eax, 0x10
and eax, r8d
xor ebx, dword [rcx + rax*4 + 0x400]
shr edi, 0x18
xor ebx, dword [rcx + rdi*4]
xor ebx, dword [r12 + 0x14]
mov eax, ebx
and eax, r8d
mov edx, ebx
shr edx, 8
and edx, r8d
mov edi, dword [rcx + rdx*4 + 0x800]
xor edi, dword [rcx + rax*4 + 0xc00]
mov eax, ebx
shr eax, 0x10
and eax, r8d
xor edi, dword [rcx + rax*4 + 0x400]
shr ebx, 0x18
xor edi, dword [rcx + rbx*4]
xor edi, dword [r12 + 0x18]
mov eax, edi
and eax, r8d
mov edx, edi
shr edx, 8
and edx, r8d
mov esi, dword [rcx + rdx*4 + 0x800]
xor esi, dword [rcx + rax*4 + 0xc00]
mov eax, edi
shr eax, 0x10
and eax, r8d
xor esi, dword [rcx + rax*4 + 0x400]
shr edi, 0x18
xor esi, dword [rcx + rdi*4]
xor esi, dword [r12 + 0x1c]
add r12, 0x20
mov eax, esi
and eax, r8d
mov edx, esi
shr edx, 8
and edx, r8d
mov ebx, dword [rcx + rdx*4 + 0x800]
xor ebx, dword [rcx + rax*4 + 0xc00]
mov eax, esi
shr eax, 0x10
and eax, r8d
xor ebx, dword [rcx + rax*4 + 0x400]
shr esi, 0x18
xor ebx, dword [rcx + rsi*4]
add r15, 0xffffffffffffffe0
cmp r15, 0x1f
jbe 0x14004e1e5
jmp 0x14004e336
xor ebx, ebx
jmp 0x14004e1f2