Function at 0x101010a0
Capabilities:
Compute adler32 checksum

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x44
mov edx, dword [ebp + 0x10]
mov eax, dword [0x104c5878]
mov ebx, dword [ebp + 0xc]
xor eax, esp
mov edi, dword [edx]
movzx ecx, di
shr edi, 0x10
mov dword [esp + 0x34], eax
cmp ebx, 0x1f
mov esi, dword [ebp + 8]
jl 0x101013a9
mov edx, esi
and edx, 0xf
je 0x1010113a
neg edx
and edx, 0xf
jle 0x10101136
mov eax, edx
shr eax, 1
mov dword [esp + 8], eax
test eax, eax
jbe 0x1010143a
xor eax, eax
mov dword [esp + 4], eax
mov dword [esp], edx
mov dword [esp + 0x24], ebx
mov edx, eax
movzx ebx, byte [esi + eax*2]
add ecx, ebx
movzx ebx, byte [esi + eax*2 + 1]
add edi, ecx
add ecx, ebx
inc eax
add edx, ecx
cmp eax, dword [esp + 8]
jb 0x101010fe
mov dword [esp + 4], edx
lea eax, [eax + eax + 1]
mov edx, dword [esp]
mov ebx, dword [esp + 0x24]
add edi, dword [esp + 4]
cmp eax, edx
ja 0x10101136
movzx eax, byte [eax + esi - 1]
add ecx, eax
add edi, ecx
sub ebx, edx
add esi, edx
mov eax, ebx
movd xmm0, ecx
sar eax, 4
movd xmm1, edi
movdqa xmmword [esp], xmm0
cmp eax, 0x15a
movdqa xmmword [esp + 0x10], xmm1
mov dword [esp + 0x30], eax
jl 0x101012af
xor edi, edi
xor ecx, ecx
cdq
sub edi, eax
mov dword [esp + 0x20], 0
push 0xffffffffffffffff
push 0xfffffea6
sbb ecx, edx
push ecx
push edi
call fcn.103b7330
mov edx, eax
xor eax, eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], edx
pxor xmm1, xmm1
mov dword [esp + 0x2c], esi
mov esi, eax
movdqa xmm0, xmmword [esp + 0x10]
movdqa xmm5, xmmword [esp]
mov ebx, dword [esp + 0x20]
movdqa xmm3, xmmword [0x1044ab90]
movdqa xmm4, xmmword [0x1044ab80]
mov ecx, dword [esp + 0x2c]
xor edx, edx
nop dword [eax + eax]
mov edi, edx
movdqa xmm6, xmm5
shl edi, 4
pslld xmm6, 4
paddd xmm0, xmm6
inc edx
cmp edx, 0x15a
movdqa xmm2, xmmword [ecx + edi]
lea edi, [ecx + edi + 0x10]
movdqa xmm7, xmm2
movdqa xmm6, xmm2
punpcklbw xmm7, xmm1
pmaddwd xmm7, xmm4
psadbw xmm2, xmm1
punpckhbw xmm6, xmm1
paddd xmm0, xmm7
pmaddwd xmm6, xmm3
paddd xmm5, xmm2
paddd xmm0, xmm6
jb 0x101011c0
movdqa xmm2, xmm5
mov eax, 0x80078071
psrldq xmm2, 8
movdqa xmm7, xmm0
mov dword [esp + 0x2c], edi
movdqa xmm6, xmm0
movd ecx, xmm5
movdqa xmm5, xmm0
movd edi, xmm2
psrldq xmm5, 4
psrldq xmm7, 0xc
add ecx, edi
inc ebx
mul ecx
shr edx, 0xf
imul edi, edx, 0xfff1
psrldq xmm6, 8
movd edx, xmm5
movd eax, xmm6
sub ecx, edi
movd edi, xmm0
add edi, edx
movd xmm5, ecx
movd edx, xmm7
add eax, edx
add edi, eax
mov eax, 0x80078071
mul edi
shr edx, 0xf
imul edx, edx, 0xfff1
sub edi, edx
mov edx, dword [esp + 0x30]
movd xmm0, edi
lea eax, [esi + edx - 0x15a]
add esi, 0xfffffea6
cmp ebx, dword [esp + 0x28]
jb 0x101011b5
movdqa xmmword [esp + 0x10], xmm0
movdqa xmmword [esp], xmm5
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
mov edx, esi
test eax, eax
je 0x101013a6
movdqa xmm0, xmmword [esp + 0x10]
xor ecx, ecx
movdqa xmm1, xmmword [esp]
pxor xmm3, xmm3
movdqa xmm4, xmmword [0x1044ab90]
movdqa xmm5, xmmword [0x1044ab80]
nop word [eax + eax]
mov esi, ecx
movdqa xmm6, xmm1
shl esi, 4
pslld xmm6, 4
paddd xmm0, xmm6
inc ecx
cmp ecx, eax
movdqa xmm2, xmmword [edx + esi]
lea esi, [edx + esi + 0x10]
movdqa xmm7, xmm2
movdqa xmm6, xmm2
punpcklbw xmm7, xmm3
pmaddwd xmm7, xmm5
psadbw xmm2, xmm3
punpckhbw xmm6, xmm3
paddd xmm0, xmm7
pmaddwd xmm6, xmm4
paddd xmm1, xmm2
paddd xmm0, xmm6
jb 0x101012e0
movdqa xmmword [esp], xmm1
mov eax, 0x80078071
movdqa xmmword [esp + 0x10], xmm0
movdqa xmm0, xmmword [esp]
movdqa xmm1, xmm0
psrldq xmm1, 8
movd ecx, xmm0
movd edi, xmm1
movdqa xmm2, xmmword [esp + 0x10]
movdqa xmm3, xmm2
movdqa xmm5, xmm2
add ecx, edi
movdqa xmm4, xmm2
mul ecx
shr edx, 0xf
imul edi, edx, 0xfff1
psrldq xmm3, 4
psrldq xmm5, 0xc
movd eax, xmm3
psrldq xmm4, 8
movd edx, xmm4
sub ecx, edi
movd edi, xmm2
add edi, eax
movd eax, xmm5
add edx, eax
mov eax, 0x80078071
add edi, edx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub edi, eax
and ebx, 0xf
test ebx, ebx
jle 0x101013f7
mov eax, ebx
shr eax, 0x1f
add eax, ebx
sar eax, 1
mov dword [esp], eax
test eax, eax
jbe 0x10101444
xor eax, eax
mov dword [esp + 0x24], ebx
xor edx, edx
movzx ebx, byte [esi + eax*2]
add ecx, ebx
movzx ebx, byte [esi + eax*2 + 1]
add edi, ecx
add ecx, ebx
inc eax
add edx, ecx
cmp eax, dword [esp]
jb 0x101013c9
mov ebx, dword [esp + 0x24]
add edi, edx
lea eax, [eax + eax + 1]
cmp eax, ebx
ja 0x101013f7
movzx eax, byte [eax + esi - 1]
add ecx, eax
add edi, ecx
mov eax, 0x80078071
mul ecx
shr edx, 0xf
mov eax, 0x80078071
imul ebx, edx, 0xfff1
mul edi
shr edx, 0xf
sub ecx, ebx
imul esi, edx, 0xfff1
sub edi, esi
shl edi, 0x10
or ecx, edi
mov edi, dword [ebp + 0x10]
mov dword [edi], ecx
mov ecx, dword [esp + 0x34]
xor ecx, esp
call fcn.103b6385
add esp, 0x44
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, 1
jmp 0x10101129
mov eax, 1
jmp 0x101013ea