HalpDmaInsertDeviceObjectByToken

NTSTATUS __stdcall HalpDmaInsertDeviceObjectByToken(UINT64 Token, _DEVICE_OBJECT *DeviceObject){
  char v2; 
  NTSTATUS v4; 
  char v5; 
  unsigned __int64 v7; 
  __int64 *i; 
  VOID **PoolWithTag; 
  VOID ***v11; 

  v4 = 0;
  v5 = v2;
  v7 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(&HalpDmaPdoListLock);
  for( i = (__int64 *)HalpDmaPdoList; i != &HalpDmaPdoList; i = (__int64 *)*i )
  {
    if( i[2] == Token )
    {
      if( !i[3] )
        i[3] = (__int64)DeviceObject;
      goto LABEL_6;
    }
  }
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x28ui64, 543973704i64);
  if( PoolWithTag )
  {
    *(_OWORD *)PoolWithTag = 0i64;
    *((_OWORD *)PoolWithTag + 1) = 0i64;
    PoolWithTag[4] = 0i64;
    PoolWithTag[2] = (VOID *)Token;
    PoolWithTag[3] = DeviceObject;
    *((_BYTE *)PoolWithTag + 32) = v5;
    v11 = (VOID ***)qword_140C4BC28;
    if( *(__int64 **)qword_140C4BC28 != &HalpDmaPdoList )
      __fastfail(3u);
    *PoolWithTag = &HalpDmaPdoList;
    PoolWithTag[1] = v11;
    *v11 = PoolWithTag;
    qword_140C4BC28 = (__int64)PoolWithTag;
  }
  else
  {
    v4 = -1073741670;
  }
LABEL_6:
  KxReleaseSpinLock(&HalpDmaPdoListLock);
  __writecr8(v7);
  return v4;
}

Referenced by:

HalpDmaCheckAdapterToken
HalpDmaLinkDeviceObjectByToken