Function at 0x467d4c
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 8
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov ebp, edx
movzx eax, cx
and edx, 0x1f
shr ecx, 0x10
shr ebp, 5
mov dword [esp], edx
test ebp, ebp
je 0x40569c
mov edx, 0xad
mov esi, 0xad
movd xmm4, ecx
mov ecx, ebp
pxor xmm6, xmm6
cmp ebp, edx
mov edx, eax
not ecx
cmovb esi, ebp
imul edx, esi
mov dword [esp + 4], esi
mov esi, 0xffffff52
cmp ecx, esi
movd xmm5, edx
cmovbe ecx, esi
inc ecx
movdqu xmm1, xmmword [edi]
movdqu xmm3, xmmword [edi + 0x10]
movdqa xmm7, xmm6
pxor xmm2, xmm2
add edi, 0x20
inc ecx
paddd xmm5, xmm7
movdqa xmm0, xmm1
movdqa xmm6, xmm3
psadbw xmm0, xmm2
psadbw xmm6, xmm2
movdqa xmm2, xmmword [0x50f080]
paddd xmm6, xmm0
movdqa xmm0, xmmword [0x50f0a0]
paddd xmm6, xmm7
pmaddubsw xmm1, xmm2
movdqa xmm7, xmm0
movdqa xmm0, xmmword [0x50f090]
pmaddubsw xmm3, xmm7
pmaddwd xmm3, xmm0
pmaddwd xmm1, xmm0
paddd xmm4, xmm3
paddd xmm4, xmm1
jne 0x4055cb
pshufd xmm0, xmm6, 0xb1
pslld xmm5, 5
mov ebx, 0x80078071
paddd xmm0, xmm6
paddd xmm4, xmm5
pshufd xmm1, xmm0, 0x4e
paddd xmm1, xmm0
pshufd xmm0, xmm4, 0xb1
movd esi, xmm1
paddd xmm0, xmm4
add esi, eax
pshufd xmm1, xmm0, 0x4e
mov eax, esi
paddd xmm1, xmm0
mul ebx
movd ecx, xmm1
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, ecx
mul ebx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
sub ebp, dword [esp + 4]
mov eax, esi
jne 0x405598
jmp 0x40569e
mov esi, eax
mov ebx, dword [esp]
test ebx, ebx
je 0x405767
cmp ebx, 0x10
jb 0x405739
movzx eax, byte [edi]
movzx edx, byte [edi + 2]
movzx ebp, byte [edi + 3]
add esi, eax
movzx eax, byte [edi + 1]
add ecx, esi
add eax, esi
movzx esi, byte [edi + 5]
add edx, eax
add ecx, eax
add ecx, edx
add ebp, edx
movzx edx, byte [edi + 4]
add ecx, ebp
add edx, ebp
movzx ebp, byte [edi + 7]
add ecx, edx
add esi, edx
movzx edx, byte [edi + 6]
add ecx, esi
add edx, esi
movzx esi, byte [edi + 9]
add ecx, edx
add ebp, edx
movzx edx, byte [edi + 8]
add ecx, ebp
add edx, ebp
movzx ebp, byte [edi + 0xb]
add ecx, edx
add esi, edx
movzx edx, byte [edi + 0xa]
add ecx, esi
add edx, esi
movzx esi, byte [edi + 0xd]
add ecx, edx
add ebp, edx
movzx edx, byte [edi + 0xc]
add ecx, ebp
add edx, ebp
movzx ebp, byte [edi + 0xe]
add esi, edx
add ecx, edx
add ecx, esi
add ebp, esi
movzx esi, byte [edi + 0xf]
add ecx, ebp
add esi, ebp
add ecx, esi
add ebx, 0xfffffff0
je 0x405744
add edi, 0x10
movzx eax, byte [edi]
inc edi
add esi, eax
add ecx, esi
dec ebx
jne 0x405739
lea eax, [esi - 0xfff1]
cmp esi, 0xfff0
mov edx, 0x80078071
cmova esi, eax
mov eax, ecx
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, esi
mov eax, ecx
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret
push ebp
push ebx
push edi
push esi
sub esp, 8
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
cmp ebx, 0x40
jb 0x467ab2
test edi, edi
je 0x467ab2
mov ecx, dword [0x55c278]
test ecx, ecx
je 0x467ab2
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
jmp 0x40556c
mov ecx, eax
movzx esi, ax
shr ecx, 0x10
cmp ebx, 1
jne 0x467aef
movzx eax, byte [edi]
mov edi, 0xfff0
lea edx, [esi + eax]
lea eax, [esi + eax - 0xfff1]
cmp edx, edi
cmovbe eax, edx
add ecx, eax
mov edx, ecx
shl edx, 0x10
cmp ecx, edi
lea ecx, [edx + 0xf0000]
cmovbe ecx, edx
or ecx, eax
jmp 0x467d42
test edi, edi
je 0x467b34
cmp ebx, 0xf
ja 0x467b3c
test ebx, ebx
je 0x467b07
movzx eax, byte [edi]
inc edi
add esi, eax
add ecx, esi
dec ebx
jne 0x467afc
lea edi, [esi - 0xfff1]
cmp esi, 0xfff0
mov edx, 0x80078071
mov eax, ecx
cmovbe edi, esi
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, edi
jmp 0x467d42
xor ecx, ecx
inc ecx
jmp 0x467d42
cmp ebx, 0x15b0
jb 0x467c62
mov ebp, 0x80078071
add ebx, 0xffffea50
mov eax, 0xffffea50
movzx edx, byte [edi + eax + 0x15b0]
add edx, esi
movzx esi, byte [edi + eax + 0x15b1]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15b2]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15b3]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15b4]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15b5]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15b6]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15b7]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15b8]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15b9]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15ba]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15bb]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15bc]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15bd]
add ecx, edx
add esi, edx
movzx edx, byte [edi + eax + 0x15be]
add ecx, esi
add edx, esi
movzx esi, byte [edi + eax + 0x15bf]
add ecx, edx
add esi, edx
add ecx, esi
add eax, 0x10
jne 0x467b58
mov eax, esi
add edi, 0x15b0
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, ecx
mul ebp
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
cmp ebx, 0x15af
ja 0x467b4d
test ebx, ebx
je 0x467d3d
cmp ebx, 0x10
jb 0x467d0f
mov ebp, ebx
lea ebx, [ebp - 0x10]
mov eax, ebx
and eax, 0xfffffff0
mov dword [esp + 4], eax
lea eax, [eax + 0x10]
mov dword [esp], eax
mov eax, edi
movzx edx, byte [eax]
add ebp, 0xfffffff0
add edx, esi
movzx esi, byte [eax + 1]
add ecx, edx
add esi, edx
movzx edx, byte [eax + 2]
add ecx, esi
add edx, esi
movzx esi, byte [eax + 3]
add ecx, edx
add esi, edx
movzx edx, byte [eax + 4]
add ecx, esi
add edx, esi
movzx esi, byte [eax + 5]
add ecx, edx
add esi, edx
movzx edx, byte [eax + 6]
add ecx, esi
add edx, esi
movzx esi, byte [eax + 7]
add ecx, edx
add esi, edx
movzx edx, byte [eax + 8]
add ecx, esi
add edx, esi
movzx esi, byte [eax + 9]
add ecx, edx
add esi, edx
movzx edx, byte [eax + 0xa]
add ecx, esi
add edx, esi
movzx esi, byte [eax + 0xb]
add ecx, edx
add esi, edx
movzx edx, byte [eax + 0xc]
add ecx, esi
add edx, esi
movzx esi, byte [eax + 0xd]
add ecx, edx
add esi, edx
movzx edx, byte [eax + 0xe]
add ecx, esi
add edx, esi
movzx esi, byte [eax + 0xf]
add eax, 0x10
add ecx, edx
add esi, edx
add ecx, esi
cmp ebp, 0xf
ja 0x467c78
sub ebx, dword [esp + 4]
je 0x467d1a
add edi, dword [esp]
movzx eax, byte [edi]
inc edi
add esi, eax
add ecx, esi
dec ebx
jne 0x467d0f
mov edi, 0x80078071
mov eax, esi
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
shl ecx, 0x10
or ecx, esi
mov eax, ecx
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret
jmp 0x467a80