This package contains "DisFilter", a disassembling binary x86 code preprocessor that increases compressability by LZ-based compressors or context coders. It was originally developed for my Win32 executable compressor kkrunchy. I've been planning to release this publicly for several years now, but the code was the result of intensive experimentation and looked the part; I didn't want to give it to anyone without at least cleaning it up first. When using LZMA as compression backend, DisFiltered executables are typically about 10% smaller than executables preprocessed with the default LZMA filters (call transform), and about 20% smaller than unpreprocessed files. This result seems to be quite robust among my (admittedly small) test set containing a few large Windows executables/DLLs (among others, photoshop.exe from Photoshop 7.0, thunderbird.exe from Mozilla Thunderbird 2.0.0.23, and xul.dll from Firefox 3.5.5; just a sample of large executables I found on my harddisk). The transformation is completely reversible - in the worst case, the result will compress notably worse than the original data. The algorithm is described at the top of the main source file, "dis.cpp". The code should be fairly straightforward from there; the main source of complexity is the x86 instruction encoding itself. I've also included a small demo application (main.cpp) to show how it is intended to be used. The code was written using Visual C++ and the demo application reads PE files, but nothing about it really is Windows-specific; it should work equally well for Linux or other OSes. The code doesn't handle the newer 3-byte opcodes, and it doesn't understand x64 code. Both of this should be relatively simple to add; I simply had no use for this myself so far. I hereby place this code in the public domain. I'd be happy if other contributors do the same with their changes. I can provide no warranties or other guarantees about this code or files generated by it. I've tried to be careful though :) Feel free to contact me with any questions or suggestions. - Fabian "ryg" Giesen, November 2009 ryg@gmx.net