Decoding protein modifications using top-down mass spectrometry