summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-10-16 14:58:00 +0200
committerMax <msuraev@sysmocom.de>2017-12-11 10:36:47 +0000
commit32e5641dbbfd91b650a9ec8cf62d28fd22109e9e (patch)
tree401803f3b61944c3264c341a54878c8456c61110
parent9dd3bf0cb4e780b54772f4abe1e2966b09f99301 (diff)
Add functions for extended RACH coding
Add support for extended RACH (11 bit) according 3GPP TS 45.003 ยง5.3.2: * convolutional code with puncturing * encoding/decoding routines * corresponding tests Change-Id: I85a34a82d5cd39a594ee89d91a2338226066ab5d Related: OS#1548
-rw-r--r--TODO-RELEASE1
-rw-r--r--include/osmocom/coding/gsm0503_coding.h7
-rw-r--r--src/coding/gsm0503_coding.c80
-rw-r--r--src/coding/libosmocoding.map2
-rw-r--r--src/gsm/libosmogsm.map1
-rw-r--r--tests/coding/coding_test.c41
-rw-r--r--tests/coding/coding_test.ok30720
-rw-r--r--tests/conv/conv_gsm0503_test.ok8
-rw-r--r--utils/conv_codes_gsm.py11
9 files changed, 30850 insertions, 21 deletions
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 99865c68..a5def797 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -8,3 +8,4 @@
# If any interfaces have been removed or changed since the last public release: c:r:0.
#library what description / commit summary line
core msgb_queue_free() add inline func to msgb.h
+coding gsm0503_rach_ext-encode() add func to gsm0503_coding.h
diff --git a/include/osmocom/coding/gsm0503_coding.h b/include/osmocom/coding/gsm0503_coding.h
index a2d4115b..86610bac 100644
--- a/include/osmocom/coding/gsm0503_coding.h
+++ b/include/osmocom/coding/gsm0503_coding.h
@@ -5,6 +5,8 @@
#pragma once
#include <stdint.h>
+
+#include <osmocom/core/defs.h>
#include <osmocom/core/bits.h>
/*! \addtogroup coding
@@ -63,8 +65,11 @@ int gsm0503_tch_ahs_decode(uint8_t *tch_data, const sbit_t *bursts, int odd,
int codec_mode_req, uint8_t *codec, int codecs, uint8_t *ft,
uint8_t *cmr, int *n_errors, int *n_bits_total);
-int gsm0503_rach_encode(ubit_t *burst, const uint8_t *ra, uint8_t bsic);
+int gsm0503_rach_ext_encode(ubit_t *burst, uint16_t ra, uint8_t bsic, bool is_11bit);
+int gsm0503_rach_encode(ubit_t *burst, const uint8_t *ra, uint8_t bsic) OSMO_DEPRECATED("Use gsm0503_rach_ext_encode() instead");
+
int gsm0503_rach_decode(uint8_t *ra, const sbit_t *burst, uint8_t bsic);
+int gsm0503_rach_ext_decode(uint16_t *ra, const sbit_t *burst, uint8_t bsic);
int gsm0503_sch_encode(ubit_t *burst, const uint8_t *sb_info);
int gsm0503_sch_decode(uint8_t *sb_info, const sbit_t *burst);
diff --git a/src/coding/gsm0503_coding.c b/src/coding/gsm0503_coding.c
index cacc6121..f3b319ad 100644
--- a/src/coding/gsm0503_coding.c
+++ b/src/coding/gsm0503_coding.c
@@ -2824,13 +2824,47 @@ invalid_length:
* b(0) = MSB of PLMN colour code
* b(5) = LSB of BS colour code
*/
-static int rach_apply_bsic(ubit_t *d, uint8_t bsic)
+static inline void rach_apply_bsic(ubit_t *d, uint8_t bsic, uint8_t start)
{
int i;
/* Apply it */
for (i = 0; i < 6; i++)
- d[8 + i] ^= ((bsic >> (5 - i)) & 1);
+ d[start + i] ^= ((bsic >> (5 - i)) & 1);
+}
+
+static inline int16_t rach_decode(const sbit_t *burst, uint8_t bsic, bool is_11bit)
+{
+ ubit_t conv[17];
+ uint8_t ra[2] = { 0 }, nbits = is_11bit ? 11 : 8;
+ int rv;
+
+ osmo_conv_decode(is_11bit ? &gsm0503_rach_ext : &gsm0503_rach, burst, conv);
+
+ rach_apply_bsic(conv, bsic, nbits);
+
+ rv = osmo_crc8gen_check_bits(&gsm0503_rach_crc6, conv, nbits, conv + nbits);
+ if (rv)
+ return -1;
+
+ osmo_ubit2pbit_ext(ra, 0, conv, 0, nbits, 1);
+
+ return is_11bit ? osmo_load16le(ra) : ra[0];
+}
+
+/*! Decode the Extended (11-bit) RACH according to 3GPP TS 45.003
+ * \param[out] ra output buffer for RACH data
+ * \param[in] burst Input burst data
+ * \param[in] bsic BSIC used in this cell
+ * \returns 0 on success; negative on error (e.g. CRC error) */
+int gsm0503_rach_ext_decode(uint16_t *ra, const sbit_t *burst, uint8_t bsic)
+{
+ int16_t r = rach_decode(burst, bsic, true);
+
+ if (r < 0)
+ return r;
+
+ *ra = r;
return 0;
}
@@ -2842,18 +2876,12 @@ static int rach_apply_bsic(ubit_t *d, uint8_t bsic)
* \returns 0 on success; negative on error (e.g. CRC error) */
int gsm0503_rach_decode(uint8_t *ra, const sbit_t *burst, uint8_t bsic)
{
- ubit_t conv[14];
- int rv;
-
- osmo_conv_decode(&gsm0503_rach, burst, conv);
+ int16_t r = rach_decode(burst, bsic, false);
- rach_apply_bsic(conv, bsic);
-
- rv = osmo_crc8gen_check_bits(&gsm0503_rach_crc6, conv, 8, conv + 8);
- if (rv)
- return -1;
+ if (r < 0)
+ return r;
- osmo_ubit2pbit_ext(ra, 0, conv, 0, 8, 1);
+ *ra = r;
return 0;
}
@@ -2865,15 +2893,33 @@ int gsm0503_rach_decode(uint8_t *ra, const sbit_t *burst, uint8_t bsic)
* \returns 0 on success; negative on error */
int gsm0503_rach_encode(ubit_t *burst, const uint8_t *ra, uint8_t bsic)
{
- ubit_t conv[14];
+ return gsm0503_rach_ext_encode(burst, *ra, bsic, false);
+}
+
+/*! Encode the Extended (11-bit) or regular (8-bit) RACH according to 3GPP TS 45.003
+ * \param[out] burst Caller-allocated output burst buffer
+ * \param[in] ra11 Input RACH data
+ * \param[in] bsic BSIC used in this cell
+ * \param[in] is_11bit whether given RA is 11 bit or not
+ * \returns 0 on success; negative on error */
+int gsm0503_rach_ext_encode(ubit_t *burst, uint16_t ra11, uint8_t bsic, bool is_11bit)
+{
+ ubit_t conv[17];
+ uint8_t ra[2] = { 0 }, nbits = 8;
+
+ if (is_11bit) {
+ osmo_store16le(ra11, ra);
+ nbits = 11;
+ } else
+ ra[0] = (uint8_t)ra11;
- osmo_pbit2ubit_ext(conv, 0, ra, 0, 8, 1);
+ osmo_pbit2ubit_ext(conv, 0, ra, 0, nbits, 1);
- osmo_crc8gen_set_bits(&gsm0503_rach_crc6, conv, 8, conv + 8);
+ osmo_crc8gen_set_bits(&gsm0503_rach_crc6, conv, nbits, conv + nbits);
- rach_apply_bsic(conv, bsic);
+ rach_apply_bsic(conv, bsic, nbits);
- osmo_conv_encode(&gsm0503_rach, conv, burst);
+ osmo_conv_encode(is_11bit ? &gsm0503_rach_ext : &gsm0503_rach, conv, burst);
return 0;
}
diff --git a/src/coding/libosmocoding.map b/src/coding/libosmocoding.map
index dbb53dec..95953cf2 100644
--- a/src/coding/libosmocoding.map
+++ b/src/coding/libosmocoding.map
@@ -108,6 +108,8 @@ gsm0503_tch_afs_encode;
gsm0503_tch_afs_decode;
gsm0503_tch_ahs_encode;
gsm0503_tch_ahs_decode;
+gsm0503_rach_ext_encode;
+gsm0503_rach_ext_decode;
gsm0503_rach_encode;
gsm0503_rach_decode;
gsm0503_sch_encode;
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index a72db524..6e6638a9 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -97,6 +97,7 @@ gsm0502_calc_paging_group;
gsm0503_xcch;
gsm0503_rach;
+gsm0503_rach_ext;
gsm0503_sch;
gsm0503_cs2;
gsm0503_cs3;
diff --git a/tests/coding/coding_test.c b/tests/coding/coding_test.c
index b77410fd..511dbb7b 100644
--- a/tests/coding/coding_test.c
+++ b/tests/coding/coding_test.c
@@ -110,7 +110,7 @@ static void test_rach(uint8_t bsic, uint8_t ra)
/* Encode L2 message */
printf("Encoding: %02x\n", ra);
- gsm0503_rach_encode(bursts_u, &ra, bsic);
+ gsm0503_rach_ext_encode(bursts_u, ra, bsic, false);
/* Prepare soft-bits */
osmo_ubit2sbit(bursts_s, bursts_u, 36);
@@ -126,7 +126,38 @@ static void test_rach(uint8_t bsic, uint8_t ra)
gsm0503_rach_decode(&result, bursts_s, bsic);
printf("Decoded: %02x\n", result);
- OSMO_ASSERT(ra == result);
+ if (ra != result)
+ printf("FAIL [RACH]: encoded %u != %u decoded\n", ra, result);
+
+ printf("\n");
+}
+
+static void test_rach_ext(uint8_t bsic, uint16_t ra)
+{
+ uint16_t result = 3000; /* Max ext. RA is 2^11 = 2048 */
+ ubit_t bursts_u[36];
+ sbit_t bursts_s[36];
+
+ /* Encode L2 message */
+ printf("Encoding: %02x\n", ra);
+ gsm0503_rach_ext_encode(bursts_u, ra, bsic, true);
+
+ /* Prepare soft-bits */
+ osmo_ubit2sbit(bursts_s, bursts_u, 36);
+
+ printf("U-Bits: %s\n", osmo_ubit_dump(bursts_u, 36));
+
+ printf("S-Bits: %s\n", osmo_hexdump((uint8_t *)bursts_s, 36));
+
+ /* Destroy some bits */
+ memset(bursts_s + 9, 0, 8);
+
+ /* Decode, correcting errors */
+ gsm0503_rach_ext_decode(&result, bursts_s, bsic);
+ printf("Decoded: %02x\n", result);
+
+ if (ra != result)
+ printf("FAIL [RACH ext]: encoded %u != %u decoded\n", ra, result);
printf("\n");
}
@@ -332,6 +363,12 @@ int main(int argc, char **argv)
test_rach(0x1a, i);
}
+ for (i = 0; i < 2048; i++) {
+ test_rach_ext(0x3f, i);
+ test_rach_ext(0x00, i);
+ test_rach_ext(0x1a, i);
+ }
+
for (i = 0; i < len_l2; i++)
test_sch(test_l2[i]);
diff --git a/tests/coding/coding_test.ok b/tests/coding/coding_test.ok
index 619f038b..8813af20 100644
--- a/tests/coding/coding_test.ok
+++ b/tests/coding/coding_test.ok
@@ -3880,6 +3880,30726 @@ U-Bits: 111010011010101001001101010001111111
S-Bits: 81 81 81 7f 81 7f 7f 81 81 7f 81 7f 81 7f 81 7f 7f 81 7f 7f 81 81 7f 81 7f 81 7f 7f 7f 81 81 81 81 81 81 81
Decoded: ff
+Encoding: 00
+U-Bits: 000000000000000000000000000000000000
+S-Bits: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f
+Decoded: 00
+
+Encoding: 00
+U-Bits: 000000000000000000011101001101001001
+S-Bits: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 81 7f 7f 81 7f 7f 81
+Decoded: 00
+
+Encoding: 00
+U-Bits: 000000000000000000011010000101110111
+S-Bits: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 81 81 81 7f 81 81 81
+Decoded: 00
+
+Encoding: 01
+U-Bits: 110111100000000000011101001100100010
+S-Bits: 81 81 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 7f 81 7f
+Decoded: 01
+
+Encoding: 01
+U-Bits: 110111100000000000000000000001101011
+S-Bits: 81 81 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 81 81
+Decoded: 01
+
+Encoding: 01
+U-Bits: 110111100000000000000111001001010101
+S-Bits: 81 81 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 81 7f 81 7f 81 7f 81
+Decoded: 01
+
+Encoding: 02
+U-Bits: 010001111000000000000111010011001001
+S-Bits: 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 81
+Decoded: 02
+
+Encoding: 02
+U-Bits: 010001111000000000011010011110000000
+S-Bits: 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f
+Decoded: 02
+
+Encoding: 02
+U-Bits: 010001111000000000011101010110111110
+S-Bits: 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 7f 81 81 81 81 81 7f
+Decoded: 02
+
+Encoding: 03
+U-Bits: 100110011000000000011010011111101011
+S-Bits: 81 7f 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 81 81 7f 81 7f 81 81
+Decoded: 03
+
+Encoding: 03
+U-Bits: 100110011000000000000111010010100010
+S-Bits: 81 7f 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 7f 7f 7f 81 7f
+Decoded: 03
+
+Encoding: 03
+U-Bits: 100110011000000000000000011010011100
+S-Bits: 81 7f 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 7f 7f
+Decoded: 03
+
+Encoding: 04
+U-Bits: 001010011110000000011101010000011000
+S-Bits: 7f 7f 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f
+Decoded: 04
+
+Encoding: 04
+U-Bits: 001010011110000000000000011101010001
+S-Bits: 7f 7f 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 81
+Decoded: 04
+
+Encoding: 04
+U-Bits: 001010011110000000000111010101101111
+S-Bits: 7f 7f 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 7f 81 81 81 81
+Decoded: 04
+
+Encoding: 05
+U-Bits: 111101111110000000000000011100111010
+S-Bits: 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 81 7f
+Decoded: 05
+
+Encoding: 05
+U-Bits: 111101111110000000011101010001110011
+S-Bits: 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 81 81 81 7f 7f 81 81
+Decoded: 05
+
+Encoding: 05
+U-Bits: 111101111110000000011010011001001101
+S-Bits: 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 81 81 7f 81
+Decoded: 05
+
+Encoding: 06
+U-Bits: 011011100110000000011010000011010001
+S-Bits: 7f 81 81 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 81
+Decoded: 06
+
+Encoding: 06
+U-Bits: 011011100110000000000111001110011000
+S-Bits: 7f 81 81 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f
+Decoded: 06
+
+Encoding: 06
+U-Bits: 011011100110000000000000000110100110
+S-Bits: 7f 81 81 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 7f
+Decoded: 06
+
+Encoding: 07
+U-Bits: 101100000110000000000111001111110011
+S-Bits: 81 7f 81 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 81 81 81 7f 7f 81 81
+Decoded: 07
+
+Encoding: 07
+U-Bits: 101100000110000000011010000010111010
+S-Bits: 81 7f 81 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 7f 81 7f 81 81 81 7f 81 7f
+Decoded: 07
+
+Encoding: 07
+U-Bits: 101100000110000000011101001010000100
+S-Bits: 81 7f 81 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 7f 7f 7f 7f 81 7f 7f
+Decoded: 07
+
+Encoding: 08
+U-Bits: 000110100111100000000111010100000100
+S-Bits: 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 7f 7f 81 7f 7f
+Decoded: 08
+
+Encoding: 08
+U-Bits: 000110100111100000011010011001001101
+S-Bits: 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 81 81 7f 81
+Decoded: 08
+
+Encoding: 08
+U-Bits: 000110100111100000011101010001110011
+S-Bits: 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 81 81 81 7f 7f 81 81
+Decoded: 08
+
+Encoding: 09
+U-Bits: 110001000111100000011010011000100110
+S-Bits: 81 81 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 7f 7f 7f 81 7f 7f 81 81 7f
+Decoded: 09
+
+Encoding: 09
+U-Bits: 110001000111100000000111010101101111
+S-Bits: 81 81 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 7f 81 81 81 81
+Decoded: 09
+
+Encoding: 09
+U-Bits: 110001000111100000000000011101010001
+S-Bits: 81 81 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 81
+Decoded: 09
+
+Encoding: 0a
+U-Bits: 010111011111100000000000000111001101
+S-Bits: 7f 81 7f 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 7f 81
+Decoded: 0a
+
+Encoding: 0a
+U-Bits: 010111011111100000011101001010000100
+S-Bits: 7f 81 7f 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 7f 7f 7f 7f 81 7f 7f
+Decoded: 0a
+
+Encoding: 0a
+U-Bits: 010111011111100000011010000010111010
+S-Bits: 7f 81 7f 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 7f 81 7f 81 81 81 7f 81 7f
+Decoded: 0a
+
+Encoding: 0b
+U-Bits: 100000111111100000011101001011101111
+S-Bits: 81 7f 7f 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 81 81 7f 81 81 81 81
+Decoded: 0b
+
+Encoding: 0b
+U-Bits: 100000111111100000000000000110100110
+S-Bits: 81 7f 7f 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 7f
+Decoded: 0b
+
+Encoding: 0b
+U-Bits: 100000111111100000000111001110011000
+S-Bits: 81 7f 7f 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f
+Decoded: 0b
+
+Encoding: 0c
+U-Bits: 001100111001100000011010000100011100
+S-Bits: 7f 7f 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 7f 7f
+Decoded: 0c
+
+Encoding: 0c
+U-Bits: 001100111001100000000111001001010101
+S-Bits: 7f 7f 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 81 7f 81 7f 81 7f 81
+Decoded: 0c
+
+Encoding: 0c
+U-Bits: 001100111001100000000000000001101011
+S-Bits: 7f 7f 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 81 81
+Decoded: 0c
+
+Encoding: 0d
+U-Bits: 111011011001100000000111001000111110
+S-Bits: 81 81 81 7f 81 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 81 7f
+Decoded: 0d
+
+Encoding: 0d
+U-Bits: 111011011001100000011010000101110111
+S-Bits: 81 81 81 7f 81 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 81 81 81 7f 81 81 81
+Decoded: 0d
+
+Encoding: 0d
+U-Bits: 111011011001100000011101001101001001
+S-Bits: 81 81 81 7f 81 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 81 7f 7f 81 7f 7f 81
+Decoded: 0d
+
+Encoding: 0e
+U-Bits: 011101000001100000011101010111010101
+S-Bits: 7f 81 81 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 81 7f 81 7f 81 7f 81
+Decoded: 0e
+
+Encoding: 0e
+U-Bits: 011101000001100000000000011010011100
+S-Bits: 7f 81 81 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 7f 7f
+Decoded: 0e
+
+Encoding: 0e
+U-Bits: 011101000001100000000111010010100010
+S-Bits: 7f 81 81 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 7f 7f 7f 81 7f
+Decoded: 0e
+
+Encoding: 0f
+U-Bits: 101010100001100000000000011011110111
+S-Bits: 81 7f 81 7f 81 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81
+Decoded: 0f
+
+Encoding: 0f
+U-Bits: 101010100001100000011101010110111110
+S-Bits: 81 7f 81 7f 81 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 7f 81 81 81 81 81 7f
+Decoded: 0f
+
+Encoding: 0f
+U-Bits: 101010100001100000011010011110000000
+S-Bits: 81 7f 81 7f 81 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f
+Decoded: 0f
+
+Encoding: 10
+U-Bits: 000001101001111000000001110101000010
+S-Bits: 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 7f 81 7f
+Decoded: 10
+
+Encoding: 10
+U-Bits: 000001101001111000011100111000001011
+S-Bits: 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 7f 7f 7f 81 7f 81 81
+Decoded: 10
+
+Encoding: 10
+U-Bits: 000001101001111000011011110000110101
+S-Bits: 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 7f 7f 7f 81 81 7f 81 7f 81
+Decoded: 10
+
+Encoding: 11
+U-Bits: 110110001001111000011100111001100000
+S-Bits: 81 81 7f 81 81 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f
+Decoded: 11
+
+Encoding: 11
+U-Bits: 110110001001111000000001110100101001
+S-Bits: 81 81 7f 81 81 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 7f 7f 81
+Decoded: 11
+
+Encoding: 11
+U-Bits: 110110001001111000000110111100010111
+S-Bits: 81 81 7f 81 81 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 7f 7f 81 7f 81 81 81
+Decoded: 11
+
+Encoding: 12
+U-Bits: 010000010001111000000110100110001011
+S-Bits: 7f 81 7f 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 7f 7f 7f 81 7f 81 81
+Decoded: 12
+
+Encoding: 12
+U-Bits: 010000010001111000011011101011000010
+S-Bits: 7f 81 7f 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 7f 81 81 7f 7f 7f 7f 81 7f
+Decoded: 12
+
+Encoding: 12
+U-Bits: 010000010001111000011100100011111100
+S-Bits: 7f 81 7f 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 81 81 7f 7f
+Decoded: 12
+
+Encoding: 13
+U-Bits: 100111110001111000011011101010101001
+S-Bits: 81 7f 7f 81 81 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 7f 81 7f 81 7f 81 7f 7f 81
+Decoded: 13
+
+Encoding: 13
+U-Bits: 100111110001111000000110100111100000
+S-Bits: 81 7f 7f 81 81 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f
+Decoded: 13
+
+Encoding: 13
+U-Bits: 100111110001111000000001101111011110
+S-Bits: 81 7f 7f 81 81 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81 81 7f
+Decoded: 13
+
+Encoding: 14
+U-Bits: 001011110111111000011100100101011010
+S-Bits: 7f 7f 81 7f 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 81 7f 81 7f 81 81 7f 81 7f
+Decoded: 14
+
+Encoding: 14
+U-Bits: 001011110111111000000001101000010011
+S-Bits: 7f 7f 81 7f 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 7f 81 81
+Decoded: 14
+
+Encoding: 14
+U-Bits: 001011110111111000000110100000101101
+S-Bits: 7f 7f 81 7f 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 7f 81 7f 81 81 7f 81
+Decoded: 14
+
+Encoding: 15
+U-Bits: 111100010111111000000001101001111000
+S-Bits: 81 81 81 81 7f 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f
+Decoded: 15
+
+Encoding: 15
+U-Bits: 111100010111111000011100100100110001
+S-Bits: 81 81 81 81 7f 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 81 7f 7f 81 81 7f 7f 7f 81
+Decoded: 15
+
+Encoding: 15
+U-Bits: 111100010111111000011011101100001111
+S-Bits: 81 81 81 81 7f 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 81 7f 7f 7f 7f 81 81 81 81
+Decoded: 15
+
+Encoding: 16
+U-Bits: 011010001111111000011011110110010011
+S-Bits: 7f 81 81 7f 81 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 7f 7f 81 7f 7f 81 81
+Decoded: 16
+
+Encoding: 16
+U-Bits: 011010001111111000000110111011011010
+S-Bits: 7f 81 81 7f 81 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 81 7f 81 81 7f 81 7f
+Decoded: 16
+
+Encoding: 16
+U-Bits: 011010001111111000000001110011100100
+S-Bits: 7f 81 81 7f 81 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 7f 7f
+Decoded: 16
+
+Encoding: 17
+U-Bits: 101101101111111000000110111010110001
+S-Bits: 81 7f 81 81 7f 81 81 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 7f 81 81 7f 7f 7f 81
+Decoded: 17
+
+Encoding: 17
+U-Bits: 101101101111111000011011110111111000
+S-Bits: 81 7f 81 81 7f 81 81 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f
+Decoded: 17
+
+Encoding: 17
+U-Bits: 101101101111111000011100111111000110
+S-Bits: 81 7f 81 81 7f 81 81 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 81 81 81 7f 7f 7f 81 81 7f
+Decoded: 17
+
+Encoding: 18
+U-Bits: 000111001110011000000110100001000110
+S-Bits: 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 7f 7f 81 81 7f
+Decoded: 18
+
+Encoding: 18
+U-Bits: 000111001110011000011011101100001111
+S-Bits: 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 81 7f 7f 7f 7f 81 81 81 81
+Decoded: 18
+
+Encoding: 18
+U-Bits: 000111001110011000011100100100110001
+S-Bits: 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 81 7f 7f 81 81 7f 7f 7f 81
+Decoded: 18
+
+Encoding: 19
+U-Bits: 110000101110011000011011101101100100
+S-Bits: 81 81 7f 7f 7f 7f 81 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 81 7f 81 81 7f 7f 81 7f 7f
+Decoded: 19
+
+Encoding: 19
+U-Bits: 110000101110011000000110100000101101
+S-Bits: 81 81 7f 7f 7f 7f 81 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 7f 81 7f 81 81 7f 81
+Decoded: 19
+
+Encoding: 19
+U-Bits: 110000101110011000000001101000010011
+S-Bits: 81 81 7f 7f 7f 7f 81 7f 81 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 7f 81 81
+Decoded: 19
+
+Encoding: 1a
+U-Bits: 010110110110011000000001110010001111
+S-Bits: 7f 81 7f 81 81 7f 81 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 7f 81 81 81 81
+Decoded: 1a
+
+Encoding: 1a
+U-Bits: 010110110110011000011100111111000110
+S-Bits: 7f 81 7f 81 81 7f 81 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 81 81 81 7f 7f 7f 81 81 7f
+Decoded: 1a
+
+Encoding: 1a
+U-Bits: 010110110110011000011011110111111000
+S-Bits: 7f 81 7f 81 81 7f 81 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f
+Decoded: 1a
+
+Encoding: 1b
+U-Bits: 100001010110011000011100111110101101
+S-Bits: 81 7f 7f 7f 7f 81 7f 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 81 81 7f 81 7f 81 81 7f 81
+Decoded: 1b
+
+Encoding: 1b
+U-Bits: 100001010110011000000001110011100100
+S-Bits: 81 7f 7f 7f 7f 81 7f 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 7f 7f
+Decoded: 1b
+
+Encoding: 1b
+U-Bits: 100001010110011000000110111011011010
+S-Bits: 81 7f 7f 7f 7f 81 7f 81 7f 81 81 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 81 7f 81 81 7f 81 7f
+Decoded: 1b
+
+Encoding: 1c
+U-Bits: 001101010000011000011011110001011110
+S-Bits: 7f 7f 81 81 7f 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 7f 7f 81 7f 81 81 81 81 7f
+Decoded: 1c
+
+Encoding: 1c
+U-Bits: 001101010000011000000110111100010111
+S-Bits: 7f 7f 81 81 7f 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 7f 7f 81 7f 81 81 81
+Decoded: 1c
+
+Encoding: 1c
+U-Bits: 001101010000011000000001110100101001
+S-Bits: 7f 7f 81 81 7f 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 7f 7f 81
+Decoded: 1c
+
+Encoding: 1d
+U-Bits: 111010110000011000000110111101111100
+S-Bits: 81 81 81 7f 81 7f 81 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81 81 81 7f 7f
+Decoded: 1d
+
+Encoding: 1d
+U-Bits: 111010110000011000011011110000110101
+S-Bits: 81 81 81 7f 81 7f 81 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 7f 7f 7f 81 81 7f 81 7f 81
+Decoded: 1d
+
+Encoding: 1d
+U-Bits: 111010110000011000011100111000001011
+S-Bits: 81 81 81 7f 81 7f 81 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 7f 7f 7f 81 7f 81 81
+Decoded: 1d
+
+Encoding: 1e
+U-Bits: 011100101000011000011100100010010111
+S-Bits: 7f 81 81 81 7f 7f 81 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 7f 81 7f 7f 81 7f 81 81 81
+Decoded: 1e
+
+Encoding: 1e
+U-Bits: 011100101000011000000001101111011110
+S-Bits: 7f 81 81 81 7f 7f 81 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81 81 7f
+Decoded: 1e
+
+Encoding: 1e
+U-Bits: 011100101000011000000110100111100000
+S-Bits: 7f 81 81 81 7f 7f 81 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f
+Decoded: 1e
+
+Encoding: 1f
+U-Bits: 101011001000011000000001101110110101
+S-Bits: 81 7f 81 7f 81 81 7f 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 81 7f 81 7f 81
+Decoded: 1f
+
+Encoding: 1f
+U-Bits: 101011001000011000011100100011111100
+S-Bits: 81 7f 81 7f 81 81 7f 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 81 81 7f 7f
+Decoded: 1f
+
+Encoding: 1f
+U-Bits: 101011001000011000011011101011000010
+S-Bits: 81 7f 81 7f 81 81 7f 7f 81 7f 7f 7f 7f 81 81 7f 7f 7f 7f 81 81 7f 81 81 81 7f 81 7f 81 81 7f 7f 7f 7f 81 7f
+Decoded: 1f
+
+Encoding: 20
+U-Bits: 000000011010011110000000011101010001
+S-Bits: 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 81
+Decoded: 20
+
+Encoding: 20
+U-Bits: 000000011010011110011101010000011000
+S-Bits: 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 7f 7f
+Decoded: 20
+
+Encoding: 20
+U-Bits: 000000011010011110011010011000100110
+S-Bits: 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 81 81 7f 7f 7f 81 7f 7f 81 81 7f
+Decoded: 20
+
+Encoding: 21
+U-Bits: 110111111010011110011101010001110011
+S-Bits: 81 81 7f 81 81 81 81 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 81 81 81 7f 7f 81 81
+Decoded: 21
+
+Encoding: 21
+U-Bits: 110111111010011110000000011100111010
+S-Bits: 81 81 7f 81 81 81 81 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 81 7f
+Decoded: 21
+
+Encoding: 21
+U-Bits: 110111111010011110000111010100000100
+S-Bits: 81 81 7f 81 81 81 81 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 7f 7f 81 7f 7f
+Decoded: 21
+
+Encoding: 22
+U-Bits: 010001100010011110000111001110011000
+S-Bits: 7f 81 7f 7f 7f 81 81 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 7f 81 81 7f 7f 7f
+Decoded: 22
+
+Encoding: 22
+U-Bits: 010001100010011110011010000011010001
+S-Bits: 7f 81 7f 7f 7f 81 81 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 7f 81
+Decoded: 22
+
+Encoding: 22
+U-Bits: 010001100010011110011101001011101111
+S-Bits: 7f 81 7f 7f 7f 81 81 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 81 81 7f 81 81 81 81
+Decoded: 22
+
+Encoding: 23
+U-Bits: 100110000010011110011010000010111010
+S-Bits: 81 7f 7f 81 81 7f 7f 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 7f 7f 7f 81 7f 81 81 81 7f 81 7f
+Decoded: 23
+
+Encoding: 23
+U-Bits: 100110000010011110000111001111110011
+S-Bits: 81 7f 7f 81 81 7f 7f 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 81 81 81 7f 7f 81 81
+Decoded: 23
+
+Encoding: 23
+U-Bits: 100110000010011110000000000111001101
+S-Bits: 81 7f 7f 81 81 7f 7f 7f 7f 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 7f 81
+Decoded: 23
+
+Encoding: 24
+U-Bits: 001010000100011110011101001101001001
+S-Bits: 7f 7f 81 7f 81 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 81 7f 7f 81 7f 7f 81
+Decoded: 24
+
+Encoding: 24
+U-Bits: 001010000100011110000000000000000000
+S-Bits: 7f 7f 81 7f 81 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f
+Decoded: 24
+
+Encoding: 24
+U-Bits: 001010000100011110000111001000111110
+S-Bits: 7f 7f 81 7f 81 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 81 7f
+Decoded: 24
+
+Encoding: 25
+U-Bits: 111101100100011110000000000001101011
+S-Bits: 81 81 81 81 7f 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 81 81
+Decoded: 25
+
+Encoding: 25
+U-Bits: 111101100100011110011101001100100010
+S-Bits: 81 81 81 81 7f 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 7f 81 7f
+Decoded: 25
+
+Encoding: 25
+U-Bits: 111101100100011110011010000100011100
+S-Bits: 81 81 81 81 7f 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 7f 7f
+Decoded: 25
+
+Encoding: 26
+U-Bits: 011011111100011110011010011110000000
+S-Bits: 7f 81 81 7f 81 81 81 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f
+Decoded: 26
+
+Encoding: 26
+U-Bits: 011011111100011110000111010011001001
+S-Bits: 7f 81 81 7f 81 81 81 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 81
+Decoded: 26
+
+Encoding: 26
+U-Bits: 011011111100011110000000011011110111
+S-Bits: 7f 81 81 7f 81 81 81 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81
+Decoded: 26
+
+Encoding: 27
+U-Bits: 101100011100011110000111010010100010
+S-Bits: 81 7f 81 81 7f 7f 7f 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 7f 81 7f 7f 7f 81 7f
+Decoded: 27
+
+Encoding: 27
+U-Bits: 101100011100011110011010011111101011
+S-Bits: 81 7f 81 81 7f 7f 7f 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 81 81 7f 81 7f 81 81
+Decoded: 27
+
+Encoding: 27
+U-Bits: 101100011100011110011101010111010101
+S-Bits: 81 7f 81 81 7f 7f 7f 81 81 81 7f 7f 7f 81 81 81 81 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 81 7f 81 7f 81 7f 81
+Decoded: 27
+
+Encoding: 28
+U-Bits: 000110111101111110000111001001010101
+S-Bits: 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 81 7f 81 7f 81 7f 81
+Decoded: 28
+
+Encoding: 28
+U-Bits: 000110111101111110011010000100011100
+S-Bits: 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 7f 7f 81 81 81 7f 7f
+Decoded: 28
+
+Encoding: 28
+U-Bits: 000110111101111110011101001100100010
+S-Bits: 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81 81 81 81 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 7f 81 7f
+Decoded: 28
+
+Encoding: 29
+U-Bits: 110001011101111110011010000101110111
+S-Bits: 81 81 7f 7f 7f 81 7f 81 81 81 7f 81 81 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 7f 7f 81 7f 81 81 81 7f 81 81 81
+Decoded: 29
+
+Encoding: 29
+U-Bits: 110001011101111110000111001000111110
+S-Bits: 81 81 7f 7f 7f 81 7f 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 81 7f
+Decoded: 29
+
+Encoding: 29
+U-Bits: 110001011101111110000000000000000000
+S-Bits: 81 81 7f 7f 7f 81 7f 81 81 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f
+Decoded: 29
+
+Encoding: 2a
+U-Bits: 010111000101111110000000011010011100
+S-Bits: 7f 81 7f 81 81 81 7f 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 7f 7f 81 81 81 7f 7f
+Decoded: 2a
+
+Encoding: 2a
+U-Bits: 010111000101111110011101010111010101
+S-Bits: 7f 81 7f 81 81 81 7f 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 81 7f 81 7f 81 7f 81
+Decoded: 2a
+
+Encoding: 2a
+U-Bits: 010111000101111110011010011111101011
+S-Bits: 7f 81 7f 81 81 81 7f 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 81 81 81 81 81 81 7f 81 7f 81 81
+Decoded: 2a
+
+Encoding: 2b
+U-Bits: 100000100101111110011101010110111110
+S-Bits: 81 7f 7f 7f 7f 7f 81 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 7f 81 81 81 81 81 7f
+Decoded: 2b
+
+Encoding: 2b
+U-Bits: 100000100101111110000000011011110111
+S-Bits: 81 7f 7f 7f 7f 7f 81 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 7f 81 81 81 81 7f 81 81 81
+Decoded: 2b
+
+Encoding: 2b
+U-Bits: 100000100101111110000111010011001001
+S-Bits: 81 7f 7f 7f 7f 7f 81 7f 7f 81 7f 81 81 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 81
+Decoded: 2b
+
+Encoding: 2c
+U-Bits: 001100100011111110011010011001001101
+S-Bits: 7f 7f 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 81 81 7f 81 7f 7f 81 81 7f 7f 81 7f 7f 81 81 7f 81
+Decoded: 2c
+
+Encoding: 2c
+U-Bits: 001100100011111110000111010100000100
+S-Bits: 7f 7f 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 7f 7f 7f 7f 81 7f 7f
+Decoded: 2c
+
+Encoding: 2c
+U-Bits: 001100100011111110000000011100111010
+S-Bits: 7f 7f 81 81 7f 7f 81 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 7f 7f 7f 7f 81 81 81 7f 7f 81 81 81 7f 81 7f
+Decoded: 2c
+
+Encoding: 2d
+U-Bits: 111011000011111110000111010101101111
+S-Bits: 81 81 81 7f 81 81 7f 7f 7f 7f 81 81 81 81 81 81 81 7f 7f 7f 7f 81 81 81 7f 81 7f 81 7f 81 81 7f 81 81 81 81
+Decoded: 2d
+
+Encoding: 2d
+U-Bits: 111011000011111110011010011000100110
+S-Bits: 81 81 81