anchor.diff:              ;; Argument supplied, stash wherever.
               (cond (var-ofs
                      ;; Local var.
  -                   (emit `(sys.lap-x86:mov64 (:stack ,var-ofs) ,(pop arg-registers))))
  +                   (if arg-registers
  +                       (emit `(sys.lap-x86:mov64 (:stack ,var-ofs) ,(pop arg-registers)))
  +                       (emit `(sys.lap-x86:mov64 :r8 (:lfp ,(* (- current-arg-index 5) 8)))
  +                             `(sys.lap-x86:mov64 (:stack ,var-ofs) :r8))))
                     (t ;; Non-local var. RBX will still be valid.
                      ;; +1 to align on the data. Backlink is skipped by magic.
                      (setf var-ofs (length (first *environment*)))
  -                   (emit `(sys.lap-x86:mov64 (:rbx ,(+ 1 (* (- env-size var-ofs) 8)))
  -                                             ,(pop arg-registers)))
  +                   (if arg-registers
  +                       (emit `(sys.lap-x86:mov64 (:rbx ,(+ 1 (* (- env-size var-ofs) 8)))
  +                                                 ,(pop arg-registers)))
  +                       (emit `(sys.lap-x86:mov64 :r8 (:lfp ,(* (- current-arg-index 5) 8)))
  +                             `(sys.lap-x86:mov64 (:rbx ,(+ 1 (* (- env-size var-ofs) 8)))
  +                                                 :r8)))
                      (push (first arg) (first *environment*))))
               (when (third arg)
                 (cond (sup-ofs
  
positive.code:     (when (or (lambda-information-enable-keys lambda)
                (lambda-information-key-args lambda))
        (error "&KEY arguments did not get lowered!"))
      (when (and (> (+ (length (lambda-information-required-args lambda))
                       (length (lambda-information-optional-args lambda)))
                    5)
                 (not (zerop (length (lambda-information-optional-args lambda)))))
        (format t "TODO: more than 5 required & optional arguments.~%")
        (return-from codegen-lambda (sys.int::assemble-lap `((sys.lap-x86:mov64 :r13 (:constant error))
  							   (sys.lap-x86:mov32 :ecx ,(fixnum-to-raw 1))
  							   (sys.lap-x86:mov64 :r8 (:constant "TODO: more than 5 required & optional arguments."))
  							   (sys.lap-x86:call (:symbol-function :r13))
  							   (sys.lap-x86:ud2))
                                                           *current-lambda-name*)))
      ;; Save environment pointer.
      (when *environment*
        (let ((slot (find-stack-slot)))
  
negative.code:                        (emit `(sys.lap-x86:mov64 (:rbx ,(+ 1 (* (- env-size sup-ofs) 8)))
                                                 ,t))))))
              (emit end-label)
              (incf current-arg-index)))))
      (let* ((code-tag (let ((*for-value* :multiple))
                         (cg-form `(progn ,@(lambda-information-body lambda)))))
             (req-count (length (lambda-information-required-args lambda)))
  