MxZeroPageTablePfns

VOID __stdcall MxZeroPageTablePfns(
        _MMPTE *PointerPxe,
        _MMPTE *EndPxe,
        UINT64 PagingLevel,
        _LOADER_PARAMETER_BLOCK *LoaderBlock){
  int v5; 
  unsigned __int64 v7; 
  UINT64 v8; 
  UINT64 v9; 
  _MMPFN *v10; 
  UINT64 v11; 
  UINT64 v12; 
  _MMPFN *PfnDb; 
  __int64 v14; 
  _MMPTE *PxeSelfRef; 
  _MMPTE *v16; 
  UINT64 v17; 
  UINT64 v18; 

  if( PointerPxe <= EndPxe )
  {
    v5 = PagingLevel;
    v7 = (unsigned __int64)PointerPxe;
    do
    {
      LODWORD(v8) = MI_READ_PTE_LOCK_FREE(v7);
      v17 = v8;
      v9 = v8;
      if( (v8 & 1) != 0 )
      {
        MiPteInShadowRange((UINT64)&v17);
        v10 = &MmGetPfnDb()[(v9 >> 12) & 0xFFFFFFFFFi64];
        LODWORD(v11) = MI_READ_PTE_LOCK_FREE((INT64)MmGetPteBase() + ((v7 >> 9) & 0x7FFFFFFFF8i64));
        v18 = v11;
        v12 = v11;
        MiPteInShadowRange((UINT64)&v18);
        PfnDb = MmGetPfnDb();
        v14 = (v12 >> 12) & 0xFFFFFFFFFi64;
        PfnDb[v14].ListEntry = 0i64;
        *((_OWORD *)&PfnDb[v14].3 + 1) = 0i64;
        *(_OWORD *)&PfnDb[v14].u3.ReferenceCount = 0i64;
        if( !v5 || (v17 & 0x80u) == 0i64 )
        {
          v10->ListEntry = 0i64;
          *((_OWORD *)&v10->3 + 1) = 0i64;
          *(_OWORD *)&v10->u3.ReferenceCount = 0i64;
          PxeSelfRef = MmGetPxeSelfRef();
          if( v5 > 1 && (_MMPTE *)v7 != PxeSelfRef )
          {
            v16 = (_MMPTE *)((__int64)((v7 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16);
            MxZeroPageTablePfns(v16, v16 + 511, (unsigned int)(v5 - 1), LoaderBlock);
          }
        }
      }
      v7 += 8i64;
    }
    while( v7 <= (unsigned __int64)EndPxe );
  }
}

Referenced by:

MiInitializePfnsForValidMappings
MxZeroPageTablePfns