anchor.diff:  
   (defun poly-from-bytes (bytes)
     "
  -BYTES:   A vector of 16 octets, in big endian order.
  +BYTES:   A vector of at least 16 octets, in big endian order.
  +         Only the 16 first octets are used.
   RETURN:  The poly stored in the bytes.
   "
  -  (check-type bytes (vector * 16))
  -  (loop :for byte :across bytes :do (check-type byte (unsigned-byte 8)))
  +  (check-type bytes vector)
  +  (loop :for i :below 16 :do (check-type (aref bytes i) (unsigned-byte 8)))
     (let ((poly (make-array 4 :element-type '(unsigned-byte 32) :initial-element 0))
           (j -1))
       (dotimes (i 4 poly)
  
positive.code:         (p3 0)
          (n 0)
          (hh1 #x80000000))
      (loop :while (zerop(logand hh1 gg)) :do (ash hh1 -1) (incf n))
      (setf gg (ash gg n))
      (let ((gg0 gg)
            (gg1 0)
            (hh0 #x80000000))
  
negative.code:            (setf tt1 (logxor tt1 gg0)
                   tt2 (logxor tt2 gg1)
                   p1  (logxor p1  hh0)))
           (setf gg1 (logand (logior (ash gg1 -1) (ash gg0 31)) #xffffffff)
                 gg0 (ash gg0 -1)
                 hh0 (ash hh0 -1))))
      (let ((gg0 gg)
            (gg1 0)
  