HalGetProcessorIdByNtNumber

INT64 __stdcall HalGetProcessorIdByNtNumber(UINT64 Number, UINT64 *Id){
  unsigned int v3; 
  INT64 result; 
  int v5; 
  char *i; 
  _PROCESSOR_NUMBER ProcNumber; 

  ProcNumber = 0;
  v3 = (unsigned int)qword_140C50640;
  if( (unsigned int)Number >= (unsigned int)qword_140C50640 )
    return 3221225485i64;
  LODWORD(result) = KeGetProcessorNumberFromIndex(Number, &ProcNumber);
  if( (int)result >= 0 )
  {
    v5 = 0;
    if( v3 )
    {
      for( i = (char *)HalpInterruptProcessorState + 13;
            !*(i - 1) || !*i || *(_WORD *)(i + 3) != ProcNumber.Group || i[5] != ProcNumber.Number;
            i += 64 )
      {
        if( ++v5 >= v3 )
          return 3221226021i64;
      }
      *(_DWORD *)Id = *(_DWORD *)(i - 13);
      return 0i64;
    }
    else
    {
      return 3221226021i64;
    }
  }
  return result;
}

Referenced by:

HalGetMessageRoutingInfo
HalpDpStartProcessor
HalpInterruptGenerateMessage
HalpInterruptReinitialize
KeRegisterProcessorChangeCallback
PnprIsProcessorDevice
PnprQuiesceProcessorDpc