              [:jnz-value _] :cpy-value
              [:cpy-reg _]   :jnz-x-reg
              [:cpy-value _] :jnz-value)
-           cmds2 (assoc cmds idx (sp/setval [:cmd] after before))]
+           cmds2 (assoc cmds idx (sp/setval [:cmd] after-instruction before))]
         [cmds2 (inc ip) regs]))))
 
 (s/fdef maybe-deref

      [cmds (inc ip) regs]
      (let
          [before (nth cmds idx)
           after
           (match [(:cmd before)(:y before)]
             [:inc nil] :dec
             [_    nil] :inc

  (if-let [[_ x y] (re-find (re-matcher #"^jnz (-?\d+) (-?\d+)$" cmd))]
    {:cmd :jnz-value :x (parse-int x) :y (parse-int y)}))

;; added in 2nd puzzle
(defn parse-jnz-value-2
  [cmd]
  (if-let [[_ x y] (re-find (re-matcher #"^jnz (-?\d+) ([a-z]+)$" cmd))]
