RtlpValidObjectAce

UINT8 __stdcall RtlpValidObjectAce(_ACE_HEADER *Ace){
  unsigned __int64 AceSize; 
  _ACE_HEADER v2; 
  unsigned int v3; 
  int v4; 
  __int64 v5; 
  UCHAR *v6; 
  __int64 v7; 

  if( !Ace )
    return 0;
  AceSize = Ace->AceSize;
  if( ((AceSize + 3) & 0xFFFFFFFFFFFFFFFCui64) != AceSize || (unsigned __int16)AceSize < 0xCu )
    return 0;
  v2 = Ace[2];
  v3 = v2.AceType & 1;
  v4 = v2.AceType & 2;
  v5 = 16 * v3 + 16;
  if( !v4 )
    v5 = 16 * v3;
  if( AceSize >= v5 + 24
    && (v6 = &Ace->AceType + (v4 != 0 ? 28i64 : 12i64), v6[16 * v3] == 1)
    && (v7 = v6[16 * v3 + 1], (unsigned __int8)v7 <= 0xFu)
    && AceSize >= (unsigned __int64)(unsigned int)v5 + 4 * (v7 + 5) )
  {
    return 1;
  }
  else
  {
    return 0;
  }
}

Referenced by:

RtlValidAcl