Function at 0x40c230
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
mov ecx, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x10]
push esi
mov esi, ecx
shr esi, 0x10
and ecx, 0xffff
cmp ebx, 1
jne 0x40c27e
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax]
add ecx, eax
cmp ecx, 0xfff1
jb 0x40c261
sub ecx, 0xfff1
add esi, ecx
cmp esi, 0xfff1
jb 0x40c271
sub esi, 0xfff1
shl esi, 0x10
or esi, ecx
mov eax, esi
pop esi
pop ebx
pop ebp
ret 0xc
push edi
mov edi, dword [ebp + 0xc]
test edi, edi
jne 0x40c290
lea eax, [edi + 1]
pop edi
pop esi
pop ebx
pop ebp
ret 0xc
cmp ebx, 0x10
jae 0x40c2da
test ebx, ebx
je 0x40c2ad
lea esp, [esp]
movzx eax, byte [edi]
add ecx, eax
add esi, ecx
lea edi, [edi + 1]
dec ebx
jne 0x40c2a0
cmp ecx, 0xfff1
jb 0x40c2bb
sub ecx, 0xfff1
mov eax, 0x80078071
mul esi
shr edx, 0xf
mov eax, edx
shl eax, 4
sub eax, edx
add eax, esi
pop edi
shl eax, 0x10
pop esi
or eax, ecx
pop ebx
pop ebp
ret 0xc
cmp ebx, 0x15b0
jb 0x40c3c6
mov eax, 0x5e6ea9af
mul ebx
shr edx, 0xb
mov dword [ebp + 0xc], edx
jmp 0x40c300
sub ebx, 0x15b0
mov edx, 0x15b
jmp 0x40c310
movzx eax, byte [edi]
add ecx, eax
movzx eax, byte [edi + 1]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 2]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 3]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 4]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 5]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 6]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 7]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 8]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 9]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xa]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xb]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xc]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xd]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xe]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xf]
add esi, ecx
add ecx, eax
add esi, ecx
add edi, 0x10
dec edx
jne 0x40c310
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul edx, edx, 0xffff000f
add esi, edx
dec dword [ebp + 0xc]
jne 0x40c300
test ebx, ebx
je 0x40c4a1
cmp ebx, 0x10
jb 0x40c46c
mov edx, ebx
shr edx, 4
lea esp, [esp]
movzx eax, byte [edi]
add ecx, eax
movzx eax, byte [edi + 1]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 2]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 3]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 4]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 5]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 6]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 7]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 8]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 9]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xa]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xb]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xc]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xd]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xe]
add esi, ecx
add ecx, eax
movzx eax, byte [edi + 0xf]
add esi, ecx
add ecx, eax
sub ebx, 0x10
add esi, ecx
add edi, 0x10
dec edx
jne 0x40c3e0
test ebx, ebx
je 0x40c47d
movzx eax, byte [edi]
add ecx, eax
add esi, ecx
lea edi, [edi + 1]
dec ebx
jne 0x40c470
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul edx, edx, 0xffff000f
add esi, edx
shl esi, 0x10
or esi, ecx
pop edi
mov eax, esi
pop esi
pop ebx
pop ebp
ret 0xc