Function at 0x10101450
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
lea esp, [esp - 0x14]
mov edx, dword [ebp + 0x10]
mov eax, dword [0x104c5878]
xor eax, esp
mov esi, dword [edx]
shr esi, 0x10
mov dword [esp + 0x10], eax
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
movzx ebx, word [edx]
cmp dword [ebp + 0xc], 0x1f
jl 0x101016a0
mov edx, edi
movdqa xmm5, xmmword [0x1044aba0]
pxor xmm1, xmm1
movdqa xmm2, xmmword [0x1044abb0]
and edx, 0xf
je 0x10101504
neg edx
and edx, 0xf
jle 0x101014fd
mov eax, edx
shr eax, 1
mov dword [esp + 8], eax
test eax, eax
jbe 0x10101734
xor eax, eax
mov dword [esp + 4], eax
mov dword [esp], edx
mov dword [esp + 0xc], ecx
mov edx, eax
movzx ecx, byte [edi + eax*2]
add ebx, ecx
movzx ecx, byte [edi + eax*2 + 1]
add esi, ebx
add ebx, ecx
lea eax, [eax + 1]
add edx, ebx
cmp eax, dword [esp + 8]
jb 0x101014c4
mov dword [esp + 4], edx
add eax, eax
mov edx, dword [esp]
inc eax
mov ecx, dword [esp + 0xc]
add esi, dword [esp + 4]
cmp eax, edx
ja 0x101014fd
movzx eax, byte [eax + edi - 1]
add ebx, eax
add esi, ebx
mov edi, edx
sub ecx, edx
add edi, dword [ebp + 8]
mov eax, ecx
movd xmm4, ebx
sar eax, 4
movd xmm3, esi
cmp eax, 0x15a
jl 0x101015ee
mov dword [esp + 0xc], ecx
mov ecx, eax
mov edx, 0x15a
movdqa xmm0, xmmword [edi]
movdqa xmm6, xmm4
pslld xmm6, 4
movdqa xmm7, xmm0
punpcklbw xmm7, xmm1
paddd xmm3, xmm6
movdqa xmm6, xmm0
add edi, 0x10
pmaddwd xmm7, xmm5
dec edx
psadbw xmm0, xmm1
punpckhbw xmm6, xmm1
paddd xmm3, xmm7
pmaddwd xmm6, xmm2
paddd xmm4, xmm0
paddd xmm3, xmm6
jne 0x10101527
movdqa xmm0, xmm4
mov eax, 0x80078071
psrldq xmm0, 8
movdqa xmm7, xmm3
movd ebx, xmm4
movdqa xmm4, xmm3
movd esi, xmm0
movdqa xmm6, xmm3
psrldq xmm4, 4
psrldq xmm7, 0xc
add ebx, esi
add ecx, 0xfffffea6
mul ebx
shr edx, 0xf
imul esi, edx, 0xfff1
psrldq xmm6, 8
movd edx, xmm4
movd eax, xmm6
sub ebx, esi
movd esi, xmm3
add esi, edx
movd xmm4, ebx
movd edx, xmm7
add eax, edx
add esi, eax
mov eax, 0x80078071
mul esi
shr edx, 0xf
imul edx, edx, 0xfff1
sub esi, edx
cmp ecx, 0x15a
movd xmm3, esi
jge 0x10101522
mov eax, ecx
mov ecx, dword [esp + 0xc]
test eax, eax
je 0x1010169d
movdqa xmm0, xmmword [edi]
movdqa xmm6, xmm4
pslld xmm6, 4
movdqa xmm7, xmm0
punpcklbw xmm7, xmm1
paddd xmm3, xmm6
movdqa xmm6, xmm0
add edi, 0x10
pmaddwd xmm7, xmm5
dec eax
psadbw xmm0, xmm1
punpckhbw xmm6, xmm1
paddd xmm3, xmm7
pmaddwd xmm6, xmm2
paddd xmm4, xmm0
paddd xmm3, xmm6
jne 0x101015f6
movdqa xmm0, xmm4
mov eax, 0x80078071
psrldq xmm0, 8
movdqa xmm1, xmm3
movd ebx, xmm4
movdqa xmm4, xmm3
movd esi, xmm0
movdqa xmm2, xmm3
psrldq xmm1, 4
psrldq xmm4, 0xc
add ebx, esi
mul ebx
shr edx, 0xf
imul esi, edx, 0xfff1
psrldq xmm2, 8
movd eax, xmm1
movd edx, xmm2
sub ebx, esi
movd esi, xmm3
add esi, eax
movd eax, xmm4
add edx, eax
mov eax, 0x80078071
add esi, edx
mul esi
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
and ecx, 0xf
test ecx, ecx
jle 0x101016ef
mov eax, ecx
shr eax, 0x1f
add eax, ecx
sar eax, 1
mov dword [esp], eax
test eax, eax
jbe 0x1010173e
xor edx, edx
mov dword [esp + 0xc], ecx
xor eax, eax
movzx ecx, byte [edi + edx*2]
add ebx, ecx
movzx ecx, byte [edi + edx*2 + 1]
add esi, ebx
add ebx, ecx
lea edx, [edx + 1]
add eax, ebx
cmp edx, dword [esp]
jb 0x101016c0
add edx, edx
add esi, eax
mov ecx, dword [esp + 0xc]
inc edx
cmp edx, ecx
ja 0x101016ef
movzx eax, byte [edx + edi - 1]
add ebx, eax
add esi, ebx
mov eax, 0x80078071
mul ebx
shr edx, 0xf
mov eax, 0x80078071
imul ecx, edx, 0xfff1
mul esi
shr edx, 0xf
sub ebx, ecx
imul edi, edx, 0xfff1
sub esi, edi
shl esi, 0x10
or ebx, esi
mov esi, dword [ebp + 0x10]
mov dword [esi], ebx
mov ecx, dword [esp + 0x10]
xor ecx, esp
call fcn.103b6385
lea esp, [esp + 0x14]
pop ebx
pop edi
pop esi
lea esp, [ebp]
pop ebp
ret
mov eax, 1
jmp 0x101014f0
mov edx, 1
jmp 0x101016e2