Getting "something" which might compile is fairly do-able, but the results are only something a compiler could love. It will in no way resemble the source code which was originally compiled.
For example, a for loop and a while loop in C are essentially the same thing, and easily interchangeable in most circumstances. Which you might get is a toss of the coin, or you just might end up with a handful of goto's instead.
If you are deeply interested in this sort of a thing, then try learning reversing. You cannot get the exact code written by the user because the code is modified (keeping the meaning same simultaneously) in order to achieve optimization. However, you can get some very good peeps into what the code does. I've done a bit of it using OllyDbg, which is a freeware. Search on google for "Reversing" + "Tutorials" to learn more. It will take quite a bit of time, but be rest assured, the fruits would be sweet.