WheapGetErrorSource

INT64 *__fastcall WheapGetErrorSource(INT64 a1, INT64 a2){
  int v2; 
  int v3; 
  INT64 *result; 
  if( *(_DWORD *)a1 != 1279410516 )
    return 0i64;
  v2 = *(_DWORD *)(a1 + 4);
  v3 = 0;
  result = *(INT64 **)(a1 + 16);
  if( v2 <= 0 )
    return 0i64;
  while( *((_DWORD *)result + 31) != (_DWORD)a2 || *((_BYTE *)result + 88) || *((_DWORD *)result + 27) != 2 )
  {
    result = (INT64 *)*result;
    if( ++v3 >= v2 )
      return 0i64;
  }
  return result;
}

Referenced by:

HalHandleNMI
HalpMcaReportError
WheaAddHwErrorReportSectionDeviceDriver
WheaGetErrorSource
WheaHwErrorReportSubmitDeviceDriver
WheaRemoveErrorSource
WheaReportHwError
WheapAttemptArchitecturalErrorRecovery
WheapFreeDriverPacketBuffer
WheapGetPreallocatedPacketBuffer
WheapInitErrorReportDeviceDriver
WheapReportBootError
WheapWmiExecuteErrorSourceMethod