HalpInitializeSecondaryInterruptServices

INT64 __fastcall HalpInitializeSecondaryInterruptServices(){
  INT64 v0; 
  int v1; 
  INT64 v2; 
  INT64 v3; 
  UINT64 GsivValue; 
  LODWORD(GsivValue) = 0;
  qword_140C49948 = (__int64)&SecondaryIcList;
  SecondaryIcList = (__int64)&SecondaryIcList;
  SecondaryIcListSpinLock = 0i64;
  if( HalpCheckSecondaryInterruptSupported() )
  {
    LODWORD(SecondarySignalDpc) = 275;
    qword_140C49968 = (__int64)&SecondarySignalList;
    SecondarySignalList = (__int64)&SecondarySignalList;
    qword_140C49918 = (__int64)HalpProcessSecondarySignalList;
    qword_140C49920 = 0i64;
    qword_140C49938 = 0i64;
    qword_140C49910 = 0i64;
    SecondarySignalListLock = 0i64;
    SecondarySignalDpcRunning = 0;
    v1 = HalpQueryMaximumGsiv(&GsivValue);
    if( v1 >= 0 )
    {
      if( (int)GsivValue + 513 < (unsigned int)GsivValue )
      {
        return(unsigned int)-1073741823;
      }
      else
      {
        SecondaryGsivRangeSize = 512;
        v3 = 1024i64;
        SecondaryGsivAssignedCount = 0;
        if( (unsigned int)(GsivValue + 1) > 0x400 )
          v3 = (unsigned int)(GsivValue + 1);
        SecondaryGsivRangeStart = v3;
        HalpRecordSecondaryGsivRange(v3, v0, v2);
        SecondaryIcServicesEnabled = 1;
      }
    }
  }
  else
  {
    return(unsigned int)-1073741637;
  }
  return(unsigned int)v1;
}

Referenced by:

HalpPostPnpInitialize