public static void Use(ref Machine.Context context, object name)
 {
     if (name is string strname)
     {
         context.accumulator = context.variables[strname];
     }
 }
 public static void Print(ref Machine.Context context)
 {
     if (context.accumulator is long || context.accumulator is string)
     {
         context.log += context.accumulator;
     }
 }
        public static void MD5(ref Machine.Context context)
        {
            try
            {
                if (context.accumulator is string accumulator)
                {
                    using (MD5 md5 = System.Security.Cryptography.MD5.Create())
                    {
                        byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(accumulator);
                        byte[] hashBytes  = md5.ComputeHash(inputBytes);

                        // Convert the byte array to hexadecimal string
                        StringBuilder sb = new StringBuilder();
                        for (int i = 0; i < hashBytes.Length; i++)
                        {
                            sb.Append(hashBytes[i].ToString("X2"));
                        }
                        context.accumulator = sb.ToString();
                    }
                }
            }
            catch
            {
                context.error = true;
            }
        }
 public static void Ato1(ref Machine.Context context)
 {
     try
     {
         if (context.accumulator is string accumulator)
         {
             char[] alpha            = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
             long[] hash             = new long[accumulator.Length];
             char[] accumulatorChars = accumulator.ToUpper().ToCharArray();
             for (long i = 0; i < accumulatorChars.Length; i++)
             {
                 long n = 0;
                 for (long j = 0; j < alpha.Length; j++)
                 {
                     if (accumulatorChars[i] == alpha[j])
                     {
                         n = j + 1;
                         break;
                     }
                 }
                 hash[i] = n;
             }
             context.accumulator = hash;
         }
     }
     catch
     {
         context.error = true;
     }
 }
 public static void Input(ref Machine.Context context, object value)
 {
     if (value is long intval)
     {
         context.accumulator = intval;
     }
     else if (value is string strval)
     {
         context.accumulator = strval;
     }
 }
 public static void Upper(ref Machine.Context context)
 {
     try
     {
         if (context.accumulator is string accumulator)
         {
             context.accumulator = accumulator.ToUpper();
         }
     }
     catch
     {
         context.error = true;
     }
 }
 public static void SubStr(ref Machine.Context context, long start, long end)
 {
     try
     {
         if (context.accumulator is string accumulator)
         {
             int length = (int)end - (int)start;
             start--; length++;
             context.accumulator = accumulator.Substring((int)start, length);
         }
     }
     catch
     {
         context.error = true;
     }
 }
 public static void Indexes(ref Machine.Context context)
 {
     try
     {
         if (context.accumulator is string accumulator)
         {
             long[] indexes = new long[accumulator.Length];
             for (long i = 0; i < indexes.Length; i++)
             {
                 indexes[i] = i + 1;
             }
             context.accumulator = indexes;
         }
     }
     catch
     {
         context.error = true;
     }
 }
 public static void Sum(ref Machine.Context context)
 {
     try
     {
         if (context.accumulator is long[] accumulator)
         {
             long sum = 0;
             foreach (long item in accumulator)
             {
                 sum += item;
             }
             context.accumulator = sum;
         }
     }
     catch
     {
         context.error = true;
     }
 }
 public static void Sub(ref Machine.Context context, object argument)
 {
     try
     {
         if (argument is long && context.accumulator is long)
         {
             context.accumulator = (long)context.accumulator - (long)argument;
         }
         else if (argument is string && context.accumulator is long)
         {
             context.accumulator = (long)context.accumulator - (long)context.variables[(string)argument];
         }
         else if (argument is string && context.accumulator is long[] && context.variables[(string)argument] is long)
         {
             long   length      = ((long[])context.accumulator).Length;
             long[] resultArray = new long[length];
             for (long i = 0; i < length; i++)
             {
                 resultArray[i] = ((long[])context.accumulator)[i] - ((long)context.variables[(string)argument]);
             }
             context.accumulator = resultArray;
         }
         else if (argument is string && context.accumulator is long[] && context.variables[(string)argument] is long[])
         {
             long   minLength   = Math.Min(((long[])context.variables[(string)argument]).Length, ((long[])context.accumulator).Length);
             long   maxLength   = Math.Max(((long[])context.variables[(string)argument]).Length, ((long[])context.accumulator).Length);
             long[] resultArray = new long[maxLength];
             for (long i = 0; i < minLength; i++)
             {
                 resultArray[i] = ((long[])context.accumulator)[i] - ((long[])context.variables[(string)argument])[i];
             }
             context.accumulator = resultArray;
         }
     }
     catch
     {
         context.error = true;
     }
 }
 public static void SHA1(ref Machine.Context context)
 {
     try
     {
         if (context.accumulator is string accumulator)
         {
             using (SHA1Managed sha1 = new SHA1Managed())
             {
                 var hash = sha1.ComputeHash(Encoding.UTF8.GetBytes(accumulator));
                 var sb   = new StringBuilder(hash.Length * 2);
                 foreach (byte b in hash)
                 {
                     sb.Append(b.ToString("X2"));
                 }
                 context.accumulator = sb.ToString();
             }
         }
     }
     catch
     {
         context.error = true;
     }
 }