MiZeroPhysicalPage

VOID __stdcall MiZeroPhysicalPage(UINT64 PageFrameIndex, UINT64 Flags, _MI_PFN_CACHE_ATTRIBUTE FinalAttribute){
  char v4; 
  _MMPFN *v6; 
  __int64 v7; 
  int v8; 
  UINT64 v9; 
  char v10; 
  int v11; 
  __int64 v12; 
  __int64 v13; 
  int v14; 
  _KTBFLUSH_TYPE v15; 

  v4 = Flags;
  v6 = &MmGetPfnDb()[PageFrameIndex];
  v7 = *((unsigned __int8 *)&v6->u3 + 2) >> 6;
  v8 = *((unsigned __int8 *)&v6->u3 + 2) >> 6;
  if( (Flags & 2) == 0 )
  {
    v8 = *((_DWORD *)&stru_140C4DB30 + 4 * v7 + (int)FinalAttribute + 106);
    if( v8 != (_DWORD)v7 )
      MiChangePageAttribute(v6, (_MI_PFN_CACHE_ATTRIBUTE)v8, 0i64);
  }
  v9 = 0i64;
  v10 = -2;
  if( !KeGetCurrentPrcb()->HyperPte )
    v10 = v4;
  if( (v10 & 1) != 0
    && (v9 = (UINT64)MiReservePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), 1ui64)) != 0 )
  {
    MiMakeProtectionPfnCompatible((_BYTE *)4, v6);
    LODWORD(v12) = MiMakeValidPte((_XSTATE_CONFIGURATION *)v9, PageFrameIndex, v11 | 0xA0000000);
    v13 = v12;
    LOBYTE(v14) = MiPteInShadowRange(v9);
    if( v14 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v13 & 1) != 0 )
      v13 |= 0x8000000000000000ui64;
    *(_QWORD *)v9 = v13;
    KeZeroPages((VOID *)((__int64)((v9 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16), 0x1000ui64);
    MiReleasePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), (_MMPTE *)v9, 1ui64, v15);
  }
  else
  {
    if( KeGetCurrentPrcb()->HyperPte )
      v9 = 1i64;
    MiFillPhysicalPages((PVOID)PageFrameIndex);
  }
  if( v8 != (_DWORD)v7 && v8 != FinalAttribute )
  {
    if( v9 )
      MiChangePageAttribute(v6, (_MI_PFN_CACHE_ATTRIBUTE)v7, 0i64);
  }
}

Referenced by:

MiComputeOptimalZeroPath
MiGetLargePage
MiGetPage
MiGetPageChain
MiInitializeCacheFlushing
MiIssueHardFault
MiMakePageAvoidRead
MiPerformFinalZeroing
MiPfPutPagesInTransition
MiWaitForInPageComplete
MiZeroAndConvertPage
MiZeroLargePage
MiZeroWithSystemPtes
MmCheckCachedPageStates