static void CorruptByte(ref byte b, CorruptMode mode, byte value) { switch (mode) { case CorruptMode.Add: b += value; break; case CorruptMode.Sub: b -= value; break; case CorruptMode.Mul: b *= value; break; case CorruptMode.Div: b /= value; break; case CorruptMode.Mod: b %= value; break; case CorruptMode.OR: b |= value; break; case CorruptMode.XOR: b ^= value; break; case CorruptMode.AND: b &= value; break; case CorruptMode.NOT: b = (byte)~b; break; case CorruptMode.LSH: b <<= value; break; case CorruptMode.RSH: b >>= value; break; case CorruptMode.ROL: b = (byte)((b << value) | (b >> (8 - value))); break; case CorruptMode.ROR: b = (byte)((b >> value) | (b << (8 - value))); break; case CorruptMode.Replace: b = value; break; case CorruptMode.Random: b = (byte)rnd.NextInt32(); break; } }