HalpInterruptPerformDirectedEndOfInterrupt
VOID __stdcall HalpInterruptPerformDirectedEndOfInterrupt(INT64 a1){
_DWORD *v1;
_DWORD *LinesForGsiRange;
_REGISTERED_INTERRUPT_CONTROLLER *v3;
if( a1 )
{
if( !*(_DWORD *)(a1 + 108) )
{
v1 = *(_DWORD **)(a1 + 160);
if( v1 )
{
if( !v1[2] )
{
LinesForGsiRange = HalpInterruptFindLinesForGsiRange(v1[16], v1[16] + 1);
if( LinesForGsiRange )
{
v3 = HalpInterruptLookupController((unsigned int)LinesForGsiRange[4]);
if( (v3->Capabilities & 0x400) != 0 )
v3->FunctionTable.DirectedEndOfInterrupt(v3->InternalData, v1[3], v1[12] & 0x3FFFFFFF);
}
}
}
}
}
}Referenced by:
HalPerformEndOfInterrupt