PerfDiagpUpdatePerfDiagLoggerEnableFlags

CHAR __stdcall PerfDiagpUpdatePerfDiagLoggerEnableFlags(INT64 a1, INT64 a2){
  int v3; 
  unsigned int v4; 
  UINT64 OutBufferLen; 
  UINT64 ReturnLength[16]; 
  __int128 Src[3]; 

  LODWORD(ReturnLength[0]) = 0;
  memset(Src, 0, sizeof(Src));
  memset(&ReturnLength[2], 0i64, 0x70u);
  LODWORD(ReturnLength[3]) = 32;
  ReturnLength[4] = a2;
  ReturnLength[5] = (UINT64)Src;
  LODWORD(ReturnLength[6]) = 3;
  LODWORD(Src[0]) = 48;
  LOBYTE(v3) = RtlpQueryRegistryValues(
                 (_KTRAP_FRAME *)2,
                 (_KEXCEPTION_FRAME *)L"Diagnostics\\Performance\\BootCKCLSettings");
  if( v3 >= 0 )
  {
    if( DWORD1(Src[0]) == 3 )
    {
      v4 = Src[0];
      if( LODWORD(Src[0]) > 0x28 )
      {
        LOBYTE(v3) = 35;
      }
      else
      {
        memmove((char *)&ExBootDevicesRemovedEvent + 3880, (char *)Src + 8, Src[0]);
        PerfDiagpInitializeLoggerInfo(1ui64, v4 >> 2);
        LODWORD(OutBufferLen) = *(&ExBootDevicesRemovedEvent + 924);
        LOBYTE(v3) = NtTraceControl(
                       4ui64,
                       (char *)&ExBootDevicesRemovedEvent + 3696,
                       *(&ExBootDevicesRemovedEvent + 924),
                       (char *)&ExBootDevicesRemovedEvent + 3696,
                       OutBufferLen,
                       ReturnLength);
      }
    }
    else
    {
      LOBYTE(v3) = 13;
    }
  }
  return v3;
}

Referenced by:

PerfDiagpProxyWorker