ObpInsertDirectoryEntry

UINT8 __stdcall ObpInsertDirectoryEntry(_OBJECT_DIRECTORY *Directory, VOID *Object, _OBP_LOOKUP_CONTEXT *LookupContext){
  VOID **PoolWithTag; 
  _OBJECT_DIRECTORY_ENTRY *v7; 
  _OBJECT_DIRECTORY_ENTRY **v8; 

  PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x18ui64, 1766089295i64);
  v7 = (_OBJECT_DIRECTORY_ENTRY *)PoolWithTag;
  if( PoolWithTag )
  {
    ObfReferenceObject(Object);
    v8 = &Directory->HashBuckets[LookupContext->HashIndex];
    v7->HashValue = LookupContext->HashValue;
    v7->ChainLink = *v8;
    *v8 = v7;
    v7->Object = Object;
    LookupContext->EntryLink = v8;
    ObfReferenceObject(Directory);
    LOBYTE(PoolWithTag) = 1;
    *(_QWORD *)((char *)Object - *((unsigned __int8 *)&dword_140C25D60 + (*((char *)Object - 22) & 3)) - 48) = Directory;
  }
  return(unsigned __int8)PoolWithTag;
}

Referenced by:

ObCreateObjectTypeEx
ObInitSystem
ObpLookupObjectName