Function at 0x10079570
Capabilities:
Hash data with crc32

Disassembly:
mov ecx, dword [esp + 0xc]
movzx eax, word [ecx + 2]
push ebx
push esi
push edi
cmp ax, 2
jne 0x100797dd
movzx eax, word [ecx + 0xe]
cmp ax, 0x10
jne 0x10079664
mov ecx, dword [esp + 0x14]
mov eax, ecx
cdq
sub eax, edx
mov edx, eax
mov eax, dword [esp + 0x10]
sar edx, 1
sub eax, edx
lea esi, [eax + ecx]
lea ecx, [eax + 0x8000]
cmp ecx, 0xffff
ja 0x1007964d
lea edx, [esi + 0x8000]
cmp edx, 0xffff
ja 0x1007964d
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov word [ecx], ax
movzx ebx, byte [ecx]
mov eax, dword [edx]
mov edi, eax
shr eax, 8
and edi, 0xff
xor edi, ebx
xor eax, dword [edi*4 + 0x100b0c70]
inc ecx
mov dword [edx], eax
movzx ebx, byte [ecx]
mov edi, eax
shr eax, 8
and edi, 0xff
xor edi, ebx
xor eax, dword [edi*4 + 0x100b0c70]
inc ecx
mov dword [edx], eax
mov word [ecx], si
mov esi, dword [edx]
movzx edi, byte [ecx]
mov eax, esi
and eax, 0xff
xor eax, edi
mov eax, dword [eax*4 + 0x100b0c70]
shr esi, 8
xor eax, esi
mov dword [edx], eax
movzx ecx, byte [ecx + 1]
mov esi, eax
and esi, 0xff
xor ecx, esi
shr eax, 8
xor eax, dword [ecx*4 + 0x100b0c70]
pop edi
pop esi
mov dword [edx], eax
pop ebx
ret 0x14
push 0x100da7ac
lea edx, [esp + 0x14]
push edx
mov dword [esp + 0x18], 0xffffffff
call fcn.100652c7
push ebp
cmp ax, 8
jne 0x100796ce
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
mov eax, ebx
cdq
sub eax, edx
mov edx, dword [esp + 0x24]
mov ecx, eax
mov al, byte [esp + 0x14]
sar ecx, 1
sub al, cl
sub al, 0x80
mov byte [esi], al
mov ecx, dword [edx]
mov edi, ecx
movzx ebp, al
shr ecx, 8
and edi, 0xff
xor edi, ebp
xor ecx, dword [edi*4 + 0x100b0c70]
inc esi
mov dword [edx], ecx
mov cl, bl
add cl, al
mov byte [esi], cl
mov eax, dword [edx]
mov esi, eax
movzx ecx, cl
and esi, 0xff
xor esi, ecx
shr eax, 8
xor eax, dword [esi*4 + 0x100b0c70]
mov dword [edx], eax
pop ebp
pop edi
pop esi
pop ebx
ret 0x14
cmp ax, 0x18
jne 0x100796c7
mov ecx, dword [esp + 0x18]
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x14]
sar eax, 1
sub edx, eax
lea edi, [edx + ecx]
jns 0x100796f6
add edx, 0x800000
or edx, 0x800000
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov byte [ecx], dl
mov esi, dword [eax]
mov ebx, esi
and ebx, 0xff
movzx ebp, dl
xor ebx, ebp
shr esi, 8
xor esi, dword [ebx*4 + 0x100b0c70]
mov ebx, edx
mov dword [eax], esi
shr ebx, 8
mov byte [ecx + 1], bl
mov esi, dword [eax]
inc ecx
mov ebp, esi
movzx ebx, bl
shr esi, 8
and ebp, 0xff
xor ebp, ebx
xor esi, dword [ebp*4 + 0x100b0c70]
inc ecx
mov dword [eax], esi
shr edx, 0x10
mov byte [ecx], dl
mov esi, dword [eax]
mov ebx, esi
movzx edx, dl
and ebx, 0xff
xor ebx, edx
shr esi, 8
xor esi, dword [ebx*4 + 0x100b0c70]
inc ecx
mov dword [eax], esi
test edi, edi
jge 0x10079773
lea edx, [edi + 0x800000]
or edx, 0x800000
jmp 0x10079775
mov edx, edi
mov byte [ecx], dl
mov esi, dword [eax]
mov edi, esi
shr esi, 8
and edi, 0xff
movzx ebx, dl
xor edi, ebx
xor esi, dword [edi*4 + 0x100b0c70]
inc ecx
mov dword [eax], esi
mov ebx, edx
shr ebx, 8
mov byte [ecx], bl
mov esi, dword [eax]
mov edi, esi
movzx ebx, bl
shr esi, 8
and edi, 0xff
xor edi, ebx
xor esi, dword [edi*4 + 0x100b0c70]
inc ecx
mov dword [eax], esi
shr edx, 0x10
mov byte [ecx], dl
mov ecx, dword [eax]
mov esi, ecx
and esi, 0xff
movzx edx, dl
pop ebp
xor esi, edx
shr ecx, 8
xor ecx, dword [esi*4 + 0x100b0c70]
pop edi
pop esi
mov dword [eax], ecx
pop ebx
ret 0x14
cmp ax, 1
jne 0x100796c8
movzx eax, word [ecx + 0xe]
cmp ax, 0x10
jne 0x1007983d
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x20]
mov ax, word [esp + 0x10]
mov word [edx], ax
mov ecx, dword [esi]
movzx edi, byte [edx]
mov eax, ecx
and eax, 0xff
xor eax, edi
mov eax, dword [eax*4 + 0x100b0c70]
shr ecx, 8
xor eax, ecx
mov dword [esi], eax
movzx ecx, byte [edx + 1]
mov edx, eax
and edx, 0xff
xor ecx, edx
shr eax, 8
xor eax, dword [ecx*4 + 0x100b0c70]
pop edi
mov dword [esi], eax
pop esi
pop ebx
ret 0x14
cmp ax, 8
jne 0x10079875
mov cl, byte [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
sub cl, 0x80
mov byte [eax], cl
mov eax, dword [edx]
mov esi, eax
and esi, 0xff
movzx ecx, cl
xor esi, ecx
shr eax, 8
xor eax, dword [esi*4 + 0x100b0c70]
pop edi
pop esi
mov dword [edx], eax
pop ebx
ret 0x14
cmp ax, 0x18
jne 0x100796c8
mov edx, dword [esp + 0x10]
test edx, edx
jge 0x10079893
add edx, 0x800000
or edx, 0x800000
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov byte [esi], dl
mov eax, dword [ecx]
mov edi, eax
movzx ebx, dl
and edi, 0xff
xor edi, ebx
shr eax, 8
xor eax, dword [edi*4 + 0x100b0c70]
inc esi
mov dword [ecx], eax
mov ebx, edx
shr ebx, 8
mov byte [esi], bl
mov eax, dword [ecx]
mov edi, eax
movzx ebx, bl
and edi, 0xff
shr eax, 8
xor edi, ebx
xor eax, dword [edi*4 + 0x100b0c70]
inc esi
mov dword [ecx], eax
shr edx, 0x10
mov byte [esi], dl
mov eax, dword [ecx]
mov esi, eax
movzx edx, dl
and esi, 0xff
xor esi, edx
shr eax, 8
xor eax, dword [esi*4 + 0x100b0c70]
pop edi
pop esi
mov dword [ecx], eax
pop ebx
ret 0x14