HvlpLogIommuEvent

VOID __stdcall HvlpLogIommuEvent(_HV_IOMMU_EXTENDED_STATUS *IommuStatus){
  __int64 *v2; 
  ULONG v3; 
  int *v4; 
  __int64 v5; 
  $9809CEAD2DA957FAEE8580DC38A49918 *v6; 
  unsigned __int64 *Params; 
  unsigned int v8; 
  int v9[4]; 
  _EVENT_DATA_DESCRIPTOR UserData; 

  if( (HvlpRootFlags & 1) != 0 && IommuStatus->Severity )
  {
    switch( IommuStatus->Status )
    {
      case 1u:
        v2 = (__int64 *)&HV_EVENTLOG_IOMMU_WARNING_SCOPE_CONFLICT;
        break;
      case 2u:
        v2 = HV_EVENTLOG_IOMMU_FAILED_RID_CONFLICT;
        break;
      case 3u:
        v2 = HV_EVENTLOG_IOMMU_FAILED_NO_RESOURCES;
        break;
      case 4u:
        v2 = HV_EVENTLOG_IOMMU_FAILED_INVALID_IOAPIC;
        v3 = 1;
        v9[0] = 1;
        goto LABEL_17;
      case 5u:
        v2 = HV_EVENTLOG_IOMMU_FAILED_NO_DEVICE_ASSIGNMENT;
        v9[2] = 8;
        v3 = 3;
LABEL_16:
        v9[1] = 8;
        v9[0] = 8;
LABEL_17:
        v4 = v9;
        v5 = v3;
        v6 = &UserData.12;
        Params = IommuStatus->Params;
        do
        {
          v6->Reserved = 0;
          v8 = *v4++;
          *(_QWORD *)&v6[-3].Reserved = Params++;
          v6[-1].Reserved = v8;
          v6 += 4;
          --v5;
        }
        while( v5 );
        HvlpWriteEventLog((PCEVENT_DESCRIPTOR)v2, v3, &UserData);
        return;
      case 6u:
        v2 = HV_EVENTLOG_IOMMU_FAILED_RESERVED_DEVICE;
        break;
      default:
        return;
    }
    v3 = 2;
    goto LABEL_16;
  }
}

Referenced by:

HvlMapDeviceInterrupt