IoReportInterruptActive
NTSTATUS __fastcall IoReportInterruptActive(UINT64 *a1){
NTSTATUS result;
UINT64 v2;
unsigned int j;
UINT64 v4;
unsigned int i;
if( *(_DWORD *)a1 == 1 )
goto LABEL_2;
result = *(_DWORD *)a1 - 2;
if( *(_DWORD *)a1 == 2 )
{
v4 = a1[1];
for( i = 0; i < *(_DWORD *)(v4 + 292); ++i )
IopUnmaskInterrupt((_KINTERRUPT *)(*(_QWORD *)(v4 + 8i64 * i + 296) + 112i64));
}
else
{
result = *(_DWORD *)a1 - 3;
if( *(_DWORD *)a1 != 3 )
{
if( *(_DWORD *)a1 != 4 )
KeBugCheckEx(0xCAu, (PVOID)0xC, (PVOID)*(unsigned int *)a1, 0i64, 0i64);
LABEL_2:
IopUnmaskInterrupt((_KINTERRUPT *)a1[1]);
return result;
}
v2 = a1[1];
for( j = 0; j < *(_DWORD *)(v2 + 4); ++j )
IopUnmaskInterrupt(*(_KINTERRUPT **)(v2 + 48i64 * j + 24));
}
return result;
}Referenced by:
No references.