Function at 0x140040050
Capabilities:
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov r10, rdx
mov eax, ecx
not eax
cmp r8, 0x40
jb 0x140040436
lea r9, [0x140081530]
nop word cs:[rax + rax]
movzx edx, byte [r10 + 0x2e]
movzx r11d, byte [r10 + 0x2f]
movzx ecx, byte [r10 + 0x2d]
movzx esi, byte [r10 + 0x2c]
mov ebx, dword [r9 + r11*4]
movzx edi, byte [r10 + 0x2b]
movzx r14d, byte [r10 + 0x2a]
xor ebx, dword [r9 + rdx*4 + 0x400]
movzx r11d, byte [r10 + 0x29]
movzx r15d, byte [r10 + 0x1e]
movzx edx, byte [r10 + 0x1f]
mov edx, dword [r9 + rdx*4]
xor edx, dword [r9 + r15*4 + 0x400]
xor ebx, dword [r9 + rcx*4 + 0x800]
movzx r15d, byte [r10 + 0x1d]
movzx r12d, byte [r10 + 0xe]
movzx ecx, byte [r10 + 0xf]
mov ecx, dword [r9 + rcx*4]
xor ecx, dword [r9 + r12*4 + 0x400]
xor edx, dword [r9 + r15*4 + 0x800]
movzx r15d, byte [r10 + 0x1c]
movzx r12d, byte [r10 + 0xd]
xor ebx, dword [r9 + rsi*4 + 0xc00]
xor ecx, dword [r9 + r12*4 + 0x800]
xor edx, dword [r9 + r15*4 + 0xc00]
movzx esi, byte [r10 + 0x1b]
movzx r15d, byte [r10 + 0xc]
xor ebx, dword [r9 + rdi*4 + 0x1000]
xor ecx, dword [r9 + r15*4 + 0xc00]
xor edx, dword [r9 + rsi*4 + 0x1000]
movzx esi, byte [r10 + 0x1a]
movzx edi, byte [r10 + 0xb]
xor ebx, dword [r9 + r14*4 + 0x1400]
xor ecx, dword [r9 + rdi*4 + 0x1000]
xor edx, dword [r9 + rsi*4 + 0x1400]
movzx esi, byte [r10 + 0xa]
movzx r14d, byte [r10 + 9]
xor ecx, dword [r9 + rsi*4 + 0x1400]
movzx esi, byte [r10 + 8]
movzx edi, byte [r10 + 7]
xor ebx, dword [r9 + r11*4 + 0x1800]
mov r11d, eax
movzx ebp, ah
xor ecx, dword [r9 + r14*4 + 0x1800]
movzx r14d, al
xor ecx, dword [r9 + rsi*4 + 0x1c00]
shr eax, 0x18
movzx esi, byte [r10 + 3]
xor ecx, dword [r9 + rdi*4 + 0x2000]
xor esi, eax
movzx eax, byte [r10 + 6]
xor ecx, dword [r9 + rax*4 + 0x2400]
movzx eax, byte [r10 + 5]
movzx edi, byte [r10 + 4]
xor ecx, dword [r9 + rax*4 + 0x2800]
shr r11d, 0x10
movzx eax, r11b
xor ecx, dword [r9 + rdi*4 + 0x2c00]
movzx r11d, byte [r10 + 2]
xor r11d, eax
xor ecx, dword [r9 + rsi*4 + 0x3000]
movzx eax, byte [r10 + 1]
xor eax, ebp
xor ecx, dword [r9 + r11*4 + 0x3400]
movzx r11d, byte [r10]
xor r11d, r14d
xor ecx, dword [r9 + rax*4 + 0x3800]
xor ecx, dword [r9 + r11*4 + 0x3c00]
mov esi, ecx
movzx eax, ch
movzx edi, cl
movzx r14d, byte [r10 + 0x13]
shr ecx, 0x18
xor r14d, ecx
movzx ecx, byte [r10 + 0x19]
xor edx, dword [r9 + rcx*4 + 0x1800]
movzx r15d, byte [r10 + 0x28]
movzx ecx, byte [r10 + 0x18]
xor edx, dword [r9 + rcx*4 + 0x1c00]
movzx r12d, byte [r10 + 0x27]
movzx ecx, byte [r10 + 0x17]
xor edx, dword [r9 + rcx*4 + 0x2000]
movzx r11d, byte [r10 + 0x26]
movzx ecx, byte [r10 + 0x16]
xor edx, dword [r9 + rcx*4 + 0x2400]
movzx ecx, byte [r10 + 0x25]
movzx r13d, byte [r10 + 0x15]
xor edx, dword [r9 + r13*4 + 0x2800]
movzx r13d, byte [r10 + 0x14]
xor edx, dword [r9 + r13*4 + 0x2c00]
shr esi, 0x10
movzx esi, sil
movzx r13d, byte [r10 + 0x12]
xor edx, dword [r9 + r14*4 + 0x3000]
xor r13d, esi
movzx esi, byte [r10 + 0x24]
xor edx, dword [r9 + r13*4 + 0x3400]
movzx r14d, byte [r10 + 0x11]
xor r14d, eax
xor edx, dword [r9 + r14*4 + 0x3800]
movzx eax, byte [r10 + 0x10]
xor eax, edi
xor ebx, dword [r9 + r15*4 + 0x1c00]
xor edx, dword [r9 + rax*4 + 0x3c00]
xor ebx, dword [r9 + r12*4 + 0x2000]
mov edi, edx
movzx ebp, dh
movzx r14d, dl
shr edx, 0x18
movzx r15d, byte [r10 + 0x23]
movzx r12d, byte [r10 + 0x3f]
xor r15d, edx
movzx eax, byte [r10 + 0x3e]
mov eax, dword [r9 + rax*4 + 0x400]
xor ebx, dword [r9 + r11*4 + 0x2400]
xor eax, dword [r9 + r12*4]
xor ebx, dword [r9 + rcx*4 + 0x2800]
movzx ecx, byte [r10 + 0x22]
movzx edx, byte [r10 + 0x3d]
xor ebx, dword [r9 + rsi*4 + 0x2c00]
xor eax, dword [r9 + rdx*4 + 0x800]
movzx edx, byte [r10 + 0x3c]
shr edi, 0x10
xor eax, dword [r9 + rdx*4 + 0xc00]
movzx edx, byte [r10 + 0x21]
movzx r11d, dil
xor edx, ebp
movzx esi, byte [r10 + 0x3b]
xor ebx, dword [r9 + r15*4 + 0x3000]
xor eax, dword [r9 + rsi*4 + 0x1000]
movzx esi, byte [r10 + 0x20]
xor ecx, r11d
xor esi, r14d
movzx r11d, byte [r10 + 0x3a]
xor ebx, dword [r9 + rcx*4 + 0x3400]
xor eax, dword [r9 + r11*4 + 0x1400]
xor ebx, dword [r9 + rdx*4 + 0x3800]
movzx ecx, byte [r10 + 0x39]
movzx edx, byte [r10 + 0x38]
xor eax, dword [r9 + rcx*4 + 0x1800]
xor eax, dword [r9 + rdx*4 + 0x1c00]
xor ebx, dword [r9 + rsi*4 + 0x3c00]
movzx ecx, byte [r10 + 0x37]
xor eax, dword [r9 + rcx*4 + 0x2000]
movzx ecx, byte [r10 + 0x36]
movzx edx, byte [r10 + 0x35]
xor eax, dword [r9 + rcx*4 + 0x2400]
xor eax, dword [r9 + rdx*4 + 0x2800]
mov edx, ebx
movzx ecx, bh
movzx r11d, bl
movzx esi, byte [r10 + 0x33]
shr ebx, 0x18
xor esi, ebx
movzx edi, byte [r10 + 0x34]
xor eax, dword [r9 + rdi*4 + 0x2c00]
shr edx, 0x10
movzx edx, dl
xor eax, dword [r9 + rsi*4 + 0x3000]
movzx esi, byte [r10 + 0x32]
xor esi, edx
xor eax, dword [r9 + rsi*4 + 0x3400]
movzx edx, byte [r10 + 0x31]
xor edx, ecx
xor eax, dword [r9 + rdx*4 + 0x3800]
movzx ecx, byte [r10 + 0x30]
xor ecx, r11d
xor eax, dword [r9 + rcx*4 + 0x3c00]
add r8, 0xffffffffffffffc0
add r10, 0x40
cmp r8, 0x3f
ja 0x140040080
test r8, r8
je 0x1400404ae
test r8b, 1
jne 0x14004044c
mov rcx, r10
cmp r8, 1
jne 0x14004046d
jmp 0x1400404ae
lea rcx, [r10 + 1]
movzx edx, byte [r10]
xor dl, al
movzx edx, dl
lea r9, [0x140081530]
shr eax, 8
xor eax, dword [r9 + rdx*4]
cmp r8, 1
je 0x1400404ae
add r10, r8
lea rdx, [0x140081530]
nop word [rax + rax]
movzx r8d, byte [rcx]
xor r8b, al
movzx r8d, r8b
shr eax, 8
xor eax, dword [rdx + r8*4]
movzx r8d, byte [rcx + 1]
xor r8b, al
movzx r8d, r8b
shr eax, 8
xor eax, dword [rdx + r8*4]
add rcx, 2
cmp rcx, r10
jne 0x140040480
not eax
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret