anchor.diff:      (loop for char = (code-char (read-byte in))
         until (char= char +null+) do (write-char char s))))
   
  -;
  -;
  -;
  -;
  +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
   (defun file-pos-rel (stream start-pos offset)
     (file-position stream (+ start-pos offset)))
   
   
  -;
  -;
  +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ; this code can be very simplified
   
   (defun read-header (stream)
     (let ((header (make-elf-header)))
  -	(setf (elf-header-ident header) (read-string stream 16))
  -	(setf (elf-header-type header) (read-half stream))
  -	(setf (elf-header-machine header) (read-half stream))
  -	(setf (elf-header-version header) (read-word stream))
  -	(setf (elf-header-entry header) (read-addr stream))
  -	(setf (elf-header-phoff header) (read-off stream))
  -	(setf (elf-header-shoff header) (read-off stream))
  -	(setf (elf-header-flags header) (read-word stream))
  -	(setf (elf-header-ehsize header) (read-half stream))
  -	(setf (elf-header-phentsize header) (read-half stream))
  -	(setf (elf-header-phnum header) (read-half stream))
  -	(setf (elf-header-shentsize header) (read-half stream))
  -	(setf (elf-header-shnum header) (read-half stream))
  -	(setf (elf-header-shstrndx header) (read-half stream)) header))
  +  (setf (elf-header-ident header) (read-string stream 16))
  +  (setf (elf-header-type header) (read-half stream))
  +  (setf (elf-header-machine header) (read-half stream))
  +  (setf (elf-header-version header) (read-word stream))
  +  (setf (elf-header-entry header) (read-addr stream))
  +  (setf (elf-header-phoff header) (read-off stream))
  +  (setf (elf-header-shoff header) (read-off stream))
  +  (setf (elf-header-flags header) (read-word stream))
  +  (setf (elf-header-ehsize header) (read-half stream))
  +  (setf (elf-header-phentsize header) (read-half stream))
  +  (setf (elf-header-phnum header) (read-half stream))
  +  (setf (elf-header-shentsize header) (read-half stream))
  +  (setf (elf-header-shnum header) (read-half stream))
  +  (setf (elf-header-shstrndx header) (read-half stream)) header))
  +
  +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
   (defun read-section-header (stream)
     (let ((header (make-elf-section)))
  -  	(setf (elf-section-name header) (read-word stream))
  -  	(setf (elf-section-type header) (read-word stream))
  -  	(setf (elf-section-flags header) (read-word stream))
  -  	(setf (elf-section-addr header) (read-addr stream))
  -  	(setf (elf-section-offset header) (read-off stream))
  -  	(setf (elf-section-size header) (read-word stream))
  -  	(setf (elf-section-link header) (read-word stream))
  -  	(setf (elf-section-info header) (read-word stream))
  -  	(setf (elf-section-addralign header) (read-word stream))
  -  	(setf (elf-section-entsize header) (read-word stream)) header))
  +    (setf (elf-section-name header) (read-word stream))
  +    (setf (elf-section-type header) (read-word stream))
  +    (setf (elf-section-flags header) (read-word stream))
  +    (setf (elf-section-addr header) (read-addr stream))
  +    (setf (elf-section-offset header) (read-off stream))
  +    (setf (elf-section-size header) (read-word stream))
  +    (setf (elf-section-link header) (read-word stream))
  +    (setf (elf-section-info header) (read-word stream))
  +    (setf (elf-section-addralign header) (read-word stream))
  +    (setf (elf-section-entsize header) (read-word stream)) header))
  +
  +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
   (defun read-symtab-entry (stream)
  -  (let ((symtab (make-symbol-table)))
  -  	(setf (symbol-table-name symtab) (read-word stream))
  -  	(setf (symbol-table-value symtab) (read-addr stream))
  -  	(setf (symbol-table-size symtab) (read-word stream))
  -  	(setf (symbol-table-info symtab) (read-byte stream))
  -  	(setf (symbol-table-other symtab) (read-byte stream))
  -  	(setf (symbol-table-shndx symtab) (read-half stream)) symtab))
  +  (let ((symtab (make-elf-symbol-table)))
  +    (setf (elf-symbol-table-name symtab) (read-word stream))
  +    (setf (elf-symbol-table-value symtab) (read-addr stream))
  +    (setf (elf-symbol-table-size symtab) (read-word stream))
  +    (setf (elf-symbol-table-info symtab) (read-byte stream))
  +    (setf (elf-symbol-table-other symtab) (read-byte stream))
  +    (setf (elf-symbol-table-shndx symtab) (read-half stream)) symtab))
   
   (defun read-symtable (stream file-offset offset size entsize)
  -  (declare (optimize (speed 0) (safety 3) (debug 3)))
  -	(print entsize)
  -  (print offset)
     (file-pos-rel stream file-offset offset)
     (let* ((sym-count (/ size entsize))
  -  		 (sym-tab (make-array sym-count)))
  -	(loop for i from 0 below sym-count do
  -	  (setf (aref sym-tab i) (read-symtab-entry stream))) sym-tab))
  -
  -;
  -;
  -;
  -;
  +       (sym-tab (make-array sym-count)))
  +  (loop for i from 0 below sym-count do
  +    (setf (aref sym-tab i) (read-symtab-entry stream))) sym-tab))
  +
  +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
   (defun find-section (sections name)
     (find-if #'(lambda (x) (string= (elf-section-name-string x) name)) sections))
   
  -
   (defun read-section-data (stream file-offset sections name)
     (let ((section (find-section sections name)))
  -  	(when section
  -  	  (file-pos-rel stream file-offset (elf-section-offset section))
  -  	  (setf (elf-section-data section) (make-array (elf-section-size section) :element-type 'unsigned-byte))
  -  	  (read-sequence (elf-section-data section) stream))))
  +    (when section
  +      (file-pos-rel stream file-offset (elf-section-offset section))
  +      (setf (elf-section-data section) (make-array (elf-section-size section) :element-type 'unsigned-byte))
  +      (read-sequence (elf-section-data section) stream))))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
  
positive.code: 
  (defun read-word (stream)
    (let* ((l (read-half stream))
  	     (r (read-half stream)))
      (logior (ash r 16) l)))
  
  (defun read-sword (stream) (read-word stream))
  
negative.code: 
  (defconstant +null+ (code-char 0))
  
  (defstruct elf-header ident type machine version entry phoff shoff flags ehsize phentsize phnum shentsize shnum shstrndx)
  (defstruct elf-section name-string name type flags addr offset size link info addralign entsize data)
  (defstruct elf-symbol-table name-string name value size info other shndx)
  (defstruct elf-file header sections symbol-table function-table text-offset data-offset rodata-offset bssdata-offset)
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; Helpers
  
  
  (defun read-string (stream length)
  