HalpHandleMaskUnmaskSecondaryInterrupt

INT64 __fastcall HalpHandleMaskUnmaskSecondaryInterrupt(UINT64 InputGsiv, UINT64 Flags, INT64 MaskRequest){
  char v3; 
  unsigned int v4; 
  unsigned int v5; 
  int v6; 
  LIST_ENTRY *SecondaryIcEntry; 
  LIST_ENTRY *v8; 
  __int64 v9; 
  _LIST_ENTRY *Flink; 
  __int64 v11; 
  v3 = MaskRequest;
  v4 = Flags;
  v5 = InputGsiv;
  if( SecondaryIcServicesEnabled )
  {
    if( (unsigned __int8)HalpIsInterruptTypeSecondary(0i64, (unsigned int)InputGsiv) )
    {
      SecondaryIcEntry = HalpFindSecondaryIcEntry(v5);
      v8 = SecondaryIcEntry;
      if( SecondaryIcEntry )
      {
        v9 = v5 - LODWORD(SecondaryIcEntry[1].Flink);
        if( v3 )
        {
          v6 = ((__int64(__fastcall *)(_LIST_ENTRY *, _QWORD, _QWORD))SecondaryIcEntry[4].Blink)(
                 SecondaryIcEntry[2].Flink,
                 v4,
                 v5);
          if( v6 >= 0 )
            BYTE4(v8[(unsigned int)v9 + 10].Blink) = 0;
        }
        else
        {
          Flink = SecondaryIcEntry[5].Flink;
          v11 = v9;
          BYTE4(v8[v11 + 10].Blink) = 1;
          v6 = ((__int64(__fastcall *)(_LIST_ENTRY *, _QWORD, _QWORD))Flink)(v8[2].Flink, v4, v5);
          if( v6 < 0 )
            BYTE4(v8[v11 + 10].Blink) = 0;
        }
        HalpReleaseSecondaryIcEntryShared((volatile INT32 *)v8, 1);
      }
      else
      {
        return(unsigned int)-1073700575;
      }
    }
    else
    {
      return(unsigned int)-1073741811;
    }
  }
  else
  {
    return(unsigned int)-1073741637;
  }
  return(unsigned int)v6;
}

Referenced by:

HalpMaskInterrupt
HalpUnmaskInterrupt