An apparatus comprising: a processor; a demodulation subsystem executed by the processor and configured to: receive a Global Navigation Satellite System, GNSS, signal modulated by code shift keying, CSK, to represent a symbol; perform a chip-by-chip linear combination of a first portion of a plurality of receiver codes to generate a first combinational code, wherein each of the plurality of receiver codes is a different shift in chips to a predetermined code; perform a chip-by-chip linear combination of a second portion of the plurality of receiver codes to generate a second combinational code; correlate the modulated navigation signal with the first combinational code to produce a first correlation power level value and correlate the modulated navigation signal with the second combinational code to produce a second correlation power level value; traverse, in response to the first correlation power level value being greater than the second correlation power level value, to a next level of a first hierarchy of a binary search tree that is associated with the first portion of the plurality of receiver codes to determine the symbol, or traverse, in response to the first correlation power level value not being greater than the second correlation power level value, to a next level of a second hierarchy of the binary search tree that is associated with the second portion of the plurality of receiver codes to determine the symbol; and continue to traverse the binary search tree to reach a bottom level, to determine the symbol a processor; a demodulation subsystem executed by the processor and configured to: receive a Global Navigation Satellite System, GNSS, signal modulated by code shift keying, CSK, to represent a symbol; perform a chip-by-chip linear combination of a first portion of a plurality of receiver codes to generate a first combinational code, wherein each of the plurality of receiver codes is a different shift in chips to a predetermined code; perform a chip-by-chip linear combination of a second portion of the plurality of receiver codes to generate a second combinational code; correlate the modulated navigation signal with the first combinational code to produce a first correlation power level value and correlate the modulated navigation signal with the second combinational code to produce a second correlation power level value; traverse, in response to the first correlation power level value being greater than the second correlation power level value, to a next level of a first hierarchy of a binary search tree that is associated with the first portion of the plurality of receiver codes to determine the symbol, or traverse, in response to the first correlation power level value not being greater than the second correlation power level value, to a next level of a second hierarchy of the binary search tree that is associated with the second portion of the plurality of receiver codes to determine the symbol; and continue to traverse the binary search tree to reach a bottom level, to determine the symbol receive a Global Navigation Satellite System, GNSS, signal modulated by code shift keying, CSK, to represent a symbol; perform a chip-by-chip linear combination of a first portion of a plurality of receiver codes to generate a first combinational code, wherein each of the plurality of receiver codes is a different shift in chips to a predetermined code; perform a chip-by-chip linear combination of a second portion of the plurality of receiver codes to generate a second combinational code; correlate the modulated navigation signal with the first combinational code to produce a first correlation power level value and correlate the modulated navigation signal with the second combinational code to produce a second correlation power level value; traverse, in response to the first correlation power level value being greater than the second correlation power level value, to a next level of a first hierarchy of a binary search tree that is associated with the first portion of the plurality of receiver codes to determine the symbol, or traverse, in response to the first correlation power level value not being greater than the second correlation power level value, to a next level of a second hierarchy of the binary search tree that is associated with the second portion of the plurality of receiver codes to determine the symbol; and continue to traverse the binary search tree to reach a bottom level, to determine the symbol