PerfDiagpStartPerfDiagLogger

__int64 __fastcall PerfDiagpStartPerfDiagLogger(NTSTRSAFE_PCWSTR pszSrc){
  __int64 v1; 
  UINT64 v3; 
  WCHAR *PoolWithTag; 
  WCHAR *v5; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  WCHAR *v8; 
  char *v9; 
  WCHAR v10; 
  WCHAR *v11; 
  unsigned int started; 
  v1 = -1i64;
  do
    ++v1;
  while( pszSrc[v1] );
  v3 = (unsigned int)(2 * v1 + 104);
  PoolWithTag = (WCHAR *)ExAllocatePoolWithTag(PagedPool, v3, 0x64465250ui64);
  v5 = PoolWithTag;
  if( PoolWithTag )
  {
    v6 = (unsigned __int64)(unsigned int)v3 >> 1;
    if( v6 )
    {
      v7 = 2147483646 - v6;
      v8 = PoolWithTag;
      v9 = (char *)((char *)L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\" - (char *)PoolWithTag);
      do
      {
        if( !(v7 + v6) )
          break;
        v10 = *(WCHAR *)((char *)v8 + (_QWORD)v9);
        if( !v10 )
          break;
        *v8++ = v10;
        --v6;
      }
      while( v6 );
      v11 = v8 - 1;
      if( v6 )
        v11 = v8;
      *v11 = 0;
    }
    RtlStringCbCatW(v5, v3, (PWCHAR)pszSrc);
    if( (unsigned int)PerfDiagpIsTracingAllowed() )
    {
      *(_OWORD *)&LoggerName = *(_OWORD *)L"PerfDiag Logger";
      xmmword_140C1A05C = *(_OWORD *)L" Logger";
      started = EtwStartAutoLogger(&LoggerName, v5, 0i64);
    }
    else
    {
      started = -1073741823;
    }
    ExFreePoolWithTag(v5, 0);
  }
  else
  {
    return(unsigned int)-1073741801;
  }
  return started;
}

Referenced by:

PerfDiagpProxyWorker