SepReferenceLogonSessionSilo

INT64 __fastcall SepReferenceLogonSessionSilo(
        _LUID *LogonId,
        _EJOB *ServerSilo,
        _SEP_LOGON_SESSION_REFERENCES **ReturnSession){
  __int64 v6; 
  _SEP_LOGON_SESSION_REFERENCES *v7; 
  _ETHREAD *CurrentThread; 
  struct _ERESOURCE *v9; 
  INT64 result; 
  v6 = (1529154084 * LogonId->LowPart) >> 28;
  v7 = (_SEP_LOGON_SESSION_REFERENCES *)(SepLogonSessions + 8 * v6);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  v9 = &SepRmDbLock + (v6 & 3);
  ExAcquireResourceExclusiveLite(v9, 1u);
  do
  {
    v7 = v7->Next;
    if( !v7 )
    {
      ExReleaseResourceLite(v9);
      KeLeaveCriticalRegion();
      return 3221225567i64;
    }
  }
  while( v7->ServerSilo != ServerSilo
       || LogonId->LowPart != v7->LogonId.LowPart
       || LogonId->HighPart != v7->LogonId.HighPart );
  _m_prefetchw(&v7->Flags);
  if( (_InterlockedOr((volatile signed __int32 *)&v7->Flags, 8u) & 8) != 0
    && _InterlockedIncrement64(&v7->ReferenceCount) <= 1 )
  {
    __fastfail(0xEu);
  }
  ExReleaseResourceLite(v9);
  KeLeaveCriticalRegion();
  result = 0i64;
  *ReturnSession = v7;
  return result;
}

Referenced by:

NtQueryInformationToken
SeGetLinkedToken
SeInitServerSilo
SeSetSessionIdTokenWithLinked
SepReferenceLogonSession
SepSetServerSiloToken