public static U64 XXH64_digest_endian()

in csharp/src/XxHash.cs [1105:1161]


		public static U64 XXH64_digest_endian(XXH64_state_t state/*, XXH_endianess endian*/)
		{
			BYTE* p = (BYTE*)state.mem64;
			BYTE* bEnd = p + state.memsize;

			U64 h64;

			if (state.total_len >= 32)
			{
				U64 v1 = state.v1;
				U64 v2 = state.v2;
				U64 v3 = state.v3;
				U64 v4 = state.v4;

				h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18);
				h64 = XXH64_mergeRound(h64, v1);
				h64 = XXH64_mergeRound(h64, v2);
				h64 = XXH64_mergeRound(h64, v3);
				h64 = XXH64_mergeRound(h64, v4);
			}
			else
			{
				h64 = state.v3 + PRIME64_5;
			}

			h64 += (U64)state.total_len;

			while (p + 8 <= bEnd)
			{
				U64 k1 = XXH64_round(0, XXH_readLE64(p /*, endian*/));
				h64 ^= k1;
				h64 = XXH_rotl64(h64, 27) * PRIME64_1 + PRIME64_4;
				p += 8;
			}

			if (p + 4 <= bEnd)
			{
				h64 ^= (U64)(XXH_readLE32(p /*, endian*/)) * PRIME64_1;
				h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3;
				p += 4;
			}

			while (p < bEnd)
			{
				h64 ^= (*p) * PRIME64_5;
				h64 = XXH_rotl64(h64, 11) * PRIME64_1;
				p++;
			}

			h64 ^= h64 >> 33;
			h64 *= PRIME64_2;
			h64 ^= h64 >> 29;
			h64 *= PRIME64_3;
			h64 ^= h64 >> 32;

			return h64;
		}