SmpPageWrite

NTSTATUS __stdcall SmpPageWrite(
        _SM_PAGE_KEY *PageKey,
        _MM_STORE_KEY_DESCRIPTOR *KeyDescriptor,
        VOID *StoreContext,
        _MDL *Mdl,
        VOID *TransferContext,
        _IO_STATUS_BLOCK *IoStatus,
        UINT64 WaitAllowed){
  int v7; 
  int v10; 
  int v11; 
  unsigned int v12; 
  NTSTATUS v13; 
  _EX_RUNDOWN_REF *v15; 
  int v16; 

  v7 = (int)StoreContext;
  v16 = (int)StoreContext;
  v10 = -1;
  if( (KeyDescriptor[2] & 3) != 0
    || (v11 = SmpKeyedStoreReference(&KeyedStoreCtx, (_SMKM_STORE_LIST *)SmGlobals, *(_QWORD *)KeyDescriptor),
        v10 = v11,
        v11 == -1) )
  {
    v12 = v16;
  }
  else
  {
    v12 = v11 & 0x3FF | v7 & 0xFFFFF800;
    v16 = v12;
  }
  if( (v12 & 0x7FF) != 1024 )
    goto LABEL_7;
  if( dword_140D231B0 != -1 )
  {
    v16 = dword_140D231B0 & 0x3FF | v12 & 0xFFFFF800;
LABEL_7:
    v13 = SMKM_STORE_MGR::SmPageWrite(
            (__int64)SmGlobals,
            PageKey,
            v16,
            (__int64)Mdl,
            (unsigned __int64)TransferContext & 0x7FFFFFFFFFFFFFFFi64,
            (__int64 *)&IoStatus->Pointer,
            WaitAllowed);
    goto LABEL_8;
  }
  v13 = -1073741285;
LABEL_8:
  if( v10 != -1 )
  {
    v15 = (_EX_RUNDOWN_REF *)SmKmStoreRefFromStoreIndex((__int64)SmGlobals, v10 & 0x3FF);
    ExReleaseRundownProtection(v15 + 1);
  }
  return v13;
}

Referenced by:

MiStoreWriteIssue