Does ProGuard perform flow obfuscation?
Not explicitly. Control flow obfuscation injects additional branches into the bytecode, in an attempt to fool decompilers. ProGuard does not do this, in order to avoid any negative effects on performance and size. However, the optimization step often already restructures the code to the point where most decompilers get confused.