SepSetTokenSessionById

VOID __fastcall SepSetTokenSessionById(INT64 a1, UINT64 a2, CHAR a3, INT64 a4, _QWORD *a5){
  unsigned int v5; 
  struct _DMA_ADAPTER *v7; 
  __int64 v8; 
  v5 = a2;
  if( *(_DWORD *)(a1 + 120) != (_DWORD)a2 )
  {
    *(_DWORD *)(a1 + 120) = a2;
    if( !SeTokenDoesNotTrackSessionObject )
    {
      if( a3 )
      {
        if( a5 )
          *a5 = *(_QWORD *)(a1 + 1160);
        *(_QWORD *)(a1 + 1160) = a4;
      }
      else
      {
        v7 = *(struct _DMA_ADAPTER **)(a1 + 1160);
        if( v7 )
          HalPutDmaAdapter(v7);
        LODWORD(v8) = MmGetSessionObjectById(v5);
        *(_QWORD *)(a1 + 1160) = v8;
      }
    }
  }
}

Referenced by:

SeExchangePrimaryToken
SeSetSessionIdToken
SeSubProcessToken
SepFilterToken
SepGetAnonymousToken