PerfInfoLogInterrupt
VOID __fastcall PerfInfoLogInterrupt(INT64 a1, INT64 a2, INT64 a3){
int v4;
__int16 v5;
unsigned int v6;
bool i;
unsigned int v8;
__int64 v9;
__int64 v10;
__int64 v11;
UINT64 Flag;
UINT64 v13;
__int64 v14;
int v15;
int v16;
EVENT_DATA_DESCRIPTOR EventData;
__int64 *v18;
int v19;
int v20;
v16 = 0;
if( *(_BYTE *)(a1 + 93) )
{
if( *(_QWORD *)(a1 + 32) )
{
v14 = *(_QWORD *)(a1 + 32);
v4 = 16;
v5 = 3890;
v16 = *(_DWORD *)(a1 + 40);
}
else
{
v5 = 3907;
v14 = *(_QWORD *)(a1 + 24);
v4 = 12;
}
}
else
{
v5 = 3935;
v14 = *(_QWORD *)(a1 + 24);
v4 = 12;
}
v15 = a2;
v18 = &v14;
v19 = v4;
v20 = 0;
v6 = *(_DWORD *)(EtwpHostSiloState + 4224);
for( i = !_BitScanForward(&v8, v6); !i; i = !_BitScanForward(&v8, v6) )
{
v6 &= v6 - 1;
v9 = v8;
v10 = 32i64 * v8 + EtwpHostSiloState + 4260;
if( v10 )
{
if( (*(_DWORD *)(v10 + 4) & 0x4000) != 0 )
{
v11 = *(unsigned __int8 *)(EtwpHostSiloState + 2 * v9 + 4209) - 1i64;
*(_QWORD *)&EventData.Size = 8i64;
LODWORD(v13) = 4196866;
LOWORD(Flag) = v5;
EventData.Ptr = a3 + 8 * v11;
EtwpLogKernelEvent(
&EventData,
EtwpHostSiloState,
*(unsigned __int8 *)(EtwpHostSiloState + 2 * v9 + 4208),
2u,
Flag,
v13);
}
}
}
}Referenced by:
KiInterruptSubDispatch
KiInterruptSubDispatchNoLock
KiInvokeInterruptServiceRoutine
KiScanInterruptObjectList