There are actually several (at least 4) very different types of obfuscation, ranging from simply changing method and variable names into "anonymous" names, to mangling program logic, and even a runtime de-obfuscation engine.
Tools to do so range from the free plugins (some programmers even write all their code that way :) ), through high-end, expensive commercial tools. You should know what you're dealing with, depending on that the answer may be different.
In your case, your code looks like its probably Level 2, i.e. with some code path mangling, not just variables. Which means, it is still perfectly valid, with exact same results, just incredibly hard to manually parse. (If it was just variable naming, you could incrementally change the names, depending on context and range, and try to figure out from there).
I dont have a simple solution for you, but the question is - what do you want to with it?
- If you want to recompile it, with small changes - should work okay,
wont be too complicated, unless you really need to understand what is
what.
- If you want to manually review it for flaws - Good luck,
you'll need it.
- On the other hand, you should have no problem
feeding this to an automatic code scanner. The higher-end tools ( :-)
) should have no problem parsing this (but no promises), although trying to verify the
results, or locate the original line of code, may prove challenging. But you'd at least be able to get some visibility into the level of security.