HvpResetPageProtection

VOID __stdcall HvpResetPageProtection(_HHIVE *Hive){
  unsigned int SizeOfBitMap; 
  UINT32 v3; 
  unsigned int DirtyCount; 
  UINT32 NextForwardRunSet; 
  UINT32 v6; 
  unsigned int v7; 
  unsigned int StartingRunIndex; 

  StartingRunIndex = 0;
  SizeOfBitMap = Hive->DirtyVector.SizeOfBitMap;
  v3 = 0;
  DirtyCount = Hive->DirtyCount;
  while( v3 < SizeOfBitMap )
  {
    NextForwardRunSet = RtlFindNextForwardRunSet(&Hive->DirtyVector, v3, &StartingRunIndex);
    v6 = NextForwardRunSet;
    if( !NextForwardRunSet )
      break;
    v7 = StartingRunIndex;
    HvpSetRangeProtection((ULONG_PTR)Hive, StartingRunIndex << 9, NextForwardRunSet << 9, 2ui64);
    v3 = v6 + v7;
    DirtyCount -= v6;
    if( !DirtyCount )
      break;
  }
}

Referenced by:

HvResetDirtyData