SepReferenceLogonSessionSilo

NTSTATUS __stdcall SepReferenceLogonSessionSilo(
        _LUID *LogonId,
        _EJOB *ServerSilo,
        _SEP_LOGON_SESSION_REFERENCES **ReturnSession){
  __int64 v6; 
  _SEP_LOGON_SESSION_REFERENCES *v7; 
  _ETHREAD *CurrentThread; 
  _ERESOURCE *v9; 
  NTSTATUS result; 

  v6 = (1529154084 * LogonId->LowPart) >> 28;
  v7 = (_SEP_LOGON_SESSION_REFERENCES *)(SepLogonSessions + 8 * v6);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  v9 = &stru_140CEC5A0 + (v6 & 3);
  ExAcquireResourceExclusiveLite((UINT64)v9, 1, (INT64)ReturnSession);
  do
  {
    v7 = v7->Next;
    if( !v7 )
    {
      ExReleaseResourceLite(v9);
      KeLeaveCriticalRegion();
      return -1073741729;
    }
  }
  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 = 0;
  *ReturnSession = v7;
  return result;
}

Referenced by:

NtQueryInformationToken
SeGetLinkedToken
SeInitServerSilo
SeSetSessionIdTokenWithLinked
SepReferenceLogonSession
SepSetServerSiloToken