RtlAddMandatoryAce

INT64 __fastcall RtlAddMandatoryAce(
        _ACL *Acl,
        UINT64 AceRevision,
        UINT64 AceFlags,
        VOID *Sid,
        UINT8 AceType,
        UINT64 AccessMask){
  int v7; 
  int v9; 
  unsigned __int8 AclRevision; 
  PACE v11; 
  WORD v12; 
  INT64 result; 
  PACE Ace; 
  int v15; 
  unsigned __int16 v16; 
  Ace = 0i64;
  v15 = 0;
  v7 = AceFlags;
  v16 = 4096;
  if( !Acl )
    return 3221225591i64;
  if( !RtlValidSid(Sid) )
    return 3221225592i64;
  v9 = *(_DWORD *)((char *)Sid + 2) - v15;
  if( !v9 )
    v9 = *((unsigned __int16 *)Sid + 3) - v16;
  if( v9 )
    return 3221225485i64;
  AclRevision = Acl->AclRevision;
  if( Acl->AclRevision > 4u )
    return 3221225561i64;
  if( AclRevision <= 2u )
    AclRevision = 2;
  if( (v7 & 0xFFFFFFE0) != 0 || (AccessMask & 0xFFFFFFF8) != 0 )
    return 3221225485i64;
  if( !RtlValidAcl(Acl) || !RtlFirstFreeAce(Acl, (VOID **)&Ace) )
    return 3221225591i64;
  v11 = Ace;
  v12 = 4 * (*((unsigned __int8 *)Sid + 1) + 4);
  if( !Ace || (char *)Ace + v12 > (char *)Acl + Acl->AclSize )
    return 3221225625i64;
  Ace->Header.AceSize = v12;
  v11->Header.AceFlags = v7;
  v11->Header.AceType = 17;
  v11->AccessMask = AccessMask;
  memmove((UINT8 *)&v11[1], (UINT8 *)Sid, 4i64 * *((unsigned __int8 *)Sid + 1) + 8);
  ++Acl->AceCount;
  result = 0i64;
  Acl->AclRevision = AclRevision;
  return result;
}

Referenced by:

CmpGenerateAppHiveSecurityDescriptor
ExpKeyedEventInitialization
IopCreateSecurityDescriptorPerType
ObpVerifyAccessToBoundaryEntry
RtlpNewSecurityObject
SepInitSystemDacls