     (completing
      (fn
        [stmts {lbl :label :as obj}]
-       (if (zero? (.getIndex lbl))
+       (if (or (zero? (.getIndex lbl)) (empty? stmts))
          (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)))))
-    [])))
+         (conj (rest stmts) (update (first stmts) 1 #(conj %1 obj))))))
+    (list))
+    reverse))
 
 (defn export-abstract-state
   [state]

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

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

(defn show-jumps
  [jumps]
