SepQueryNameString

NTSTATUS __stdcall SepQueryNameString(VOID *Object, PVOID *ObjectNameInfo){
  NTSTATUS v4; 
  int v5; 
  _OBJECT_NAME_INFORMATION *PoolWithTag; 
  UINT64 NumberOfBytes; 

  *ObjectNameInfo = 0i64;
  LODWORD(NumberOfBytes) = 0;
  v4 = ObQueryNameStringMode(Object, 0i64, 0i64, &NumberOfBytes, 0);
  v5 = v4;
  if( v4 == -1073741820 || v4 == -1073741789 )
  {
    PoolWithTag = (_OBJECT_NAME_INFORMATION *)ExAllocatePoolWithTag(1ui64, (unsigned int)NumberOfBytes, 1850697043i64);
    *ObjectNameInfo = PoolWithTag;
    if( PoolWithTag )
    {
      v5 = ObQueryNameStringMode(Object, PoolWithTag, (unsigned int)NumberOfBytes, &NumberOfBytes, 0);
      if( v5 < 0 || !*(_WORD *)*ObjectNameInfo )
      {
        ExFreePoolWithTag(*ObjectNameInfo, 0);
        *ObjectNameInfo = 0i64;
        if( v5 >= 0
          && (POBJECT_TYPE *)ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ (unsigned __int8)*((char *)Object - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)Object - 48) >> 8)] == PsProcessType )
        {
          PsGetAllocatedFullProcessImageNameEx((_EPROCESS *)Object, (_UNICODE_STRING **)ObjectNameInfo);
        }
        return 0;
      }
    }
    else
    {
      return -1073741670;
    }
  }
  return v5;
}

Referenced by:

SeAdtRegistryValueChangedAuditAlarm
SeOpenObjectAuditAlarmWithTransaction
SeOpenObjectForDeleteAuditAlarmWithTransaction
SeOperationAuditAlarm
SeSecurityDescriptorChangedAuditAlarm
SepAdtObjectReferenceAuditAlarm
SepValidateReferencedCachedHandles