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