PfpPrefetchVolumesCleanup
VOID __stdcall PfpPrefetchVolumesCleanup(_PFP_PREFETCH_CONTEXT *PrefetchContext){
char *v2;
unsigned int v3;
char *v4;
unsigned __int64 v5;
v2 = (char *)*((_QWORD *)PrefetchContext + 2);
if( v2 )
{
v3 = 0;
if( *(_DWORD *)(*(_QWORD *)PrefetchContext + 8i64) )
{
do
{
v4 = v2;
v5 = (unsigned __int64)v3 << 6;
if( (*(_QWORD *)&v2[v5 + 56] & 0x400000000i64) != 0 )
{
PfpOpenHandleClose(&v2[v5 + 32], *((_QWORD *)PrefetchContext + 5));
v2 = (char *)*((_QWORD *)PrefetchContext + 2);
v4 = v2;
}
if( (*(_QWORD *)&v4[v5 + 24] & 0x400000000i64) != 0 )
{
PfpOpenHandleClose(&v4[v5], *((_QWORD *)PrefetchContext + 5));
v2 = (char *)*((_QWORD *)PrefetchContext + 2);
v4 = v2;
}
++v3;
}
while( v3 < *(_DWORD *)(*(_QWORD *)PrefetchContext + 8i64) );
v2 = v4;
}
ExFreePoolWithTag(v2, 0);
*((_QWORD *)PrefetchContext + 2) = 0i64;
}
}Referenced by:
PfpPrefetchRequestPerform