Function at 0x140039b20
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 0x140039fd1
mov rsi, rdx
mov r8d, ecx
cmp rdi, 0x40
jb 0x140039b55
cmp dword [0x14019f838], 0
jne 0x140039c3e
not r8d
cmp rdi, 0x2f
jae 0x140039c79
cmp rdi, 8
jb 0x140039bfa
lea rax, [0x140169960]
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 0x140039b73
test rdi, rdi
je 0x140039c39
xor eax, eax
lea rcx, [0x140169960]
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 0x140039c08
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
mov ebx, r8d
jmp 0x140039c24
mov rbx, rdi
and rbx, 0xfffffffffffffff0
not r8d
mov rcx, rsi
mov rdx, rbx
call fcn.14007a2e0
mov r8d, eax
xor eax, eax
mov rcx, rdi
and rcx, 0xf
cmovne rax, rbx
and rdi, 0xf
je 0x140039c71
add rsi, rax
jmp 0x140039b62
not r8d
mov ebx, r8d
jmp 0x140039c26
test sil, 7
jne 0x140039f8c
movabs rcx, 0xcccccccccccccccd
mov rax, rdi
mul rcx
shr rdx, 5
lea rax, [rdx*8]
lea rax, [rax + rax*4]
xor ecx, ecx
mov r9, rdx
dec r9
jne 0x140039fe6
xor ebx, ebx
xor r11d, r11d
xor r10d, r10d
mov r8d, r8d
xor r8, qword [rsi]
mov r14, r8
shr r14, 8
mov edx, 0xff
and r8, rdx
lea r9, [0x140169960]
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, r14
mov r14, r8
shr r14, 8
and r8, rdx
xor r14d, dword [r9 + r8*4]
xor r14, rcx
xor r14, qword [rsi + 8]
mov rcx, r14
shr rcx, 8
and r14, rdx
mov r8d, dword [r9 + r14*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
mov r8d, dword [r9 + r8*4]
xor r8, rcx
mov rcx, r8
shr rcx, 8
and r8, rdx
xor ecx, dword [r9 + r8*4]
xor rcx, rbx
xor rcx, qword [rsi + 0x10]
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, r8
mov r8, rcx
shr r8, 8
and rcx, rdx
xor r8d, dword [r9 + rcx*4]
sub rdi, rax
xor r8, r11
xor r8, qword [rsi + 0x18]
mov rax, r8
shr rax, 8
and r8, rdx
mov ecx, dword [r9 + r8*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
mov ecx, dword [r9 + rcx*4]
xor rcx, rax
mov rax, rcx
shr rax, 8
and rcx, rdx
xor eax, dword [r9 + rcx*4]
xor rax, r10
xor rax, qword [rsi + 0x20]
mov rcx, rax
shr rcx, 8
and rax, rdx
mov eax, dword [r9 + rax*4]
xor rax, rcx
mov rcx, rax
shr rcx, 8
and rax, rdx
mov eax, dword [r9 + rax*4]
xor rax, rcx
mov rcx, rax
shr rcx, 8
and rax, rdx
mov eax, dword [r9 + rax*4]
xor rax, rcx
mov rcx, rax
shr rcx, 8
and rax, rdx
mov eax, dword [r9 + rax*4]
xor rax, rcx
mov rcx, rax
shr rcx, 8
and rax, rdx
mov eax, dword [r9 + rax*4]
xor rax, rcx
mov rcx, rax
shr rcx, 8
and rax, rdx
mov eax, dword [r9 + rax*4]
xor rax, rcx
mov rcx, rax
shr rcx, 8
and rax, rdx
mov eax, dword [r9 + rax*4]
xor rax, rcx
mov r8, rax
shr r8, 8
and rax, rdx
xor r8d, dword [r9 + rax*4]
add rsi, 0x28
jmp 0x140039b62
lea rax, [rsi + 1]
lea rcx, [0x140169960]
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 0x140039c83
mov edx, eax
and edx, 7
inc rax
test rdx, rdx
jne 0x140039f97
jmp 0x140039c83
xor ebx, ebx
test rdi, rdi
jne 0x140039c26
call fcn.140045e60
jmp 0x140039c26
lea rdx, [rdx + rdx*4]
lea rdx, [rdx*8 - 0x28]
mov qword [rsp + 0x60], rdx
xor r12d, r12d
xor r15d, r15d
xor ebp, ebp
mov r10, rsi
mov r14d, r8d
mov qword [rsp + 0x58], r10
mov r11, qword [r10]
mov qword [rsp + 0x28], r11
mov r8, qword [r10 + 8]
mov qword [rsp + 0x30], r8
xor r14, r11
mov ebx, ebp
xor rbx, r8
mov r13d, r15d
mov r8, qword [r10 + 0x10]
mov qword [rsp + 0x50], r8
xor r13, r8
mov r11d, r12d
mov r8, qword [r10 + 0x18]
mov qword [rsp + 0x40], r8
xor r11, r8
mov rdx, r11
mov r8d, ecx
mov rcx, qword [r10 + 0x20]
mov qword [rsp + 0x48], rcx
xor r8, rcx
mov qword [rsp + 0x20], r8
mov r15, r14
mov r10d, 0xff
and r15, r10
mov r12, rbx
and r12, r10
mov r11, r13
and r11, r10
mov rcx, rdx
mov qword [rsp + 0x38], rdx
and rcx, r10
mov r8, r14
shr r8, 8
and r8, r10
mov ebp, 0xff
lea r10, [0x140169d60]
mov r8d, dword [r10 + r8*4 + 0x400]
xor r8d, dword [r10 + r15*4]
mov r15, rbx
shr r15, 8
and r15, rbp
mov ebp, dword [r10 + r15*4 + 0x400]
xor ebp, dword [r10 + r12*4]
mov r15, r13
shr r15, 8
mov r12d, 0xff
and r15, r12
mov r12d, 0xff
mov r15d, dword [r10 + r15*4 + 0x400]
xor r15d, dword [r10 + r11*4]
mov r11, rdx
shr r11, 8
and r11, r12
mov r12d, dword [r10 + r11*4 + 0x400]
xor r12d, dword [r10 + rcx*4]
mov rcx, qword [rsp + 0x20]
mov rdx, rcx
mov r11d, 0xff
and rdx, r11
shr rcx, 8
and rcx, r11
mov ecx, dword [r10 + rcx*4 + 0x400]
xor ecx, dword [r10 + rdx*4]
mov r11, r14
shr r11, 0xe
mov edx, 0x3fc
and r11, rdx
xor r8d, dword [r11 + r10 + 0x800]
mov r11, rbx
shr r11, 0xe
and r11, rdx
xor ebp, dword [r11 + r10 + 0x800]
mov r11, r13
shr r11, 0xe
and r11, rdx
xor r15d, dword [r11 + r10 + 0x800]
mov r11, qword [rsp + 0x38]
shr r11, 0xe
and r11, rdx
xor r12d, dword [r11 + r10 + 0x800]
mov r11, qword [rsp + 0x20]
shr r11, 0xe
and r11, rdx
xor ecx, dword [r11 + r10 + 0x800]
shr r14, 0x16
and r14, rdx
xor r8d, dword [r14 + r10 + 0xc00]
shr rbx, 0x16
and rbx, rdx
xor ebp, dword [rbx + r10 + 0xc00]
shr r13, 0x16
and r13, rdx
mov r14d, 0x3fc
xor r15d, dword [r13 + r10 + 0xc00]
mov rdx, qword [rsp + 0x38]
shr rdx, 0x16
and rdx, r14
xor r12d, dword [rdx + r10 + 0xc00]
mov rdx, qword [rsp + 0x20]
shr rdx, 0x16
and rdx, r14
xor ecx, dword [rdx + r10 + 0xc00]
mov rbx, qword [rsp + 0x28]
mov rdx, rbx
shr rdx, 0x1e
and rdx, r14
xor r8d, dword [rdx + r10 + 0x1000]
mov r11, qword [rsp + 0x30]
mov rdx, r11
shr rdx, 0x1e
and rdx, r14
xor ebp, dword [rdx + r10 + 0x1000]
mov r13, qword [rsp + 0x50]
mov rdx, r13
shr rdx, 0x1e
and rdx, r14
xor r15d, dword [rdx + r10 + 0x1000]
mov rdx, qword [rsp + 0x40]
shr rdx, 0x1e
and rdx, r14
xor r12d, dword [rdx + r10 + 0x1000]
mov rdx, qword [rsp + 0x48]
shr rdx, 0x1e
and rdx, r14
xor ecx, dword [rdx + r10 + 0x1000]
mov rdx, rbx
shr rdx, 0x26
and rdx, r14
xor r8d, dword [rdx + r10 + 0x1400]
mov rdx, r11
shr rdx, 0x26
and rdx, r14
xor ebp, dword [rdx + r10 + 0x1400]
mov rdx, r13
shr rdx, 0x26
and rdx, r14
xor r15d, dword [rdx + r10 + 0x1400]
mov r11, qword [rsp + 0x40]
mov rdx, r11
shr rdx, 0x26
and rdx, r14
xor r12d, dword [rdx + r10 + 0x1400]
mov rbx, qword [rsp + 0x48]
mov rdx, rbx
shr rdx, 0x26
and rdx, r14
xor ecx, dword [rdx + r10 + 0x1400]
mov rdx, qword [rsp + 0x28]
shr rdx, 0x2e
and rdx, r14
xor r8d, dword [rdx + r10 + 0x1800]
mov rdx, qword [rsp + 0x30]
shr rdx, 0x2e
and rdx, r14
xor ebp, dword [rdx + r10 + 0x1800]
mov rdx, r13
shr rdx, 0x2e
and rdx, r14
xor r15d, dword [rdx + r10 + 0x1800]
mov rdx, r11
shr rdx, 0x2e
and rdx, r14
xor r12d, dword [rdx + r10 + 0x1800]
mov rdx, rbx
shr rdx, 0x2e
and rdx, r14
xor ecx, dword [rdx + r10 + 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 ebp, dword [r10 + rdx*4 + 0x1c00]
shr r13, 0x38
xor r15d, dword [r10 + r13*4 + 0x1c00]
shr r11, 0x38
xor r12d, dword [r10 + r11*4 + 0x1c00]
shr rbx, 0x38
xor ecx, dword [r10 + rbx*4 + 0x1c00]
mov r10, qword [rsp + 0x58]
add r10, 0x28
dec r9
jne 0x14003a002
add rsi, qword [rsp + 0x60]
mov r10d, ecx
mov ecx, ebp
mov ebx, r15d
mov r11d, r12d
jmp 0x140039cb9
sub rsp, 0x28
test rdx, rdx
jne 0x14003a38a
test r8d, r8d
jne 0x14003a383
call fcn.140045e60
xor eax, eax
add rsp, 0x28
ret
mov r8d, r8d
add rsp, 0x28
jmp 0x140039b20