PfSnDeactivateTrace

INT64 __fastcall PfSnDeactivateTrace(struct EX_RUNDOWN_REF *a1){
  UINT64 v1; 
  unsigned __int8 v3; 
  unsigned __int64 v4; 
  UINT64 v5; 
  unsigned __int8 v6; 
  unsigned __int64 v7; 
  unsigned __int64 Count; 
  struct EX_RUNDOWN_REF **v9; 
  KeAcquireSpinLockRaiseToDpc(&SpinLock, v1);
  v4 = v3;
  KxReleaseSpinLock(&SpinLock);
  __writecr8(v4);
  PfSnRemoveProcessTrace(a1[44].Count);
  ExReleaseRundownProtection(a1 + 45);
  PfSnCancelTraceTimer((INT64)a1);
  ExWaitForRundownProtectionRelease(a1 + 45);
  KeAcquireSpinLockRaiseToDpc(&SpinLock, v5);
  v7 = v6;
  Count = a1[1].Count;
  v9 = (struct EX_RUNDOWN_REF **)a1[2].Count;
  if( *(struct EX_RUNDOWN_REF **)(Count + 8) != &a1[1] || *v9 != &a1[1] )
    __fastfail(3u);
  --PfSnNumActiveTraces;
  *v9 = (struct EX_RUNDOWN_REF *)Count;
  *(_QWORD *)(Count + 8) = v9;
  KxReleaseSpinLock(&SpinLock);
  __writecr8(v7);
  return 0i64;
}

Referenced by:

PfSnEndTrace