KiInsertInterruptObjectOrdered
VOID __stdcall KiInsertInterruptObjectOrdered(PROCESSOR_NUMBER *InterruptHead, INT64 Interrupt){
PROCESSOR_NUMBER *v2;
PROCESSOR_NUMBER **v3;
PROCESSOR_NUMBER **v4;
PROCESSOR_NUMBER *v5;
PROCESSOR_NUMBER *v6;
PROCESSOR_NUMBER **v7;
PROCESSOR_NUMBER **v8;
if( *(_BYTE *)(Interrupt + 93) && HIBYTE(InterruptHead[23].Group) )
{
v2 = InterruptHead + 2;
if( *(_BYTE *)(*(_QWORD *)&InterruptHead[4].Group + 85i64) )
{
v3 = *(PROCESSOR_NUMBER ***)&InterruptHead[4].Group;
v4 = (PROCESSOR_NUMBER **)(Interrupt + 8);
if( *v3 == v2 )
{
*v4 = v2;
*(_QWORD *)(Interrupt + 16) = v3;
*v3 = (PROCESSOR_NUMBER *)v4;
*(_QWORD *)&v2[2].Group = v4;
return;
}
LABEL_12:
__fastfail(3u);
}
v5 = InterruptHead + 2;
do
{
v6 = v5;
if( !HIBYTE(v5[21].Group) )
break;
v5 = *(PROCESSOR_NUMBER **)&v5->Group;
}
while( v5 != v2 );
}
else
{
v6 = InterruptHead + 2;
}
v7 = (PROCESSOR_NUMBER **)(Interrupt + 8);
v8 = *(PROCESSOR_NUMBER ***)&v6[2].Group;
if( *v8 != v6 )
goto LABEL_12;
*v7 = v6;
v7[1] = (PROCESSOR_NUMBER *)v8;
*v8 = (PROCESSOR_NUMBER *)v7;
*(_QWORD *)&v6[2].Group = v7;
}Referenced by:
KiConnectInterrupt
KiConnectSecondaryInterrupt