code: func fastXORWords(dst, a, b []byte) {
  	dw := *(*[]uintptr)(unsafe.Pointer(&dst))
  	aw := *(*[]uintptr)(unsafe.Pointer(&a))
  	bw := *(*[]uintptr)(unsafe.Pointer(&b))
  	n := len(b) / wordSize
  	ex := n % 8
  	for i := 0; i < ex; i++ {
  		dw[i] = aw[i] ^ bw[i]
  	}
  
  	for i := ex; i < n; i += 8 {
  		_dw := dw[i : i+8]
  		_aw := aw[i : i+8]
  		_bw := bw[i : i+8]
  		_dw[0] = _aw[0] ^ _bw[0]
  		_dw[1] = _aw[1] ^ _bw[1]
  		_dw[2] = _aw[2] ^ _bw[2]
  		_dw[3] = _aw[3] ^ _bw[3]
  		_dw[4] = _aw[4] ^ _bw[4]
  		_dw[5] = _aw[5] ^ _bw[5]
  		_dw[6] = _aw[6] ^ _bw[6]
  		_dw[7] = _aw[7] ^ _bw[7]
  	}
  }
docs: // fastXORWords XORs multiples of 4 or 8 bytes (depending on architecture.)
  // The arguments are assumed to be of equal length.