CcSetVacbInFreeList
VOID __stdcall CcSetVacbInFreeList(_VACB *Vacb, UINT8 ReserveMapping){
char v2;
_LIST_ENTRY *v3;
__int64 v4;
__int64 v5;
int v6;
_LIST_ENTRY **p_Blink;
_LIST_ENTRY *Blink;
LODWORD(CcNumberOfMappedVacbs) = CcNumberOfMappedVacbs - 1;
v3 = (_LIST_ENTRY *)(ReserveMapping + 16i64);
if( v2 )
{
p_Blink = &Vacb[22].Overlay.Links.Blink;
Blink = Vacb[22].Overlay.Links.Blink;
if( (_LIST_ENTRY **)Blink->Blink == &Vacb[22].Overlay.Links.Blink )
{
v3->Flink = Blink;
*(_QWORD *)(ReserveMapping + 24i64) = p_Blink;
Blink->Blink = v3;
*p_Blink = v3;
*(_QWORD *)(ReserveMapping + 8i64) = 0i64;
++LODWORD(Vacb[23].BaseAddress);
return;
}
LABEL_7:
__fastfail(3u);
}
v4 = *(&CmpDummyThreadEvent + 354);
if( *(_UNKNOWN **)(*(&CmpDummyThreadEvent + 354) + 8i64) != (_UNKNOWN *)((char *)&CmpDummyThreadEvent + 2832) )
goto LABEL_7;
v3->Flink = (_LIST_ENTRY *)*(&CmpDummyThreadEvent + 354);
*(_QWORD *)(ReserveMapping + 24i64) = (char *)&CmpDummyThreadEvent + 2832;
*(_QWORD *)(v4 + 8) = v3;
*(&CmpDummyThreadEvent + 354) = ReserveMapping + 16i64;
v5 = *(_QWORD *)(ReserveMapping + 32i64);
*(_QWORD *)(ReserveMapping + 8i64) = 0i64;
v6 = *(_DWORD *)(v5 + 4);
if( !v6 )
KeBugCheckEx(0x34u, (PVOID)0x16E, (PVOID)0xFFFFFFFFC0000420i64, 0i64, 0i64);
*(_DWORD *)(v5 + 4) = v6 - 1;
++*(&CmpDummyThreadEvent + 702);
}Referenced by:
CcGetVacbMiss
CcInitializePartitionVacbs
CcUninitializePartitionVacbs
CcUnmapInactiveViewsInternal
CcUnmapVacbArray