ExpWnfQueryCurrentUserSID

__int64 __fastcall ExpWnfQueryCurrentUserSID(__int64 a1, __int64 a2, void *a3, ULONG *a4, _DWORD *a5){
  int v5; 
  struct _DMA_ADAPTER *v9; 
  _TOKEN_TYPE v10; 
  int UserSidToken; 
  struct _DMA_ADAPTER *v13; 
  _TOKEN_TYPE TokenType; 
  _SECURITY_IMPERSONATION_LEVEL ImpersonationLevel[9]; 
  UINT8 EffectiveOnly; 
  v5 = 0;
  TokenType = 0;
  EffectiveOnly = 0;
  ImpersonationLevel[0] = SecurityAnonymous;
  if( !a2 )
  {
    v9 = (struct _DMA_ADAPTER *)PsReferencePrimaryToken((PEPROCESS)a1);
    v10 = TokenPrimary;
LABEL_3:
    UserSidToken = SeQueryUserSidToken(v9, a3, *a4, (UINT64 *)a4);
    if( v10 == TokenPrimary )
    {
      ObFastDereferenceObject((INT64 *)(a1 + 1208), v9);
    }
    else if( v9 )
    {
      HalPutDmaAdapter(v9);
    }
    if( UserSidToken >= 0 )
    {
      LOBYTE(v5) = v10 == TokenPrimary;
      *a5 = v5;
    }
    return(unsigned int)UserSidToken;
  }
  v13 = (struct _DMA_ADAPTER *)PsReferenceEffectiveToken(
                                 (_ETHREAD *)a2,
                                 &TokenType,
                                 &EffectiveOnly,
                                 ImpersonationLevel,
                                 0i64);
  v10 = TokenType;
  v9 = v13;
  if( TokenType != TokenImpersonation || ImpersonationLevel[0] >= SecurityImpersonation )
    goto LABEL_3;
  if( v13 )
    HalPutDmaAdapter(v13);
  return 3221225637i64;
}

Referenced by:

ExpWnfGetCurrentScopeInstance