Function at 0x10218510
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
mov edi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
movzx esi, cx
shr ecx, 0x10
cmp edi, 1
je 0x10218753
test ebx, ebx
je 0x10218623
cmp edi, 0x10
jb 0x10218783
cmp edi, 0x15b0
jae 0x10218628
nop dword [eax]
add edi, 0xfffffff0
movzx eax, byte [ebx]
add eax, esi
add ecx, eax
movzx edx, byte [ebx + 1]
add edx, eax
add ecx, edx
movzx eax, byte [ebx + 2]
add eax, edx
add ecx, eax
movzx edx, byte [ebx + 3]
add edx, eax
add ecx, edx
movzx eax, byte [ebx + 4]
add eax, edx
add ecx, eax
movzx edx, byte [ebx + 5]
add edx, eax
add ecx, edx
movzx eax, byte [ebx + 6]
add eax, edx
add ecx, eax
movzx edx, byte [ebx + 7]
add edx, eax
add ecx, edx
movzx eax, byte [ebx + 8]
add eax, edx
add ecx, eax
movzx edx, byte [ebx + 9]
add edx, eax
add ecx, edx
movzx eax, byte [ebx + 0xa]
add eax, edx
add ecx, eax
movzx edx, byte [ebx + 0xb]
add edx, eax
add ecx, edx
movzx eax, byte [ebx + 0xc]
add eax, edx
add ecx, eax
movzx edx, byte [ebx + 0xd]
add edx, eax
add ecx, edx
movzx eax, byte [ebx + 0xe]
add eax, edx
add ecx, eax
movzx esi, byte [ebx + 0xf]
add esi, eax
add ecx, esi
add ebx, 0x10
cmp edi, 0xf
ja 0x10218550
test edi, edi
je 0x102185f1
xor eax, eax
movzx edx, byte [ebx + eax]
add esi, edx
add ecx, esi
inc eax
cmp edi, eax
jne 0x102185e4
mov edi, 0x80078071
mov eax, esi
mul edi
shr edx, 0xf
imul ebx, edx, 0xfff1
mov eax, ecx
mul edi
sub esi, ebx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, esi
mov eax, ecx
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
inc ecx
jmp 0x10218619
mov eax, 0xffffea60
movzx edx, byte [ebx + eax + 0x15a0]
add edx, esi
add ecx, edx
movzx esi, byte [ebx + eax + 0x15a1]
add esi, edx
add ecx, esi
movzx edx, byte [ebx + eax + 0x15a2]
add edx, esi
add ecx, edx
movzx esi, byte [ebx + eax + 0x15a3]
add esi, edx
add ecx, esi
movzx edx, byte [ebx + eax + 0x15a4]
add edx, esi
add ecx, edx
movzx esi, byte [ebx + eax + 0x15a5]
add esi, edx
add ecx, esi
movzx edx, byte [ebx + eax + 0x15a6]
add edx, esi
add ecx, edx
movzx esi, byte [ebx + eax + 0x15a7]
add esi, edx
add ecx, esi
movzx edx, byte [ebx + eax + 0x15a8]
add edx, esi
add ecx, edx
movzx esi, byte [ebx + eax + 0x15a9]
add esi, edx
add ecx, esi
movzx edx, byte [ebx + eax + 0x15aa]
add edx, esi
add ecx, edx
movzx esi, byte [ebx + eax + 0x15ab]
add esi, edx
add ecx, esi
movzx edx, byte [ebx + eax + 0x15ac]
add edx, esi
add ecx, edx
movzx esi, byte [ebx + eax + 0x15ad]
add esi, edx
add ecx, esi
movzx edx, byte [ebx + eax + 0x15ae]
add edx, esi
add ecx, edx
movzx esi, byte [ebx + eax + 0x15af]
add esi, edx
add ecx, esi
test eax, eax
je 0x102186f9
add eax, 0x10
jmp 0x1021862d
mov eax, esi
mov edx, 0x80078071
mul edx
shr edx, 0xf
mov dword [ebp - 0x10], edx
mov eax, ecx
mov edx, 0x80078071
mul edx
imul eax, dword [ebp - 0x10], 0xfff1
sub esi, eax
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
add edi, 0xffffea50
add ebx, 0x15b0
cmp edi, 0x15af
ja 0x10218628
test edi, edi
je 0x10218614
cmp edi, 0xf
jbe 0x102185e2
jmp 0x10218550
movzx eax, byte [ebx]
lea edx, [esi + eax]
mov edi, 0xfff0
cmp edx, edi
lea eax, [esi + eax - 0xfff1]
cmovbe eax, edx
add ecx, eax
mov edx, ecx
shl edx, 0x10
cmp ecx, edi
lea ecx, [edx + 0xf0000]
cmovbe ecx, edx
or ecx, eax
jmp 0x10218619
test edi, edi
je 0x10218796
xor eax, eax
movzx edx, byte [ebx + eax]
add esi, edx
add ecx, esi
inc eax
cmp edi, eax
jne 0x10218789
lea edi, [esi - 0xfff1]
cmp esi, 0xfff0
cmovbe edi, esi
mov edx, 0x80078071
mov eax, ecx
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, edi
jmp 0x10218619