private void ProcessFile(FileStream file)
    {
        h1 = seed;
        this.length = 0L;

        int pos = 0;
        ulong remaining = (ulong)file.Length;

        // read 128 bits, 16 bytes, 2 longs in each cycle.
        while (remaining >= READ_SIZE)
        {
            ulong k1 = file.GetUInt64();
            pos += 8;

            ulong k2 = file.GetUInt64();
            pos += 8;

            length += READ_SIZE;
            remaining -= READ_SIZE;

            MixBody(k1, k2);
        }

        if (remaining > 0)
            ProcessFileRemaining(file, remaining, pos);
    }