SepCleanupMarkedForDeletionEntries

VOID __stdcall SepCleanupMarkedForDeletionEntries(){
  _RTL_DYNAMIC_HASH_TABLE *bf_0; 
  INT64 *SingletonEntryFromIndexNumber; 
  INT64 *v2; 
  unsigned __int8 v3; 
  _AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION *v4; 
  unsigned __int64 v5; 
  _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR *v6; 
  unsigned int *v7; 
  _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator; 

  memset(&Enumerator, 0, sizeof(Enumerator));
  bf_0 = (_RTL_DYNAMIC_HASH_TABLE *)SeLuidToIndexMapping[1]._bf_0;
  RtlInitEnumerationHashTable(bf_0, &Enumerator);
  while( 1 )
  {
    v6 = RtlEnumerateEntryHashTable(bf_0, &Enumerator);
    v7 = (unsigned int *)v6;
    if( !v6 )
      break;
    if( *((_BYTE *)&v6[1].CurEntry + 8) && RtlRemoveEntryHashTable(bf_0, &v6->HashEntry, 0i64) )
    {
      SingletonEntryFromIndexNumber = (INT64 *)SepGetSingletonEntryFromIndexNumber(v7[10]);
      v2 = SingletonEntryFromIndexNumber;
      if( SingletonEntryFromIndexNumber )
      {
        v3 = ExAcquireSpinLockExclusive(SingletonEntryFromIndexNumber);
        v4 = (_AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION *)v2[2];
        v2[1] = 0i64;
        v5 = v3;
        if( v4 )
        {
          AuthzBasepFreeSecurityAttributesList(v4);
          ExFreePoolWithTag((PVOID)v2[2], 0x74446553u);
          v2[2] = 0i64;
        }
        ExReleaseSpinLockExclusiveFromDpcLevel(v2);
        __writecr8(v5);
      }
      _bittestandreset((signed __int32 *)SeLuidToIndexMapping[3]._bf_0, v7[10]);
      ExFreePoolWithTag(v7, 0);
    }
  }
  RtlEndEnumerationHashTable(bf_0, &Enumerator);
}

Referenced by:

SepAddLuidToIndexEntry