508 {
509 if (((uint)(ace.AccessMask & accessMask) & 0x13Bu) != 0)
510 {
511 if (ace is ObjectAce objectAce)
512 {
513 bool flag = true;
514 if ((objectFlags & ObjectAceFlags.ObjectAceTypePresent) != 0 && (objectAce.ObjectAceFlags & ObjectAceFlags.ObjectAceTypePresent) == 0)
515 {
516 return false;
517 }
518 if ((objectFlags & ObjectAceFlags.ObjectAceTypePresent) != 0 && !objectAce.ObjectTypesMatch(objectFlags, objectType))
519 {
520 accessMask &= -316;
521 }
522 }
523 else if ((objectFlags & ObjectAceFlags.ObjectAceTypePresent) != 0)
524 {
525 return false;
526 }
527 }
528 return true;
529 }