SddlAddScopedPolicyIDAce

NTSTATUS __stdcall SddlAddScopedPolicyIDAce(PACL Acl, UINT64 AceFlags, UINT64 AccessMask, VOID *Sid, PSID Sida){
  int v5; 
  int v6; 
  VOID *v8; 
  VOID *v9; 
  NTSTATUS result; 
  int v11; 
  unsigned __int8 AclRevision; 
  char v13; 
  __int16 v14; 
  char *v15; 
  unsigned __int16 v16; 
  unsigned int v17; 
  VOID *FirstFree; 
  int v19; 
  unsigned __int16 v20; 

  FirstFree = 0i64;
  v5 = (int)Sid;
  v19 = 0;
  v6 = AccessMask;
  v20 = 4352;
  if( !Acl )
    return -1073741705;
  if( !RtlValidSid(Sida) )
    return -1073741704;
  v11 = *(_DWORD *)((char *)Sida + 2) - v19;
  if( !v11 )
    v11 = *((unsigned __int16 *)Sida + 3) - v20;
  if( v11 )
    return -1073741811;
  if( Acl->AclRevision > 4u )
    return -1073741735;
  AclRevision = 2;
  if( Acl->AclRevision > 2u )
    AclRevision = Acl->AclRevision;
  if( (v6 & 0xFFFFFFE0) != 0 || v5 )
    return -1073741811;
  RtlValidAcl(Acl, v8, v9);
  if( !v13 || !RtlFirstFreeAce(Acl, &FirstFree) )
    return -1073741705;
  v14 = RtlLengthSid((INT64)Sida);
  v15 = (char *)FirstFree;
  v16 = v14 + 8;
  if( !FirstFree || (char *)FirstFree + v16 > (char *)Acl + Acl->AclSize )
    return -1073741671;
  *((_DWORD *)FirstFree + 1) = 0;
  v15[1] = v6;
  *v15 = 19;
  *((_WORD *)v15 + 1) = v16;
  v17 = RtlLengthSid((INT64)Sida);
  RtlCopySid(v17, v15 + 8, Sida);
  ++Acl->AceCount;
  result = 0;
  Acl->AclRevision = AclRevision;
  return result;
}

Referenced by:

LocalGetAclForString