PfSnOperationProcess

__int64 __fastcall PfSnOperationProcess(__int64 a1){
  bool v2; 
  _UNICODE_STRING *v3; 
  unsigned __int8 v4; 
  unsigned int v5; 
  bool v6; 
  _EPROCESS *Process; 
  NTSTATUS v8; 
  unsigned int v9; 
  int v10; 
  int v11; 
  _PF_ENABLE_STATUS EnableStatus; 
  _UNICODE_STRING *FullImageName; 
  __int64 NameNumCharsOut[2]; 
  WCHAR pszDest[32]; 

  memset(pszDest, 0i64, sizeof(pszDest));
  v2 = *(_BYTE *)a1 == 1;
  v3 = 0i64;
  EnableStatus = PfSvDefaultDisabled;
  FullImageName = 0i64;
  if( !v2 || (v4 = *(_BYTE *)(a1 + 1), v4 >= 2u) || *(_WORD *)(a1 + 2) )
  {
    v9 = -1073741811;
    goto LABEL_13;
  }
  v5 = *(_DWORD *)(a1 + 4);
  if( (v4 & 1) != 0 )
  {
    v6 = v5 < 2;
  }
  else
  {
    if( (v5 & 4) != 0 && (v5 & 3) != 0 )
      return(unsigned int)-1073741811;
    v6 = v5 < 8;
  }
  if( !v6 )
    return(unsigned int)-1073741811;
  if( PfSnCheckScenario(PfOperationScenarioType, &EnableStatus) < 0 )
    return 0;
  Process = KeGetCurrentThread()->ApcState.Process;
  v8 = PfCalculateProcessHash(Process, &FullImageName);
  v3 = FullImageName;
  v9 = v8;
  if( v8 >= 0 )
  {
    if( PfSnFindImageFileName(FullImageName, (UINT64 *)NameNumCharsOut) )
    {
      RtlStringCbPrintfW(pszDest, 0x3Cui64, (WCHAR *)L"Op-%.17s-%08X");
      v10 = *(_DWORD *)(a1 + 4);
      v11 = v10 & 1;
      v2 = (*(_BYTE *)(a1 + 1) & 1) == 0;
      *(_DWORD *)&pszDest[30] = *(_DWORD *)(a1 + 8);
      if( v2 )
      {
        if( (v10 & 2) != 0 || EnableStatus == PfSvTraceOnly )
        {
          v11 |= 2u;
        }
        else if( (v10 & 4) != 0 )
        {
          v11 |= 4u;
        }
        PfSnBeginScenario(Process, pszDest, 1, v11, 0i64);
      }
      else
      {
        PfSnEndProcessTrace(Process, v11 + 8, pszDest);
      }
      v9 = 0;
    }
    else
    {
      v9 = -1073741595;
    }
  }
LABEL_13:
  if( v3 )
    ExFreePoolWithTag(v3, 0);
  return v9;
}

Referenced by:

PfSnSetPrefetcherInformation