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