SddlAddMandatoryAce

NTSTATUS __stdcall SddlAddMandatoryAce(
        _ACL *Acl,
        UINT64 AceRevision,
        UINT64 AceFlags,
        VOID *Sid,
        UINT8 AceType,
        UINT64 AccessMask){
  int v7; 
  VOID *v9; 
  VOID *v10; 
  NTSTATUS result; 
  int v12; 
  unsigned __int8 AclRevision; 
  char v14; 
  __int16 v15; 
  _WORD *v16; 
  unsigned __int16 v17; 
  unsigned int v18; 
  VOID *FirstFree; 
  int v20; 
  unsigned __int16 v21; 

  FirstFree = 0i64;
  v20 = 0;
  v7 = AceFlags;
  v21 = 4096;
  if( !Acl )
    return -1073741705;
  if( !RtlValidSid(Sid) )
    return -1073741704;
  v12 = *(_DWORD *)((char *)Sid + 2) - v20;
  if( !v12 )
    v12 = *((unsigned __int16 *)Sid + 3) - v21;
  if( v12 )
    return -1073741811;
  if( Acl->AclRevision > 4u )
    return -1073741735;
  AclRevision = 2;
  if( Acl->AclRevision > 2u )
    AclRevision = Acl->AclRevision;
  if( (v7 & 0xFFFFFFE0) != 0 || (AccessMask & 0xFFFFFFF8) != 0 )
    return -1073741811;
  RtlValidAcl(Acl, v9, v10);
  if( !v14 || !RtlFirstFreeAce(Acl, &FirstFree) )
    return -1073741705;
  v15 = RtlLengthSid((INT64)Sid);
  v16 = FirstFree;
  v17 = v15 + 8;
  if( !FirstFree || (char *)FirstFree + v17 > (char *)Acl + Acl->AclSize )
    return -1073741671;
  *((_BYTE *)FirstFree + 1) = v7;
  *(_BYTE *)v16 = 17;
  v16[1] = v17;
  *((_DWORD *)v16 + 1) = AccessMask;
  v18 = RtlLengthSid((INT64)Sid);
  RtlCopySid(v18, v16 + 4, Sid);
  ++Acl->AceCount;
  result = 0;
  Acl->AclRevision = AclRevision;
  return result;
}

Referenced by:

LocalGetAclForString