KeSetIdealProcessorThreadByNumber

NTSTATUS __stdcall KeSetIdealProcessorThreadByNumber(
        _ETHREAD *Thread,
        _PROCESSOR_NUMBER *ProcessorNumber,
        _PROCESSOR_NUMBER *OldNumber){
  unsigned int ProcessorIndexFromNumber; 
  NTSTATUS v6; 
  ULONG v7; 
  NTSTATUS v8; 
  UINT64 ProcIndex; 
  LODWORD(ProcIndex) = 0;
  ProcessorIndexFromNumber = KeGetProcessorIndexFromNumber(ProcessorNumber);
  if( ProcessorIndexFromNumber == -1 )
  {
    v8 = -1073741811;
    if( Thread == (_ETHREAD *)KeGetCurrentThread() )
      v7 = *((_DWORD *)Thread + 147);
    else
      v7 = *((_DWORD *)Thread + 49);
  }
  else
  {
    v6 = KeSetIdealProcessorThreadEx((_KTHREAD *)Thread, ProcessorIndexFromNumber, &ProcIndex);
    v7 = ProcIndex;
    v8 = v6;
  }
  KeGetProcessorNumberFromIndex(v7, OldNumber);
  return v8;
}

Referenced by:

KeSetIdealProcessorThread
NtQueryInformationThread
NtSetInformationThread