WheaReportHwErrorDeviceDriverEx

INT64 __fastcall WheaReportHwErrorDeviceDriverEx(
        UINT64 a1,
        INT64 a2,
        UINT8 *a3,
        UINT64 a4,
        UINT8 *Src,
        UINT64 Size,
        _OWORD *a7,
        INT64 a8,
        INT64 a9,
        CHAR *pszSrc){
  UINT64 v10; 
  _DWORD *HwErrorReportDeviceDriver; 
  UINT8 *v13; 
  UINT64 v14; 
  _DWORD *v15; 
  int v16; 
  UINT8 *dst; 
  UINT64 v19[2]; 
  NTSTRSAFE_PSTR pszDest[2]; 
  _BYTE *v21; 
  INT64 v22; 
  v10 = (unsigned int)a4;
  *(_OWORD *)v19 = 0i64;
  *(_OWORD *)pszDest = 0i64;
  v21 = 0i64;
  HwErrorReportDeviceDriver = WheaCreateHwErrorReportDeviceDriver(a1);
  v15 = HwErrorReportDeviceDriver;
  if( HwErrorReportDeviceDriver )
  {
    WheaHwErrorReportSetSeverityDeviceDriver(
      (UINT64)HwErrorReportDeviceDriver,
      (unsigned int)a9,
      v13,
      v14,
      0i64,
      v19[0],
      (_OWORD *)v19[1],
      (INT64)pszDest[0],
      pszDest[1],
      (INT64)v21,
      v22);
    WheaHwErrorReportGetLogDataBufferDeviceDriver(v15);
    memmove(dst, Src, (unsigned int)Size);
    v16 = WheaAddHwErrorReportSectionDeviceDriver(v15, v10, (__int64)v19);
    if( v16 >= 0 )
    {
      memmove(*(UINT8 **)((char *)v19 + 4), a3, v10);
      *(_OWORD *)pszDest[0] = *a7;
      *v21 = 1;
      if( pszSrc )
        RtlStringCchCopyA(pszDest[1], 0x14ui64, pszSrc);
      return(unsigned int)WheaHwErrorReportSubmitDeviceDriver((INT64)v15);
    }
    else
    {
      WheaHwErrorReportAbandonDeviceDriver(v15);
    }
  }
  else
  {
    return(unsigned int)-1073741670;
  }
  return(unsigned int)v16;
}

Referenced by:

WheaReportHwErrorDeviceDriver