from http://american-fuzzy-lop.googlecode.com/svn/