SMKM_STORE_MGR::SmFeEvictUpdatePass
__int64 __fastcall SMKM_STORE_MGR::SmFeEvictUpdatePass(
__int64 a1,
unsigned int *a2,
unsigned int *a3,
_DWORD *a4,
__int64 a5){
unsigned int v5;
unsigned int v6;
int v7;
unsigned int v8;
unsigned int v9;
int v10;
unsigned int v11;
__m128i *v12;
__int64 v13;
unsigned __int64 v14;
__int64 v15;
__int64 v16;
unsigned int v17;
int v19;
int v20;
unsigned int v21;
v5 = *a2;
v6 = 0;
v7 = 0;
v8 = *a3;
v9 = 1024;
v10 = *(_DWORD *)(a5 + 24);
v11 = *a3 + *a2 - 1;
v21 = *a3;
if( v10 == -1 || !v10 )
v12 = (__m128i *)(a5 + 8);
else
v12 = (__m128i *)(*(_QWORD *)a5 + 16i64 * (unsigned int)(v10 - 1));
v13 = v12->m128i_i64[0];
v14 = _mm_srli_si128(*v12, 8).m128i_u64[0] - 8;
while( 1 )
{
if( !v13 )
{
v15 = 0i64;
LABEL_27:
v17 = v11;
v19 = 1;
goto LABEL_28;
}
v14 += 8i64;
v15 = v14;
if( v14 >= v13 + 8 * ((unsigned __int64)(unsigned __int16)*(_DWORD *)v13 + 2) )
{
v16 = *(_QWORD *)(v13 + 8);
if( v16 )
{
v13 = *(_QWORD *)(v13 + 8);
v14 = v16 + 16;
}
v15 = (v16 + 16) & -(__int64)(v16 != 0);
}
if( !v15 )
goto LABEL_27;
v17 = *(_DWORD *)v15;
if( v5 >= *(_DWORD *)v15 && (*(_BYTE *)(v15 + 7) & 1) == 0 )
goto LABEL_13;
if( v11 < v17 )
goto LABEL_27;
v19 = 0;
LABEL_28:
v7 += v17 - v5;
v20 = v7;
if( v6 )
break;
if( v19 )
{
LABEL_23:
++v7;
goto LABEL_24;
}
v6 = v17 - v5;
v5 = v17;
if( (*(_BYTE *)(v15 + 7) & 1) == 0 )
{
LABEL_13:
if( v9 != 1024 && v9 != *(unsigned __int16 *)(v15 + 4) )
goto LABEL_24;
if( *(_BYTE *)(v15 + 6) == 2 )
{
if( v9 != 1024 )
goto LABEL_24;
}
else
{
if( v6 )
{
if( v9 == 1024 )
goto LABEL_24;
}
else
{
if( !SmKmStoreReferenceEx((INT64)&SmGlobals, *(unsigned __int16 *)(v15 + 4)) )
goto LABEL_23;
v9 = *(unsigned __int16 *)(v15 + 4);
v8 = v21;
}
*(_BYTE *)(v15 + 6) = 2;
}
}
++v6;
++v7;
if( v6 == v8 )
goto LABEL_24;
++v5;
}
++v7;
if( !v19 )
v7 = v20;
LABEL_24:
*a3 = v6;
*a4 = v7;
return v9;
}
Referenced by:
No references.