PfpScenCtxPrefetchAbortSet
__int64 __fastcall PfpScenCtxPrefetchAbortSet(ULONG_PTR a1, int a2, __int64 a3, int a4, int a5){
bool v9;
unsigned int v10;
_ETHREAD *CurrentThread;
if( !a5 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx(a1, 0i64);
}
if( *(_DWORD *)(a1 + 48) != a2 )
{
v10 = -1073741735;
goto LABEL_8;
}
v9 = a4 == 0;
if( !a4 )
{
if( (*(_DWORD *)(a1 + 8) & 0xC) == 8 )
{
v10 = -1073741431;
goto LABEL_8;
}
v9 = 1;
}
if( !v9 )
a3 = 0i64;
*(_QWORD *)(a1 + 40) = a3;
v10 = 0;
LABEL_8:
if( !a5 )
{
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)a1, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)a1);
KeAbPostRelease((PVOID)a1);
KeLeaveCriticalRegion();
}
return v10;
}Referenced by:
PfpPrefetchRequestPerform