RtlGetDaclSecurityDescriptor

NTSTATUS __stdcall RtlGetDaclSecurityDescriptor(
        VOID *SecurityDescriptor,
        UINT8 *DaclPresent,
        _ACL **Dacl,
        UINT8 *DaclDefaulted){
  __int16 v5; 
  _ACL *v6; 
  __int16 v7; 
  __int64 v8; 

  if( *(_BYTE *)SecurityDescriptor != 1 )
    return -1073741736;
  v5 = *((_WORD *)SecurityDescriptor + 1) & 4;
  *DaclPresent = v5 != 0;
  v6 = 0i64;
  if( v5 )
  {
    v7 = *((_WORD *)SecurityDescriptor + 1);
    if( (v7 & 4) != 0 )
    {
      if( v7 >= 0 )
      {
        v6 = (_ACL *)*((_QWORD *)SecurityDescriptor + 4);
      }
      else
      {
        v8 = *((unsigned int *)SecurityDescriptor + 4);
        if( (_DWORD)v8 )
          v6 = (_ACL *)((char *)SecurityDescriptor + v8);
      }
    }
    *Dacl = v6;
    *DaclDefaulted = (*((_BYTE *)SecurityDescriptor + 2) & 8) != 0;
  }
  return 0;
}

Referenced by:

AdtpBuildAccessReasonAuditStringInternal
CmpCopySaclToVirtualKey
ExpWnfSpecializeSecurityDescriptor
IopGetSecurityDescriptorInformation
LocalConvertSDToStringSD_Rev1
MiInitializeMemoryEvents
ObCleanupSecurityDescriptor
ObpCreateDosDevicesDirectory
ObpInsertOrLocateNamedObject
PiDevCfgGetKeySecurityDescriptor
PipChangeDeviceObjectFromRegistryProperties
RtlReplaceSidInSd
RtlpSysVolCheckOwnerAndSecurity
SepHasCriticalAcesRemoved