KeGetProcessorIndexFromNumber

NTSTATUS __fastcall KeGetProcessorIndexFromNumber(UINT16 *a1){
  __int64 v1; 
  __int64 v2; 
  NTSTATUS result; 

  if( *((_BYTE *)a1 + 3) )
    return -1;
  v1 = *a1;
  if( !(_WORD)v1 && !*((_BYTE *)a1 + 2) )
    return 0;
  if( (unsigned __int16)v1 >= (unsigned __int16)KiMaximumGroups )
    return -1;
  v2 = *((unsigned __int8 *)a1 + 2);
  if( (unsigned __int8)v2 >= 0x40u )
    return -1;
  result = KiProcessorNumberToIndexMappingTable[64 * v1 + v2];
  if( !result )
    return -1;
  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