MiUpdateAvailableEvents

VOID __stdcall MiUpdateAvailableEvents(_MI_PARTITION *Partition){
  UINT64 v2; 
  UINT8 v3; 
  UINT8 v4; 
  unsigned __int64 v5; 
  struct _KEVENT *v6; 
  UINT64 v7; 
  UINT8 v8; 
  UINT8 v9; 
  struct _KEVENT *v10; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  memset(&LockHandle, 0, sizeof(LockHandle));
  KeAcquireInStackQueuedSpinLock((UINT64 *)Partition + 616, &LockHandle);
  v5 = *((_QWORD *)Partition + 888);
  v6 = (struct _KEVENT *)*((_QWORD *)Partition + 35);
  if( v5 <= *((_QWORD *)Partition + 646) )
    KeSetEvent(v6, 0);
  else
    KeResetEvent(v6, v2, v3, v4, (IRP *)LockHandle.LockQueue.Next);
  v10 = (struct _KEVENT *)*((_QWORD *)Partition + 36);
  if( v5 <= *((_QWORD *)Partition + 647) )
    KeResetEvent(v10, v7, v8, v9, (IRP *)LockHandle.LockQueue.Next);
  else
    KeSetEvent(v10, 0);
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
}

Referenced by:

MiDecreaseAvailablePages
MiIncreaseAvailablePages
MiInitializeMemoryEvents
MiInsertPageInFreeOrZeroedList
MiInsertPageInList
MiInsertProtectedStandbyPage
MiUnlinkFreeOrZeroedPage
MiUnlinkPageFromList
MiUpdatePageThresholdsDpc