MiArePageContentsZero

NTSTATUS __stdcall MiArePageContentsZero(PVOID BugCheckParameter2){
  unsigned __int64 v1; 
  unsigned __int64 v2; 
  char *v3; 
  char *v4; 
  unsigned __int8 CurrentIrql; 
  int v6; 
  void *v7; 
  void *v8; 
  __int64 v9; 
  NTSTATUS result; 
  v2 = v1;
  v3 = (char *)BugCheckParameter2;
  v4 = (char *)MmGetPfnDb() + 48 * (_QWORD)BugCheckParameter2;
LABEL_2:
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  if( *((_QWORD *)KeGetCurrentPrcb() + 4160) )
  {
    v6 = (unsigned __int8)v4[34] >> 6;
    if( v6 == 3 )
    {
      v2 = 0i64;
    }
    else if( v6 != 1 && v2 > 0x10 )
    {
      v2 = 16i64;
    }
    while( v2 )
    {
      if( (v4[35] & 0x40) == 0 && !MiIsPageOnBadList((INT64)v4) )
      {
        LODWORD(v7) = MiMapPageInHyperSpaceWorker((UINT64)v3, 0i64, 0x20000000ui64);
        v8 = v7;
        KeCheckForZeroPage();
        if( v9 )
          MiPageNotZero(v8, (UINT64)v3);
        MiUnmapPageInHyperSpaceWorker(v8, 0x11u, 0i64);
      }
      v4 += 48;
      ++v3;
      if( (--v2 & 0x3F) == 0 && CurrentIrql < 2u && 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