PfSnPrefetchCacheEntryUpdate
VOID __fastcall PfSnPrefetchCacheEntryUpdate(INT64 a1){
void *v1;
unsigned __int8 *v3;
__int64 v4;
__int64 v5;
__int64 v6;
_ETHREAD *CurrentThread;
__int64 v8;
v1 = (void *)(a1 + 4);
v3 = (unsigned __int8 *)(a1 + 4);
v4 = 314159i64;
v5 = 8i64;
do
{
v6 = *v3;
v3 += 8;
v4 = *(v3 - 1)
+ 37
* (*(v3 - 2)
+ 37
* (*(v3 - 3) + 37 * (*(v3 - 4) + 37 * (*(v3 - 5) + 37 * (*(v3 - 6) + 37 * (*(v3 - 7) + 37 * (v6 + 37 * v4)))))));
--v5;
}
while( v5 );
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquireResourceExclusiveLite(&stru_140C50220, 1u);
v8 = qword_140C50210 - 16;
if( !memcmp((PVOID)(qword_140C50210 - 16 + 32), v1, 0x40ui64)
|| (v8 = PfSnPrefetchCacheEntryGet(&qword_140C501F8, v1, v4, 0i64)) != 0 )
{
*(_DWORD *)(v8 + 112) = *(_DWORD *)(a1 + 68);
}
ExReleaseResourceLite(&stru_140C50220);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}Referenced by:
PfSnSetPrefetcherInformation