Function at 0x44c720
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
push ebx
push edi
push esi
push eax
mov esi, edx
mov ebx, dword [esp + 0x18]
movzx edi, cx
shr ecx, 0x10
cmp ebx, 1
jne 0x44c769
movzx eax, byte [esi]
lea edx, [edi + eax]
cmp edx, 0xfff1
lea eax, [edi + eax - 0xfff1]
cmovb eax, edx
add ecx, eax
mov edx, ecx
shl edx, 0x10
cmp ecx, 0xfff1
lea ecx, [edx + 0xf0000]
cmovb ecx, edx
or ecx, eax
jmp 0x44ca72
test esi, esi
je 0x44c7b1
cmp ebx, 0x10
jae 0x44c7bb
test ebx, ebx
je 0x44ca4a
mov eax, ebx
and eax, 3
je 0x44ca14
xor edx, edx
nop word [eax + eax]
movzx ebp, byte [esi + edx]
add edi, ebp
add ecx, edi
inc edx
cmp eax, edx
jne 0x44c790
add esi, edx
mov eax, ebx
sub eax, edx
cmp ebx, 4
jae 0x44ca1b
jmp 0x44ca4a
mov ecx, 1
jmp 0x44ca72
cmp ebx, 0x15b0
jb 0x44c8f0
mov ebp, 0x80078071
nop dword [eax]
mov eax, 0xffffea50
nop word cs:[eax + eax]
movzx edx, byte [esi + eax + 0x15b0]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 0x15b1]
add edi, edx
add ecx, edi
movzx edx, byte [esi + eax + 0x15b2]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 0x15b3]
add edi, edx
add ecx, edi
movzx edx, byte [esi + eax + 0x15b4]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 0x15b5]
add edi, edx
add ecx, edi
movzx edx, byte [esi + eax + 0x15b6]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 0x15b7]
add edi, edx
add ecx, edi
movzx edx, byte [esi + eax + 0x15b8]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 0x15b9]
add edi, edx
add ecx, edi
movzx edx, byte [esi + eax + 0x15ba]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 0x15bb]
add edi, edx
add ecx, edi
movzx edx, byte [esi + eax + 0x15bc]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 0x15bd]
add edi, edx
add ecx, edi
movzx edx, byte [esi + eax + 0x15be]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 0x15bf]
add edi, edx
add ecx, edi
add eax, 0x10
jne 0x44c7e0
add ebx, 0xffffea50
add esi, 0x15b0
mov eax, edi
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub edi, eax
mov eax, ecx
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
cmp ebx, 0x15af
ja 0x44c7d0
test ebx, ebx
je 0x44ca0d
cmp ebx, 0xf
jbe 0x44c982
add ebx, 0xfffffff0
movzx eax, byte [esi]
add eax, edi
add ecx, eax
movzx edx, byte [esi + 1]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 2]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 3]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 4]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 5]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 6]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 7]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 8]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 9]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 0xa]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 0xb]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 0xc]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 0xd]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 0xe]
add eax, edx
add ecx, eax
movzx edi, byte [esi + 0xf]
add edi, eax
add ecx, edi
add esi, 0x10
cmp ebx, 0xf
ja 0x44c8f0
test ebx, ebx
je 0x44c9ea
lea eax, [ebx - 1]
mov ebp, ebx
and ebp, 3
je 0x44c9b4
mov dword [esp], eax
xor edx, edx
nop word cs:[eax + eax]
movzx eax, byte [esi + edx]
add edi, eax
add ecx, edi
inc edx
cmp ebp, edx
jne 0x44c9a0
add esi, edx
sub ebx, edx
mov eax, dword [esp]
cmp eax, 3
jb 0x44c9ea
xor eax, eax
nop dword [eax + eax]
movzx edx, byte [esi + eax]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 1]
add edi, edx
add ecx, edi
movzx edx, byte [esi + eax + 2]
add edx, edi
add ecx, edx
movzx edi, byte [esi + eax + 3]
add edi, edx
add ecx, edi
add eax, 4
cmp ebx, eax
jne 0x44c9c0
mov esi, 0x80078071
mov eax, edi
mul esi
shr edx, 0xf
imul eax, edx, 0xfff1
sub edi, eax
mov eax, ecx
mul esi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, edi
jmp 0x44ca72
mov eax, ebx
cmp ebx, 4
jb 0x44ca4a
xor edx, edx
nop dword [eax]
movzx ebx, byte [esi + edx]
add ebx, edi
add ecx, ebx
movzx edi, byte [esi + edx + 1]
add edi, ebx
add ecx, edi
movzx ebx, byte [esi + edx + 2]
add ebx, edi
add ecx, ebx
movzx edi, byte [esi + edx + 3]
add edi, ebx
add ecx, edi
add edx, 4
cmp eax, edx
jne 0x44ca20
lea esi, [edi - 0xfff1]
cmp edi, 0xfff1
cmovb esi, edi
mov edx, 0x80078071
mov eax, ecx
mul edx
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