optimize QAM decoder