anchor.diff:                                              plaintext-start plaintext-end
                                               ciphertext-start handle-final-block)
                   (declare (type simple-octet-vector plaintext ciphertext))
  +                (declare (type index plaintext-start plaintext-end ciphertext-start))
                   (declare (ignorable handle-final-block))
                   (let ,block-length-binding
                     (loop with iv of-type (simple-octet-vector ,(if (constantp `,block-length-expr)
                                                                     `,block-length-expr
                                                                     '*)) = (iv mode)
  -                     with offset = plaintext-start
  +                     with offset of-type index = plaintext-start
                        with encrypt-function of-type function = (encrypt-function cipher)
                        while (<= offset (- plaintext-end ,block-length-expr))
                        do (xor-block ,block-length-expr iv plaintext offset
  
positive.code:                                             plaintext-start plaintext-end
                                              ciphertext-start handle-final-block)
                  (declare (type simple-octet-vector plaintext ciphertext))
                  (declare (ignorable handle-final-block))
                  (let ,block-length-binding
                    (let* ((buffer (buffer mode))
  
negative.code:                                             ciphertext-start ciphertext-end
                                              plaintext-start handle-final-block)
                  (declare (type simple-octet-vector plaintext ciphertext))
                  (declare (type index ciphertext-start ciphertext-end plaintext-start))
                  (declare (ignorable handle-final-block))
                  (let ,block-length-binding
                    (loop with iv of-type (simple-octet-vector ,(if (constantp `,block-length-expr)
  