1. A computer-implemented method of obfuscating by a common function, the method causing a computing device to perform steps comprising: identifying a set of functions in source code; generating a transformed set of functions by transforming each function of the set of functions to accept a uniform set of arguments and return a uniform type; merging the transformed set of functions into a single recursive function; eliminating references to a stack; and translating recursive function calls to push a virtual stack.