ObDeleteCapturedInsertInfo
VOID __stdcall ObDeleteCapturedInsertInfo(PVOID Object){
__int64 v2;
void *v3;
struct _KPRCB *CurrentPrcb;
__int64 v5;
if( (*((char *)Object - 21) & 1) != 0 )
{
v2 = *((_QWORD *)Object - 2);
if( v2 )
{
v3 = *(void **)(v2 + 32);
if( v3 )
{
SeReleaseSecurityDescriptor(v3, *(_BYTE *)(v2 + 16), 1u);
*(_QWORD *)(*((_QWORD *)Object - 2) + 32i64) = 0i64;
v2 = *((_QWORD *)Object - 2);
}
CurrentPrcb = KeGetCurrentPrcb();
v5 = *((_QWORD *)CurrentPrcb + 264);
++*(_DWORD *)(v5 + 28);
if( *(_WORD *)v5 < *(_WORD *)(v5 + 16)
|| (++*(_DWORD *)(v5 + 32),
v5 = *((_QWORD *)CurrentPrcb + 265),
++*(_DWORD *)(v5 + 28),
*(_WORD *)v5 < *(_WORD *)(v5 + 16)) )
{
RtlpInterlockedPushEntrySList((PSLIST_HEADER)v5, (PSLIST_ENTRY)v2);
}
else
{
++*(_DWORD *)(v5 + 32);
(*(void(__fastcall **)(__int64))(v5 + 56))(v2);
}
*((_QWORD *)Object - 2) = 0i64;
}
}
}Referenced by:
CcInitializeCacheMapEx
CmLoadDifferencingKey