public static void Main()
byte mask = (byte)~(c + (c << 2) + (c << 4) + (c << 6));
Console.WriteLine(Convert.ToString(mask, 2));
for (byte i = 0; i < 255; i++)
var test = Convert.ToString(c, 2).PadLeft(2, '0');
var t1 = control.Substring(0, 2) == test;
var t2 = control.Substring(2, 2) == test;
var t3 = control.Substring(4, 2) == test;
var t4 = control.Substring(6, 2) == test;
var hasColor = t1 || t2 || t3 || t4;
byte M = (byte)(i ^ mask);
byte T = (byte)(~(M + 85) & 170);
Console.WriteLine($"{C(i)} -> {C(M)} => {C(T)} -> {C(R)} : {R != 0 == hasColor}");
private static string C(byte x)
return Convert.ToString(x, 2).PadLeft(8, '0');