Function at 0x1020bd50
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
movzx esi, cx
shr ecx, 0x10
cmp ebx, 1
je 0x1020bfd5
test edi, edi
je 0x1020bf93
cmp ebx, 0x10
jb 0x1020bf98
cmp ebx, 0x15b0
jb 0x1020bec0
mov eax, 0xffffea50
nop word cs:[eax + eax]
movzx edx, byte [edi + eax + 0x15b0]
add edx, esi
add ecx, edx
movzx esi, byte [edi + eax + 0x15b1]
add esi, edx
add ecx, esi
movzx edx, byte [edi + eax + 0x15b2]
add edx, esi
add ecx, edx
movzx esi, byte [edi + eax + 0x15b3]
add esi, edx
add ecx, esi
movzx edx, byte [edi + eax + 0x15b4]
add edx, esi
add ecx, edx
movzx esi, byte [edi + eax + 0x15b5]
add esi, edx
add ecx, esi
movzx edx, byte [edi + eax + 0x15b6]
add edx, esi
add ecx, edx
movzx esi, byte [edi + eax + 0x15b7]
add esi, edx
add ecx, esi
movzx edx, byte [edi + eax + 0x15b8]
add edx, esi
add ecx, edx
movzx esi, byte [edi + eax + 0x15b9]
add esi, edx
add ecx, esi
movzx edx, byte [edi + eax + 0x15ba]
add edx, esi
add ecx, edx
movzx esi, byte [edi + eax + 0x15bb]
add esi, edx
add ecx, esi
movzx edx, byte [edi + eax + 0x15bc]
add edx, esi
add ecx, edx
movzx esi, byte [edi + eax + 0x15bd]
add esi, edx
add ecx, esi
movzx edx, byte [edi + eax + 0x15be]
add edx, esi
add ecx, edx
movzx esi, byte [edi + eax + 0x15bf]
add esi, edx
add ecx, esi
add eax, 0x10
jne 0x1020bda0
mov eax, esi
mov edx, 0x80078071
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
mov dword [ebp - 0x10], eax
mov eax, ecx
mov edx, 0x80078071
mul edx
sub esi, dword [ebp - 0x10]
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
add ebx, 0xffffea50
add edi, 0x15b0
cmp ebx, 0x15af
ja 0x1020bd8c
test ebx, ebx
je 0x1020bf84
cmp ebx, 0xf
jbe 0x1020bf52
nop
add ebx, 0xfffffff0
movzx eax, byte [edi]
add eax, esi
add ecx, eax
movzx edx, byte [edi + 1]
add edx, eax
add ecx, edx
movzx eax, byte [edi + 2]
add eax, edx
add ecx, eax
movzx edx, byte [edi + 3]
add edx, eax
add ecx, edx
movzx eax, byte [edi + 4]
add eax, edx
add ecx, eax
movzx edx, byte [edi + 5]
add edx, eax
add ecx, edx
movzx eax, byte [edi + 6]
add eax, edx
add ecx, eax
movzx edx, byte [edi + 7]
add edx, eax
add ecx, edx
movzx eax, byte [edi + 8]
add eax, edx
add ecx, eax
movzx edx, byte [edi + 9]
add edx, eax
add ecx, edx
movzx eax, byte [edi + 0xa]
add eax, edx
add ecx, eax
movzx edx, byte [edi + 0xb]
add edx, eax
add ecx, edx
movzx eax, byte [edi + 0xc]
add eax, edx
add ecx, eax
movzx edx, byte [edi + 0xd]
add edx, eax
add ecx, edx
movzx eax, byte [edi + 0xe]
add eax, edx
add ecx, eax
movzx esi, byte [edi + 0xf]
add esi, eax
add ecx, esi
add edi, 0x10
cmp ebx, 0xf
ja 0x1020bec0
test ebx, ebx
je 0x1020bf61
xor eax, eax
movzx edx, byte [edi + eax]
add esi, edx
add ecx, esi
inc eax
cmp ebx, eax
jne 0x1020bf54
mov edi, 0x80078071
mov eax, esi
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, ecx
mul edi
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 0x1020bf89
test ebx, ebx
je 0x1020bfab
xor eax, eax
movzx edx, byte [edi + eax]
add esi, edx
add ecx, esi
inc eax
cmp ebx, eax
jne 0x1020bf9e
lea edi, [esi - 0xfff1]
cmp esi, 0xfff1
cmovb 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 0x1020bf89
movzx eax, byte [edi]
lea edx, [esi + eax]
mov edi, 0xfff1
cmp edx, edi
lea eax, [esi + eax - 0xfff1]
cmovb eax, edx
add ecx, eax
mov edx, ecx
shl edx, 0x10
cmp ecx, edi
lea ecx, [edx + 0xf0000]
cmovb ecx, edx
or ecx, eax
jmp 0x1020bf89