anchor.diff:  					(length (lambda-information-optional-args lambda))))
   	     (rest-loop-head (gensym "REST-LOOP-HEAD"))
   	     (rest-loop-test (gensym "REST-LOOP-TEST"))
  -	     (pop-args-over (gensym "POP-ARGS-OVER"))
                (dx-rest (lexical-variable-dynamic-extent (lambda-information-rest-arg lambda))))
   	 ;; Assemble the rest list into r13.
   	 (nconc
  
positive.code: 	   `(sys.lap-x86:mov64 :r11 (:lsp 48))
  	   `(sys.lap-x86:mov64 :r12 (:lsp 56))
  	   ;; Pop all the arguments off and the two scrach slots.
  	   `(sys.lap-x86:add64 :lsp ,(* 8 8))
  	   `(sys.lap-x86:mov64 :rax (:cfp -24))
  	   `(sys.lap-x86:sub64 :rax ,(fixnum-to-raw 5))
  	   `(sys.lap-x86:cmp64 :rax 0)
  	   `(sys.lap-x86:jl ,pop-args-over)
  	   `(sys.lap-x86:add64 :lsp :rax)
  	   pop-args-over))))
       ;; No arguments on the stack at this point.
       (list `(sys.lap-x86:mov64 :lfp :lsp))
       ;; Flush stack slots.
  
negative.code:                        `(sys.lap-x86:mov64 (:rbx ,(+ 1 (* (- env-size (length (first *environment*))) 8)))
                                             :r13))
                   (push rest-arg (first *environment*)))))))
      (let* ((code-tag (let ((*for-value* :multiple))
                         (cg-form `(progn ,@(lambda-information-body lambda)))))
             (req-count (length (lambda-information-required-args lambda)))
             (opt-count (length (lambda-information-optional-args lambda)))
             (arg-count (+ req-count opt-count))
             (stack-arg-count (max 0 (- arg-count 5))))
        (when code-tag
          (unless (eql code-tag :multiple)
            (load-in-r8 code-tag t)
            (emit `(sys.lap-x86:mov32 :ecx 1)))
          (cond ((and (plusp stack-arg-count)
                      (zerop opt-count)
                      (not (lambda-information-rest-arg lambda)))
                 ;; More than 5 required arguments, no &OPTIONAL or &REST.
                 (emit `(sys.lap-x86:lea64 :rbx (:lfp ,(* stack-arg-count 8)))))
                ((or (and (plusp stack-arg-count)
                          (plusp opt-count))
                     (lambda-information-rest-arg lambda))
                 ;; Many &OPTIONAL args or a &REST arg supplied. Do the full-fat pop.
                 (emit `(sys.lap-x86:mov64 :rax (:cfp -24))
                       `(sys.lap-x86:xor32 :edx :edx)
                       `(sys.lap-x86:sub64 :rax ,(* 8 5))
                       `(sys.lap-x86:cmov64ng :rax :rdx)
                       `(sys.lap-x86:lea64 :rbx (:lfp :rax))))
                (t ;; 5 or fewer arguments, no &REST.
                 (emit `(sys.lap-x86:mov64 :rbx :lfp))))
          (emit `(sys.lap-x86:mov64 :lfp (:cfp -8)))
          (emit `(sys.lap-x86:leave)
                `(sys.lap-x86:ret))))
      (sys.int::assemble-lap (nconc
  			    (generate-entry-code lambda)
  			    (nreverse *code-accum*)
  