Function at 0x408b40
Capabilities:
Compute adler32 checksum

Disassembly:
push ebx
mov ebx, esp
push esi
mov esi, dword [ebx + 8]
push edi
mov edi, eax
push ebp
mov ebp, ecx
shr ebp, 0x10
and ecx, 0xffff
cmp esi, 1
jne 0x408b90
movzx eax, byte [edi]
add ecx, eax
cmp ecx, 0xfff1
jb 0x408b6e
sub ecx, 0xfff1
add ebp, ecx
cmp ebp, 0xfff1
jb 0x408d9f
sub ebp, 0xfff1
mov eax, ebp
pop ebp
shl eax, 0x10
or eax, ecx
pop edi
pop esi
pop ebx
ret 4
test edi, edi
jne 0x408b9e
lea eax, [edi + 1]
pop ebp
pop edi
pop esi
pop ebx
ret 4
cmp esi, 0x10
jae 0x408bdf
test esi, esi
je 0x408bb2
movzx edx, byte [edi]
add ecx, edx
inc edi
add ebp, ecx
dec esi
jne 0x408ba7
cmp ecx, 0xfff1
jb 0x408bc0
sub ecx, 0xfff1
mov eax, 0x80078071
mul ebp
shr edx, 0xf
mov eax, edx
shl eax, 4
sub eax, edx
add eax, ebp
shl eax, 0x10
or eax, ecx
pop ebp
pop edi
pop esi
pop ebx
ret 4
cmp esi, 0x15b0
jb 0x408cc6
mov eax, 0x5e6ea9af
mul esi
shr edx, 0xb
mov dword [ebx + 8], edx
jmp 0x408c00
sub esi, 0x15b0
mov eax, 0x15b
jmp 0x408c10
movzx edx, byte [edi]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 1]
add ecx, edx
movzx edx, byte [edi + 2]
add ebp, ecx
add ecx, edx
movzx edx, byte [edi + 3]
add ebp, ecx
add ecx, edx
movzx edx, byte [edi + 4]
add ebp, ecx
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 5]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 6]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 7]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 8]
add ecx, edx
movzx edx, byte [edi + 9]
add ebp, ecx
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 0xa]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 0xb]
add ecx, edx
movzx edx, byte [edi + 0xc]
add ebp, ecx
add ecx, edx
movzx edx, byte [edi + 0xd]
add ebp, ecx
add ecx, edx
movzx edx, byte [edi + 0xe]
add ebp, ecx
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 0xf]
add ecx, edx
add ebp, ecx
add edi, 0x10
dec eax
jne 0x408c10
mov eax, 0x80078071
mul ecx
mov eax, 0x80078071
shr edx, 0xf
imul edx, edx, 0xffff000f
add ecx, edx
mul ebp
shr edx, 0xf
imul edx, edx, 0xffff000f
add ebp, edx
dec dword [ebx + 8]
jne 0x408c00
test esi, esi
je 0x408d9f
cmp esi, 0x10
jb 0x408d6c
lea esp, [esp]
mov eax, esi
shr eax, 4
movzx edx, byte [edi]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 1]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 2]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 3]
add ecx, edx
movzx edx, byte [edi + 4]
add ebp, ecx
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 5]
add ecx, edx
movzx edx, byte [edi + 6]
add ebp, ecx
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 7]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 8]
add ecx, edx
movzx edx, byte [edi + 9]
add ebp, ecx
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 0xa]
add ecx, edx
movzx edx, byte [edi + 0xb]
add ebp, ecx
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 0xc]
add ecx, edx
add ebp, ecx
movzx edx, byte [edi + 0xd]
add ecx, edx
movzx edx, byte [edi + 0xe]
add ebp, ecx
add ecx, edx
movzx edx, byte [edi + 0xf]
add ebp, ecx
add ecx, edx
sub esi, 0x10
add ebp, ecx
add edi, 0x10
dec eax
jne 0x408ce0
test esi, esi
je 0x408d7b
movzx eax, byte [edi]
add ecx, eax
inc edi
add ebp, ecx
dec esi
jne 0x408d70
mov eax, 0x80078071
mul ecx
shr edx, 0xf
imul edx, edx, 0xffff000f
mov eax, 0x80078071
add ecx, edx
mul ebp
shr edx, 0xf
imul edx, edx, 0xffff000f
add ebp, edx
mov eax, ebp
shl eax, 0x10
or eax, ecx
pop ebp
pop edi
pop esi
pop ebx
ret 4