InterlockedPushListSList
PSLIST_ENTRY __stdcall InterlockedPushListSList(
PSLIST_HEADER ListHead,
PSLIST_ENTRY List,
PSLIST_ENTRY ListEnd,
UINT32 a4){
__int128 v6;
_SLIST_ENTRY *v7;
signed __int64 v8;
__int128 v9;
unsigned __int8 v10;
_m_prefetchw(ListHead);
*(_QWORD *)&v6 = *(_QWORD *)ListHead;
*((_QWORD *)&v6 + 1) = *((_QWORD *)ListHead + 1);
do
{
v7 = (_SLIST_ENTRY *)*((_QWORD *)&v6 + 1);
LOBYTE(v7) = BYTE8(v6) & 0xF0;
ListEnd->Next = v7;
v8 = v6 + 0x10000;
LOWORD(v8) = v6 + a4;
v9 = v6;
v10 = _InterlockedCompareExchange128(
(volatile signed __int64 *)ListHead,
(signed __int64)List,
v8,
(signed __int64 *)&v9);
v6 = v9;
}
while( !v10 );
return v7;
}Referenced by:
EtwpCovSampPushListSList
ExAllocateHeapPool
HvlpSetupCachedHypercallPages
MiReplenishPageSlist