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