public int GetHashCode()

in Microsoft.Shared.Dna.Hash/AffineHash.cs [275:297]


        public int GetHashCode(Guid value)
        {
            unsafe
            {
                /* Crack the layout of the structure. https://referencesource.microsoft.com/#mscorlib/system/guid.cs */
                byte* valuePointer = (byte*)&value;
                ulong a = (ulong)(*(int*)valuePointer);
                ulong b = (ulong)(*(short*)(valuePointer + sizeof(int)));
                ulong c = (ulong)(*(short*)(valuePointer + sizeof(int) + sizeof(short)));
                ulong d = (ulong)(*(valuePointer + sizeof(int) + sizeof(short) + sizeof(short)));
                ulong e = (ulong)(*(valuePointer + sizeof(int) + sizeof(short) + sizeof(short) + sizeof(byte)));
                ulong f = (ulong)(*(valuePointer + sizeof(int) + sizeof(short) + sizeof(short) + sizeof(byte) + sizeof(byte)));
                ulong g = (ulong)(*(valuePointer + sizeof(int) + sizeof(short) + sizeof(short) + sizeof(byte) + sizeof(byte) + sizeof(byte)));
                ulong h = (ulong)(*(valuePointer + sizeof(int) + sizeof(short) + sizeof(short) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte)));
                ulong i = (ulong)(*(valuePointer + sizeof(int) + sizeof(short) + sizeof(short) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte)));
                ulong j = (ulong)(*(valuePointer + sizeof(int) + sizeof(short) + sizeof(short) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte)));
                ulong k = (ulong)(*(valuePointer + sizeof(int) + sizeof(short) + sizeof(short) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte) + sizeof(byte)));
                ulong bc = (b << 16) + c;
                ulong dg = (d << 24) + (e << 16) + (f << 8) + g;
                ulong hk = (h << 24) + (i << 16) + (j << 8) + k;
                return (int)this.ComputeSmallBlock(this.ComputeSmallBlock(this.ComputeSmallBlock(this.ComputeSmallBlock(a) + bc) + dg) + hk);
            }
        }