HalpDmaFindDeviceObjectByToken

_LIST_ENTRY *__stdcall HalpDmaFindDeviceObjectByToken(UINT64 Token, INT64 Remove, INT64 VerifierQuery){
  __int64 *v4; 
  unsigned __int64 v5; 
  char v6; 
  char v7; 
  char v8; 
  unsigned __int8 v9; 
  __int64 *v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  __int64 **v13; 
  bool v15; 

  v4 = 0i64;
  v5 = 0i64;
  v6 = 0;
  v7 = VerifierQuery;
  v8 = Remove;
  v9 = KeAcquireSpinLockRaiseToDpc(&HalpDmaPdoListLock);
  v10 = (__int64 *)HalpDmaPdoList;
  v11 = v9;
  while( v10 != &HalpDmaPdoList )
  {
    v4 = v10;
    if( v10[2] == Token )
    {
      v5 = v10[3];
      if( v8 )
      {
        v12 = *v10;
        v13 = (__int64 **)v10[1];
        if( *(__int64 **)(*v10 + 8) != v10 || *v13 != v10 )
          __fastfail(3u);
        *v13 = (__int64 *)v12;
        v6 = 1;
        *(_QWORD *)(v12 + 8) = v13;
      }
      if( v7 )
      {
        v15 = *((_BYTE *)v10 + 32) != 0;
        *((_BYTE *)v10 + 32) = 1;
        v5 &= -(__int64)v15;
      }
      break;
    }
    v10 = (__int64 *)*v10;
  }
  KxReleaseSpinLock(&HalpDmaPdoListLock);
  __writecr8(v11);
  if( v6 )
    ExFreePoolWithTag(v4, 0);
  return(_LIST_ENTRY *)v5;
}

Referenced by:

HaliGetDmaAdapter
HalpDmaCheckAdapterToken
HalpDmaLinkDeviceObjectByToken