WheaAttemptClearPoison

NTSTATUS __fastcall WheaAttemptClearPoison(INT64 a1, UINT8 a2){
  struct _WORK_QUEUE_ITEM WorkItem; 
  _QWORD v4[6]; 
  WorkItem.List.Blink = 0i64;
  if( *((_BYTE *)KeGetCurrentThread() + 562) != 1 )
    return WheapAttemptPhysicalPageOffline(a1, a1 >> 12, a2);
  v4[0] = a1;
  memset(&v4[2], 0, 32);
  v4[1] = a1 >> 12;
  LOBYTE(v4[2]) = a2;
  *(_WORD *)((char *)&v4[2] + 1) = 257;
  KeInitializeEvent((_KEVENT *)&v4[3], NotificationEvent, 0);
  WorkItem.List.Flink = 0i64;
  WorkItem.WorkerRoutine = (void(__fastcall *)(void *))WheapAttemptPhysicalPageOfflineWorker;
  WorkItem.Parameter = v4;
  ExQueueWorkItem(&WorkItem, DelayedWorkQueue);
  KeWaitForSingleObject(&v4[3], Executive, 0, 0, 0i64);
  return HIDWORD(v4[2]);
}

Referenced by:

HalpMemoryErrorDeferredHandler