code: func (s *asmState) Sum(b []byte) []byte {
  	if s.outputLen == 0 {
  		panic("sha3: cannot call Sum on SHAKE functions")
  	}
  
  	// Copy the state to preserve the original.
  	a := s.a
  
  	// Hash the buffer. Note that we don't clear it because we
  	// aren't updating the state.
  	klmd(s.function, &a, nil, s.buf)
  	return append(b, a[:s.outputLen]...)
  }
docs: // Sum appends the current hash to b and returns the resulting slice.
  // It does not change the underlying hash state.