anchor.diff:    (mezzano.lap.arm64:add :x10 :x10 8)
     (mezzano.lap.arm64:add :x11 :x11 1)
     (mezzano.lap.arm64:subs :xzr :x11 :x9)
  -  (mezzano.lap.arm64:b.ne unpack-loop)
  -  done
  +  (mezzano.lap.arm64:b.ne UNPACK-LOOP)
  +  DONE
     (mezzano.lap.arm64:add :sp :x29 0)
     (:gc :frame :multiple-values 0)
     (mezzano.lap.arm64:ldp :x29 :x30 (:post :sp 16))
     (:gc :no-frame :layout #* :multiple-values 0)
     (mezzano.lap.arm64:ret)
     ;; Special-case 0 values as it requires NIL in X0.
  -  zero-values
  +  ZERO-VALUES
     (:gc :frame)
     (mezzano.lap.arm64:orr :x0 :x26 :xzr)
     (mezzano.lap.arm64:orr :x5 :xzr :xzr)
  -  (mezzano.lap.arm64:b done)
  +  (mezzano.lap.arm64:b DONE)
     (:gc :frame)
  -  type-error
  +  TYPE-ERROR
     (mezzano.lap.arm64:ldr :x1 (:constant simple-vector))
     (mezzano.lap.arm64:movz :x5 #.(ash 2 sys.int::+n-fixnum-bits+)) ; fixnum 2
     (mezzano.lap.arm64:named-call sys.int::raise-type-error)
     (mezzano.lap.arm64:hlt 0)
  -  too-many-values
  +  TOO-MANY-VALUES
     (mezzano.lap.arm64:ldr :x0 (:constant "Too many values in simple-vector ~S."))
     (mezzano.lap.arm64:orr :x1 :xzr :x6)
     (mezzano.lap.arm64:movz :x5 #.(ash 2 sys.int::+n-fixnum-bits+)) ; fixnum 2
     (mezzano.lap.arm64:named-call error)
     (mezzano.lap.arm64:hlt 0)
  -  bad-arguments
  -  (mezzano.lap.arm64:named-call sys.int::raise-invalid-argument-error)
  -  (mezzano.lap.arm64:hlt 0))
  +  BAD-ARGUMENTS
  +  (:gc :no-frame :incoming-arguments :rcx)
  +  (mezzano.lap.arm64:adr :x6 (+ (- ENTRY-POINT 16) #.sys.int::+tag-object+))
  +  (mezzano.lap.arm64:ldr :x7 (:function sys.int::raise-invalid-argument-error))
  +  (mezzano.lap.arm64:ldr :x7 (:object :x7 #.sys.int::+fref-function+))
  +  (mezzano.lap.arm64:ldr :x9 (:object :x7 #.sys.int::+function-entry-point+))
  +  (mezzano.lap.arm64:br :x9))
   
   (sys.int::define-lap-function %apply ()
     (:gc :no-frame :incoming-arguments :rcx :layout #*)
  
positive.code: 
  (sys.int::define-lap-function sys.int::values-simple-vector ((simple-vector))
    "Returns the elements of SIMPLE-VECTOR as multiple values."
    (:gc :no-frame :incoming-arguments :rcx :layout #*)
    (mezzano.lap.arm64:stp :x29 :x30 (:pre :sp -16))
    (:gc :no-frame :incoming-arguments :rcx :layout #*00)
    (mezzano.lap.arm64:add :x29 :sp :xzr)
    (:gc :frame)
    ;; Check arg count.
    (mezzano.lap.arm64:subs :xzr :x5 #.(ash 1 sys.int::+n-fixnum-bits+)) ; fixnum 1
    (mezzano.lap.arm64:b.ne bad-arguments)
    ;; Check type.
    (mezzano.lap.arm64:and :x9 :x0 #b1111)
    (mezzano.lap.arm64:subs :xzr :x9 #.sys.int::+tag-object+)
    (mezzano.lap.arm64:b.ne type-error)
    (mezzano.lap.arm64:ldr :x9 (:object :x0 -1))
    ;; Simple vector object tag is zero.
    (mezzano.lap.arm64:ands :xzr :x9 #.(ash (1- (ash 1 sys.int::+object-type-size+))
                                            sys.int::+object-type-shift+))
    (mezzano.lap.arm64:b.ne type-error)
    ;; Get number of values.
    (mezzano.lap.arm64:adds :x9 :xzr :x9 :lsr #.sys.int::+object-data-shift+)
    (mezzano.lap.arm64:b.eq zero-values)
    (mezzano.lap.arm64:subs :xzr :x9 #.(+ mezzano.supervisor::+thread-mv-slots-size+
                                          5))
    (mezzano.lap.arm64:b.cs too-many-values)
    ;; Set up. X6(RBX) = vector, X5(RCX) = number of values loaded so far, X9(RAX) = total number of values.
    (mezzano.lap.arm64:orr :x6 :xzr :x0)
    (mezzano.lap.arm64:orr :x5 :xzr :xzr)
  
negative.code:                                     (* 5 8))) ; Current index.
    (mezzano.lap.arm64:movz :x11 5)
    (:gc :frame :multiple-values 0)
    UNPACK-LOOP
    (mezzano.lap.arm64:ldr :x7 (:x6 :x10))
    (mezzano.lap.arm64:str :x7 (:x12))
    (:gc :frame :multiple-values 1)
  