PnpSetPropertyWorker

__int64 __fastcall PnpSetPropertyWorker(
        __int64 a1,
        char *a2,
        const wchar_t *a3,
        __int64 a4,
        int a5,
        void *a6,
        ULONG a7){
  __int16 v7; 
  int v10; 
  int v11; 
  int v12; 
  int v13; 
  NTSTATUS v14; 
  __int64 v16; 
  __int64 v17; 
  __int64 v18; 
  __int64 v19; 
  UINT64 dwFlags; 
  NTSTRSAFE_PCWSTR pszFormat; 
  HANDLE v22; 
  HANDLE v23; 
  ULONG v24; 
  ULONG v25; 
  HANDLE Handle; 
  char *v27; 
  void *v28; 
  size_t pcchLength; 
  wchar_t Dst[12]; 
  wchar_t pszDest[40]; 
  v7 = 0;
  v27 = a2;
  v28 = a6;
  v25 = 0;
  v24 = 0;
  v23 = 0i64;
  v22 = 0i64;
  Handle = 0i64;
  if( a7 > 0x7FFFFFFF )
    return(unsigned int)-1073741811;
  if( a3 )
  {
    v11 = RtlUnalignedStringCchLengthW(a3, 0x55ui64, &pcchLength);
    if( v11 < 0 )
      return(unsigned int)v11;
  }
  if( a5 == 25 && a3 && *a3 != v7 )
    return(unsigned int)-1073741811;
  LODWORD(dwFlags) = 2048;
  RtlStringCchPrintfExW(pszDest, 0x27ui64, 0i64, 0i64, dwFlags, L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}");
  if( v10 < 0 )
    goto LABEL_26;
  swprintf_s(Dst, 9ui64, (WCHAR *)L"%04lX");
  v11 = PnpOpenPropertiesKey(a1, v27, 0i64, 4u, 1, (__int64)pszFormat, &v23);
  if( v11 < 0 )
  {
    v23 = 0i64;
    goto LABEL_13;
  }
  v12 = PnpCtxRegCreateKey(a1, (__int64)v23, pszDest, 0, 4u, 0i64, &v22, &v25);
  if( v12 == -1073741444 )
    goto LABEL_26;
  if( v12 < 0 )
  {
    v22 = 0i64;
    v11 = v12;
    goto LABEL_13;
  }
  v13 = PnpCtxRegCreateKey(a1, (__int64)v22, Dst, 0, 0x10006u, 0i64, &Handle, &v24);
  if( v13 == -1073741444 )
  {
LABEL_26:
    v11 = -1073741595;
LABEL_13:
    if( Handle )
    {
      ZwClose(Handle);
      if( v11 < 0 && v24 == 1 )
      {
        if( a1 && (v16 = *(_QWORD *)(a1 + 224)) != 0 )
          v17 = *(_QWORD *)(v16 + 8);
        else
          v17 = 0i64;
        RegRtlDeleteTreeInternal((char *)v22, Dst, v17, 0);
      }
    }
    goto LABEL_15;
  }
  if( v13 >= 0 )
  {
    v14 = RegRtlSetValue(Handle, a3, a5 | 0xFFFF0000, v28, a7);
    if( v14 != -1073741444 )
    {
      if( v14 < 0 )
        v11 = v14;
      goto LABEL_13;
    }
    goto LABEL_26;
  }
  Handle = 0i64;
  v11 = v13;
LABEL_15:
  if( v22 )
  {
    ZwClose(v22);
    if( v11 < 0 && v25 == 1 )
    {
      if( a1 && (v18 = *(_QWORD *)(a1 + 224)) != 0 )
        v19 = *(_QWORD *)(v18 + 8);
      else
        v19 = 0i64;
      RegRtlDeleteTreeInternal((char *)v23, pszDest, v19, 0);
    }
  }
  if( v23 )
    ZwClose(v23);
  return(unsigned int)v11;
}

Referenced by:

PnpSetGenericStoreProperty