1. A method of obscuring software code including a plurality of instructions, comprising: determining, by a processor, a number N prior instructions to a current instruction, wherein N is an integer and greater than zero; encoding the current instruction based upon a first function, a second function, and the N prior instructions, determining that there are join points in the N prior instructions or the current instruction; when there are join points, producing mask values for each of prior instructions before the join point, wherein the mask is set based upon common bits in the parallel instructions prior to the join point; and associating the mask with the current instruction; wherein the second function is based upon the N prior instructions, and wherein the first function is based upon the current instruction and an output of the second function.