Function at 0x4f8030
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x20
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0x4f807e
mov ecx, dword [ebp + 8]
cmp esi, 0x40
jb 0x4f8092
cmp dword [0x689538], 0
je 0x4f8092
mov eax, esi
and eax, 0xfffffff0
not ecx
push ecx
mov dword [ebp - 0x10], eax
push eax
push ebx
call fcn.004641c0
add esp, 0xc
mov edi, eax
and esi, 0xf
je 0x4f848e
add ebx, dword [ebp - 0x10]
mov ecx, edi
jmp 0x4f83ab
xor edi, edi
test esi, esi
jne 0x4f8490
call fcn.00549360
jmp 0x4f8490
not ecx
cmp esi, 0x17
jb 0x4f83ab
test bl, 3
je 0x4f80d5
lea eax, [ebx + 1]
nop word cs:[eax + eax]
movzx edx, byte [ebx]
movzx edi, cl
xor edi, edx
shr ecx, 8
xor ecx, dword [edi*4 + 0x628adc]
inc ebx
cmp esi, 1
lea esi, [esi - 1]
je 0x4f80d5
mov edx, eax
and edx, 3
inc eax
test edx, edx
jne 0x4f80b0
mov edx, 0xcccccccd
mov eax, esi
mul edx
shr edx, 4
lea eax, [edx*4]
lea eax, [eax + eax*4]
mov edi, edx
dec edi
mov dword [ebp - 0x28], eax
je 0x4f8263
mov dword [ebp - 0x24], esi
lea eax, [edx + edx*4]
lea eax, [ebx + eax*4]
add eax, 0xffffffec
mov dword [ebp - 0x20], eax
mov eax, ebx
xor ebx, ebx
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x18], 0
nop
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x10], eax
xor ecx, dword [eax]
mov eax, edi
movzx edi, ch
mov edi, dword [edi*4 + 0x6292dc]
movzx esi, cl
xor edi, dword [esi*4 + 0x628edc]
mov esi, ecx
shr esi, 0xe
and esi, 0x3fc
xor edi, dword [esi + 0x6296dc]
mov edx, ecx
shr edx, 0x18
mov ecx, edi
mov edi, eax
xor ecx, dword [edx*4 + 0x629adc]
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x10]
xor eax, dword [edx + 4]
movzx edx, ah
mov edx, dword [edx*4 + 0x6292dc]
movzx esi, al
xor edx, dword [esi*4 + 0x628edc]
mov esi, eax
shr esi, 0xe
and esi, 0x3fc
xor edx, dword [esi + 0x6296dc]
shr eax, 0x18
xor edx, dword [eax*4 + 0x629adc]
mov dword [ebp - 0x18], edx
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
xor ebx, dword [eax + 8]
movzx eax, bh
mov eax, dword [eax*4 + 0x6292dc]
movzx edx, bl
xor eax, dword [edx*4 + 0x628edc]
mov edx, ebx
shr edx, 0xe
and edx, 0x3fc
xor eax, dword [edx + 0x6296dc]
mov edx, ebx
shr edx, 0x18
xor eax, dword [edx*4 + 0x629adc]
mov dword [ebp - 0x14], eax
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x10]
xor ebx, dword [eax + 0xc]
movzx eax, bh
mov eax, dword [eax*4 + 0x6292dc]
movzx edx, bl
xor eax, dword [edx*4 + 0x628edc]
mov edx, ebx
shr edx, 0xe
and edx, 0x3fc
xor eax, dword [edx + 0x6296dc]
shr ebx, 0x18
xor eax, dword [ebx*4 + 0x629adc]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x2c]
xor ebx, dword [eax + 0x10]
movzx eax, bh
mov eax, dword [eax*4 + 0x6292dc]
movzx edx, bl
xor eax, dword [edx*4 + 0x628edc]
mov edx, ebx
shr edx, 0xe
and edx, 0x3fc
xor eax, dword [edx + 0x6296dc]
mov edx, ebx
shr edx, 0x18
xor eax, dword [edx*4 + 0x629adc]
mov ebx, eax
mov eax, dword [ebp - 0x10]
add eax, 0x14
dec edi
jne 0x4f8120
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
jmp 0x4f827c
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x1c], 0
mov edi, ebx
xor ebx, ebx
xor ecx, dword [edi]
movzx eax, cl
mov edx, ecx
shr edx, 8
xor edx, dword [eax*4 + 0x628adc]
movzx eax, dl
shr edx, 8
xor edx, dword [eax*4 + 0x628adc]
movzx eax, dl
shr edx, 8
xor edx, dword [eax*4 + 0x628adc]
movzx eax, dl
mov ecx, dword [ebp - 0x18]
xor ecx, dword [eax*4 + 0x628adc]
shr edx, 8
xor ecx, dword [edi + 4]
xor ecx, edx
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
mov edx, dword [ebp - 0x14]
xor edx, dword [eax*4 + 0x628adc]
shr ecx, 8
xor edx, dword [edi + 8]
xor edx, ecx
movzx eax, dl
shr edx, 8
xor edx, dword [eax*4 + 0x628adc]
movzx eax, dl
shr edx, 8
xor edx, dword [eax*4 + 0x628adc]
movzx eax, dl
shr edx, 8
xor edx, dword [eax*4 + 0x628adc]
movzx eax, dl
mov ecx, dword [ebp - 0x1c]
xor ecx, dword [eax*4 + 0x628adc]
shr edx, 8
xor ecx, dword [edi + 0xc]
xor ecx, edx
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
xor ebx, dword [eax*4 + 0x628adc]
xor ebx, dword [edi + 0x10]
shr ecx, 8
xor ebx, ecx
movzx eax, bl
mov ecx, ebx
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
sub esi, dword [ebp - 0x28]
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x628adc]
add edi, 0x14
mov ebx, edi
cmp esi, 8
jb 0x4f8466
nop word cs:[eax + eax]
movzx eax, cl
shr ecx, 8
movzx edx, byte [ebx]
xor eax, edx
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
movzx edx, byte [ebx + 1]
xor eax, edx
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
movzx edx, byte [ebx + 2]
xor eax, edx
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
movzx edx, byte [ebx + 3]
xor eax, edx
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
movzx edx, byte [ebx + 4]
xor eax, edx
xor ecx, dword [eax*4 + 0x628adc]
add esi, 0xfffffff8
movzx eax, cl
shr ecx, 8
movzx edx, byte [ebx + 5]
xor eax, edx
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
movzx edx, byte [ebx + 6]
xor eax, edx
xor ecx, dword [eax*4 + 0x628adc]
movzx eax, cl
shr ecx, 8
movzx edx, byte [ebx + 7]
add ebx, 8
xor eax, edx
xor ecx, dword [eax*4 + 0x628adc]
cmp esi, 7
ja 0x4f83c0
test esi, esi
je 0x4f848c
xor eax, eax
mov edi, ecx
nop
movzx edx, byte [ebx + eax]
movzx ecx, cl
xor ecx, edx
shr edi, 8
xor edi, dword [ecx*4 + 0x628adc]
inc eax
mov ecx, edi
cmp esi, eax
jne 0x4f8470
jmp 0x4f848e
mov edi, ecx
not edi
mov eax, edi
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret