MmInvalidateDumpAddresses

VOID __stdcall MmInvalidateDumpAddresses(VOID *Va, UINT64 NumberOfPages){
  char *v3; 
  unsigned int v4; 
  _MMPTE *PteAddress; 
  __int64 v6; 
  unsigned __int64 Long; 
  int v8; 
  unsigned __int64 *v9; 
  __int64 v10; 
  unsigned __int64 v11; 
  int v12; 

  v3 = (char *)Va;
  v4 = 0;
  PteAddress = MiGetPteAddress(Va);
  if( v6 )
  {
    do
    {
      Long = ZeroPte.u.Long;
      LOBYTE(v8) = MiPteInShadowRange((UINT64)PteAddress);
      if( v8 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (ZeroPte.u.Long & 1) != 0 )
        Long = ZeroPte.u.Long | 0x8000000000000000ui64;
      PteAddress->u.Long = Long;
      ++v4;
      ++PteAddress;
    }
    while( v4 < NumberOfPages );
  }
  for( ; NumberOfPages; --NumberOfPages )
  {
    KeFlushSingleCurrentTb(v3);
    v3 += 4096;
  }
  v9 = (unsigned __int64 *)*(&stru_140C4DB30 + 296);
  v10 = 32i64;
  do
  {
    v11 = ZeroPte.u.Long;
    LOBYTE(v12) = MiPteInShadowRange((UINT64)v9);
    if( v12 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (ZeroPte.u.Long & 1) != 0 )
      v11 = ZeroPte.u.Long | 0x8000000000000000ui64;
    *v9++ = v11;
    --v10;
  }
  while( v10 );
}

Referenced by:

PopInvokeSystemStateHandler