MiUpdateUserMappings

VOID __stdcall MiUpdateUserMappings(UINT64 Restore){
  _MMPTE *Pml4eBase; 
  INT64 v2; 
  UINT64 QuasiPte; 
  Pml4eBase = MmGetPml4eBase();
  do
  {
    v2 = MI_READ_PTE_LOCK_FREE((INT64)Pml4eBase);
    if( (v2 & 1) != 0 )
    {
      QuasiPte = MiMakeQuasiPte(v2);
    }
    else
    {
      if( (v2 & 0x400) == 0 )
        goto LABEL_4;
      QuasiPte = MiRevertQuasiPte(v2);
    }
    *(_QWORD *)Pml4eBase = QuasiPte;
LABEL_4:
    Pml4eBase = (_MMPTE *)((char *)Pml4eBase + 8);
  }
  while( Pml4eBase <= MmGetPxeUserLimit() );
}

Referenced by:

PopInvokeSystemStateHandler