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;
}