ObpInsertDirectoryEntry

CHAR __fastcall ObpInsertDirectoryEntry(CHAR *Object, CHAR *a2, INT64 a3){
  _DWORD *PoolWithTag; 
  _DWORD *v7; 
  CHAR *v8; 
  PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x18ui64, 0x6944624Fui64);
  v7 = PoolWithTag;
  if( PoolWithTag )
  {
    ObfReferenceObject(a2);
    v8 = &Object[8 * *(unsigned __int16 *)(a3 + 28)];
    v7[4] = *(_DWORD *)(a3 + 24);
    *(_QWORD *)v7 = *(_QWORD *)v8;
    *(_QWORD *)v8 = v7;
    *((_QWORD *)v7 + 1) = a2;
    *(_QWORD *)(a3 + 16) = v8;
    ObfReferenceObject(Object);
    LOBYTE(PoolWithTag) = 1;
    *(_QWORD *)&a2[-*((unsigned __int8 *)ObpInfoMaskToOffset + (*(a2 - 22) & 3)) - 48] = Object;
  }
  return(char)PoolWithTag;
}

Referenced by:

ObCreateObjectTypeEx
ObInitSystem
ObpLookupObjectName