Function at 0x414760
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, ecx
mov esi, edx
shr edi, 0x10
movzx ecx, cx
cmp ebx, 1
jne 0x4147a7
movzx eax, byte [esi]
add ecx, eax
cmp ecx, 0xfff1
lea edx, [ecx - 0xfff1]
cmovb edx, ecx
add edi, edx
cmp edi, 0xfff1
lea eax, [edi - 0xfff1]
cmovb eax, edi
pop edi
shl eax, 0x10
pop esi
or eax, edx
pop ebx
pop ebp
ret
test esi, esi
jne 0x4147b3
pop edi
lea eax, [esi + 1]
pop esi
pop ebx
pop ebp
ret
cmp ebx, 0x10
jae 0x4147fb
test ebx, ebx
je 0x4147cf
nop dword [eax]
movzx eax, byte [esi]
lea esi, [esi + 1]
add ecx, eax
add edi, ecx
sub ebx, 1
jne 0x4147c0
cmp ecx, 0xfff1
lea esi, [ecx - 0xfff1]
mov eax, 0x80078071
cmovb esi, ecx
mul edi
shr edx, 0xf
mov eax, edx
shl eax, 4
sub eax, edx
add eax, edi
shl eax, 0x10
pop edi
or eax, esi
pop esi
pop ebx
pop ebp
ret
cmp ebx, 0x15b0
jb 0x4148e9
mov eax, 0x5e6ea9af
mul ebx
shr edx, 0xb
mov dword [ebp + 8], edx
nop dword [eax]
nop dword [eax + eax]
sub ebx, 0x15b0
mov edx, 0x15b
nop dword [eax + eax]
movzx eax, byte [esi]
add ecx, eax
movzx eax, byte [esi + 1]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 2]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 3]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 4]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 5]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 6]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 7]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 8]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 9]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xa]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xb]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xc]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xd]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xe]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xf]
add edi, ecx
add esi, 0x10
add ecx, eax
add edi, ecx
sub edx, 1
jne 0x414830
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul eax, edx, 0xffff000f
add edi, eax
sub dword [ebp + 8], 1
jne 0x414820
test ebx, ebx
je 0x4149c5
cmp ebx, 0x10
jb 0x41498e
mov edx, ebx
shr edx, 4
nop
movzx eax, byte [esi]
sub ebx, 0x10
add ecx, eax
movzx eax, byte [esi + 1]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 2]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 3]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 4]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 5]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 6]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 7]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 8]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 9]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xa]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xb]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xc]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xd]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xe]
add edi, ecx
add ecx, eax
movzx eax, byte [esi + 0xf]
add edi, ecx
add esi, 0x10
add ecx, eax
add edi, ecx
sub edx, 1
jne 0x414900
test ebx, ebx
je 0x4149a1
movzx eax, byte [esi]
lea esi, [esi + 1]
add ecx, eax
add edi, ecx
sub ebx, 1
jne 0x414992
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul eax, edx, 0xffff000f
add ecx, eax
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul edx, edx, 0xffff000f
add edi, edx
shl edi, 0x10
or edi, ecx
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
ret