I'd suggest http://www.reversed-java.com/fernflower/
Its online only, but gives the most complete output
You'll need to deobfuscate as the method names are all conflicting and many are invalid. I have a nearly working one, but its broken because it doesn't yet deal with preserving the names of overridden methods. I'd not stuck a link to it on my blog yet because of this issue. http://code.google.com/p/adqmisc/sou.../trunk/jrename
The idea is - deobfuscate, decompile, then load into eclipse as a project and use its code refactoring tools to rename things as you figure out what is doing what.