anchor.diff:             (setf tt0 (logxor tt0 gg0)
                    tt1 (logxor tt1 gg1)
                    p0  (logxor p0  hh0)))
  -         (setf gg1 (logior (ash gg1 -1) (ash gg0 31))
  -               gg0 (ash gg1 -1)
  +         (setf gg1 (logand (logior (ash gg1 -1) (ash gg0 31)) #xffffffff)
  +               gg0 (ash gg0 -1)
                  hh0 (ash hh0 -1))))
       (let ((gg0 gg)
             (gg1 0)
  
positive.code:            (setf tt2 (logxor tt2 gg0)
                   tt3 (logxor tt3 gg1)
                   p2  (logxor p2  hh0)))
           (setf gg1 (logior (ash gg1 -1) (ash gg0 31))
                 gg0 (ash gg1 -1)
                 hh0 (ash hh0 -1))))
      (let ((gg0 gg)
            (hh0 #x80000000))
        (loop :while (plusp gg0) :do
           (when (plusp (logand hh0 tt2))
             (setf tt3 (logxor tt3 gg0)
                   p3  (logxor p3  hh0)))
           (setf gg0 (ash gg1 -1)
                 hh0 (ash hh0 -1))))
      ;; Renormalize the quotient
      (incf n)
      (values tt3 n p0 p1 p2 p3)))
  
  
  (defun divide32 (poly gg)
  
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)
  