Function at 0x41cfe0
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 0x41d02e
movzx eax, byte [esi]
add ecx, eax
cmp ecx, 0xfff0
jbe 0x41d012
sub ecx, 0xfff1
add ebx, ecx
cmp ebx, 0xfff0
jbe 0x41d022
sub ebx, 0xfff1
mov eax, ebx
shl eax, 0x10
or eax, ecx
jmp 0x41d231
mov eax, 1
test esi, esi
je 0x41d231
cmp edi, 0xf
ja 0x41d082
dec edi
cmp edi, 0xffffffff
je 0x41d054
movzx eax, byte [esi]
add ecx, eax
inc esi
add ebx, ecx
dec edi
cmp edi, 0xffffffff
jne 0x41d046
cmp ecx, 0xfff0
jbe 0x41d062
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 0x41d231
cmp edi, 0x15af
jbe 0x41d152
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 0x41d099
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 0x41d08e
test edi, edi
je 0x41d22a
cmp edi, 0xf
jbe 0x41d1f1
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 0x41d163
dec edi
cmp edi, 0xffffffff
je 0x41d205
movzx eax, byte [esi]
add ecx, eax
inc esi
add ebx, ecx
dec edi
cmp edi, 0xffffffff
jne 0x41d1f7
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