KeQueryReadyQueueStatsProcessor

INT64 __fastcall KeQueryReadyQueueStatsProcessor(INT64 a1, _DWORD *a2, _QWORD *a3, _DWORD *a4, _QWORD *a5){
  __int64 v9; 
  INT64 result; 
  UINT64 SpinCount; 
  UINT64 v12; 
  if( *(_QWORD *)(a1 + 33856) )
  {
    LODWORD(SpinCount) = 0;
    v9 = *(_QWORD *)(a1 + 33864);
    while( _interlockedbittestandset64((volatile signed __int32 *)v9, 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( *(_QWORD *)v9 );
    }
    *a4 = *(_DWORD *)(v9 + 608);
    *a5 = *(_QWORD *)(v9 + 616);
    _InterlockedAnd64((volatile signed __int64 *)v9, 0i64);
  }
  LODWORD(v12) = 0;
  while( _interlockedbittestandset64((volatile signed __int32 *)(a1 + 48), 0i64) )
  {
    do
      KeYieldProcessorEx(&v12);
    while( *(_QWORD *)(a1 + 48) );
  }
  *a2 = *(_DWORD *)(a1 + 32436);
  result = *(_QWORD *)(a1 + 32440);
  *a3 = result;
  _InterlockedAnd64((volatile signed __int64 *)(a1 + 48), 0i64);
  return result;
}

Referenced by:

KiCanSelectSoftParkedProcessor
KiChooseTargetProcessor