PfpMemoryRangesQuery

NTSTATUS __stdcall PfpMemoryRangesQuery(_SUPERFETCH_INFORMATION *Info, INT8 PreviousMode, UINT64 *OutSize){
  VOID **v5; 
  _DWORD *v6; 
  int v7; 
  NTSTATUS v8; 
  INT64 v9; 
  VOID **PhysicalMemoryRangesEx2; 
  VOID **i; 
  unsigned __int64 v12; 
  unsigned __int64 v13; 
  __int64 v15; 
  unsigned __int64 j; 
  __int64 v17; 

  v5 = 0i64;
  v6 = (_DWORD *)*((_QWORD *)Info + 2);
  if( PreviousMode )
    ProbeForWrite(*((_QWORD *)Info + 2), (unsigned int)Info[6], 8i64);
  if( *v6 == 2 )
  {
    v7 = v6[1];
    if( (v7 & 0xFFFFFFFE) != 0 )
    {
      v8 = -1073741811;
    }
    else
    {
      v9 = 0i64;
      if( (v7 & 1) != 0 )
        v9 = 3i64;
      PhysicalMemoryRangesEx2 = MmGetPhysicalMemoryRangesEx2(0i64, v9);
      v5 = PhysicalMemoryRangesEx2;
      if( !PhysicalMemoryRangesEx2 )
        goto LABEL_25;
      for( i = PhysicalMemoryRangesEx2; (__int64)i[1] > 0; i += 2 )
        ;
      v12 = ((char *)i - (char *)PhysicalMemoryRangesEx2) >> 4;
      if( v12 <= 0xFFFFFFFF && (v13 = 16 * (v12 + 1), v13 <= 0xFFFFFFFF) )
      {
        if( Info[6] >= (unsigned int)v13 )
        {
          v15 = *((_QWORD *)Info + 2);
          *(_DWORD *)(v15 + 8) = v12;
          for( j = 0i64; j < v12; ++j )
          {
            v17 = 2 * j;
            *(_QWORD *)(v15 + 8 * v17 + 16) = (__int64)PhysicalMemoryRangesEx2[2 * j] / 4096;
            *(_QWORD *)(v15 + 8 * v17 + 24) = (__int64)PhysicalMemoryRangesEx2[2 * j + 1] / 4096;
          }
          *(_DWORD *)OutSize = v13;
          v8 = 0;
        }
        else
        {
          v8 = -1073741789;
          *(_DWORD *)OutSize = v13;
        }
      }
      else
      {
LABEL_25:
        v8 = -1073741670;
      }
    }
  }
  else
  {
    v8 = -1073741811;
  }
  if( v5 )
    ExFreePoolWithTag(v5, 0);
  return v8;
}

Referenced by:

PfQuerySuperfetchInformation