anchor.diff:    (qdest (make-array 4) :type (simple-array t (*)))
     (zz (make-array 64 :element-type 'sint16) :type sint16-array)
     (ncomp 0 :type fixnum)
  +  (ws (2d-sint16-array
  +       '(0  0  0  0  0  0  0  0)
  +       '(0  0  0  0  0  0  0  0)
  +       '(0  0  0  0  0  0  0  0)
  +       '(0  0  0  0  0  0  0  0)
  +       '(0  0  0  0  0  0  0  0)
  +       '(0  0  0  0  0  0  0  0)
  +       '(0  0  0  0  0  0  0  0)
  +       '(0  0  0  0  0  0  0  0))
  +      :type sint16-2d-array)	; Temporary workspace for IDCT
     (adobe-app14-transform nil))
   
   ;;; Reads an JPEG marker from the stream
  
positive.code: (defmacro dct-limit (n)
    `(aref *idct-limit-array* (logand (plus ,n 255) 511)))
  
  (defvar *ws*)
  (declaim (type sint16-2d-array *ws*))
  
  ;;; Inverse LLM DCT and dequantization
  (defun inverse-llm-dct (block q-table)
    "Performs Inverse LMM DCT and dequantization"
    (let ((tmp0 0) (tmp1 0) (tmp2 0) (tmp3 0)
          (tmp10 0) (tmp11 0) (tmp12 0) (tmp13 0)
  
negative.code:                   (zerop (s16ref block dptr 6))
                    (zerop (s16ref block dptr 7))) do
            (setf dcval (ash (the fixnum (dequantize dptr 0 block q-table)) 1))
            (setf (s16ref ws dptr 0) dcval)
            (setf (s16ref ws dptr 1) dcval)
            (setf (s16ref ws dptr 2) dcval)
            (setf (s16ref ws dptr 3) dcval)
            (setf (s16ref ws dptr 4) dcval)
            (setf (s16ref ws dptr 5) dcval)
            (setf (s16ref ws dptr 6) dcval)
            (setf (s16ref ws dptr 7) dcval)
            else do
            (setf z2 (dequantize dptr 2 block q-table))
            (setf z3 (dequantize dptr 6 block q-table))
  