1. A method of obfuscating code, the method comprising: identifying a Boolean statement in a conditional statement in a computer program, wherein when executed the Boolean statement evaluates to a Boolean output value in response to one or more input values; creating a function that when executed evaluates to the Boolean output value in response to the one or more input values; extracting a subset of intructions from a path associated with the conditional statement; removing the subset of instructions from the path and inserting the subset of instructions in the function; and replacing the Boolean statement with a call to the function, the function called using a pointer obtained from an array of pointers, wherein an index in the array identifying the pointer is dynamically calculated during execution of the computer program.