anchor.diff:                  (load-in-reg :r13 value t)
                   (emit `(sys.lap-x86:gs)
                         `(sys.lap-x86:mov64 (,(+ (- 8 sys.int::+tag-object+)
  -                                               (* sys.int::+stack-group-offset-mv-slots+ 8)
  +                                               ;; fixme. should be +thread-mv-slots-start+
  +                                               (* #+(or)sys.int::+stack-group-offset-mv-slots+ 32 8)
                                                  (* i 8)))
                                             :r13))
                   (emit-gc-info :multiple-values 1)
  
positive.code:                  (t (let ((register (cond ((integerp (first value-locations))
                                             (emit `(sys.lap-x86:gs)
                                                   `(sys.lap-x86:mov64 :r13 (,(+ (- 8 sys.int::+tag-object+)
                                                                                 (* (+ sys.int::+stack-group-offset-mv-slots+
                                                                                       (pop value-locations)) 8)))))
                                             :r13)
                                            (t (pop value-locations)))))
                        (emit `(sys.lap-x86:mov64 (:stack ,(position (cons var :home)
  
negative.code:                    `(sys.lap-x86:mov64 :rax ,(object-ea :r8 :slot -1))
                     `(sys.lap-x86:shr64 :rax ,(- 8 sys.int::+n-fixnum-bits+))
                     `(sys.lap-x86:mov32 :edi ,(+ (- 8 sys.int::+tag-object+)
                                                  ;; fixme. should be +thread-mv-slots-start+
                                                  (* #+(or)sys.int::+stack-group-offset-mv-slots+ 32 8)))
                     `(sys.lap-x86:lea64 :rsi (:r8 ,(+ (- sys.int::+tag-object+) 8)))
                     loop-head
                     `(sys.lap-x86:mov64 :rbx (:rsi))
  