CmOpenDeviceInterfaceRegKey

NTSTATUS __stdcall CmOpenDeviceInterfaceRegKey(
        HPNPCTX *hPnpCtx,
        const WCHAR *DeviceInterfaceName,
        INT64 CmKeyTypeFlags,
        UINT64 HardwareProfileId,
        INT64 DesiredAccess,
        INT64 Create,
        VOID **DeviceInterfaceKey,
        UINT64 *Disposition){
  unsigned int v9; 
  __int64(__fastcall *v11)(HPNPCTX *, const WCHAR *, __int64); 
  int v12; 
  NTSTATUS v13; 
  NTSTATUS v14; 
  int v16; 
  int v17; 
  int v18; 
  UINT64 v19; 
  _QWORD v20[12]; 

  v9 = CmKeyTypeFlags;
  memset(v20, 0i64, 0x58u);
  v11 = (__int64(__fastcall *)(HPNPCTX *, const WCHAR *, __int64))*((_QWORD *)hPnpCtx + 63);
  LODWORD(v20[3]) = DesiredAccess;
  v20[2] = v9;
  BYTE4(v20[3]) = Create;
  v20[4] = DeviceInterfaceKey;
  if( v11 )
  {
    v12 = v11(hPnpCtx, DeviceInterfaceName, 3i64);
    if( v12 == -1073741822 )
    {
      v11 = 0i64;
    }
    else
    {
      if( v12 == -1073741536 )
      {
LABEL_12:
        v14 = v20[0];
        goto LABEL_5;
      }
      if( v12 )
        return -1073741595;
    }
  }
  LODWORD(v19) = v20[3];
  v13 = CmOpenDeviceInterfaceRegKeyWorker(
          hPnpCtx,
          (WCHAR *)DeviceInterfaceName,
          v20[2],
          HIDWORD(v20[2]),
          v19,
          BYTE4(v20[3]),
          (VOID **)v20[4],
          &v20[5]);
  v14 = v13;
  if( v11 )
  {
    LODWORD(v20[0]) = v13;
    v16 = v11(hPnpCtx, DeviceInterfaceName, 3i64);
    v17 = v16;
    if( v16 != -1073741822 )
    {
      if( v16 != -1073741536 )
      {
        v18 = v14;
        if( v17 )
          v18 = -1073741595;
        v14 = v18;
        goto LABEL_5;
      }
      goto LABEL_12;
    }
  }
LABEL_5:
  if( v14 >= 0 && Disposition )
    *(_DWORD *)Disposition = v20[5];
  return v14;
}

Referenced by:

CmCreateDeviceInterfaceWorker
CmDeleteDeviceInterfaceMappedPropertyFromRegValue
CmDeleteDeviceInterfaceRegKeyWorker
CmGetDeviceInterfaceMappedPropertyFromRegValue
CmOpenDeviceInterfaceRegKeyWorker
CmSetDeviceInterfaceMappedPropertyFromRegValue
IoGetDeviceInterfaceAlias
IoOpenDeviceInterfaceRegistryKey
IopGetDeviceInterfaces
PiCMOpenDeviceInterfaceKey
PiDevCfgConfigureDeviceInterface
PnpDispatchDeviceInterface