PspCreateObjectHandle

INT64 __fastcall PspCreateObjectHandle(VOID *a1, INT64 a2, struct OBJECT_TYPE *a3){
  PVOID *v3; 
  NTSTATUS v5; 
  _PRIVILEGE_SET *v6; 
  v3 = (PVOID *)(a2 + 392);
  v5 = ObOpenObjectByPointer(
         a1,
         *(_DWORD *)(a2 + 384),
         (PACCESS_STATE)a2,
         0,
         (POBJECT_TYPE)a3,
         *(_BYTE *)(a2 + 388),
         (PHANDLE)(a2 + 392));
  if( v5 >= 0 )
  {
    v6 = **(_PRIVILEGE_SET ***)(a2 + 72);
    if( v6 )
    {
      if( v6->PrivilegeCount )
        SePrivilegeObjectAuditAlarm(
          *v3,
          (_SECURITY_SUBJECT_CONTEXT *)(a2 + 32),
          *(unsigned int *)(a2 + 20),
          v6,
          1u,
          *(_BYTE *)(a2 + 388));
    }
  }
  return(unsigned int)v5;
}

Referenced by:

NtCreateUserProcess
PsCreateMinimalProcess
PspCreateProcess
PspInsertThread