AlpciDestroyDeferredMessageContext

_ETHREAD *__fastcall AlpciDestroyDeferredMessageContext(struct _DMA_ADAPTER **a1){
  _ETHREAD *CurrentThread; 
  struct _DMA_ADAPTER *v3; 
  struct _DMA_ADAPTER *v4; 
  _ETHREAD *result; 
  bool v6; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  v3 = *a1;
  if( v3 )
  {
    HalPutDmaAdapter(v3);
    *a1 = 0i64;
  }
  v4 = a1[1];
  if( v4 )
  {
    HalPutDmaAdapter(v4);
    a1[1] = 0i64;
  }
  result = (_ETHREAD *)KeGetCurrentThread();
  v6 = (*((_WORD *)result + 242))++ == 0xFFFF;
  if( v6 && *((_ETHREAD **)result + 19) != (_ETHREAD *)((char *)result + 152) && !*((_WORD *)result + 243) )
    return(_ETHREAD *)KiCheckForKernelApcDelivery();
  return result;
}

Referenced by:

NtWaitForWorkViaWorkerFactory