PfpParametersRead

INT64 __stdcall PfpParametersRead(INT64 RCX, DOUBLE XMM1_8){
  __int128 v2; 
  void *v3; 
  __int64 v4; 
  void *v6; 
  void *v7; 
  void *v8; 
  int v9; 
  int v10; 
  bool v11; 
  __int128 v12; 
  __int64 v13; 
  UINT64 ValueSize; 
  __int128 Value; 
  __int64 v17; 
  int v18; 
  v2 = *(_OWORD *)(RCX + 68);
  v3 = *(void **)(RCX + 8);
  v4 = *(_QWORD *)(RCX + 84);
  v18 = *(_DWORD *)(RCX + 92);
  v17 = v4;
  LODWORD(ValueSize) = 4;
  Value = v2;
  if( (int)PfpGetParameter(v3, (WCHAR *)L"EnableSuperfetch", 4ui64, &Value, &ValueSize) < 0 || InitSafeBootMode )
    LODWORD(Value) = 0x80000000;
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v3, (WCHAR *)L"SavedSectInfoTracesMax", 4ui64, (char *)&Value + 8, &ValueSize);
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v3, (WCHAR *)L"SavedPageAccessTracesMax", 4ui64, (char *)&Value + 12, &ValueSize);
  v6 = *(void **)(RCX + 8);
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v6, (WCHAR *)L"PrefetchTimeoutStandby", 4ui64, &v17, &ValueSize);
  v7 = *(void **)(RCX + 8);
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v7, (WCHAR *)L"PrefetchTimeoutHibernate", 4ui64, (char *)&v17 + 4, &ValueSize);
  v8 = *(void **)(RCX + 8);
  LODWORD(ValueSize) = 4;
  PfpGetParameter(v8, (WCHAR *)L"PrefetchTimeoutHiberBoot", 4ui64, &v18, &ValueSize);
  v9 = -1073741811;
  v10 = v18;
  if( (int)Value < 0 )
    v11 = (_DWORD)Value == 0x80000000;
  else
    v11 = (Value & 0xFFFFFFFC) == 0;
  if( v11
    && DWORD2(Value) <= 0x10000
    && HIDWORD(Value) <= 0x10000
    && (unsigned int)(v17 - 2500) <= 0xE09C
    && (unsigned int)(HIDWORD(v17) - 5000) <= 0xD6D8
    && (unsigned int)(v18 - 2500) <= 0xE09C )
  {
    v9 = 0;
  }
  if( v9 >= 0 )
  {
    v12 = Value;
    v9 = 0;
    ++*(_DWORD *)(RCX + 512);
    v13 = v17;
    *(_OWORD *)(RCX + 68) = v12;
    *(_QWORD *)(RCX + 84) = v13;
    *(_DWORD *)(RCX + 92) = v10;
  }
  return(unsigned int)v9;
}

Referenced by:

PfpParametersInitialize
PfpParametersWatcher