KeGetProcessorIndexFromNumber

UINT64 __stdcall KeGetProcessorIndexFromNumber(_PROCESSOR_NUMBER *ProcNumber){
  __int64 Group; 
  __int64 Number; 
  UINT64 result; 
  if( ProcNumber->Reserved )
    return 0xFFFFFFFFi64;
  Group = ProcNumber->Group;
  if( !(_WORD)Group && !ProcNumber->Number )
    return 0i64;
  if( (unsigned __int16)Group >= (unsigned __int16)KiMaximumGroups )
    return 0xFFFFFFFFi64;
  Number = ProcNumber->Number;
  if( (unsigned __int8)Number >= 0x40u )
    return 0xFFFFFFFFi64;
  result = (unsigned int)KiProcessorNumberToIndexMappingTable[64 * Group + Number];
  if( !(_DWORD)result )
    return 0xFFFFFFFFi64;
  return result;
}

Referenced by:

ExpQuerySystemInformation
HalGetInterruptTargetInformation
HalRequestSoftwareInterrupt
HalSendNMI
HalpInterruptDestinationToTarget
HalpInterruptDpReplaceBegin
HalpInterruptReinitialize
HalpInterruptSendIpi
HalpInterruptUpdateLocalUnitIdentifier
IopConnectInterrupt
KeQueryLogicalProcessorRelationship
KeSetIdealProcessorThreadByNumber
KeSetTargetProcessorDpcEx
PoGetIdleTimes
PoGetPerfStateAndParkingInfo
PpmClearSimulatedIdle
PpmClearSimulatedLoad
PpmInstallPlatformIdleStates
PpmPerfGetBrandedFrequency
PpmSetSimulatedIdle
PpmSetSimulatedLoad
PpmUpdateIdleStates
PpmUpdateProcessorIdleVeto
PspBuildCreateProcessContext