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.