HvlSharedIsr

INT8 __stdcall HvlSharedIsr(){
  UINT64 v0; 
  int v1; 
  unsigned int LpIndexFromProcessorIndex; 
  __int64 v3; 
  unsigned int *v4; 
  __int64 v5; 

  LOBYTE(v1) = HvlpFlags;
  if( (HvlpFlags & 2) != 0 )
  {
    LODWORD(v0) = KeGetPcr()->Prcb.Number;
    LpIndexFromProcessorIndex = HvlGetLpIndexFromProcessorIndex(v0);
    v3 = *((_QWORD *)HvlpGetLpcbByLpIndex(LpIndexFromProcessorIndex) + 5);
    _m_prefetchw((const void *)(v3 + 1024));
    v1 = *(_DWORD *)(v3 + 1024);
    if( v1 )
    {
      v4 = (unsigned int *)(v3 + 1040);
      if( *(_DWORD *)(v3 + 1024) == -2147483612 )
      {
        HvlpHandleIommuFaultMessage((INT64)v4);
      }
      else
      {
        v5 = qword_140CF6288 + 104i64 * *v4;
        *(_DWORD *)(v5 + 4) = 2;
        KiInsertQueueDpc((_KDPC *)(v5 + 8), 0i64, 0i64, 0i64, 0);
      }
      *(_DWORD *)(v3 + 1024) = 0;
      LOBYTE(v1) = *(_BYTE *)(v3 + 1029);
      if( (v1 & 1) != 0 )
      {
        LOBYTE(v1) = 0;
        __writemsr(0x40000084u, 0i64);
      }
    }
  }
  return v1;
}

Referenced by:

HvlEnlightenProcessor
KiHvInterruptSubDispatch