SeSetSessionIdToken

NTSTATUS __stdcall SeSetSessionIdToken(VOID *Token, UINT64 SessionId){
  INT64 v2; 
  NTSTATUS v3; 
  _ADAPTER_OBJECT *SessionObjectById; 
  unsigned int v5; 
  _ETHREAD *CurrentThread; 
  bool v8; 
  void *v10; 
  signed __int32 v11[8]; 
  PADAPTER_OBJECT DmaAdapter; 

  v3 = 0;
  SessionObjectById = 0i64;
  DmaAdapter = 0i64;
  v5 = SessionId;
  if( !SeTokenDoesNotTrackSessionObject )
    SessionObjectById = (_ADAPTER_OBJECT *)MmGetSessionObjectById((unsigned int)SessionId);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquireResourceExclusiveLite(*((_QWORD *)Token + 6), 1, v2);
  _InterlockedOr(v11, 0);
  if( *((_BYTE *)Token + 204) )
  {
    v3 = -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) != v5 )
    {
      SepSetTokenSessionById((__int64)Token, v5, 1, (__int64)SessionObjectById, &DmaAdapter);
      SessionObjectById = 0i64;
    }
    v8 = (*((_DWORD *)Token + 50) & 0x4000) == 0;
    *((_DWORD *)Token + 30) = v5;
    if( !v8 )
      v3 = SepSetTokenLowboxNumber((_TOKEN *)Token, *((VOID **)Token + 98));
  }
  _InterlockedOr(v11, 0);
  ExReleaseResourceLite(*((PERESOURCE *)Token + 6));
  KeLeaveCriticalRegion();
  if( SessionObjectById )
    HalPutDmaAdapter(SessionObjectById);
  if( DmaAdapter )
    HalPutDmaAdapter(DmaAdapter);
  return v3;
}

Referenced by:

NtSetInformationToken
SeSetSessionIdTokenWithLinked
SepCopyAnonymousTokenAndSetSilo
SepCopyClientTokenAndSetSilo