PfpParametersRead

NTSTATUS __stdcall PfpParametersRead(PFP_SUPERFETCH_PARAMETERS *SuperfetchParameters){
  __int128 v1; 
  VOID *v2; 
  __int64 v3; 
  VOID *v5; 
  VOID *v6; 
  VOID *v7; 
  NTSTATUS v8; 
  PFP_SUPERFETCH_PARAMETERS v9; 
  bool v10; 
  __int128 v11; 
  __int64 v12; 
  UINT64 ValueSize; 
  __int128 Value; 
  __int64 v16; 
  PFP_SUPERFETCH_PARAMETERS v17; 

  v1 = *(_OWORD *)(SuperfetchParameters + 17);
  v2 = (VOID *)*((_QWORD *)SuperfetchParameters + 1);
  v3 = *(_QWORD *)(SuperfetchParameters + 21);
  v17 = SuperfetchParameters[23];
  v16 = v3;
  LODWORD(ValueSize) = 4;
  Value = v1;
  if( PfpGetParameter(v2, (WCHAR *)L"EnableSuperfetch", 4ui64, &Value, &ValueSize) < 0 || InitSafeBootMode )
    LODWORD(Value) = 0x80000000;
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v2, (WCHAR *)L"SavedSectInfoTracesMax", 4ui64, (char *)&Value + 8, &ValueSize);
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v2, (WCHAR *)L"SavedPageAccessTracesMax", 4ui64, (char *)&Value + 12, &ValueSize);
  v5 = (VOID *)*((_QWORD *)SuperfetchParameters + 1);
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v5, (WCHAR *)L"PrefetchTimeoutStandby", 4ui64, &v16, &ValueSize);
  v6 = (VOID *)*((_QWORD *)SuperfetchParameters + 1);
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v6, (WCHAR *)L"PrefetchTimeoutHibernate", 4ui64, (char *)&v16 + 4, &ValueSize);
  v7 = (VOID *)*((_QWORD *)SuperfetchParameters + 1);
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v7, (WCHAR *)L"PrefetchTimeoutHiberBoot", 4ui64, &v17, &ValueSize);
  v8 = -1073741811;
  v9 = v17;
  if( (int)Value < 0 )
    v10 = (_DWORD)Value == 0x80000000;
  else
    v10 = (Value & 0xFFFFFFFC) == 0;
  if( v10
    && DWORD2(Value) <= 0x10000
    && HIDWORD(Value) <= 0x10000
    && (unsigned int)(v16 - 2500) <= 0xE09C
    && (unsigned int)(HIDWORD(v16) - 5000) <= 0xD6D8
    && (unsigned int)(v17 - 2500) <= 0xE09C )
  {
    v8 = 0;
  }
  if( v8 >= 0 )
  {
    v11 = Value;
    v8 = 0;
    ++SuperfetchParameters[128];
    v12 = v16;
    *(_OWORD *)(SuperfetchParameters + 17) = v11;
    *(_QWORD *)(SuperfetchParameters + 21) = v12;
    SuperfetchParameters[23] = v9;
  }
  return v8;
}

Referenced by:

PfpParametersInitialize
PfpParametersWatcher