Described is a method that identifies a predicate expression representing
conditions in predicated assembly language instructions that determine a
direction of a conditional branch instruction. The predicate expression
is employed to enable a transformation to be made that causes the
conditional branch instruction to trigger, or execute, when an opposite
condition is true. A method is directed to producing a binary-level
conditional branch reversal within a binary program on a computer
architecture that supports a predicated execution. The method includes
obtaining a predicate expression representing a condition that influences
a direction of program flow of the binary-level conditional branch to be
reversed, determining a binary-level transformation that causes the
binary-level conditional branch to be triggered when an opposite
condition is true, and modifying the binary-level conditional branch with
the determined binary-level transformation, wherein the binary-level
conditional branch is reversed.