A check-node processing unit (25 -cn) implemented in a non-binary error correcting code iterative message passing decoder, the decoder being configured to determine an estimate of a codeword received from a transmitter, using a Tanner graph representation of the non-binary error correcting code over the Galois Field, the Tanner Graph comprising variable nodes and check nodes, the check node processing unit comprising one or more elementary check node processors, each elementary check node processor being configured to determine an elementary check node message comprising one or more elementary check node components, the check node processing unit (25- cn) being configured to generate a check node message from said one or more elementary check node components, wherein an elementary check node processor comprises a sorting device for determining said elementary check node components, said elementary check node components being determined by sorting auxiliary components derived from variable node messages received by said elementary check node processor, the elementary check node processor being configured to receive a first message and a second message derived from two or more variable node messages, each first message and second message comprising components, each component of the first message and second message comprising a symbol and an associated reliability metric, the elementary check node processor being configured to determine said auxiliary components by applying addition operations to the symbols and the reliability metrics comprised in the components of the first and second messages, said auxiliary components being stored in a plurality of FIFO memories (33- n) according to a decreasing reliability order, each FIFO memory (33- n) being assigned a FIFO number index, each auxiliary component stored in a given FIFO memory (33- n) comprising an auxiliary symbol, an auxiliary reliability metrics representing the reliability of said auxiliary symbol, and the FIFO number index assigned to said given FIFO memory (33- n), the sorting device comprising a plurality of multiplexers (34- m) arranged sequentially, the multiplexers (34- m) being configured to initialize a set of candidate elementary check node components, each candidate elementary check node component being determined from one of the FIFO memories (33- n) and corresponding to the auxiliary component which comprises the most reliable auxiliary symbol among the auxiliary components stored in said FIFO memory (33- n), said candidate elementary check node components being sorted according to the auxiliary reliability metrics of the auxiliary symbols, wherein each multiplexer (34- m) is configured to perform one or more iterations of the following steps: - receive an auxiliary component extracted from the FIFO memory (33- n) to which the FIFO number index comprised in the candidate elementary check node component determined at the previous iteration is assigned and which comprises the most reliable candidate symbol, and - update said candidate elementary check node component determined at the previous iteration by selecting one component among the received auxiliary component, the candidate elementary check node component determined at the previous iteration by said multiplexer (34-m), and the candidate elementary check node component determined at the previous iteration by the subsequent multiplexer (34-(m + 1)); the sorting device being configured to determine, at each of said one or more iterations, an elementary check node component by selecting the candidate elementary check node component which comprises the most reliable candidate symbol. - receive an auxiliary component extracted from the FIFO memory (33- n) to which the FIFO number index comprised in the candidate elementary check node component determined at the previous iteration is assigned and which comprises the most reliable candidate symbol, and - update said candidate elementary check node component determined at the previous iteration by selecting one component among the received auxiliary component, the candidate elementary check node component determined at the previous iteration by said multiplexer (34-m), and the candidate elementary check node component determined at the previous iteration by the subsequent multiplexer (34-(m + 1));