HalpQueueMapBufferWorker

void __fastcall HalpQueueMapBufferWorker(__int64 a1, int a2){
  __int64 v4; 
  WORK_QUEUE_ITEM *PoolWithTag; 
  v4 = *(_BYTE *)(a1 + 434) != 0 ? 4 : 0;
  if( !_InterlockedCompareExchange((volatile signed __int32 *)((char *)&HalpDmaGrowMapBufferWorkerQueued + v4), 1, 0) )
  {
    PoolWithTag = (WORK_QUEUE_ITEM *)ExAllocatePoolWithTag(NonPagedPoolNx, 0x38ui64, 0x206C6148ui64);
    if( PoolWithTag )
    {
      PoolWithTag->List.Flink = 0i64;
      PoolWithTag->WorkerRoutine = HalpGrowMapBufferWorker;
      PoolWithTag->Parameter = PoolWithTag;
      PoolWithTag[1].List.Flink = *(_LIST_ENTRY **)(a1 + 152);
      HIDWORD(PoolWithTag[1].List.Blink) = a2;
      LOBYTE(PoolWithTag[1].List.Blink) = *(_BYTE *)(a1 + 434);
      LODWORD(PoolWithTag[1].WorkerRoutine) = *(_DWORD *)(a1 + 148);
      ExQueueWorkItem(PoolWithTag, DelayedWorkQueue);
    }
    else
    {
      *(_DWORD *)((char *)&HalpDmaGrowMapBufferWorkerQueued + v4) = 0;
    }
  }
}

Referenced by:

HalAllocateAdapterChannelV2
HalpAllocateDmaResourcesInternal
HalpDmaProcessMapRegisterQueueV2
IoFreeAdapterChannelV2