private static Variável GenerateVariável(ulong seed, ref ulong insideTry, ref ulong elementsAdded, ref byte[] X, ref byte[] Y)
        {
            Variável variável = new Variável();

            byte[] indexSeed = BitConverter.GetBytes(seed + insideTry + elementsAdded);
            Array.Reverse(indexSeed);

            int   Index = (int)(Hash(indexSeed) % 32);
            ulong X_Y   = ((ulong)Index + insideTry) % 2;

            if (X_Y == 0)
            {
                variável.Index = Index;
                variável.Value = X[Index];
                variável.X_Y   = 'X';
            }
            else  // X_Y == 1
            {
                variável.Index = Index;
                variável.Value = Y[Index];
                variável.X_Y   = 'Y';
            }

            elementsAdded++;
            return(variável);
        }
        private static Variável GetVariável(ref byte[] x, ref byte[] y, char x_y, int index, bool NOT = false)
        {
            Variável v = new Variável();

            if (x_y == 'X')
            {
                if (!NOT)
                {
                    v.Value = x[index];
                }
                else
                {
                    v.Value = (byte)((~x[index]) & 255);
                }
            }
            else // 'Y'
            {
                if (!NOT)
                {
                    v.Value = y[index];
                }
                else
                {
                    v.Value = (byte)((~y[index]) & 255);
                }
            }

            v.X_Y   = x_y;
            v.Index = index;
            return(v);
        }
        private static string VariáveltoExpression(Variável v)
        {
            string ret = v.X_Y + "[" + v.Index + "]";

            return(ret);
        }