SMKM_STORE_MGR::SmpPageEvict
__int64 __fastcall SMKM_STORE_MGR::SmpPageEvict(__int64 a1, unsigned int *a2, unsigned int a3, __int64 a4){
_DWORD *v5;
unsigned int v6;
unsigned int v7;
__int64 *v8;
int v9;
__int64 v10;
__int64 *v11;
__int64 v12;
int v13;
__int64 *v14;
_DWORD *v15;
_EX_RUNDOWN_REF *v17;
UINT64 DontFail;
UINT64 DontFaila;
int v20;
unsigned int v21;
int v22;
v22 = HIDWORD(a4);
v20 = a3;
v21 = 0;
v5 = 0i64;
v6 = SMKM_STORE_MGR::SmFeEvictInitiate(a1, a2, (unsigned int *)&v20, &v21);
v7 = v6;
if( v6 != 1024 )
{
v8 = (__int64 *)SmKmStoreRefFromStoreIndex((__int64)SmGlobals, v6 & 0x3FF);
v9 = dword_140D230F0 & 1;
LODWORD(DontFail) = v9;
v10 = *v8;
v11 = (__int64 *)SmFpAllocate(&dword_140D22F50, SmFpResourceIoCtx, 0i64, 0i64, DontFail);
v13 = v20;
v14 = v11;
if( v11 )
{
v11[1] = 0i64;
*v11 = 0i64;
LODWORD(DontFaila) = v9;
v15 = SmFpAllocate(&dword_140D22F50, SmFpResourceWorkItem, v11, 0i64, DontFaila);
v5 = v15;
if( v15 )
{
v15[1] = 0;
*((_QWORD *)v15 + 2) = 0i64;
*((_QWORD *)v15 + 3) = 0i64;
*v15 = 1;
v15[2] = *a2;
v15[3] = v13;
*((_QWORD *)v15 + 4) = v14;
if( (int)SMKM_STORE_MGR::SmIoCtxQueueWork(v14, (__int64)SmGlobals, v7, (unsigned __int64)v15) >= 0 )
{
v10 = 0i64;
v5 = 0i64;
v14 = 0i64;
}
}
}
if( v10 )
{
SMKM_STORE_MGR::SmFeSetEvictFailed(v12, a2, v13);
v17 = (_EX_RUNDOWN_REF *)SmKmStoreRefFromStoreIndex((__int64)SmGlobals, *(_DWORD *)(v10 + 6016) & 0x3FF);
ExReleaseRundownProtection(v17 + 1);
}
if( v5 )
SMKM_STORE_MGR::SmWorkItemFreeResource((__int64)SmGlobals, v5, v14);
if( v14 )
SmFpFree(&dword_140D22F50, SmFpResourceIoCtx, v14, v14);
}
return v21;
}
Referenced by:
No references.