KeInitializeSecondaryInterruptServices

NTSTATUS __stdcall KeInitializeSecondaryInterruptServices(VOID *HalExports){
  VOID **PoolWithTag; 
  NTSTATUS v2; 
  VOID **v3; 
  INT64 v4; 
  __int64 v5; 

  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x3000ui64, 1767073099i64);
  v2 = 0;
  KiGlobalSecondaryIDT = (__int64)PoolWithTag;
  v3 = PoolWithTag;
  if( !PoolWithTag )
    return -1073741670;
  memset(PoolWithTag, 0i64, 0x3000u);
  v4 = (INT64)(v3 + 1);
  v5 = 256i64;
  do
  {
    *v3 = 0i64;
    KeInitializeEvent(v4, 1, 1u);
    v4 += 48i64;
    v3 += 6;
    --v5;
  }
  while( v5 );
  qword_140C2B268 = (__int64)&KiSecondarySignalList;
  KiSecondarySignalList = (__int64)&KiSecondarySignalList;
  KeInitializeDpc(&KiSecondarySignalDpc, KiProcessSecondarySignalList, 0i64);
  KiSecondarySignalListLock = 0i64;
  KiSecondarySignalDpcRunning = 0;
  KiSecondaryInterruptServicesEnabled = 1;
  return v2;
}

Referenced by:

HalpAllocateGsivForSecondaryInterrupt