CmpAdminSystemSecurityDescriptor

_ACL *__fastcall CmpAdminSystemSecurityDescriptor(){
  unsigned __int8 *Sid; 
  VOID **PoolWithTag; 
  unsigned __int8 *v2; 
  _DWORD *v3; 
  _DWORD *v4; 
  _DWORD *v5; 
  unsigned int v6; 
  size_t v7; 
  VOID **v8; 
  UINT64 v9; 
  _ACL *v10; 
  NTSTATUS Acl; 
  NTSTATUS v12; 
  VOID **v13; 
  _ACL *v14; 
  NTSTATUS SecurityDescriptor; 
  void *v16; 
  NTSTATUS v17; 
  void *v18; 
  _SID_IDENTIFIER_AUTHORITY IdentifierAuthority; 

  *(_WORD *)&IdentifierAuthority.Value[4] = 1280;
  *(_DWORD *)IdentifierAuthority.Value = 0;
  Sid = (unsigned __int8 *)ExAllocatePoolWithTag(1ui64, 0xCui64, 538987843i64);
  PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x10ui64, 538987843i64);
  v2 = (unsigned __int8 *)PoolWithTag;
  if( !Sid || !PoolWithTag )
    KeBugCheckEx(0x51u, (PVOID)0xB, (PVOID)1, 0i64, 0i64);
  if( RtlInitializeSid(Sid, &IdentifierAuthority, 1u) < 0 || RtlInitializeSid(v2, &IdentifierAuthority, 2u) < 0 )
    KeBugCheckEx(0x51u, (PVOID)0xB, (PVOID)2, 0i64, 0i64);
  LODWORD(v3) = RtlSubAuthoritySid((INT64)Sid, 0i64);
  *v3 = 18;
  LODWORD(v4) = RtlSubAuthoritySid((INT64)v2, 0i64);
  *v4 = 32;
  LODWORD(v5) = RtlSubAuthoritySid((INT64)v2, 1ui64);
  *v5 = 544;
  v6 = 4 * (Sid[1] + v2[1]) + 40;
  v7 = v6;
  v8 = ExAllocatePoolWithTag(1ui64, v6, 538987843i64);
  v10 = (_ACL *)v8;
  if( !v8 )
    KeBugCheckEx(0x51u, (PVOID)0xB, (PVOID)3, 0i64, 0i64);
  Acl = RtlCreateAcl((PACL)v8, (_ACL)v6, 2ui64, v9);
  if( Acl < 0 )
    KeBugCheckEx(0x51u, (PVOID)0xB, (PVOID)4, (PVOID)Acl, 0i64);
  v12 = RtlpAddKnownAce(v10, 2ui64, 0i64, 0x1F01FFui64, Sid, 0);
  if( v12 < 0 || (v12 = RtlpAddKnownAce(v10, 2ui64, 0i64, 0x1F01FFui64, v2, 0), v12 < 0) )
    KeBugCheckEx(0x51u, (PVOID)0xB, (PVOID)5, (PVOID)v12, 0i64);
  v13 = ExAllocatePoolWithTag(1ui64, v6 + 40i64, 538987843i64);
  v14 = (_ACL *)v13;
  if( !v13 )
    KeBugCheckEx(0x51u, (PVOID)0xB, (PVOID)6, 0i64, 0i64);
  memmove(v13 + 5, v10, v7);
  SecurityDescriptor = RtlCreateSecurityDescriptor(v14, 1ui64);
  v16 = (void *)SecurityDescriptor;
  if( SecurityDescriptor < 0 )
  {
    ExFreePoolWithTag(v14, 0);
    KeBugCheckEx(0x51u, (PVOID)0xB, (PVOID)7, v16, 0i64);
  }
  v17 = RtlSetDaclSecurityDescriptor(v14, 1u, v14 + 5, 0);
  v18 = (void *)v17;
  if( v17 < 0 )
  {
    ExFreePoolWithTag(v14, 0);
    KeBugCheckEx(0x51u, (PVOID)0xB, (PVOID)8, v18, 0i64);
  }
  ExFreePoolWithTag(Sid, 0);
  ExFreePoolWithTag(v2, 0);
  ExFreePoolWithTag(v10, 0);
  return v14;
}

Referenced by:

CmInitSystem1