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);
}
}