“…One approach is to use a typing discipline to ensure that all control flow paths have the same number of instructions, by ensuring that conditionals have equal sized branches, and prohibiting the use of secret information in loop guards, i.e., all loop guards are constant or only depend on public, nonsecret values [47,48,51]. If the type system rejects a program because it has "uneven" branches, the program can still be transformed, for example by adding suitable "padding" instructions along shorter branches [2,9,10,28], by using "conditional execution" implemented via bit-masking and ternary choice [39] or by using if-conversion [15].…”