HalpInterruptMaskLevelTriggeredLines
NTSTATUS __stdcall HalpInterruptMaskLevelTriggeredLines(){
PVOID *v0;
_REGISTERED_INTERRUPT_CONTROLLER *v1;
_LIST_ENTRY *p_LinesHead;
_LIST_ENTRY *Flink;
_LIST_ENTRY *v4;
int v5;
int v6;
__int64 v7;
_LIST_ENTRY *Blink;
int v9;
_INTERRUPT_LINE_STATE LineState;
_INTERRUPT_LINE Line;
_REGISTERED_INTERRUPT_CONTROLLER *v13;
Line = 0i64;
v0 = (PVOID *)qword_140C4B850;
memset(&LineState, 0, sizeof(LineState));
while( v0 != &qword_140C4B850 )
{
v1 = (_REGISTERED_INTERRUPT_CONTROLLER *)v0;
v13 = (_REGISTERED_INTERRUPT_CONTROLLER *)v0;
v0 = (PVOID *)*v0;
p_LinesHead = &v1->LinesHead;
Flink = v1->LinesHead.Flink;
if( Flink != &v1->LinesHead )
{
do
{
v4 = Flink;
v5 = 0;
v6 = LODWORD(Flink[1].Blink) - HIDWORD(Flink[1].Flink);
Flink = Flink->Flink;
if( v6 > 0 )
{
v7 = 0i64;
do
{
Blink = v4[2].Blink;
if( (*(_DWORD *)((_BYTE *)&Blink->Blink + v7 + 4) & 0x10) != 0 && !*(_DWORD *)((char *)&Blink->Blink + v7) )
{
LineState = *(_INTERRUPT_LINE_STATE *)((char *)&Blink->Flink + v7);
LineState.Flags = HIDWORD(_mm_srli_si128(*(__m128i *)&LineState.Polarity, 8).m128i_u64[0]) & 0xFFFFFFEF;
Line.UnitId = v1->UnitId;
Line.Line = v5 + HIDWORD(v4[1].Flink);
v9 = HalpInterruptSetLineStateInternal(v1, &Line, &LineState);
if( v9 < 0 )
{
HalpInterruptRestoreAllControllerState();
return v9;
}
v1 = v13;
}
++v5;
v7 += 56i64;
}
while( v5 < LODWORD(v4[1].Blink) - HIDWORD(v4[1].Flink) );
}
}
while( Flink != p_LinesHead );
}
}
return 0;
}Referenced by:
No references.