SCRAMBLING FUNCTIONS. All of these scrambling functions take a InSeed as parameter, and returns an OutSeed, both of which are 32 bit words. For most of the functions more parameters are needed, as indicated below. Identity: InArgument: none Return the InSeed unchanged. More formally, OutSeed = InSeed XorMask: InArgument: BitMask Make a bitwise XOR on the InSeed. More formally, OutSeed = InSeed XOR BitMask LinearTransform: InArgument: Factor, Offset Make a linear transform of the InSeed (modulo InSeed word size). More formally, OutSeed = (InSeed * Factor + Offset) MODULO MaxWord where MaxWord is 2^32 (== 4294967296). ScrambleBytes: InArgument: ByteScrambleTable[256] For each of the 4 bytes the InSeed word is composed of, replace it with another byte, according to a 1-to-1 mapping. The ByteScrambleTable contains exactly one instance of each of the numbers 0 to 255. More formally, FOR i = 0 TO 3 OutSeed.byte(i) = InSeed.byte(ByteScrambleTable[i]) ENDFOR ScrambleBits: InArgument: BitScrambleTable[32] For each of the 32 bits in the InSeed word, move it to a new position in OutSeed. The BitScrambleTable contains exactly one instance of each of the numbers 0 to 31. More formally, FOR i = 0 TO 31 OutSeed.bit(i) = InSeed.bit(BitScrambleTable[i]) ENDFOR