AlpcpEnterAllocationEventMessageLog
void __fastcall AlpcpEnterAllocationEventMessageLog(__int64 a1){
INT64 MessageLog;
INT64 *v3;
char *v4;
char *v5;
char **v6;
ExAcquirePushLockExclusiveEx((UINT64)&AlpcpMessageLogLock, 0i64);
MessageLog = AlpcpAllocateMessageLog();
if( MessageLog )
{
*(_QWORD *)(MessageLog + 32) = a1;
*(_DWORD *)(MessageLog + 40) = *(_DWORD *)(a1 + 264);
*(_DWORD *)(MessageLog + 44) = 1;
v3 = (INT64 *)qword_140C2A788;
if( *(__int64 **)qword_140C2A788 != &AlpcpMessageLogListHead
|| (*(_QWORD *)(MessageLog + 8) = qword_140C2A788,
*(_QWORD *)MessageLog = &AlpcpMessageLogListHead,
v4 = (char *)(MessageLog + 16),
*v3 = MessageLog,
qword_140C2A788 = MessageLog,
v5 = (char *)AlpcpMessageLogLookupTable + 16 * ((*(_DWORD *)(MessageLog + 40) >> 2) & 0x3FF),
v6 = (char **)*((_QWORD *)v5 + 1),
*v6 != v5) )
{
__fastfail(3u);
}
*(_QWORD *)v4 = v5;
*((_QWORD *)v4 + 1) = v6;
*v6 = v4;
*((_QWORD *)v5 + 1) = v4;
}
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&AlpcpMessageLogLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&AlpcpMessageLogLock);
KeAbPostRelease(&AlpcpMessageLogLock);
}Referenced by:
AlpcpAllocateMessage
AlpcpSendLegacySynchronousRequest
AlpcpSendMessage