Function at 0x41e420
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov ebx, ecx
shr ebx, 0x10
and ecx, 0xffff
cmp edi, 1
jne 0x41e46e
movzx eax, byte [esi]
add ecx, eax
cmp ecx, 0xfff0
jbe 0x41e452
sub ecx, 0xfff1
add ebx, ecx
cmp ebx, 0xfff0
jbe 0x41e462
sub ebx, 0xfff1
mov eax, ebx
shl eax, 0x10
or eax, ecx
jmp 0x41e671
mov eax, 1
test esi, esi
je 0x41e671
cmp edi, 0xf
ja 0x41e4c2
dec edi
cmp edi, 0xffffffff
je 0x41e494
movzx eax, byte [esi]
add ecx, eax
inc esi
add ebx, ecx
dec edi
cmp edi, 0xffffffff
jne 0x41e486
cmp ecx, 0xfff0
jbe 0x41e4a2
sub ecx, 0xfff1
mov edx, 0x80078071
mov eax, ebx
mul edx
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebx, edx
mov eax, ebx
shl eax, 0x10
or eax, ecx
jmp 0x41e671
cmp edi, 0x15af
jbe 0x41e592
sub edi, 0x15b0
mov edx, 0x15b
movzx eax, byte [esi]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 1]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 2]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 3]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 4]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 5]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 6]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 7]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 8]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 9]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xa]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xb]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xc]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xd]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xe]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xf]
add ecx, eax
add ebx, ecx
add esi, 0x10
dec edx
jne 0x41e4d9
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xfff1
sub ecx, edx
mov eax, 0x80078071
mul ebx
shr edx, 0xf
imul edx, edx, 0xfff1
sub ebx, edx
cmp edi, 0x15af
ja 0x41e4ce
test edi, edi
je 0x41e66a
cmp edi, 0xf
jbe 0x41e631
sub edi, 0x10
movzx eax, byte [esi]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 1]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 2]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 3]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 4]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 5]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 6]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 7]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 8]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 9]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xa]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xb]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xc]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xd]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xe]
add ecx, eax
add ebx, ecx
movzx eax, byte [esi + 0xf]
add ecx, eax
add ebx, ecx
add esi, 0x10
cmp edi, 0xf
ja 0x41e5a3
dec edi
cmp edi, 0xffffffff
je 0x41e645
movzx eax, byte [esi]
add ecx, eax
inc esi
add ebx, ecx
dec edi
cmp edi, 0xffffffff
jne 0x41e637
mov esi, 0x80078071
mov eax, esi
mul ecx
shr edx, 0xf
imul edx, edx, 0xfff1
sub ecx, edx
mov eax, esi
mul ebx
mov eax, edx
shr eax, 0xf
imul eax, eax, 0xfff1
sub ebx, eax
mov eax, ebx
shl eax, 0x10
or eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret