CmpDoFlushAll

VOID __stdcall CmpDoFlushAll(UINT64 Flags){
  int v1; 
  volatile signed __int32 *LastHive; 
  volatile signed __int32 *i; 
  EVENT_DESCRIPTOR *v4; 
  struct _EX_RUNDOWN_REF *NextHive; 
  ULONG_PTR v6; 
  v1 = Flags;
  if( !BYTE1(NlsMbCodePageTag) )
  {
    LastHive = (volatile signed __int32 *)CmpGetLastHive();
    if( LastHive )
    {
      for( i = 0i64; ; i = (volatile signed __int32 *)v6 )
      {
        NextHive = (struct _EX_RUNDOWN_REF *)CmpGetNextHive(i);
        v6 = (ULONG_PTR)NextHive;
        if( !NextHive )
          break;
        if( ExAcquireRundownProtection(NextHive + 204) )
        {
          if( (*(_DWORD *)(v6 + 160) & 2) == 0 )
            CmpFlushHive(v6, v1, v4);
          ExReleaseRundownProtection((PEX_RUNDOWN_REF)(v6 + 1632));
        }
        if( (volatile signed __int32 *)v6 == LastHive )
          break;
      }
      CmpQuitNextHive((volatile signed __int32 *)v6);
      CmpDereferenceHive(LastHive);
    }
  }
}

Referenced by:

CmReconcileAndValidateAllHives
CmpForceFlushWorker
NtFlushKey