MiArePageContentsZero

NTSTATUS __stdcall MiArePageContentsZero(PVOID BugCheckParameter2){
  unsigned __int64 v1; 
  unsigned __int64 v2; 
  char *v3; 
  _MMPFN *v4; 
  unsigned __int8 CurrentIrql; 
  int v6; 
  int v7; 
  VOID *v8; 
  __int64 v9; 
  NTSTATUS result; 

  v2 = v1;
  v3 = (char *)BugCheckParameter2;
  v4 = &MmGetPfnDb()[(_QWORD)BugCheckParameter2];
LABEL_2:
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  if( KeGetCurrentPrcb()->HyperPte )
  {
    v6 = *((unsigned __int8 *)&v4->u3 + 2) >> 6;
    if( v6 == 3 )
    {
      v2 = 0i64;
    }
    else if( v6 != 1 && v2 > 0x10 )
    {
      v2 = 16i64;
    }
    while( v2 )
    {
      if( (*((_BYTE *)&v4->u3 + 3) & 0x40) == 0 )
      {
        LOBYTE(v7) = MiIsPageOnBadList((INT64)v4);
        if( !v7 )
        {
          v8 = MiMapPageInHyperSpaceWorker((UINT64)v3, 0i64, 0x20000000ui64);
          KeCheckForZeroPage();
          if( v9 )
            MiPageNotZero(v8, (ULONG_PTR)v3);
          MiUnmapPageInHyperSpaceWorker(v8, 0x11u, 0i64);
        }
      }
      ++v4;
      ++v3;
      if( (--v2 & 0x3F) == 0 && CurrentIrql < 2u && (unsigned int)KeShouldYieldProcessor() )
      {
        __writecr8(CurrentIrql);
        goto LABEL_2;
      }
    }
  }
  result = CurrentIrql;
  __writecr8(CurrentIrql);
  return result;
}

Referenced by:

MiConvertEntireLargePageToSmall
MiCreateSharedZeroPages
MiCreateSystemPageTable
MiGetLargePage
MiGetPage
MiIdealClusterPage
MiInsertLargePageInNodeList
MiInsertPageInFreeOrZeroedList
MiLargePageFreeToZero
MiReplenishPageSlist
MiSlistGetFreePage
MiUnlinkFreeOrZeroedPage
MiUnlinkNodeLargePageHelper