Function at 0x5106f0
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
mov esi, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x510824
mov ebx, dword [ebp + 8]
cmp esi, 0x40
jb 0x510837
cmp dword [0x769948], 0
je 0x510837
mov edi, esi
and edi, 0xfffffff0
not ebx
push ebx
push edi
push edx
call fcn.004f1920
add esp, 0xc
mov ebx, eax
xor eax, eax
mov edx, esi
and edx, 0xf
cmovne eax, edi
and esi, 0xf
je 0x510831
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov edx, ecx
cmp esi, 8
jb 0x5107f5
mov eax, ebx
xor bl, byte [edx]
shr eax, 8
movzx ecx, bl
xor eax, dword [ecx*4 + 0x6e3efc]
mov ecx, eax
xor al, byte [edx + 1]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x6e3efc]
mov eax, ecx
xor cl, byte [edx + 2]
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x6e3efc]
mov ecx, eax
xor al, byte [edx + 3]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x6e3efc]
mov eax, ecx
xor cl, byte [edx + 4]
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x6e3efc]
add esi, 0xfffffff8
mov ecx, eax
xor al, byte [edx + 5]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x6e3efc]
mov eax, ecx
shr eax, 8
xor cl, byte [edx + 6]
movzx ecx, cl
xor eax, dword [ecx*4 + 0x6e3efc]
mov ebx, eax
shr ebx, 8
xor al, byte [edx + 7]
add edx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x6e3efc]
cmp esi, 7
ja 0x510757
test esi, esi
je 0x510bf0
xor eax, eax
mov edi, ebx
xor bl, byte [edx + eax]
shr edi, 8
movzx ecx, bl
xor edi, dword [ecx*4 + 0x6e3efc]
inc eax
mov ebx, edi
cmp esi, eax
jne 0x510801
not edi
mov eax, edi
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
test esi, esi
jne 0x51081a
call fcn.00520ce0
jmp 0x51081a
not ebx
mov edi, ebx
jmp 0x51081a
not ebx
cmp esi, 0x17
jb 0x51074e
test dl, 3
mov dword [ebp - 0x18], edx
jne 0x510bf7
mov edx, 0xcccccccd
mov eax, esi
mul edx
shr edx, 4
lea eax, [edx*4]
lea eax, [eax + eax*4]
mov dword [ebp - 0x40], eax
xor eax, eax
mov ecx, edx
dec ecx
jne 0x510a16
xor edx, edx
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x18], ecx
xor ebx, dword [ecx]
mov ecx, ebx
shr ecx, 8
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x6e3efc]
mov edi, ecx
shr edi, 8
and ecx, 0xff
xor edi, dword [ecx*4 + 0x6e3efc]
mov ecx, edi
shr ecx, 8
and edi, 0xff
xor ecx, dword [edi*4 + 0x6e3efc]
mov edi, ecx
shr edi, 8
and ecx, 0xff
xor edi, dword [ecx*4 + 0x6e3efc]
mov ebx, dword [ebp - 0x18]
xor eax, dword [ebx + 4]
xor eax, edi
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x6e3efc]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x6e3efc]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x6e3efc]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x6e3efc]
xor edx, dword [ebx + 8]
mov edi, ebx
xor edx, eax
mov eax, edx
shr eax, 8
and edx, 0xff
xor eax, dword [edx*4 + 0x6e3efc]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x6e3efc]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x6e3efc]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x6e3efc]
mov edx, dword [ebp - 0x14]
xor edx, dword [ebx + 0xc]
xor edx, ecx
mov eax, edx
shr eax, 8
and edx, 0xff
xor eax, dword [edx*4 + 0x6e3efc]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x6e3efc]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x6e3efc]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x6e3efc]
mov edx, dword [ebp - 0x10]
xor edx, dword [ebx + 0x10]
xor edx, ecx
mov eax, edx
shr eax, 8
and edx, 0xff
xor eax, dword [edx*4 + 0x6e3efc]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x6e3efc]
sub esi, dword [ebp - 0x40]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x6e3efc]
mov ebx, eax
shr ebx, 8
and eax, 0xff
xor ebx, dword [eax*4 + 0x6e3efc]
mov edx, edi
add edx, 0x14
jmp 0x51074e
lea eax, [edx + edx*4]
lea eax, [eax*4 - 0x14]
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
xor edx, edx
xor eax, eax
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x3c], ecx
xor ebx, dword [edi]
mov dword [ebp - 0x1c], ebx
mov ecx, 0xff
and dword [ebp - 0x1c], ecx
mov edi, 0xff
mov ecx, ebx
shr ecx, 8
and ecx, edi
mov ecx, dword [ecx*4 + 0x6e46fc]
mov edi, dword [ebp - 0x1c]
xor ecx, dword [edi*4 + 0x6e42fc]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x24]
xor eax, dword [ecx + 4]
mov ecx, eax
mov edi, 0xff
and ecx, edi
mov dword [ebp - 0x20], ecx
mov edi, eax
shr edi, 8
mov ecx, 0xff
and edi, ecx
mov edi, dword [edi*4 + 0x6e46fc]
mov ecx, dword [ebp - 0x20]
xor edi, dword [ecx*4 + 0x6e42fc]
mov dword [ebp - 0x2c], edi
mov ecx, dword [ebp - 0x24]
xor edx, dword [ecx + 8]
mov dword [ebp - 0x30], edx
mov ecx, edx
mov edi, 0xff
and ecx, edi
mov edi, edx
shr edi, 8
mov edx, 0xff
and edi, edx
mov edi, dword [edi*4 + 0x6e46fc]
xor edi, dword [ecx*4 + 0x6e42fc]
mov dword [ebp - 0x20], edi
mov edi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x24]
xor edi, dword [ecx + 0xc]
mov ecx, edi
mov dword [ebp - 0x14], edi
and ecx, edx
shr edi, 8
and edi, edx
mov edx, dword [edi*4 + 0x6e46fc]
xor edx, dword [ecx*4 + 0x6e42fc]
mov dword [ebp - 0x34], edx
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x24]
xor edi, dword [ecx + 0x10]
mov dword [ebp - 0x10], edi
mov ecx, edi
mov edx, 0xff
and ecx, edx
mov edi, dword [ebp - 0x10]
shr edi, 8
and edi, edx
mov edx, dword [edi*4 + 0x6e46fc]
xor edx, dword [ecx*4 + 0x6e42fc]
mov dword [ebp - 0x28], edx
mov ecx, ebx
shr ecx, 0xe
mov edx, 0x3fc
and ecx, edx
mov edi, dword [ebp - 0x1c]
xor edi, dword [ecx + 0x6e4afc]
mov dword [ebp - 0x1c], edi
mov ecx, eax
shr ecx, 0xe
and ecx, edx
mov edi, dword [ebp - 0x2c]
xor edi, dword [ecx + 0x6e4afc]
mov dword [ebp - 0x2c], edi
mov ecx, dword [ebp - 0x30]
shr ecx, 0xe
and ecx, edx
mov edi, dword [ebp - 0x20]
xor edi, dword [ecx + 0x6e4afc]
mov dword [ebp - 0x20], edi
mov ecx, dword [ebp - 0x14]
shr ecx, 0xe
and ecx, edx
mov edi, dword [ebp - 0x34]
xor edi, dword [ecx + 0x6e4afc]
mov ecx, dword [ebp - 0x10]
shr ecx, 0xe
and ecx, edx
mov edx, dword [ebp - 0x28]
xor edx, dword [ecx + 0x6e4afc]
mov dword [ebp - 0x28], edx
mov ecx, ebx
shr ecx, 0x18
mov ebx, dword [ebp - 0x1c]
xor ebx, dword [ecx*4 + 0x6e4efc]
mov ecx, eax
shr ecx, 0x18
mov eax, dword [ebp - 0x2c]
xor eax, dword [ecx*4 + 0x6e4efc]
mov ecx, dword [ebp - 0x30]
shr ecx, 0x18
mov edx, dword [ebp - 0x20]
xor edx, dword [ecx*4 + 0x6e4efc]
mov ecx, dword [ebp - 0x14]
shr ecx, 0x18
xor edi, dword [ecx*4 + 0x6e4efc]
mov dword [ebp - 0x14], edi
mov ecx, dword [ebp - 0x10]
shr ecx, 0x18
mov edi, dword [ebp - 0x28]
xor edi, dword [ecx*4 + 0x6e4efc]
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x10], edi
mov edi, dword [ebp - 0x24]
add edi, 0x14
dec ecx
jne 0x510a38
mov ecx, dword [ebp - 0x18]
add ecx, dword [ebp - 0x38]
jmp 0x510885
mov edi, ebx
jmp 0x510818
lea ecx, [edx + 1]
mov edx, esi
dec esi
mov edi, ebx
shr edi, 8
mov eax, dword [ebp - 0x18]
xor bl, byte [eax]
inc eax
mov dword [ebp - 0x18], eax
movzx eax, bl
mov ebx, edi
xor ebx, dword [eax*4 + 0x6e3efc]
cmp edx, 1
je 0x51084e
mov eax, ecx
and eax, 3
inc ecx
test eax, eax
je 0x51084e
jmp 0x510bfa