CmOpenCommonClassRegKey

NTSTATUS __stdcall CmOpenCommonClassRegKey(
        HPNPCTX *hPnpCtx,
        WCHAR *ClassGuid,
        _CM_KEY_TYPE CmKeyTypeFlags,
        UINT64 HardwareProfileId,
        UINT64 DesiredAccess,
        UINT8 Create,
        VOID **ClassKey,
        UINT64 *Disposition){
  unsigned int v10; 
  unsigned int v11; 
  __int64(__fastcall *v12)(HPNPCTX *, WCHAR *, _QWORD, __int64, int, _QWORD *); 
  int v13; 
  NTSTATUS v14; 
  NTSTATUS v15; 
  int v17; 
  UINT64 v18; 
  _QWORD v20[12]; 

  v10 = HardwareProfileId;
  memset(v20, 0i64, 0x58u);
  if( (unsigned __int8)CmKeyTypeFlags == CM_KEY_TYPE_DEVICE_INSTALLER_CLASS )
  {
    v11 = 2;
  }
  else
  {
    if( (unsigned __int8)CmKeyTypeFlags != CM_KEY_TYPE_DEVICE_INTERFACE_CLASS )
    {
      v15 = -1073741811;
      goto LABEL_7;
    }
    v11 = 4;
  }
  v12 = (__int64(__fastcall *)(HPNPCTX *, WCHAR *, _QWORD, __int64, int, _QWORD *))*((_QWORD *)hPnpCtx + 63);
  LODWORD(v20[3]) = DesiredAccess;
  v20[4] = ClassKey;
  BYTE4(v20[3]) = Create;
  v20[2] = __PAIR64__(v10, CmKeyTypeFlags);
  if( v12 )
  {
    v13 = v12(hPnpCtx, ClassGuid, v11, 11i64, 1, v20);
    if( v13 == -1073741822 )
    {
      v12 = 0i64;
    }
    else
    {
      if( v13 == -1073741536 )
        goto LABEL_17;
      if( v13 )
        return -1073741595;
    }
  }
  LODWORD(v18) = v20[3];
  v14 = CmOpenCommonClassRegKeyWorker(
          hPnpCtx,
          ClassGuid,
          v20[2],
          HIDWORD(v20[2]),
          v18,
          BYTE4(v20[3]),
          (VOID **)v20[4],
          &v20[5]);
  v15 = v14;
  if( !v12 )
    goto LABEL_7;
  LODWORD(v20[0]) = v14;
  v17 = v12(hPnpCtx, ClassGuid, v11, 11i64, 2, v20);
  if( v17 == -1073741822 )
    goto LABEL_7;
  if( v17 == -1073741536 )
  {
LABEL_17:
    v15 = v20[0];
    goto LABEL_7;
  }
  if( v17 )
    return -1073741595;
LABEL_7:
  if( v15 >= 0 && Disposition )
    *(_DWORD *)Disposition = v20[5];
  return v15;
}

Referenced by:

CmOpenInstallerClassRegKey
CmOpenInterfaceClassRegKey