crc32 should be inline to let it be reused