Function at 0x42ecb0
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 8
mov esi, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
movzx eax, cx
shr ecx, 0x10
mov edi, edx
shr edi, 5
and edx, 0x1f
test edi, edi
mov dword [ebp - 0x10], edx
je 0x42eded
mov ebx, edi
mov edx, edi
movdqa xmm0, xmmword [0x5dd050]
pxor xmm2, xmm2
movdqa xmm3, xmmword [0x5dd040]
nop word cs:[eax + eax]
nop dword [eax]
cmp edx, 0xad
mov ebx, 0xad
mov dword [ebp - 0x14], edx
cmovb ebx, edx
mov edx, eax
imul edx, ebx
movd xmm5, edx
movd xmm4, ecx
mov ecx, ebx
shl ecx, 5
mov edx, ebx
pxor xmm6, xmm6
mov edi, esi
nop dword [eax + eax]
movdqu xmm7, xmmword [esi]
movdqa xmm1, xmm7
pmaddubsw xmm7, xmmword [0x5dd030]
pmaddwd xmm7, xmm3
paddd xmm7, xmm4
movdqu xmm4, xmmword [esi + 0x10]
paddd xmm5, xmm6
psadbw xmm1, xmm2
paddd xmm1, xmm6
movdqa xmm6, xmm4
psadbw xmm6, xmm2
paddd xmm6, xmm1
pmaddubsw xmm4, xmm0
pmaddwd xmm4, xmm3
paddd xmm4, xmm7
add esi, 0x20
add edx, 0xffffffff
jne 0x42ed30
mov esi, edi
add esi, ecx
pslld xmm5, 5
paddd xmm4, xmm5
pshufd xmm1, xmm6, 0xb1
paddd xmm1, xmm6
pshufd xmm5, xmm1, 0xee
paddd xmm5, xmm1
movd edi, xmm5
add edi, eax
pshufd xmm1, xmm4, 0xb1
paddd xmm1, xmm4
pshufd xmm4, xmm1, 0xee
mov eax, edi
mov ecx, 0x80078071
mul ecx
paddd xmm4, xmm1
movd ecx, xmm4
shr edx, 0xf
imul eax, edx, 0xfff1
sub edi, eax
mov eax, ecx
mov edx, 0x80078071
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov eax, edi
mov edx, dword [ebp - 0x14]
sub edx, ebx
jne 0x42ed00
jmp 0x42edef
mov edi, eax
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x42ef21
cmp ebx, 0x10
jb 0x42ee8a
movzx eax, byte [esi]
add edi, eax
add ecx, edi
movzx eax, byte [esi + 1]
add eax, edi
add ecx, eax
movzx edx, byte [esi + 2]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 3]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 4]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 5]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 6]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 7]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 8]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 9]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 0xa]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 0xb]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 0xc]
add edx, eax
add ecx, edx
movzx eax, byte [esi + 0xd]
add eax, edx
add ecx, eax
movzx edx, byte [esi + 0xe]
add edx, eax
add ecx, edx
movzx edi, byte [esi + 0xf]
add edi, edx
add ecx, edi
add ebx, 0xfffffff0
je 0x42eefe
add esi, 0x10
lea edx, [ebx - 1]
mov eax, ebx
and eax, 3
mov dword [ebp - 0x10], ebx
je 0x42eebb
mov dword [ebp - 0x14], edx
xor edx, edx
nop dword [eax]
movzx ebx, byte [esi + edx]
add edi, ebx
add ecx, edi
add edx, 1
cmp eax, edx
jne 0x42eea0
sub dword [ebp - 0x10], edx
add esi, edx
mov ebx, esi
mov edx, dword [ebp - 0x14]
jmp 0x42eebd
mov ebx, esi
cmp edx, 3
mov esi, dword [ebp - 0x10]
jb 0x42eefe
xor eax, eax
nop word [eax + eax]
movzx edx, byte [ebx + eax]
add edx, edi
add ecx, edx
mov edi, esi
movzx esi, byte [ebx + eax + 1]
add esi, edx
add ecx, esi
movzx edx, byte [ebx + eax + 2]
add edx, esi
mov esi, edi
add ecx, edx
movzx edi, byte [ebx + eax + 3]
add edi, edx
add ecx, edi
add eax, 4
cmp esi, eax
jne 0x42eed0
lea eax, [edi - 0xfff1]
cmp edi, 0xfff0
cmova edi, eax
mov edx, 0x80078071
mov eax, ecx
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, edi
mov eax, ecx
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret