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