CmpBounceContextCleanup
VOID __fastcall CmpBounceContextCleanup(INT64 a1){
struct _SLIST_ENTRY *v1;
v1 = *(struct _SLIST_ENTRY **)(a1 + 8);
if( v1 && v1 != *(struct _SLIST_ENTRY **)a1 && v1 != (struct _SLIST_ENTRY *)(a1 + 17) )
{
if( (*(_BYTE *)(a1 + 16) & 1) != 0 )
{
++dword_140CDB49C;
if( (unsigned __int16)CmpBounceBufferLookaside >= (unsigned __int16)word_140CDB490 )
{
++dword_140CDB4A0;
((void(__fastcall *)(struct _SLIST_ENTRY *, __int16 *))qword_140CDB4B8)(v1, &CmpBounceBufferLookaside);
}
else
{
RtlpInterlockedPushEntrySList((PSLIST_HEADER)&CmpBounceBufferLookaside, v1);
}
}
else
{
CmSiFreeMemory(*(PPRIVILEGE_SET *)(a1 + 8));
}
}
}Referenced by:
NtEnumerateKey
NtEnumerateValueKey
NtQueryMultipleValueKey