HalpDmaFindAdapterByDeviceObject

LIST_ENTRY *__stdcall HalpDmaFindAdapterByDeviceObject(DEVICE_OBJECT *DeviceObject){
  UINT64 v1; 
  LIST_ENTRY *v3; 
  unsigned __int8 v4; 
  unsigned __int64 v5; 
  __int64 *i; 
  LIST_ENTRY *v7; 
  if( !DeviceObject )
    return 0i64;
  v3 = 0i64;
  KeAcquireSpinLockRaiseToDpc(&HalpDmaAdapterListLock, v1);
  v5 = v4;
  for( i = (__int64 *)HalpDmaAdapterList; i != &HalpDmaAdapterList; i = (__int64 *)*i )
  {
    v7 = (LIST_ENTRY *)(i - 57);
    if( (DEVICE_OBJECT *)i[8] == DeviceObject )
    {
      if( ObReferenceObjectSafeWithTag(i - 57, 0x746C6644ui64) )
        v3 = v7;
      break;
    }
  }
  KxReleaseSpinLock(&HalpDmaAdapterListLock);
  __writecr8(v5);
  return v3;
}

Referenced by:

HalGetAdapterV2
HalGetAdapterV3