anchor.diff:    (let ((tweak (threefish-tweak cipher)))
       (setf (aref tweak 0) (ub64ref/le tweak-data 0)
             (aref tweak 1) (ub64ref/le tweak-data 8)
  -          (aref tweak 2) (logxor (aref tweak  0) (aref tweak 1)))))
  +          (aref tweak 2) (logxor (aref tweak 0) (aref tweak 1)))))
   
   
   ;;; Implementation for blocks of 256 bits
  
positive.code:              (type (simple-array (unsigned-byte 64) (3)) tweak)
               (type (unsigned-byte 64) k0 k1 k2 k3 k4 k5 k6 k7 k8 t0 t1 t2))
      (with-words ((b0 b1 b2 b3 b4 b5 b6 b7) plaintext plaintext-start :big-endian nil :size 8)
        (setf b1 (mod64+ b1 k1)
              b0 (mod64+ b0 (mod64+ b1 k0))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k3)
              b2 (mod64+ b2 (mod64+ b3 k2))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k5 t0))
              b4 (mod64+ b4 (mod64+ b5 k4))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 k7)
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k6 t1)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k2)
              b0 (mod64+ b0 (mod64+ b1 k1))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k4)
              b2 (mod64+ b2 (mod64+ b3 k3))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k6 t1))
              b4 (mod64+ b4 (mod64+ b5 k5))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k8 1))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k7 t2)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b1 (mod64+ b1 k3)
              b0 (mod64+ b0 (mod64+ b1 k2))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k5)
              b2 (mod64+ b2 (mod64+ b3 k4))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k7 t2))
              b4 (mod64+ b4 (mod64+ b5 k6))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 (mod64+ k0 2))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k8 t0)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k4)
              b0 (mod64+ b0 (mod64+ b1 k3))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k6)
              b2 (mod64+ b2 (mod64+ b3 k5))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k8 t0))
              b4 (mod64+ b4 (mod64+ b5 k7))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k1 3))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k0 t1)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b1 (mod64+ b1 k5)
              b0 (mod64+ b0 (mod64+ b1 k4))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k7)
              b2 (mod64+ b2 (mod64+ b3 k6))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k0 t1))
              b4 (mod64+ b4 (mod64+ b5 k8))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 (mod64+ k2 4))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k1 t2)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k6)
              b0 (mod64+ b0 (mod64+ b1 k5))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k8)
              b2 (mod64+ b2 (mod64+ b3 k7))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k1 t2))
              b4 (mod64+ b4 (mod64+ b5 k0))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k3 5))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k2 t0)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b1 (mod64+ b1 k7)
              b0 (mod64+ b0 (mod64+ b1 k6))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k0)
              b2 (mod64+ b2 (mod64+ b3 k8))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k2 t0))
              b4 (mod64+ b4 (mod64+ b5 k1))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 (mod64+ k4 6))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k3 t1)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k8)
              b0 (mod64+ b0 (mod64+ b1 k7))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k1)
              b2 (mod64+ b2 (mod64+ b3 k0))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k3 t1))
              b4 (mod64+ b4 (mod64+ b5 k2))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k5 7))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k4 t2)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b1 (mod64+ b1 k0)
              b0 (mod64+ b0 (mod64+ b1 k8))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k2)
              b2 (mod64+ b2 (mod64+ b3 k1))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k4 t2))
              b4 (mod64+ b4 (mod64+ b5 k3))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 (mod64+ k6 8))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k5 t0)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k1)
              b0 (mod64+ b0 (mod64+ b1 k0))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k3)
              b2 (mod64+ b2 (mod64+ b3 k2))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k5 t0))
              b4 (mod64+ b4 (mod64+ b5 k4))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k7 9))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k6 t1)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b1 (mod64+ b1 k2)
              b0 (mod64+ b0 (mod64+ b1 k1))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k4)
              b2 (mod64+ b2 (mod64+ b3 k3))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k6 t1))
              b4 (mod64+ b4 (mod64+ b5 k5))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 (mod64+ k8 10))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k7 t2)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k3)
              b0 (mod64+ b0 (mod64+ b1 k2))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k5)
              b2 (mod64+ b2 (mod64+ b3 k4))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k7 t2))
              b4 (mod64+ b4 (mod64+ b5 k6))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k0 11))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k8 t0)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b1 (mod64+ b1 k4)
              b0 (mod64+ b0 (mod64+ b1 k3))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k6)
              b2 (mod64+ b2 (mod64+ b3 k5))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k8 t0))
              b4 (mod64+ b4 (mod64+ b5 k7))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 (mod64+ k1 12))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k0 t1)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k5)
              b0 (mod64+ b0 (mod64+ b1 k4))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k7)
              b2 (mod64+ b2 (mod64+ b3 k6))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k0 t1))
              b4 (mod64+ b4 (mod64+ b5 k8))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k2 13))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k1 t2)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b1 (mod64+ b1 k6)
              b0 (mod64+ b0 (mod64+ b1 k5))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k8)
              b2 (mod64+ b2 (mod64+ b3 k7))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k1 t2))
              b4 (mod64+ b4 (mod64+ b5 k0))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 (mod64+ k3 14))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k2 t0)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k7)
              b0 (mod64+ b0 (mod64+ b1 k6))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k0)
              b2 (mod64+ b2 (mod64+ b3 k8))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k2 t0))
              b4 (mod64+ b4 (mod64+ b5 k1))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k4 15))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k3 t1)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b1 (mod64+ b1 k8)
              b0 (mod64+ b0 (mod64+ b1 k7))
              b1 (logxor (rol64 b1 46) b0))
        (setf b3 (mod64+ b3 k1)
              b2 (mod64+ b2 (mod64+ b3 k0))
              b3 (logxor (rol64 b3 36) b2))
        (setf b5 (mod64+ b5 (mod64+ k3 t1))
              b4 (mod64+ b4 (mod64+ b5 k2))
              b5 (logxor (rol64 b5 19) b4))
        (setf b7 (mod64+ b7 (mod64+ k5 16))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k4 t2)))
              b7 (logxor (rol64 b7 37) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 33) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 27) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 14) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 42) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 17) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 49) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 36) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 39) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 44) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 9) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 54) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 56) b4))
        (setf b1 (mod64+ b1 k0)
              b0 (mod64+ b0 (mod64+ b1 k8))
              b1 (logxor (rol64 b1 39) b0))
        (setf b3 (mod64+ b3 k2)
              b2 (mod64+ b2 (mod64+ b3 k1))
              b3 (logxor (rol64 b3 30) b2))
        (setf b5 (mod64+ b5 (mod64+ k4 t2))
              b4 (mod64+ b4 (mod64+ b5 k3))
              b5 (logxor (rol64 b5 34) b4))
        (setf b7 (mod64+ b7 (mod64+ k6 17))
              b6 (mod64+ b6 (mod64+ b7 (mod64+ k5 t0)))
              b7 (logxor (rol64 b7 24) b6))
        (setf b2 (mod64+ b2 b1)
              b1 (logxor (rol64 b1 13) b2))
        (setf b4 (mod64+ b4 b7)
              b7 (logxor (rol64 b7 50) b4))
        (setf b6 (mod64+ b6 b5)
              b5 (logxor (rol64 b5 10) b6))
        (setf b0 (mod64+ b0 b3)
              b3 (logxor (rol64 b3 17) b0))
        (setf b4 (mod64+ b4 b1)
              b1 (logxor (rol64 b1 25) b4))
        (setf b6 (mod64+ b6 b3)
              b3 (logxor (rol64 b3 29) b6))
        (setf b0 (mod64+ b0 b5)
              b5 (logxor (rol64 b5 39) b0))
        (setf b2 (mod64+ b2 b7)
              b7 (logxor (rol64 b7 43) b2))
        (setf b6 (mod64+ b6 b1)
              b1 (logxor (rol64 b1 8) b6))
        (setf b0 (mod64+ b0 b7)
              b7 (logxor (rol64 b7 35) b0))
        (setf b2 (mod64+ b2 b5)
              b5 (logxor (rol64 b5 56) b2))
        (setf b4 (mod64+ b4 b3)
              b3 (logxor (rol64 b3 22) b4))
  
        (setf b0 (mod64+ b0 k0)
              b1 (mod64+ b1 k1)
              b2 (mod64+ b2 k2)
  
negative.code:             b1 (mod64- b1 (mod64+ k4 t0))
              b2 (mod64- b2 (mod64+ k0 t1))
              b3 (mod64- b3 (mod64+ k1 18)))
        (macrolet ((arx (x0 x1 x2 x3 x4 x5 x6
                         x7 x8 x9 x10 x11 x12 x13)
                     `(setf b3 (ror64 (logxor b3 b0) 32)
                            b0 (mod64- b0 b3)
                            b1 (ror64 (logxor b1 b2) 32)
                            b2 (mod64- b2 b1)
                            b1 (ror64 (logxor b1 b0) 58)
                            b0 (mod64- b0 b1)
                            b3 (ror64 (logxor b3 b2) 22)
                            b2 (mod64- b2 b3)
                            b3 (ror64 (logxor b3 b0) 46)
                            b0 (mod64- b0 b3)
                            b1 (ror64 (logxor b1 b2) 12)
                            b2 (mod64- b2 b1)
                            b1 (ror64 (logxor b1 b0) 25)
                            b0 (mod64- b0 (mod64+ b1 ,x0))
                            b1 (mod64- b1 (mod64+ ,x1 ,x2))
                            b3 (ror64 (logxor b3 b2) 33)
                            b2 (mod64- b2 (mod64+ b3 (mod64+ ,x3 ,x4)))
                            b3 (mod64- b3 (mod64+ ,x5 ,x6))
                            b3 (ror64 (logxor b3 b0) 5)
                            b0 (mod64- b0 b3)
                            b1 (ror64 (logxor b1 b2) 37)
                            b2 (mod64- b2 b1)
                            b1 (ror64 (logxor b1 b0) 23)
                            b0 (mod64- b0 b1)
                            b3 (ror64 (logxor b3 b2) 40)
                            b2 (mod64- b2 b3)
                            b3 (ror64 (logxor b3 b0) 52)
                            b0 (mod64- b0 b3)
                            b1 (ror64 (logxor b1 b2) 57)
                            b2 (mod64- b2 b1)
                            b1 (ror64 (logxor b1 b0) 14)
                            b0 (mod64- b0 (mod64+ b1 ,x7))
                            b1 (mod64- b1 (mod64+ ,x8 ,x9))
                            b3 (ror64 (logxor b3 b2) 16)
                            b2 (mod64- b2 (mod64+ b3 (mod64+ ,x10 ,x11)))
                            b3 (mod64- b3 (mod64+ ,x12 ,x13)))))
          (arx k2 k3 t2 k4 t0 k0 17
               k1 k2 t1 k3 t2 k4 16)
          (arx k0 k1 t0 k2 t1 k3 15
               k4 k0 t2 k1 t0 k2 14)
          (arx k3 k4 t1 k0 t2 k1 13
               k2 k3 t0 k4 t1 k0 12)
          (arx k1 k2 t2 k3 t0 k4 11
               k0 k1 t1 k2 t2 k3 10)
          (arx k4 k0 t0 k1 t1 k2 9
               k3 k4 t2 k0 t0 k1 8)
          (arx k2 k3 t1 k4 t2 k0 7
               k1 k2 t0 k3 t1 k4 6)
          (arx k0 k1 t2 k2 t0 k3 5
               k4 k0 t1 k1 t2 k2 4)
          (arx k3 k4 t0 k0 t1 k1 3
               k2 k3 t2 k4 t0 k0 2)
          (arx k1 k2 t1 k3 t2 k4 1
               k0 k1 t0 k2 t1 k3 0))
        (store-words plaintext plaintext-start b0 b1 b2 b3)
        (values))))
  
  