SepMatchPackage

VOID __stdcall SepMatchPackage(
        _TOKEN *Token,
        UINT64 DesiredAccess,
        VOID *Sid,
        UINT64 AceMask,
        UINT8 *PackageMatched,
        UINT64 *GrantedAccess,
        UINT8 *PackagesPresent){
  int v7; 
  int v8; 
  int v9; 
  int v10; 
  _DWORD *v12; 
  UINT8 *v13; 

  v7 = AceMask;
  v8 = DesiredAccess;
  if( *((_DWORD *)Sid + 2) != 2 || *((_BYTE *)Sid + 1) != 2 )
  {
    *PackagesPresent = 1;
    if( (Token->TokenFlags & 0x4000) == 0 || !RtlEqualSid(Token->Package, Sid) )
      return;
LABEL_10:
    v10 = v7 & v8;
    goto LABEL_5;
  }
  v9 = *((_DWORD *)Sid + 3);
  if( v9 == 1 )
  {
    v10 = AceMask & DesiredAccess;
    if( !SepCanTokenMatchAllPackageSid(Token) )
    {
      *v12 |= v10;
      PackageMatched = v13;
      goto LABEL_6;
    }
LABEL_5:
    *(_DWORD *)GrantedAccess |= v10;
LABEL_6:
    *PackageMatched = 1;
    return;
  }
  if( v9 == 2 )
    goto LABEL_10;
}

Referenced by:

SepMaximumAccessCheck
SepMaximumAccessCheckEx
SepNormalAccessCheck
SepNormalAccessCheckEx