1. A system for decoding messages comprising: a receiver capable of receiving an encoded message; sorting module configured to organize candidate messages into a number of bins, sort the candidate messages within each bin, and output a group of candidate messages, the group comprising a number of most likely candidate messages from each message bin; and traceback module configured to receive the most likely candidate message, and walk through a tree of candidate messages to generate a decoded message.