ObpInitObjectTypeSD

NTSTATUS __stdcall ObpInitObjectTypeSD(VOID *Object, VOID *SecurityDescriptor){
  VOID *v4; 
  NTSTATUS v5; 
  int v6; 
  PVOID P; 
  PVOID OutputSecurityDescriptor; 

  OutputSecurityDescriptor = 0i64;
  P = SecurityDescriptor;
  v4 = SecurityDescriptor;
  if( SecurityDescriptor || (v5 = ObpCreateDefaultObjectTypeSD(&P), v4 = P, v6 = v5, v5 >= 0) )
  {
    v6 = ObLogSecurityDescriptor(v4, &OutputSecurityDescriptor, 0x10ui64);
    if( v6 >= 0 )
    {
      if( OutputSecurityDescriptor )
        *((_QWORD *)Object - 1) = (char *)OutputSecurityDescriptor + 15;
      else
        *((_QWORD *)Object - 1) = 0i64;
    }
  }
  if( v4 && !SecurityDescriptor )
    ExFreePoolWithTag(v4, 0);
  return v6;
}

Referenced by:

ObCreateObjectTypeEx
ObInitSystem