WheaRequestDeferredRecovery

CHAR __fastcall WheaRequestDeferredRecovery(INT64 a1, INT64 a2){
  signed __int64 v2; 
  if( !WheaDrsInitialized || _InterlockedCompareExchange((volatile signed __int32 *)(a1 + 8), 1, 0) )
    return 0;
  *(_QWORD *)(a1 + 32) = a2;
  while( 1 )
  {
    v2 = WheaDrsList;
    *(_QWORD *)a1 = WheaDrsList;
    if( v2 == _InterlockedCompareExchange64(&WheaDrsList, a1, v2) )
      break;
    _mm_pause();
  }
  if( _InterlockedIncrement(&WheaDrsItemsToProcess) == 1 )
  {
    _InterlockedExchange(&WheaPendingDrsInterrupt, 1);
    HalRequestDeferredRecoveryServiceInterrupt();
  }
  return 1;
}

Referenced by:

HalpMemoryErrorDeferredRecovery
HalpPmemErrorDeferredRecovery