HalpInterruptEnumerateUnmaskedSecondaryInterrupts
__int64 __fastcall HalpInterruptEnumerateUnmaskedSecondaryInterrupts(
__int64 (__fastcall *a1)(__int64, __int64),
__int64 a2,
__int64 a3){
char v7;
unsigned __int8 v8;
__int64 *v9;
int(__fastcall *v10)(__int64, __int64, __int64, __int64);
unsigned int v11;
__int64 i;
int v13;
__int64 v14;
unsigned __int8 v15;
if( !byte_140C50754 )
return 3221225659i64;
v7 = 1;
v8 = HalpAcquireHighLevelLock((UINT64 *)&CmpDummyThreadEvent + 994);
v9 = (__int64 *)*(&CmpDummyThreadEvent + 992);
v15 = v8;
do
{
if( v9 == (__int64 *)((char *)&CmpDummyThreadEvent + 7936) )
break;
v10 = (int(__fastcall *)(__int64, __int64, __int64, __int64))v9[13];
v11 = 0;
for( i = v9[4]; v11 < *((_DWORD *)v9 + 5); ++v11 )
{
if( BYTE4(v9[2 * v11 + 21]) )
{
v13 = *((_DWORD *)v9 + 4);
*(_WORD *)(a3 + 4) = 1;
v14 = v11 + v13;
*(_DWORD *)(a3 + 16) = v14;
*(_DWORD *)(a3 + 8) = HIDWORD(v9[2 * v11 + 20]);
*(_DWORD *)(a3 + 12) = v9[2 * v11 + 20];
if( v10(i, v14, a3 + 20, a3 + 24) >= 0 )
{
v7 = a1(a2, a3);
if( !v7 )
break;
}
}
}
v9 = (__int64 *)*v9;
}
while( v7 );
KxReleaseSpinLock((UINT64 *)&CmpDummyThreadEvent + 994);
__writecr8(v15);
return 0i64;
}Referenced by:
HalpInterruptEnumerateUnmaskedInterrupts