PnpGetGenericStorePropertyLocales

NTSTATUS __fastcall PnpGetGenericStorePropertyLocales(
        INT64 a1,
        CHAR *a2,
        INT64 a3,
        WCHAR *a4,
        UINT64 cchDest,
        UINT64 *a6){
  WCHAR *v6; 
  int v7; 
  int v8; 
  __int64 v9; 
  unsigned int v10; 
  ULONG v11; 
  NTSTATUS v12; 
  __int64 v13; 
  unsigned int v14; 
  UINT64 dwFlags; 
  int pszFormat; 
  UINT64 pszFormata; 
  CHAR *v19; 
  VOID *Handle; 
  INT64 v21; 
  __int16 pszDest[48]; 
  __int16 pszSrc[88]; 

  v6 = a4;
  v19 = a2;
  v21 = a1;
  *(_DWORD *)a6 = 0;
  Handle = 0i64;
  if( (_DWORD)cchDest )
    *a4 = 0;
  LODWORD(dwFlags) = 2048;
  v7 = RtlStringCchPrintfExW(
         (WCHAR *)pszDest,
         0x30ui64,
         0i64,
         0i64,
         dwFlags,
         (WCHAR *)L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\%04lX");
  if( v7 >= 0 )
  {
    v8 = PnpOpenPropertiesKey(v21, v19, (wchar_t *)pszDest, 1u, 0, pszFormat, (INT64)&Handle);
    v7 = v8;
    if( v8 == -1073741772 )
    {
      return 0;
    }
    else if( v8 >= 0 )
    {
      v10 = cchDest;
      v11 = 0;
      while( 1 )
      {
        do
        {
          LODWORD(v19) = 85;
          v12 = PnpCtxRegEnumValue(v9, (_HANDLE)Handle, v11++, pszSrc, (INT64)&v19, 0i64, 0i64);
        }
        while( v12 == -1073741789 );
        if( v12 )
          break;
        if( pszSrc[0] )
        {
          v13 = (unsigned int)((_DWORD)v19 + 1);
          if( (unsigned int)v13 < v10 )
          {
            LODWORD(pszFormata) = 2304;
            RtlStringCchCopyExW(v6, v10, (WCHAR *)pszSrc, 0i64, 0i64, pszFormata);
            v10 -= v13;
            v6 += v13;
          }
          *(_DWORD *)a6 += v13;
        }
      }
      ZwClose((_HANDLE)Handle);
      v14 = *(_DWORD *)a6 + 1;
      *(_DWORD *)a6 = v14;
      if( v6 && (unsigned int)cchDest >= v14 )
        *v6 = 0;
      else
        return -1073741789;
    }
  }
  return v7;
}

Referenced by:

PiDqPnPGetObjectPropertyLocales
PnpGetObjectPropertyLocalesWorker