1. A method for obfuscating functionality of computer software, the method comprising: determining a first set of instructions needed to perform a target operation; determining a second set of instructions for at least one or more additional operations; tuning the second set of instructions to contain instructions, such that, by executing the second set of instructions, the function of the first set of instructions can be performed; creating a code library comprising code fragments from the second set of instructions, the code fragments corresponding to code needed to perform the function of the first set of instructions when executed; and adding instructions to the second set of instructions to modify a stack used by a computer software to execute instructions from the code library such that the stack executes instructions in an order that will perform the function of the target operation.