anchor.diff:    `(disasm-instr (list "add" :src ,src :dest ,dest)
        (with-in-place-mod ,dest ,mod-bits ,r/m-bits
          (let ((src-value ,src))
  -	 (set-zf-on-op (set-sf-on-op (set-of-on-op (set-cf-on-add (incf ,dest src-value)) src-value ,is-word) ,is-word))))))
  +	 (set-zf-on-op (set-sf-on-op (set-pf-on-op (set-of-on-op (set-cf-on-add (incf ,dest src-value)) src-value ,is-word)) ,is-word))))))
   
   (defmacro add-with-carry (src dest is-word &optional mod-bits r/m-bits)
     `(disasm-instr (list "adc" :src ,src :dest ,dest)
        (with-in-place-mod ,dest ,mod-bits ,r/m-bits
          (let ((src-plus-cf (+ ,src (flag :cf))))
  -	 (set-zf-on-op (set-sf-on-op (set-of-on-op (set-cf-on-add (incf ,dest src-plus-cf)) src-plus-cf ,is-word) ,is-word))))))
  +	 (set-zf-on-op (set-sf-on-op (set-pf-on-op (set-of-on-op (set-cf-on-add (incf ,dest src-plus-cf)) src-plus-cf ,is-word)) ,is-word))))))
   
   (defmacro sub-without-borrow (src dest is-word &optional mod-bits r/m-bits)
     `(disasm-instr (list "sub" :src ,src :dest ,dest)
        (with-in-place-mod ,dest ,mod-bits ,r/m-bits
          (let ((src-value ,src))
  -	 (set-zf-on-op (set-sf-on-op (set-of-on-op (set-cf-on-sub (+ (decf ,dest src-value) src-value) src-value) src-value ,is-word) ,is-word))))))
  +	 (set-zf-on-op (set-sf-on-op (set-pf-on-op (set-of-on-op (set-cf-on-sub (+ (decf ,dest src-value) src-value) src-value) src-value ,is-word)) ,is-word))))))
   
   (defmacro sub-with-borrow (src dest is-word &optional mod-bits r/m-bits)
     `(disasm-instr (list "sbb" :src ,src :dest ,dest)
        (with-in-place-mod ,dest ,mod-bits ,r/m-bits
          (let ((src-plus-cf (+ ,src (flag :cf))))
  -	 (set-zf-on-op (set-sf-on-op (set-of-on-op (set-cf-on-sub (+ (decf ,dest src-plus-cf) src-plus-cf) src-plus-cf) src-plus-cf ,is-word) ,is-word))))))
  +	 (set-zf-on-op (set-sf-on-op (set-pf-on-op (set-of-on-op (set-cf-on-sub (+ (decf ,dest src-plus-cf) src-plus-cf) src-plus-cf) src-plus-cf ,is-word)) ,is-word))))))
   
   (defmacro cmp-operation (src dest is-word &optional mod-bits r/m-bits)
     `(disasm-instr (list "cmp" :src ,src :dest ,dest)
        (let ((src-value ,src))
  -       (set-zf-on-op (set-sf-on-op (set-of-on-op (set-cf-on-sub ,dest src-value) src-value ,is-word) ,is-word)))))
  +       (set-zf-on-op (set-sf-on-op (set-pf-on-op (set-of-on-op (set-cf-on-sub ,dest src-value) src-value ,is-word)) ,is-word)))))
   
   (defmacro and-operation (src dest is-word &optional mod-bits r/m-bits)
     `(disasm-instr (list "and" :src ,src :dest ,dest)
        (with-in-place-mod ,dest ,mod-bits ,r/m-bits
  -       (set-zf-on-op (set-sf-on-op (setf ,dest (logand ,src ,dest)) ,is-word))
  +       (set-zf-on-op (set-sf-on-op (set-pf-on-op (setf ,dest (logand ,src ,dest))) ,is-word))
          (setf (flag-p :cf) nil)
          (setf (flag-p :of) nil))))
   
   (defmacro or-operation (src dest is-word &optional mod-bits r/m-bits)
     `(disasm-instr (list "or" :src ,src :dest ,dest)
        (with-in-place-mod ,dest ,mod-bits ,r/m-bits
  -       (set-zf-on-op (set-sf-on-op (setf ,dest (logior ,src ,dest)) ,is-word))
  +       (set-zf-on-op (set-sf-on-op (set-pf-on-op (setf ,dest (logior ,src ,dest))) ,is-word))
          (setf (flag-p :cf) nil)
  -       (setf (flag-p :of) nil)))
  +       (setf (flag-p :of) nil))))
   
   (defmacro xor-operation (src dest is-word &optional mod-bits r/m-bits)
     `(disasm-instr (list "xor" :src ,src :dest ,dest)
        (with-in-place-mod ,dest ,mod-bits ,r/m-bits
  -       (set-zf-on-op (set-sf-on-op (setf ,dest (logxor ,src ,dest)) ,is-word))
  +       (set-zf-on-op (set-sf-on-op (set-pf-on-op (setf ,dest (logxor ,src ,dest))) ,is-word))
          (setf (flag-p :cf) nil)
          (setf (flag-p :of) nil))))
   
  
positive.code: 
  ;;; Opcode parsing
  
  (defun in-paired-byte-block-p (opcode block)
    (= (truncate (/ opcode 2)) (/ block 2)))
  
  (defun in-4-byte-block-p (opcode block)
    (= (truncate (/ opcode 4)) (/ block 4)))
  
  (defun in-8-byte-block-p (opcode block)
    (= (truncate (/ opcode 8)) (/ block 8)))
  
  (defun in-6-byte-block-p (opcode block)
    (and (= (truncate (/ opcode 8)) (/ block 8)) (< (mod opcode 8) 6)))
  
  (defun parse-opcode (opcode)
    "Parse an opcode."
  
negative.code: 
  (defmacro inc (op1 is-word)
    `(disasm-instr (list "inc" :op1 ,op1)
       (set-of-on-op (set-pf-on-op (set-sf-on-op (set-zf-on-op (incf ,op1)) ,is-word)) 1 ,is-word)))
  
  (defmacro dec (op1 is-word)
    `(disasm-instr (list "dec" :op1 ,op1)
       (set-of-on-op (set-pf-on-op (set-sf-on-op (set-zf-on-op (decf ,op1)) ,is-word)) -1 ,is-word)))
  
  ;; Group handling
  
  