PnpSetPropertyWorker

__int64 __fastcall PnpSetPropertyWorker(
        __int64 a1,
        VOID *a2,
        const wchar_t *a3,
        __int64 a4,
        int a5,
        __int64 a6,
        UINT64 a7){
  __int16 v7; 
  int v11; 
  NTSTATUS v12; 
  NTSTATUS v13; 
  NTSTATUS v14; 
  __int64 v16; 
  VOID *v17; 
  __int64 v18; 
  VOID *v19; 
  UINT64 dwFlags; 
  UINT64 dwFlagsa; 
  UINT64 dwFlagsb; 
  UINT64 dwFlagsc; 
  int pszFormat; 
  VOID *hKey; 
  INT64 v26; 
  UINT64 pRegDisposition; 
  VOID *phkResult; 
  VOID *v29; 
  VOID *v30; 
  _SIZE_T pcchLength; 
  WCHAR Dst[12]; 
  __int16 pszDest[40]; 

  v7 = 0;
  v29 = a2;
  v30 = (VOID *)a6;
  pRegDisposition = 0i64;
  v26 = 0i64;
  hKey = 0i64;
  phkResult = 0i64;
  if( (unsigned int)a7 > 0x7FFFFFFF )
    return(unsigned int)-1073741811;
  if( a3 )
  {
    v11 = RtlUnalignedStringCchLengthW(a3, 85, &pcchLength);
    if( v11 < 0 )
      return(unsigned int)v11;
  }
  if( a5 == 25 && a3 && *a3 != v7 )
    return(unsigned int)-1073741811;
  LODWORD(dwFlags) = 2048;
  if( RtlStringCchPrintfExW(
         (WCHAR *)pszDest,
         0x27ui64,
         0i64,
         0i64,
         dwFlags,
         (WCHAR *)L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}") < 0 )
    goto LABEL_26;
  swprintf_s(Dst, 9ui64, (WCHAR *)L"%04lX", *(unsigned int *)(a4 + 16));
  v11 = PnpOpenPropertiesKey(a1, v29, 0i64, 4u, 1, pszFormat, (INT64)&v26);
  if( v11 < 0 )
  {
    v26 = 0i64;
    goto LABEL_13;
  }
  LODWORD(dwFlagsa) = 4;
  v12 = PnpCtxRegCreateKey(
          (HPNPCTX *)a1,
          (VOID *)v26,
          (WCHAR *)pszDest,
          0i64,
          dwFlagsa,
          0i64,
          &hKey,
          (UINT64 *)((char *)&pRegDisposition + 4));
  if( v12 == -1073741444 )
    goto LABEL_26;
  if( v12 < 0 )
  {
    hKey = 0i64;
    v11 = v12;
    goto LABEL_13;
  }
  LODWORD(dwFlagsb) = 65542;
  v13 = PnpCtxRegCreateKey((HPNPCTX *)a1, hKey, Dst, 0i64, dwFlagsb, 0i64, &phkResult, &pRegDisposition);
  if( v13 == -1073741444 )
  {
LABEL_26:
    v11 = -1073741595;
LABEL_13:
    if( phkResult )
    {
      ZwClose((_HANDLE)phkResult);
      if( v11 < 0 && (_DWORD)pRegDisposition == 1 )
      {
        if( a1 && (v16 = *(_QWORD *)(a1 + 224)) != 0 )
          v17 = *(VOID **)(v16 + 8);
        else
          v17 = 0i64;
        RegRtlDeleteTreeInternal(hKey, Dst, v17, 0);
      }
    }
    goto LABEL_15;
  }
  if( v13 >= 0 )
  {
    LODWORD(dwFlagsc) = a7;
    v14 = RegRtlSetValue(phkResult, a3, a5 | 0xFFFF0000, v30, dwFlagsc);
    if( v14 != -1073741444 )
    {
      if( v14 < 0 )
        v11 = v14;
      goto LABEL_13;
    }
    goto LABEL_26;
  }
  phkResult = 0i64;
  v11 = v13;
LABEL_15:
  if( hKey )
  {
    ZwClose((_HANDLE)hKey);
    if( v11 < 0 && HIDWORD(pRegDisposition) == 1 )
    {
      if( a1 && (v18 = *(_QWORD *)(a1 + 224)) != 0 )
        v19 = *(VOID **)(v18 + 8);
      else
        v19 = 0i64;
      RegRtlDeleteTreeInternal((VOID *)v26, (WCHAR *)pszDest, v19, 0);
    }
  }
  if( v26 )
    ZwClose(v26);
  return(unsigned int)v11;
}

Referenced by:

PnpSetGenericStoreProperty