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