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.