   (if
    (empty? prevs)
    (conj prevs cur)
-   (let [[head & tail] prevs
+   (let [head (first prevs)
+         tail (rest prevs)
          [prev-lbl prev-succ] head]
-     (into [cur [prev-lbl (remove #(= (cur 0) %1) prev-succ)]] tail))))
+     (into tail [[prev-lbl (remove #(= (cur 0) %1) prev-succ)] cur]))))
 
 (defn show-jumps
   [jumps]

    (completing
     (fn
       [stmts {lbl :label :as obj}]
       (if (zero? (.getIndex lbl))
         (let [address (.getAddress lbl)
               instruction (.getInstruction program address)
               instruction-str (.getInstructionString program address instruction)]
           (conj stmts [instruction-str [obj]]))
         (conj (rest stmts) (conj (first stmts) obj)))))
    [])))

(defn export-abstract-state
  [state]

  (->>
   stmt-map
   (into (sorted-map))
   (reduce remove-right-after (list))
   reverse
   (transduce
    (map
