Function at 0x140227ef0
Capabilities:
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rdi, r8
test rdx, rdx
je 0x140228036
mov rsi, rdx
mov r8d, ecx
cmp rdi, 0x40
jb 0x140228044
cmp dword [0x140518d90], 0
je 0x140228044
mov rbx, rdi
and rbx, 0xfffffffffffffff0
not r8d
mov rcx, rsi
mov rdx, rbx
call fcn.1401ef880
mov r8d, eax
xor eax, eax
mov rcx, rdi
and rcx, 0xf
cmovne rax, rbx
and rdi, 0xf
je 0x140228053
add rsi, rax
cmp rdi, 8
jb 0x140227ff3
lea rax, [0x140490610]
mov ecx, r8d
xor r8b, byte [rsi]
shr ecx, 8
movzx edx, r8b
xor ecx, dword [rax + rdx*4]
mov edx, ecx
xor cl, byte [rsi + 1]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
xor dl, byte [rsi + 2]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov edx, ecx
xor cl, byte [rsi + 3]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
xor dl, byte [rsi + 4]
shr ecx, 8
movzx edx, dl
xor ecx, dword [rax + rdx*4]
add rdi, 0xfffffffffffffff8
mov edx, ecx
xor cl, byte [rsi + 5]
shr edx, 8
movzx ecx, cl
xor edx, dword [rax + rcx*4]
mov ecx, edx
shr ecx, 8
xor dl, byte [rsi + 6]
movzx edx, dl
xor ecx, dword [rax + rdx*4]
mov r8d, ecx
shr r8d, 8
xor cl, byte [rsi + 7]
add rsi, 8
movzx ecx, cl
xor r8d, dword [rax + rcx*4]
cmp rdi, 7
ja 0x140227f6c
test rdi, rdi
je 0x1402283f3
xor eax, eax
lea rcx, [0x140490610]
mov ebx, r8d
xor r8b, byte [rsi + rax]
shr ebx, 8
movzx edx, r8b
xor ebx, dword [rcx + rdx*4]
inc rax
mov r8d, ebx
cmp rdi, rax
jne 0x140228005
not ebx
mov eax, ebx
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor ebx, ebx
test rdi, rdi
jne 0x140228023
call fcn.14023e350
jmp 0x140228023
not r8d
cmp rdi, 0x2f
jb 0x140227f5b
jmp 0x14022805b
not r8d
mov ebx, r8d
jmp 0x140228023
test sil, 7
jne 0x1402283fb
movabs rcx, 0xcccccccccccccccd
mov rax, rdi
mul rcx
shr rdx, 5
lea rax, [rdx*8]
lea rax, [rax + rax*4]
xor r14d, r14d
mov rcx, rdx
dec rcx
jne 0x140228441
xor r10d, r10d
xor r9d, r9d
xor edx, edx
mov r8d, r8d
xor r8, qword [rsi]
mov r11, r8
shr r11, 8
and r8d, 0xff
lea rcx, [0x140490610]
mov r8d, dword [rcx + r8*4]
xor r8, r11
mov r11, r8
shr r11, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r11
mov r11, r8
shr r11, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r11
mov r11, r8
shr r11, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r11
mov r11, r8
shr r11, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r11
mov r11, r8
shr r11, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r11
mov r11, r8
shr r11, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r11
mov r11, r8
shr r11, 8
and r8d, 0xff
xor r11d, dword [rcx + r8*4]
xor r11, r14
xor r11, qword [rsi + 8]
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
mov r11d, dword [rcx + r11*4]
xor r11, r8
mov r8, r11
shr r8, 8
and r11d, 0xff
xor r8d, dword [rcx + r11*4]
xor r8, r10
xor r8, qword [rsi + 0x10]
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, r10
mov r10, r8
shr r10, 8
and r8d, 0xff
xor r10d, dword [rcx + r8*4]
sub rdi, rax
xor r10, r9
xor r10, qword [rsi + 0x18]
mov rax, r10
shr rax, 8
and r10d, 0xff
mov r8d, dword [rcx + r10*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
mov r8d, dword [rcx + r8*4]
xor r8, rax
mov rax, r8
shr rax, 8
and r8d, 0xff
xor eax, dword [rcx + r8*4]
xor rax, rdx
xor rax, qword [rsi + 0x20]
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov rdx, rax
shr rdx, 8
and eax, 0xff
mov eax, dword [rcx + rax*4]
xor rax, rdx
mov r8, rax
shr r8, 8
and eax, 0xff
xor r8d, dword [rcx + rax*4]
add rsi, 0x28
jmp 0x140227f5b
mov ebx, r8d
jmp 0x140228021
lea rax, [rsi + 1]
lea rcx, [0x140490610]
mov rdx, rdi
dec rdi
mov r9d, r8d
shr r9d, 8
xor r8b, byte [rsi]
inc rsi
movzx r10d, r8b
mov r8d, r9d
xor r8d, dword [rcx + r10*4]
cmp rdx, 1
je 0x140228065
mov edx, eax
and edx, 7
inc rax
test rdx, rdx
je 0x140228065
jmp 0x140228406
lea rdx, [rdx + rdx*4]
lea rdx, [rdx*8 - 0x28]
mov qword [rsp + 0x60], rdx
xor ebp, ebp
xor r13d, r13d
xor r9d, r9d
mov rdx, rsi
mov qword [rsp + 0x58], rdx
mov rbx, qword [rdx]
mov qword [rsp + 0x28], rbx
mov r11, qword [rdx + 8]
mov qword [rsp + 0x30], r11
xor r8d, ebx
xor r9d, r11d
mov r11, qword [rdx + 0x10]
mov qword [rsp + 0x50], r11
xor r13d, r11d
mov r11, qword [rdx + 0x18]
mov qword [rsp + 0x40], r11
xor ebp, r11d
mov rdx, qword [rdx + 0x20]
mov qword [rsp + 0x48], rdx
xor r14d, edx
mov edx, r8d
mov r11d, 0xff
and edx, r11d
mov ebx, r9d
and ebx, r11d
mov r15d, r13d
and r15d, r11d
mov r12d, ebp
and r12d, r11d
mov r10d, 0xff
mov r11d, r8d
shr r11d, 8
and r11d, r10d
lea r10, [0x140490a10]
mov r11d, dword [r10 + r11*4 + 0x400]
xor r11d, dword [r10 + rdx*4]
mov dword [rsp + 0x20], r11d
mov edx, r9d
shr edx, 8
mov r11d, 0xff
and edx, r11d
mov edx, dword [r10 + rdx*4 + 0x400]
xor edx, dword [r10 + rbx*4]
mov r11d, edx
mov ebx, r13d
shr ebx, 8
mov edx, 0xff
and ebx, edx
mov edx, dword [r10 + rbx*4 + 0x400]
xor edx, dword [r10 + r15*4]
mov dword [rsp + 0x3c], edx
mov r15d, ebp
shr r15d, 8
mov ebx, 0xff
and r15d, ebx
mov r15d, dword [r10 + r15*4 + 0x400]
xor r15d, dword [r10 + r12*4]
mov edx, r14d
and edx, ebx
mov r12d, r14d
shr r12d, 8
and r12d, ebx
mov r12d, dword [r10 + r12*4 + 0x400]
xor r12d, dword [r10 + rdx*4]
mov edx, r8d
shr edx, 0xe
mov ebx, 0x3fc
and edx, ebx
mov ebx, dword [rsp + 0x20]
xor ebx, dword [rdx + r10 + 0x800]
mov dword [rsp + 0x20], ebx
mov edx, r9d
shr edx, 0xe
mov ebx, 0x3fc
and edx, ebx
xor r11d, dword [rdx + r10 + 0x800]
mov dword [rsp + 0x24], r11d
mov edx, r13d
shr edx, 0xe
and edx, ebx
mov r11d, 0x3fc
mov ebx, dword [rsp + 0x3c]
xor ebx, dword [rdx + r10 + 0x800]
mov edx, ebp
shr edx, 0xe
and edx, r11d
xor r15d, dword [rdx + r10 + 0x800]
mov edx, r14d
shr edx, 0xe
and edx, r11d
xor r12d, dword [rdx + r10 + 0x800]
shr r8d, 0x18
mov r11d, dword [rsp + 0x20]
xor r11d, dword [r10 + r8*4 + 0xc00]
shr r9d, 0x18
mov r8d, dword [rsp + 0x24]
xor r8d, dword [r10 + r9*4 + 0xc00]
shr r13d, 0x18
xor ebx, dword [r10 + r13*4 + 0xc00]
shr ebp, 0x18
xor r15d, dword [r10 + rbp*4 + 0xc00]
shr r14d, 0x18
xor r12d, dword [r10 + r14*4 + 0xc00]
mov r13, qword [rsp + 0x28]
mov rdx, r13
shr rdx, 0x20
mov ebp, 0xff
and edx, ebp
xor r11d, dword [r10 + rdx*4 + 0x1000]
mov dword [rsp + 0x20], r11d
mov r9, qword [rsp + 0x30]
mov rdx, r9
shr rdx, 0x20
and edx, ebp
xor r8d, dword [r10 + rdx*4 + 0x1000]
mov dword [rsp + 0x24], r8d
mov r14, qword [rsp + 0x50]
mov rdx, r14
shr rdx, 0x20
mov r8d, 0xff
and edx, r8d
xor ebx, dword [r10 + rdx*4 + 0x1000]
mov rbp, qword [rsp + 0x40]
mov rdx, rbp
shr rdx, 0x20
and edx, r8d
xor r15d, dword [r10 + rdx*4 + 0x1000]
mov r11, qword [rsp + 0x48]
mov rdx, r11
shr rdx, 0x20
and edx, r8d
xor r12d, dword [r10 + rdx*4 + 0x1000]
mov rdx, r13
shr rdx, 0x28
and edx, r8d
mov r13d, 0xff
mov r8d, dword [rsp + 0x20]
xor r8d, dword [r10 + rdx*4 + 0x1400]
mov rdx, r9
shr rdx, 0x28
and edx, r13d
mov r9d, dword [rsp + 0x24]
xor r9d, dword [r10 + rdx*4 + 0x1400]
mov dword [rsp + 0x24], r9d
mov rdx, r14
mov r13, r14
shr rdx, 0x28
mov r9d, 0xff
and edx, r9d
xor ebx, dword [r10 + rdx*4 + 0x1400]
mov rdx, rbp
shr rdx, 0x28
and edx, r9d
xor r15d, dword [r10 + rdx*4 + 0x1400]
shr r11, 0x28
and r11d, r9d
xor r12d, dword [r10 + r11*4 + 0x1400]
mov rdx, qword [rsp + 0x28]
shr rdx, 0x30
and edx, r9d
xor r8d, dword [r10 + rdx*4 + 0x1800]
mov rdx, qword [rsp + 0x30]
shr rdx, 0x30
and edx, r9d
mov r11d, 0xff
mov r9d, dword [rsp + 0x24]
xor r9d, dword [r10 + rdx*4 + 0x1800]
mov rdx, r14
shr rdx, 0x30
and edx, r11d
mov r11d, ebx
xor r11d, dword [r10 + rdx*4 + 0x1800]
mov r14, qword [rsp + 0x40]
mov rdx, r14
shr rdx, 0x30
mov ebx, 0xff
and edx, ebx
xor r15d, dword [r10 + rdx*4 + 0x1800]
mov rbx, qword [rsp + 0x48]
mov rdx, rbx
shr rdx, 0x30
mov ebp, 0xff
and edx, ebp
xor r12d, dword [r10 + rdx*4 + 0x1800]
mov rdx, qword [rsp + 0x28]
shr rdx, 0x38
xor r8d, dword [r10 + rdx*4 + 0x1c00]
mov rdx, qword [rsp + 0x30]
shr rdx, 0x38
xor r9d, dword [r10 + rdx*4 + 0x1c00]
mov rdx, r13
shr rdx, 0x38
mov r13d, r11d
xor r13d, dword [r10 + rdx*4 + 0x1c00]
shr r14, 0x38
mov ebp, r15d
xor ebp, dword [r10 + r14*4 + 0x1c00]
shr rbx, 0x38
mov r14d, r12d
xor r14d, dword [r10 + rbx*4 + 0x1c00]
mov rdx, qword [rsp + 0x58]
add rdx, 0x28
dec rcx
jne 0x14022845d
add rsi, qword [rsp + 0x60]
mov edx, r14d
mov r14d, r9d
mov r10d, r13d
mov r9d, ebp
jmp 0x14022809c