HalpEnableSecondaryInterrupt

__int64 __fastcall HalpEnableSecondaryInterrupt(_DWORD *a1){
  int v2; 
  unsigned int v3; 
  LIST_ENTRY *SecondaryIcEntry; 
  volatile INT32 *v5; 
  _LIST_ENTRY *Blink; 
  __int64 v7; 
  __int64 v8; 
  if( SecondaryIcServicesEnabled )
  {
    if( HalpCheckInterruptType(a1) )
    {
      v3 = a1[16];
      SecondaryIcEntry = HalpFindSecondaryIcEntry(v3);
      v5 = (volatile INT32 *)SecondaryIcEntry;
      if( SecondaryIcEntry )
      {
        Blink = SecondaryIcEntry[3].Blink;
        v7 = v3 - LODWORD(SecondaryIcEntry[1].Flink) + 10i64;
        v8 = v3 - LODWORD(SecondaryIcEntry[1].Flink);
        HIDWORD(SecondaryIcEntry[v8 + 10].Flink) = a1[6];
        LODWORD(SecondaryIcEntry[v7].Flink) = a1[5];
        LODWORD(SecondaryIcEntry[v8 + 10].Blink) = a1[3];
        BYTE4(SecondaryIcEntry[v8 + 10].Blink) = 1;
        v2 = ((__int64(__fastcall *)(_LIST_ENTRY *, _QWORD, _QWORD, _QWORD, LIST_ENTRY *))Blink)(
               SecondaryIcEntry[2].Flink,
               v3,
               (unsigned int)a1[6],
               (unsigned int)a1[5],
               SecondaryIcEntry);
        if( v2 < 0 )
        {
          v5[1 * v8 + 42] |= 0x80000000;
          LOBYTE(v5[1 * v8 + 43]) = 0;
        }
        HalpReleaseSecondaryIcEntryShared(v5, 1);
      }
      else
      {
        return(unsigned int)-1073700575;
      }
    }
    else
    {
      return(unsigned int)-1073741811;
    }
  }
  else
  {
    return(unsigned int)-1073741637;
  }
  return(unsigned int)v2;
}

Referenced by:

HalEnableInterrupt