anchor.diff:                                    #x3779b99e #x6ef3733c #xdde6e678 #xbbcdccf1
                                     #x779b99e3 #xef3733c6 #xde6e678d #xbcdccf1b)))
   
  -(declaim (ftype (function ((unsigned-byte 32)) (unsigned-byte 32)) seed-g)
  -         (inline seed-g))
  -(defun seed-g (x)
  -  (declare (type (unsigned-byte 32) x)
  -           (optimize (speed 3) (space 0) (safety 0) (debug 0)))
  -  (logxor (aref +seed-sbox0+ (logand x 255))
  -          (aref +seed-sbox1+ (logand (ash x -8) 255))
  -          (aref +seed-sbox2+ (logand (ash x -16) 255))
  -          (aref +seed-sbox3+ (logand (ash x -24) 255))))
  -
  -(declaim (ftype (function ((unsigned-byte 32) (unsigned-byte 32) (unsigned-byte 32) (unsigned-byte 32)) (values (unsigned-byte 32) (unsigned-byte 32))) seed-f)
  -         (inline seed-f))
  -(defun seed-f (r0 r1 k0 k1)
  -  (declare (type (unsigned-byte 32) r0 r1 k0 k1)
  -           (optimize (speed 3) (space 0) (safety 0) (debug 0)))
  -  (let* ((a (logxor r0 k0))
  -         (b (seed-g (logxor a r1 k1)))
  -         (c (seed-g (mod32+ b a)))
  -         (s1 (seed-g (mod32+ c b)))
  -         (s0 (mod32+ s1 c)))
  -    (declare (type (unsigned-byte 32) a b c s0 s1))
  -    (values s0 s1)))
  +(defmacro seed-g (x)
  +  `(logxor (aref +seed-sbox0+ (logand ,x 255))
  +           (aref +seed-sbox1+ (logand (ash ,x -8) 255))
  +           (aref +seed-sbox2+ (logand (ash ,x -16) 255))
  +           (aref +seed-sbox3+ (logand (ash ,x -24) 255))))
  +
  +(defmacro seed-f (r0 r1 k0 k1)
  +  `(let* ((a (logxor ,r0 ,k0))
  +          (b (seed-g (logxor a ,r1 ,k1)))
  +          (c (seed-g (mod32+ b a))))
  +     (declare (type (unsigned-byte 32) a b c))
  +     (setf ,r1 (seed-g (mod32+ c b))
  +           ,r0 (mod32+ ,r1 c))))
   
   (defclass seed (cipher 16-byte-block-mixin)
     ((round-keys :accessor round-keys
  
positive.code:     (declare (type (simple-array (unsigned-byte 32) (32)) round-keys)
               (type (unsigned-byte 32) t0 t1))
      (with-words ((l0 l1 r0 r1) ciphertext ciphertext-start :size 4)
        (loop for i from 15 downto 1 do
          (setf t0 r0
                t1 r1)
          (multiple-value-setq (r0 r1)
            (seed-f r0 r1 (aref round-keys (* 2 i)) (aref round-keys (+ (* 2 i) 1))))
          (setf r0 (logxor r0 l0)
                r1 (logxor r1 l1)
                l0 t0
                l1 t1))
        (multiple-value-setq (t0 t1)
          (seed-f r0 r1 (aref round-keys 0) (aref round-keys 1)))
        (setf l0 (logxor l0 t0)
              l1 (logxor l1 t1))
        (store-words plaintext plaintext-start l0 l1 r0 r1))))
  
negative.code:     (declare (type (simple-array (unsigned-byte 32) (32)) round-keys)
               (type (unsigned-byte 32) t0 t1))
      (with-words ((l0 l1 r0 r1) plaintext plaintext-start :size 4)
        (dotimes-unrolled (i 15)
          (setf t0 r0
                t1 r1)
          (seed-f r0 r1 (aref round-keys (* 2 i)) (aref round-keys (+ (* 2 i) 1)))
          (setf r0 (logxor r0 l0)
                r1 (logxor r1 l1)
                l0 t0
                l1 t1))
        (setf t0 r0
              t1 r1)
        (seed-f t0 t1 (aref round-keys 30) (aref round-keys 31))
        (setf l0 (logxor l0 t0)
              l1 (logxor l1 t1))
        (store-words ciphertext ciphertext-start l0 l1 r0 r1))))
  