so many CRC32 implementations, and all of them are wrong!