MiInsertAndUnlockStandbyPages

VOID __fastcall MiInsertAndUnlockStandbyPages(_MMPFN *DecayPfn, _MMPFN **LockedPfns, UINT8 *LockCount, UINT64 PageIrql){
  unsigned int v4; 
  unsigned int v5; 
  unsigned __int8 v6; 
  _MMPFN **v7; 
  __int64 v9; 
  int v10; 
  unsigned int v11; 
  _MMPFN *PfnDb; 
  _MMPFN *v13; 
  void *v14; 
  char v15; 
  unsigned __int64 v16; 
  char v17; 
  unsigned int v18; 
  UINT64 v19; 
  unsigned int v20; 
  _MMPFN **v21; 
  __int64 v22; 
  WORK_QUEUE_TYPE v23; 
  _MMPFN **v24; 
  __int64 v25; 
  struct _IO_WORKITEM LockHandle; 
  unsigned __int8 v28; 
  v28 = PageIrql;
  v4 = 0;
  v5 = (unsigned int)LockCount;
  v6 = PageIrql;
  v7 = LockedPfns;
  v9 = 0i64;
  memset(&LockHandle, 0, 24);
  if( !DecayPfn )
  {
    v10 = 0xFFFFFF;
    v11 = 0;
    if( !(_DWORD)LockCount )
      goto LABEL_21;
    PfnDb = MmGetPfnDb();
    do
    {
      v13 = *v7;
      v14 = (void *)(*((_QWORD *)*v7 + 3) & 0x3FFFFFFFFFFFFFFFi64);
      if( v14 || (v15 = *((_BYTE *)v13 + 34), (v15 & 7) == 6) || (v15 & 0x10) != 0 )
        KeBugCheckEx(0x4Eu, 6ui64, (*v7 - PfnDb) / 48, (ULONG_PTR)v14, *((unsigned int *)v13 + 8));
      v16 = *((_QWORD *)v13 + 5);
      if( (v16 & 0x2000000000000i64) != 0 || (v17 = *((_BYTE *)v13 + 35), (v17 & 0x40) != 0) )
      {
        if( v10 != 0xFFFFFF )
        {
          KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)&LockHandle);
          v10 = 0xFFFFFF;
        }
        v19 = 4i64;
      }
      else
      {
        if( (v17 & 8) != 0 )
          v18 = 5;
        else
          v18 = v17 & 7;
        if( !v9 )
          v9 = *(_QWORD *)(qword_140C4E388 + 8 * ((v16 >> 39) & 0x3FF));
        if( v18 != v10 || v9 != *(_QWORD *)(qword_140C4E388 + 8 * ((v16 >> 39) & 0x3FF)) )
        {
          if( v10 != 0xFFFFFF )
          {
            KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)&LockHandle);
            v16 = *((_QWORD *)v13 + 5);
          }
          v10 = v18;
          v23 = (v16 >> 39) & 0x3FF;
          v9 = *(_QWORD *)(qword_140C4E388 + 8i64 * (unsigned int)v23);
          LockHandle.WorkItem.List.Flink = 0i64;
          LockHandle.WorkItem.List.Blink = (_LIST_ENTRY *)(v9 + 8 * (v18 + 4 * (v18 + 77i64)));
          KxAcquireQueuedSpinLock(&LockHandle, (PIO_WORKITEM_ROUTINE)LockHandle.WorkItem.List.Blink, v23, v14);
        }
        v19 = 132i64;
      }
      MiInsertPageInList(v13, v19);
      ++v11;
      PfnDb = MmGetPfnDb();
      ++v7;
    }
    while( v11 < v5 );
    if( v10 != 0xFFFFFF )
      KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)&LockHandle);
    v7 = LockedPfns;
    goto LABEL_20;
  }
  if( (_DWORD)LockCount )
  {
    v24 = LockedPfns;
    v25 = (unsigned int)LockCount;
    do
    {
      MiInsertProtectedStandbyPage((INT64)DecayPfn, (UINT64)*v24++);
      --v25;
    }
    while( v25 );
LABEL_20:
    v6 = v28;
  }
LABEL_21:
  v20 = v5 - 1;
  if( v6 == 17 )
    v20 = v5;
  if( v20 )
  {
    v21 = v7;
    v22 = v20;
    v4 = v20;
    do
    {
      _InterlockedAnd64((volatile signed __int64 *)*v21++ + 3, 0x7FFFFFFFFFFFFFFFui64);
      --v22;
    }
    while( v22 );
  }
  if( v6 != 17 )
  {
    _InterlockedAnd64((volatile signed __int64 *)v7[v4] + 3, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(v6);
  }
}

Referenced by:

MiCopyDataPageToImagePage
MiDecrementAndInsertStandbyPages
MiFinishHardFault
MiWalkEntireImage