HalpDmaFindAdapterByDeviceId

INT64 *__stdcall HalpDmaFindAdapterByDeviceId(INT64 a1){
  INT64 *v1; 
  char v4; 
  _KIRQL v5; 
  __int64 *v6; 
  char v7; 
  INT64 v8; 
  INT64 *v9; 

  v1 = 0i64;
  if( !a1 )
    return 0i64;
  v4 = KeAcquireSpinLockRaiseToDpc(&HalpDmaAdapterListLock);
  v6 = (__int64 *)qword_140C4BCA8;
  v7 = v4;
  while( v6 != &HalpDmaAdapterList )
  {
    v8 = (INT64)(v6 - 57);
    v9 = (INT64 *)v6[9];
    if( v9 && IidAreIdsStrictlyEqual(v9, a1) )
    {
      if( ObReferenceObjectSafe(v8) )
        v1 = (INT64 *)v8;
      break;
    }
    v6 = (__int64 *)v6[1];
  }
  LOBYTE(v5) = v7;
  KeReleaseSpinLock(&HalpDmaAdapterListLock, v5);
  return v1;
}

Referenced by:

HalpDmaAllocateChildAdapterV3