MiWaitForPageWriteCompletion

VOID __fastcall MiWaitForPageWriteCompletion(
        _MMPFN *Pfn1,
        _CONTROL_AREA *ControlArea,
        _MMPFN *ProtoPoolPfn,
        UINT64 PageIrql){
  char v5; 
  UINT64 v8; 
  __int64 v9[2]; 
  __int64 PcValue; 
  __int64 v11[3]; 
  v9[1] = 8i64;
  v9[0] = 0i64;
  PcValue = 393479i64;
  v11[1] = (__int64)v11;
  v5 = PageIrql;
  v11[0] = (__int64)v11;
  ExAcquireSpinLockExclusiveAtDpcLevel((INT64 *)ControlArea + 9);
  v9[0] = *((_QWORD *)ControlArea + 10);
  *((_QWORD *)ControlArea + 10) = v9;
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)ControlArea + 9);
  _InterlockedAnd64((volatile signed __int64 *)Pfn1 + 3, 0x7FFFFFFFFFFFFFFFui64);
  LOBYTE(v8) = v5;
  MiUnlockProtoPoolPage(ProtoPoolPfn, v8);
  KeWaitForGate(&PcValue, 18);
}

Referenced by:

MiFlushSectionInternal
MmPurgeSection