PfpPrefetchEntireDirectory

INT64 PfpPrefetchEntireDirectory(INT64 a1, INT64 a2, UINT64 a3, INT64 a4, INT64 a5, ...){
  __int64 v8; 
  __int64 v9; 
  int v10; 
  __int64 v11; 
  NTSTATUS v12; 
  _QWORD *v13; 
  UINT64 *ReturnedLength; 
  size_t Size; 
  __int64 Information; 
  __int64 v18[2]; 
  int v19[2]; 
  PVOID Object[2]; 
  __int64 v21; 
  va_list va; 
  va_start(va, a5);
  Information = 0i64;
  v8 = *(_QWORD *)(a5 + 8);
  v9 = *(_QWORD *)(a5 + 16);
  *(_QWORD *)v19 = 0i64;
  v21 = 0x200000000i64;
  *(_OWORD *)v18 = 0i64;
  *(_OWORD *)Object = 0i64;
  v10 = PfpOpenHandleCreate((__int64)v19, a1, v9, v8, 1048577, 0x4021u, 0, a2);
  v11 = v21;
  v12 = v10;
  if( v10 >= 0 )
  {
    if( a4 )
    {
      v13 = Object[0];
      if( (int)IopQueryXxxInformation((FILE_OBJECT *)Object[0], 6ui64, 8ui64, 0, &Information, (UINT64 *)va, 1u) >= 0 )
      {
        *(_QWORD *)(a4 + 12) = Information;
        *(_QWORD *)a4 = v13[3];
        *(_DWORD *)(a4 + 8) = v11;
      }
    }
    LODWORD(Size) = 8 * *(_DWORD *)(a3 + 4) + 16;
    LODWORD(ReturnedLength) = 590112;
    v12 = IopXxxControlFile(
            *(void **)v19,
            0i64,
            0i64,
            0i64,
            (__int64)v18,
            (UINT64)ReturnedLength,
            (void *)a3,
            Size,
            0i64,
            0,
            0);
    if( v12 >= 0 )
      v12 = 0;
  }
  if( (v11 & 0x400000000i64) != 0 )
    PfpOpenHandleClose(v19, a1);
  return(unsigned int)v12;
}

Referenced by:

PfSnPrefetchMetadata