using System;
using System.Linq;

namespace genguid
{
    class Program
    {
        public static void Main(string[] argv)
        {
            var guid = argv.Length > 0 ? Guid.Parse(argv[0]): Guid.NewGuid();
            var array = guid.ToByteArray();
            var str =  BitConverter.ToString(array).Replace("-", "").ToLower();

            var array1 = new byte[array.Length/2];
            var array2 = new byte[array.Length/2];
            Array.Copy(array, 0, array1, 0, array.Length/2);
            Array.Copy(array, array.Length/2, array2, 0, array.Length/2);
            array1 = array1.Reverse().ToArray();
            array2 = array2.Reverse().ToArray();

            string str1 = BitConverter.ToString(array1).Replace("-", "").ToLower();
            string str2 = BitConverter.ToString(array2).Replace("-", "").ToLower();
            string str1x = str.Substring(0, str.Length/2);
            string str2x = str.Substring(str.Length/2);

            Console.WriteLine(guid.ToString("B"));
            Console.WriteLine(guid.ToString("X"));
            Console.WriteLine(str);
            Console.WriteLine("lsb: {{0x{0}, 0x{1}}}", str1, str2);
            Console.WriteLine("msb: {{0x{0}, 0x{1}}}", str1x, str2x);
        }
    }
}