The answer is - de-obfuscation.
Obfuscation = scrambling of the code.
Depending on the tool/program used it can or cannot be deobfuscated completely. There is a program called ProGuard (correct me if I'm wrong), which scrambles the code and replaces certain things within the code, such as function names, constants, strings, etc. It is the one used in FandC and by extension the one used by other developers as well. The issue with that particular obfuscator is that it can only reverse the code to its original form if you have a special file that it creates when scrambling the code titled mapping.txt. So, if you don't have the mapping.txt, there is no way to deobfuscate the file. Maybe some programs will be able to deobfuscate certain changes. For example, one deobfuscator might reverse the changed string names, another might fix the variables etc. However, the more options the developer had activated/executed on obfuscation, the harder it will be to deobfuscate it with a program. Your best bet is to manually reverse-engineer the code, or more simply put - to read the code, understand what exactly each function does, and rewrite it.