// Token: 0x06000009 RID: 9 RVA: 0x000021CC File Offset: 0x000003CC public static long ComputeNormalizedLength(Stream input, byte[] buffer = null) { long length = 0L; if (buffer == null) { buffer = new byte[65536]; } for (;;) { int bytesRead = input.Read(buffer, 0, buffer.Length); if (bytesRead == 0) { break; } for (int i = 0; i < bytesRead; i++) { if (!MurmurHash2.IsWhitespaceCharacter(buffer[i])) { length += 1L; } } } return(length); }
// Token: 0x06000005 RID: 5 RVA: 0x000020C0 File Offset: 0x000002C0 public static ulong ComputeHash(Stream input) { byte[] buffer = new byte[65536]; long position = input.Position; long length = MurmurHash2.ComputeNormalizedLength(input, buffer); input.Seek(position, SeekOrigin.Begin); uint h = (uint)(1L ^ length); uint i = 0u; int shift = 0; for (;;) { int bufferLength = input.Read(buffer, 0, buffer.Length); if (bufferLength == 0) { break; } for (int j = 0; j < bufferLength; j++) { byte b = buffer[j]; if (!MurmurHash2.IsWhitespaceCharacter(b)) { i |= (uint)((uint)b << shift); shift += 8; if (shift == 32) { i *= 1540483477u; i ^= i >> 24; i *= 1540483477u; h *= 1540483477u; h ^= i; i = 0u; shift = 0; } } } } if (shift > 0) { h ^= i; h *= 1540483477u; } h ^= h >> 13; h *= 1540483477u; return(h ^ h >> 15); }