Function at 0x10101e70
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
mov esi, dword [ebp + 8]
cmp ebx, 0x1f
jl 0x10102136
mov edx, esi
and edx, 0xf
je 0x10101f0a
neg edx
and edx, 0xf
jle 0x10101f06
mov eax, edx
shr eax, 1
mov dword [esp + 8], eax
test eax, eax
jbe 0x101021c7
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 0x10101ece
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 0x10101f06
movzx eax, byte [eax + esi - 1]
add ecx, eax
add edi, ecx
sub ebx, edx
add esi, edx
mov eax, ebx
vmovd xmm0, ecx
sar eax, 4
vmovd xmm1, edi
vmovdqu xmmword [esp], xmm0
vmovdqu xmmword [esp + 0x10], xmm1
mov dword [esp + 0x30], eax
cmp eax, 0x15a
jl 0x1010205e
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
vpxor xmm5, xmm5, xmm5
mov dword [esp + 0x2c], esi
mov esi, eax
vmovdqu xmm0, xmmword [esp + 0x10]
vmovdqu xmm1, xmmword [esp]
mov ebx, dword [esp + 0x20]
vmovdqu xmm3, xmmword [0x1044ac10]
vmovdqu xmm4, xmmword [0x1044ac00]
mov ecx, dword [esp + 0x2c]
xor edx, edx
mov edi, edx
vpslld xmm6, xmm1, 4
shl edi, 4
vpaddd xmm7, xmm0, xmm6
inc edx
vmovdqu xmm2, xmmword [ecx + edi]
lea edi, [ecx + edi + 0x10]
vpunpcklbw xmm0, xmm2, xmm5
vpmaddwd xmm0, xmm0, xmm4
vpunpckhbw xmm6, xmm2, xmm5
vpaddd xmm7, xmm7, xmm0
vpmaddwd xmm0, xmm6, xmm3
vpsadbw xmm2, xmm2, xmm5
vpaddd xmm0, xmm7, xmm0
vpaddd xmm1, xmm1, xmm2
cmp edx, 0x15a
jb 0x10101f8b
vpsrldq xmm2, xmm1, 8
mov eax, 0x80078071
mov dword [esp + 0x2c], edi
inc ebx
vmovd ecx, xmm1
vmovd edi, xmm2
vpsrldq xmm1, xmm0, 4
vpsrldq xmm7, xmm0, 0xc
add ecx, edi
mul ecx
shr edx, 0xf
imul edi, edx, 0xfff1
vpsrldq xmm6, xmm0, 8
vmovd edx, xmm1
vmovd eax, xmm6
sub ecx, edi
vmovd edi, xmm0
add edi, edx
vmovd xmm1, ecx
vmovd 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]
vmovd xmm0, edi
lea eax, [esi + edx - 0x15a]
add esi, 0xfffffea6
cmp ebx, dword [esp + 0x28]
jb 0x10101f85
vmovdqu xmmword [esp + 0x10], xmm0
vmovdqu xmmword [esp], xmm1
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
mov edx, esi
test eax, eax
je 0x10102133
vmovdqu xmm6, xmmword [esp + 0x10]
xor ecx, ecx
vmovdqu xmm0, xmmword [esp]
vpxor xmm2, xmm2, xmm2
vmovdqu xmm3, xmmword [0x1044ac10]
vmovdqu xmm4, xmmword [0x1044ac00]
mov esi, ecx
vpslld xmm5, xmm0, 4
shl esi, 4
vpaddd xmm7, xmm6, xmm5
inc ecx
vmovdqu xmm1, xmmword [edx + esi]
lea esi, [edx + esi + 0x10]
vpunpcklbw xmm6, xmm1, xmm2
vpmaddwd xmm5, xmm6, xmm4
vpunpckhbw xmm6, xmm1, xmm2
vpaddd xmm7, xmm7, xmm5
vpmaddwd xmm5, xmm6, xmm3
vpsadbw xmm1, xmm1, xmm2
vpaddd xmm6, xmm7, xmm5
vpaddd xmm0, xmm0, xmm1
cmp ecx, eax
jb 0x10102089
vmovdqu xmmword [esp], xmm0
mov eax, 0x80078071
vmovdqu xmm0, xmmword [esp]
vpsrldq xmm1, xmm0, 8
vmovd ecx, xmm0
vmovd edi, xmm1
vmovdqu xmmword [esp + 0x10], xmm6
vmovdqu xmm2, xmmword [esp + 0x10]
add ecx, edi
mul ecx
shr edx, 0xf
imul edi, edx, 0xfff1
vpsrldq xmm3, xmm2, 4
vpsrldq xmm5, xmm2, 0xc
vmovd eax, xmm3
vpsrldq xmm4, xmm2, 8
vmovd edx, xmm4
sub ecx, edi
vmovd edi, xmm2
add edi, eax
vmovd 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 0x10102184
mov eax, ebx
shr eax, 0x1f
add eax, ebx
sar eax, 1
mov dword [esp], eax
test eax, eax
jbe 0x101021d1
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 0x10102156
mov ebx, dword [esp + 0x24]
add edi, edx
lea eax, [eax + eax + 1]
cmp eax, ebx
ja 0x10102184
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 0x10101ef9
mov eax, 1
jmp 0x10102177