Function at 0x4168a0
Capabilities:
Compute adler32 checksum

Disassembly:
push ebx
push esi
mov esi, edx
mov ebx, ecx
mov ecx, esi
push edi
mov edi, eax
shr ecx, 0x10
and esi, 0xffff
cmp edi, 1
je 0x43ac9b
test ebx, ebx
jne 0x43acc9
pop edi
pop esi
lea eax, [ebx + 1]
pop ebx
ret
movzx eax, byte [ebx]
add esi, eax
cmp esi, 0xfff1
jb 0x43acae
sub esi, 0xfff1
add ecx, esi
cmp ecx, 0xfff1
jb 0x43acbe
sub ecx, 0xfff1
mov eax, ecx
shl eax, 0x10
pop edi
or eax, esi
pop esi
pop ebx
ret
cmp edi, 0x10
jae 0x43ad09
test edi, edi
je 0x43acdf
movzx edx, byte [ebx]
add esi, edx
dec edi
inc ebx
add ecx, esi
test edi, edi
jne 0x43acd2
cmp esi, 0xfff1
jb 0x43aced
sub esi, 0xfff1
mov eax, 0x80078071
mul ecx
shr edx, 0xf
mov eax, edx
shl eax, 4
sub eax, edx
add eax, ecx
shl eax, 0x10
pop edi
or eax, esi
pop esi
pop ebx
ret
cmp edi, 0x15b0
jb 0x43ade6
mov eax, 0x5e6ea9af
mul edi
push ebp
mov ebp, edx
shr ebp, 0xb
sub edi, 0x15b0
mov eax, 0x15b
movzx edx, byte [ebx]
add esi, edx
movzx edx, byte [ebx + 1]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 2]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 3]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 4]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 5]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 6]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 7]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 8]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 9]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xa]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xb]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xc]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xd]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xe]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xf]
add ecx, esi
add esi, edx
add ecx, esi
add ebx, 0x10
sub eax, 1
jne 0x43ad2d
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul edx, edx, 0xffff000f
add esi, edx
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
sub ebp, 1
jne 0x43ad22
pop ebp
test edi, edi
je 0x43aebf
cmp edi, 0x10
jb 0x43ae8a
mov eax, edi
shr eax, 4
movzx edx, byte [ebx]
add esi, edx
movzx edx, byte [ebx + 1]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 2]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 3]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 4]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 5]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 6]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 7]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 8]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 9]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xa]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xb]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xc]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xd]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xe]
add ecx, esi
add esi, edx
movzx edx, byte [ebx + 0xf]
add ecx, esi
add esi, edx
sub edi, 0x10
add ecx, esi
add ebx, 0x10
sub eax, 1
jne 0x43adfc
test edi, edi
je 0x43ae9b
movzx eax, byte [ebx]
add esi, eax
dec edi
inc ebx
add ecx, esi
test edi, edi
jne 0x43ae8e
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul edx, edx, 0xffff000f
add esi, edx
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mov eax, ecx
shl eax, 0x10
pop edi
or eax, esi
pop esi
pop ebx
ret