KiComputeCpuSetAffinityMask

UINT64 __stdcall KiComputeCpuSetAffinityMask(UINT64 *CachedAffinity, UINT64 *AffinityEpoch, UINT64 CpuSets){
  unsigned __int64 v3; 
  unsigned __int64 v4; 
  int v5; 
  __int64 TickLock; 
  UINT64 *v8; 
  UINT64 v9; 
  unsigned __int64 i; 
  unsigned __int64 v11; 

  v4 = v3;
  v5 = CpuSets;
  do
  {
    TickLock = RtlBeginReadTickLock(&KiCpuSetSequence);
    if( v8 && *AffinityEpoch == TickLock )
      return *v8;
    v9 = 0i64;
    for( i = v4; i; i &= ~(1i64 << v11) )
    {
      _BitScanForward64(&v11, i);
      v9 |= *((_QWORD *)KiCpuSetAffinities + (unsigned int)((v5 << 6) + v11));
    }
  }
  while( KiCpuSetSequence != TickLock );
  *AffinityEpoch = TickLock;
  if( v8 )
    *v8 = v9;
  return v9;
}

Referenced by:

KiIntSteerComputeCpuSet