AlpcpInsertMessagePendingQueue

VOID __fastcall AlpcpInsertMessagePendingQueue(INT64 a1, INT64 a2){
  volatile INT64 *v2; 
  int v5; 
  v2 = (volatile INT64 *)(a1 + 176);
  ExAcquirePushLockExclusiveEx(a1 + 176, 0i64);
  v5 = *(_DWORD *)(a2 + 40);
  *(_QWORD *)(a2 + 16) = a1;
  *(_DWORD *)(a2 + 40) = v5 & 0xFFFFFF83 | (4 * (*(_DWORD *)(a1 + 416) & 6)) | 3;
  *(_QWORD *)(a2 + 8) = *(_QWORD *)(a1 + 192);
  *(_QWORD *)a2 = a1 + 184;
  **(_QWORD **)(a1 + 192) = a2;
  ++*(_DWORD *)(a1 + 456);
  *(_QWORD *)(a1 + 192) = a2;
  if( (_InterlockedExchangeAdd64(v2, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock(v2);
  KeAbPostRelease((PVOID)v2);
}

Referenced by:

AlpcpCompleteDispatchMessage
AlpcpReceiveDirectMessagePort
AlpcpReceiveSynchronousReply
AlpcpSendLegacySynchronousRequest