HalpDmaTranslationEntryToIndex

__int64 __fastcall HalpDmaTranslationEntryToIndex(__int64 a1, unsigned __int64 a2, _QWORD *a3){
  __int64 *v3; 
  int v4; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  v3 = *(__int64 **)(a1 + 40);
  v4 = 0;
  while( 1 )
  {
    if( !v3 )
      return 0xFFFFFFFFi64;
    v5 = v3[2];
    if( v5 <= a2 && a2 < v5 + 72i64 * *((unsigned int *)v3 + 2) )
      break;
    v4 += *((_DWORD *)v3 + 2);
    v3 = (__int64 *)*v3;
  }
  if( a3 )
    *a3 = v3;
  v6 = (__int64)((unsigned __int128)((__int64)(a2 - v5) * (__int128)0xE38E38E38E38E39i64) >> 64) >> 2;
  return v4 + (unsigned int)v6 + (v6 >> 63);
}

Referenced by:

HalpDmaCommitContiguousMapBuffers
HalpDmaReturnToContiguousPool