SddlAddProcessTrustLabelAce

NTSTATUS __stdcall SddlAddProcessTrustLabelAce(ACL *Acl, UINT64 AceFlags, UINT64 AccessMask, PVOID Sid){
  int v5; 
  NTSTATUS result; 
  int v8; 
  unsigned __int8 AclRevision; 
  __int16 v10; 
  PACE v11; 
  WORD v12; 
  ULONG v13; 
  PACE Ace; 
  int v15; 
  unsigned __int16 v16; 
  int v17; 
  Ace = 0i64;
  v15 = 0;
  v5 = AccessMask;
  v16 = 4864;
  if( !Acl || !RtlValidAcl(Acl) )
    return -1073741705;
  if( !RtlValidSid(Sid) )
    return -1073741704;
  v8 = *(_DWORD *)((char *)Sid + 2) - v15;
  if( !v8 )
    v8 = *((unsigned __int16 *)Sid + 3) - v16;
  if( v8 )
    return -1073741811;
  if( Acl->AclRevision > 4u )
    return -1073741735;
  AclRevision = 2;
  if( Acl->AclRevision > 2u )
    AclRevision = Acl->AclRevision;
  if( (v5 & 0xFFFFFFE0) != 0 || (v17 & 0xFF000000) != 0 )
    return -1073741811;
  if( !RtlFirstFreeAce(Acl, (VOID **)&Ace) )
    return -1073741705;
  v10 = RtlLengthSid(Sid);
  v11 = Ace;
  v12 = v10 + 8;
  if( !Ace || (char *)Ace + v12 > (char *)Acl + Acl->AclSize )
    return -1073741671;
  Ace->Header.AceFlags = v5;
  v11->Header.AceType = 20;
  v11->Header.AceSize = v12;
  v11->AccessMask = v17;
  v13 = RtlLengthSid(Sid);
  RtlCopySid(v13, &v11[1], Sid);
  ++Acl->AceCount;
  result = 0;
  Acl->AclRevision = AclRevision;
  return result;
}

Referenced by:

LocalGetAclForString