CcGetVirtualAddressIfMapped

INT64 __fastcall CcGetVirtualAddressIfMapped(INT64 a1, INT64 a2, INT64 *a3, _DWORD *a4){
  unsigned int v6; 
  INT64 v8; 
  INT64 v9; 
  v6 = a2 & 0x3FFFF;
  *a4 = 0x40000 - (a2 & 0x3FFFF);
  v8 = 0i64;
  ExAcquirePushLockSharedEx(a1 + 104, 0i64);
  if( *(__int64 *)(a1 + 32) > 0x2000000 )
    CcGetVacbLargeOffset((_SHARED_CACHE_MAP *)a1, a2);
  else
    v9 = *(_QWORD *)(*(_QWORD *)(a1 + 88) + 8 * ((unsigned __int64)(unsigned int)a2 >> 18));
  *a3 = v9;
  if( v9 )
  {
    CcIncrementVacbActiveCount(v9);
    v8 = *(_QWORD *)*a3 + v6;
  }
  ExReleasePushLockEx(a1 + 104, 0i64);
  return v8;
}

Referenced by:

CcFlushCachePriv