Function at 0x1005a800
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
mov ecx, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x10]
push edi
mov edi, ecx
shr edi, 0x10
and ecx, 0xffff
cmp ebx, 1
jne 0x1005a84e
mov eax, dword [ebp + 0xc]
movzx edx, byte [eax]
add ecx, edx
cmp ecx, 0xfff1
jb 0x1005a831
sub ecx, 0xfff1
add edi, ecx
cmp edi, 0xfff1
jb 0x1005a841
sub edi, 0xfff1
mov eax, edi
shl eax, 0x10
pop edi
or eax, ecx
pop ebx
pop ebp
ret 0xc
push esi
mov esi, dword [ebp + 0xc]
test esi, esi
jne 0x1005a860
lea eax, [esi + 1]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
cmp ebx, 0x10
jae 0x1005a8aa
test ebx, ebx
je 0x1005a87d
lea esp, [esp]
movzx eax, byte [esi]
add ecx, eax
dec ebx
inc esi
add edi, ecx
test ebx, ebx
jne 0x1005a870
cmp ecx, 0xfff1
jb 0x1005a88b
sub ecx, 0xfff1
mov eax, 0x80078071
mul edi
shr edx, 0xf
mov eax, edx
shl eax, 4
sub eax, edx
add eax, edi
pop esi
shl eax, 0x10
pop edi
or eax, ecx
pop ebx
pop ebp
ret 0xc
cmp ebx, 0x15b0
jb 0x1005a999
mov eax, 0x5e6ea9af
mul ebx
shr edx, 0xb
mov dword [ebp + 0xc], edx
jmp 0x1005a8d0
sub ebx, 0x15b0
mov eax, 0x15b
jmp 0x1005a8e0
movzx edx, byte [esi]
add ecx, edx
movzx edx, byte [esi + 1]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 2]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 3]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 4]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 5]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 6]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 7]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 8]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 9]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xa]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xb]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xc]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xd]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xe]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xf]
add edi, ecx
add ecx, edx
add edi, ecx
add esi, 0x10
sub eax, 1
jne 0x1005a8e0
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul edx, edx, 0xffff000f
add edi, edx
sub dword [ebp + 0xc], 1
jne 0x1005a8d0
test ebx, ebx
je 0x1005aa73
cmp ebx, 0x10
jb 0x1005aa3e
mov eax, ebx
shr eax, 4
nop
movzx edx, byte [esi]
add ecx, edx
movzx edx, byte [esi + 1]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 2]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 3]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 4]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 5]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 6]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 7]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 8]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 9]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xa]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xb]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xc]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xd]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xe]
add edi, ecx
add ecx, edx
movzx edx, byte [esi + 0xf]
add edi, ecx
add ecx, edx
sub ebx, 0x10
add edi, ecx
add esi, 0x10
sub eax, 1
jne 0x1005a9b0
test ebx, ebx
je 0x1005aa4f
movzx eax, byte [esi]
add ecx, eax
dec ebx
inc esi
add edi, ecx
test ebx, ebx
jne 0x1005aa42
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul edx, edx, 0xffff000f
add edi, edx
mov eax, edi
pop esi
shl eax, 0x10
pop edi
or eax, ecx
pop ebx
pop ebp
ret 0xc