HalpDisableSecondaryInterrupt
NTSTATUS __stdcall HalpDisableSecondaryInterrupt(_INTERRUPT_CONNECTION_DATA *ConnectionData){
NTSTATUS v2;
unsigned int Gsiv;
_LIST_ENTRY *SecondaryIcEntry;
INT64 v5;
unsigned int v6;
__int64 v7;
int v8;
if( !byte_140C50754 )
return -1073741637;
if( !(unsigned __int8)HalpCheckInterruptType(ConnectionData) )
return -1073741811;
Gsiv = ConnectionData->Vectors[0].ControllerInput.Gsiv;
SecondaryIcEntry = HalpFindSecondaryIcEntry(Gsiv);
v5 = (INT64)SecondaryIcEntry;
if( !SecondaryIcEntry )
return -1073700575;
v2 = ((__int64(__fastcall *)(_LIST_ENTRY *, _QWORD))SecondaryIcEntry[4].Flink)(SecondaryIcEntry[2].Flink, Gsiv);
if( v2 >= 0 )
{
v6 = Gsiv - *(_DWORD *)(v5 + 16);
v7 = 2i64 * v6;
v8 = *(_DWORD *)(v5 + 16i64 * v6 + 168);
*(_BYTE *)(v5 + 8 * v7 + 172) = 0;
*(_DWORD *)(v5 + 8 * v7 + 168) = v8 | 0x80000000;
}
HalpReleaseSecondaryIcEntryShared(v5, 1);
return v2;
}Referenced by:
HalDisableInterrupt