ObpInitObjectTypeSD

INT64 __stdcall ObpInitObjectTypeSD(PVOID Object, PVOID SecurityDescriptor, INT64 a3){
  PVOID v5; 
  int v6; 
  NTSTATUS v7; 
  PVOID P; 
  PVOID OutputSecurityDescriptor; 
  OutputSecurityDescriptor = 0i64;
  P = SecurityDescriptor;
  v5 = SecurityDescriptor;
  if( SecurityDescriptor || (ObpCreateDefaultObjectTypeSD((INT64)&P, 0i64), v5 = P, v7 = v6, v6 >= 0) )
  {
    v7 = ObLogSecurityDescriptor(v5, &OutputSecurityDescriptor, 0x10ui64);
    if( v7 >= 0 )
    {
      if( OutputSecurityDescriptor )
        *((_QWORD *)Object - 1) = (char *)OutputSecurityDescriptor + 15;
      else
        *((_QWORD *)Object - 1) = 0i64;
    }
  }
  if( v5 && !SecurityDescriptor )
    ExFreePoolWithTag(v5, 0);
  return(unsigned int)v7;
}

Referenced by:

ObCreateObjectTypeEx
ObInitSystem