SeSetSessionIdToken

NTSTATUS __stdcall SeSetSessionIdToken(PVOID Token, UINT64 SessionId){
  NTSTATUS v2; 
  struct _DMA_ADAPTER *v3; 
  unsigned int v4; 
  struct _DMA_ADAPTER *v6; 
  _ETHREAD *CurrentThread; 
  bool v8; 
  void *v10; 
  signed __int32 v11[8]; 
  PADAPTER_OBJECT DmaAdapter; 
  v2 = 0;
  v3 = 0i64;
  DmaAdapter = 0i64;
  v4 = SessionId;
  if( !SeTokenDoesNotTrackSessionObject )
  {
    LODWORD(v6) = MmGetSessionObjectById((unsigned int)SessionId);
    v3 = v6;
  }
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  ExAcquireResourceExclusiveLite(*((ERESOURCE **)Token + 6), 1u);
  _InterlockedOr(v11, 0);
  if( *((_BYTE *)Token + 204) )
  {
    v2 = -1073741525;
  }
  else
  {
    if( (*((_DWORD *)Token + 50) & 0x4000) != 0 )
    {
      v10 = (void *)*((_QWORD *)Token + 135);
      if( v10 )
      {
        SepDereferenceLowBoxNumberEntry(*((unsigned int *)Token + 30), v10);
        *((_QWORD *)Token + 135) = 0i64;
      }
    }
    if( *((_DWORD *)Token + 30) != v4 )
    {
      SepSetTokenSessionById((INT64)Token, v4, 1, (INT64)v3, &DmaAdapter);
      v3 = 0i64;
    }
    v8 = (*((_DWORD *)Token + 50) & 0x4000) == 0;
    *((_DWORD *)Token + 30) = v4;
    if( !v8 )
      v2 = SepSetTokenLowboxNumber((_TOKEN *)Token, *((VOID **)Token + 98));
  }
  _InterlockedOr(v11, 0);
  ExReleaseResourceLite(*((PERESOURCE *)Token + 6));
  KeLeaveCriticalRegion();
  if( v3 )
    HalPutDmaAdapter(v3);
  if( DmaAdapter )
    HalPutDmaAdapter(DmaAdapter);
  return v2;
}

Referenced by:

NtSetInformationToken
SeSetSessionIdTokenWithLinked
SepCopyAnonymousTokenAndSetSilo
SepCopyClientTokenAndSetSilo