The Interactive Decompiler
http://idc.sourceforge.net/wiki/index.html
This is an interactive, extensible assembly language decompiler written in Python. The interactivity gives it at once a potential tediousness to use, but also great flexibility so that the user can apply judgement which might be difficult to encode into a set of totally automatic rules or transformations.
As of August 2007, the code is proof of concept only, and is not suitable for real-world use.
At present, only the x86 platform is supported, C is the only output language, and the decompiler accepts only AT&T syntax assembly language (e.g. as generated by
GNU compiler tools for x86 platforms). The author states that other machines etc could be readily added.
There are some limitations of the data flow analysis, particularly the fact that at present, data flow analysis is limited to registers (which makes the analyses much easier). Presumably, this could also be extended.
Transformations can be selected from a popup menu, clicking on elements of the current version of the text program or its control flow graph.