CmGetDeviceSoftwareKeyPath

void __fastcall CmGetDeviceSoftwareKeyPath(
        __int64 a1,
        const WCHAR *a2,
        __int16 a3,
        int a4,
        char a5,
        NTSTRSAFE_PWSTR pszDest,
        size_t cchDest,
        __int64 a8){
  __int64 v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  unsigned __int64 v13; 
  const wchar_t *v14; 
  __int64 v15; 
  unsigned __int64 v16; 
  const WCHAR *pszFormat; 
  __int64 v18; 
  unsigned __int64 v19; 
  __int64 v20; 
  unsigned __int64 v21; 
  __int64 v22; 
  unsigned __int64 v23; 
  UINT64 dwFlags; 
  const wchar_t *v25; 
  const wchar_t *v26; 
  const WCHAR *v27; 
  __int16 *v28; 
  const WCHAR *v29; 
  __int16 *v30; 
  __int16 v31[48]; 
  if( !*(_BYTE *)(a1 + 4) )
  {
    if( (int)CmGetDeviceSoftwareKey(a1, a2, (wchar_t *)v31, (__int64)a2, a5) < 0 )
      return;
    if( (a3 & 0x200) == 0 )
    {
      v10 = -1i64;
      do
        ++v10;
      while( v31[v10] );
      v11 = v10 + 40;
      if( v11 <= 0xFFFFFFFF )
      {
        if( a8 )
          *(_DWORD *)a8 = v11;
        if( (unsigned int)v11 <= (unsigned int)cchDest )
        {
          LODWORD(dwFlags) = 2048;
          RtlStringCchPrintfExW(
            pszDest,
            (unsigned int)cchDest,
            0i64,
            0i64,
            dwFlags,
            L"%s\\%s",
            L"System\\CurrentControlSet\\Control\\Class",
            v31);
        }
      }
      return;
    }
    if( !a4 )
    {
      v12 = -1i64;
      do
        ++v12;
      while( v31[v12] );
      v13 = v12 + 91;
      if( v13 <= 0xFFFFFFFF )
      {
        if( a8 )
          *(_DWORD *)a8 = v13;
        if( (unsigned int)v13 <= (unsigned int)cchDest )
        {
          v28 = v31;
          v27 = L"System\\CurrentControlSet\\Control\\Class";
          v14 = L"System\\CurrentControlSet\\Hardware Profiles\\Current";
LABEL_21:
          LODWORD(dwFlags) = 2048;
          RtlStringCchPrintfExW(
            pszDest,
            (unsigned int)cchDest,
            0i64,
            0i64,
            dwFlags,
            (const WCHAR *)L"%s\\%s\\%s",
            v14,
            v27,
            v28);
          return;
        }
      }
      return;
    }
    if( a4 == -1 )
      return;
    v22 = -1i64;
    do
      ++v22;
    while( v31[v22] );
    v23 = v22 + 88;
    if( v23 > 0xFFFFFFFF )
      return;
    if( a8 )
      *(_DWORD *)a8 = v23;
    if( (unsigned int)v23 > (unsigned int)cchDest )
      return;
    v30 = v31;
    v29 = L"System\\CurrentControlSet\\Control\\Class";
    LODWORD(v26) = a4;
    v25 = L"System\\CurrentControlSet\\Hardware Profiles";
    pszFormat = L"%s\\%04u\\%s\\%s";
LABEL_32:
    LODWORD(dwFlags) = 2048;
    RtlStringCchPrintfExW(pszDest, (unsigned int)cchDest, 0i64, 0i64, dwFlags, pszFormat, v25, v26, v29, v30);
    return;
  }
  if( (a3 & 0x200) != 0 )
  {
    if( a4 )
    {
      if( a4 != -1 )
      {
        v18 = -1i64;
        do
          ++v18;
        while( a2[v18] );
        v19 = v18 + 97;
        if( v19 <= 0xFFFFFFFF )
        {
          if( a8 )
            *(_DWORD *)a8 = v19;
          if( (unsigned int)v19 <= (unsigned int)cchDest )
          {
            LODWORD(dwFlags) = 2048;
            RtlStringCchPrintfExW(
              pszDest,
              (unsigned int)cchDest,
              0i64,
              0i64,
              dwFlags,
              L"%s\\%04u\\%s\\%s\\%s",
              L"System\\CurrentControlSet\\Hardware Profiles",
              a4,
              L"System\\CurrentControlSet\\Enum",
              a2,
              L"Driver Parameters");
          }
        }
      }
      return;
    }
    v15 = -1i64;
    do
      ++v15;
    while( a2[v15] );
    v16 = v15 + 100;
    if( v16 > 0xFFFFFFFF )
      return;
    if( a8 )
      *(_DWORD *)a8 = v16;
    if( (unsigned int)v16 > (unsigned int)cchDest )
      return;
    v30 = L"Driver Parameters";
    v29 = a2;
    v26 = L"System\\CurrentControlSet\\Enum";
    v25 = L"System\\CurrentControlSet\\Hardware Profiles\\Current";
    pszFormat = L"%s\\%s\\%s\\%s";
    goto LABEL_32;
  }
  v20 = -1i64;
  do
    ++v20;
  while( a2[v20] );
  v21 = v20 + 49;
  if( v21 <= 0xFFFFFFFF )
  {
    if( a8 )
      *(_DWORD *)a8 = v21;
    if( (unsigned int)v21 <= (unsigned int)cchDest )
    {
      v28 = L"Driver Parameters";
      v14 = L"System\\CurrentControlSet\\Enum";
      v27 = a2;
      goto LABEL_21;
    }
  }
}

Referenced by:

CmGetDeviceRegKeyPath