RtlpValidAttributeAce

UINT8 __stdcall RtlpValidAttributeAce(ACE_HEADER *Ace){
  unsigned __int64 AceSize; 
  int AceFlags; 
  UINT8 result; 
  result = 0;
  if( Ace )
  {
    AceSize = Ace->AceSize;
    if( ((AceSize + 3) & 0xFFFFFFFFFFFFFFFCui64) == AceSize && (unsigned int)AceSize >= 0x10 && Ace[2].AceType == 1 )
    {
      AceFlags = Ace[2].AceFlags;
      if( (unsigned __int8)AceFlags <= 0xFu
        && AceSize >= (unsigned __int64)(unsigned int)(4 * AceFlags + 16) + 20
        && RtlpValidRelativeAttribute(
             (_CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 *)(&Ace[2].AceType + (unsigned int)(4 * AceFlags + 8)),
             (unsigned int)(AceSize - (4 * AceFlags + 8) - 8)) )
      {
        return 1;
      }
    }
  }
  return result;
}

Referenced by:

RtlValidAcl