HalpDmaInsertDeviceObjectByToken

NTSTATUS __stdcall HalpDmaInsertDeviceObjectByToken(UINT64 Token, DEVICE_OBJECT *DeviceObject){
  char v2; 
  NTSTATUS v4; 
  char v5; 
  unsigned __int8 v7; 
  unsigned __int64 v8; 
  __int64 *i; 
  _OWORD *PoolWithTag; 
  _QWORD *v12; 
  v4 = 0;
  v5 = v2;
  KeAcquireSpinLockRaiseToDpc(&HalpDmaPdoListLock, (UINT64)DeviceObject);
  v8 = v7;
  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(NonPagedPoolNx, 0x28ui64, 0x206C6148ui64);
  if( PoolWithTag )
  {
    *PoolWithTag = 0i64;
    PoolWithTag[1] = 0i64;
    *((_QWORD *)PoolWithTag + 4) = 0i64;
    *((_QWORD *)PoolWithTag + 2) = Token;
    *((_QWORD *)PoolWithTag + 3) = DeviceObject;
    *((_BYTE *)PoolWithTag + 32) = v5;
    v12 = (_QWORD *)qword_140C4BC28;
    if( *(__int64 **)qword_140C4BC28 != &HalpDmaPdoList )
      __fastfail(3u);
    *(_QWORD *)PoolWithTag = &HalpDmaPdoList;
    *((_QWORD *)PoolWithTag + 1) = v12;
    *v12 = PoolWithTag;
    qword_140C4BC28 = (__int64)PoolWithTag;
  }
  else
  {
    v4 = -1073741670;
  }
LABEL_6:
  KxReleaseSpinLock(&HalpDmaPdoListLock);
  __writecr8(v8);
  return v4;
}

Referenced by:

HalpDmaCheckAdapterToken
HalpDmaLinkDeviceObjectByToken