anchor.diff:      (let* ((data-offset (- (* n-word-bytes vector-data-offset)
                                other-pointer-lowtag))
              (block-disp (+ data-offset bytes-to-copy))
  -           (ea-size #+x86 :dword #+x86-64 :qword)
              (immediate-offset (sc-is offset immediate))
              (unroll (if immediate-offset 2 1))
              (loop (gen-label)))
         (flet ((ea-for-buffer (&optional (offset 0))
                  (if immediate-offset
  -                   (make-ea ea-size :base buffer
  -                            :index block-index
  -                            :scale n-word-bytes
  -                            :disp (+ block-disp offset))
  -                   (make-ea ea-size :base buffer
  -                            :index buffer-index :disp data-offset)))
  +                   (ea (+ block-disp offset) buffer block-index n-word-bytes)
  +                   (ea data-offset buffer buffer-index)))
                (ea-for-block (&optional (offset 0))
  -               (make-ea ea-size :base block
  -                        :index block-index
  -                        :scale n-word-bytes
  -                        :disp (+ block-disp offset)))
  +               (ea (+ block-disp offset) block block-index n-word-bytes))
                (handle-endianness (x)
                  (when big-endian-p
                    (inst bswap x)
  
positive.code:         #:sb-vm)   ; for primtype names, SCs, constants
    (:shadow #:ea) ; in case SB-VM exports it
    (:import-from #:sb-vm
                  #+x86-64 #:reg-in-size ; soon to disappear, don't use
                  #:make-ea
                  #:positive-fixnum #:unsigned-num
                  #:descriptor-reg #:unsigned-reg #:double-reg #:immediate
                  #:simple-array-unsigned-byte-8
  
negative.code:               unsigned-num)
    (:temporary (:sc double-reg) x0 x1)
    (:generator 1000
      (flet ((buffer-mem (base offset)
               (let ((disp (- (* n-word-bytes vector-data-offset)
                              other-pointer-lowtag)))
                 (ea disp base offset)))
             (round-key (i)
               (let ((disp (+ (- (* n-word-bytes vector-data-offset)
                                 other-pointer-lowtag)
                              (* 16 i))))
                 (ea disp round-keys))))
        (let ((last-round (gen-label)))
          (inst movdqu x0 (buffer-mem plaintext plaintext-start))
          (inst movdqu x1 (round-key 0))
          (inst pxor x0 x1)
          (inst movdqu x1 (round-key 1))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 2))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 3))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 4))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 5))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 6))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 7))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 8))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 9))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 10))
          (inst cmp n-rounds 10)
          (inst jmp :z last-round)
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 11))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 12))
          (inst cmp n-rounds 12)
          (inst jmp :z last-round)
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 13))
          (inst aesenc x0 x1)
          (inst movdqu x1 (round-key 14))
          (emit-label last-round)
          (inst aesenclast x0 x1)
          (inst movdqu (buffer-mem ciphertext ciphertext-start) x0)))))
  
  #+x86-64
  (define-vop (aes-ni-decrypt)
  