From 34abccdf6ecd4a0b7d48453c25e7ba40e45daa38 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Sun, 13 Jul 2025 08:23:34 +0200 Subject: [PATCH] trimmed modes to free some bits in first symbol --- Makefile | 2 +- README.md | 44 +++------- common.hh | 228 ++++++++---------------------------------------- decode.cc | 19 ++-- encode.cc | 13 +-- freezer.cc | 1 - polar_tables.hh | 1 - 7 files changed, 58 insertions(+), 250 deletions(-) diff --git a/Makefile b/Makefile index da3ed26..4403f7f 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ CXX = clang++ -stdlib=libc++ -march=native all: encode decode test: encode decode - $(QEMU) ./encode audio.wav 8000 8 1 1500 17 /dev/urandom + $(QEMU) ./encode audio.wav 8000 8 1 1500 5 /dev/urandom $(QEMU) ./decode audio.wav /dev/null encode: encode.cc common.hh diff --git a/README.md b/README.md index e65c02b..637def1 100644 --- a/README.md +++ b/README.md @@ -3,16 +3,16 @@ Quick start: -Create file ```uncoded.dat``` with ```2048``` bits of random data: +Create file ```uncoded.dat``` with ```8192``` bits of random data: ``` -dd if=/dev/urandom of=uncoded.dat bs=1 count=256 +dd if=/dev/urandom of=uncoded.dat bs=1 count=1024 ``` Encode file ```uncoded.dat``` to ```encoded.wav``` [WAV](https://en.wikipedia.org/wiki/WAV) audio file with 8000 Hz sample rate, 16 bits and only 1 (real) channel: ``` -./encode encoded.wav 8000 16 1 1500 17 uncoded.dat +./encode encoded.wav 8000 16 1 1500 5 uncoded.dat ``` Start recording to ```recorded.wav``` audio file and stop after 5 seconds: @@ -44,36 +44,16 @@ diff -s uncoded.dat decoded.dat All modes need a bandwidth of 2000 Hz and use a 1/2-rate forward error correction code These use a differential modulation scheme: -* Mode 0: DBPSK, 1.70 seconds and 128 bytes -* Mode 1: DBPSK, 3.06 seconds and 256 bytes -* Mode 2: DBPSK, 5.78 seconds and 512 bytes -* Mode 3: DQPSK, 1.02 seconds and 128 bytes -* Mode 4: DQPSK, 1.70 seconds and 256 bytes -* Mode 5: DQPSK, 3.06 seconds and 512 bytes -* Mode 6: DQPSK, 5.78 seconds and 1024 bytes -* Mode 7: D8PSK, 2.21 seconds and 512 bytes -* Mode 8: D8PSK, 4.08 seconds and 1024 bytes -* Mode 9: D8PSK, 7.82 seconds and 2048 bytes +* Mode 0: DBPSK, 3.06 seconds and 256 bytes +* Mode 1: DQPSK, 3.06 seconds and 512 bytes +* Mode 2: D8PSK, 4.08 seconds and 1024 bytes And these a coherent modulation scheme: -* Mode 10: BPSK, 1.70 seconds and 128 bytes -* Mode 11: BPSK, 3.06 seconds and 256 bytes -* Mode 12: BPSK, 5.78 seconds and 512 bytes -* Mode 13: QPSK, 1.02 seconds and 128 bytes -* Mode 14: QPSK, 1.70 seconds and 256 bytes -* Mode 15: QPSK, 3.06 seconds and 512 bytes -* Mode 16: QPSK, 5.78 seconds and 1024 bytes -* Mode 17: QAM16, 1.02 seconds and 256 bytes -* Mode 18: QAM16, 1.70 seconds and 512 bytes -* Mode 19: QAM16, 3.06 seconds and 1024 bytes -* Mode 20: QAM16, 5.78 seconds and 2048 bytes -* Mode 21: QAM64, 2.21 seconds and 1024 bytes -* Mode 22: QAM64, 4.08 seconds and 2048 bytes -* Mode 23: QAM64, 7.82 seconds and 4096 bytes -* Mode 24: QAM256, 1.02 seconds and 512 bytes -* Mode 25: QAM256, 1.70 seconds and 1024 bytes -* Mode 26: QAM256, 3.06 seconds and 2048 bytes -* Mode 27: QAM256, 5.78 seconds and 4096 bytes +* Mode 3: BPSK, 3.06 seconds and 256 bytes +* Mode 4: QPSK, 3.06 seconds and 512 bytes +* Mode 5: QAM16, 3.06 seconds and 1024 bytes +* Mode 6: QAM64, 4.08 seconds and 2048 bytes +* Mode 7: QAM256, 5.78 seconds and 4096 bytes ### Simulating @@ -82,7 +62,7 @@ Prerequisite: [disorders](https://github.com/aicodix/disorders) Encode ```uncoded.dat``` to [analytic](https://en.wikipedia.org/wiki/Analytic_signal) audio signal, add [multipath](https://en.wikipedia.org/wiki/Multipath_propagation), [CFO, SFO](https://en.wikipedia.org/wiki/Carrier_frequency_offset), [AWGN](https://en.wikipedia.org/wiki/Additive_white_Gaussian_noise), decode and compare: ``` -./encode - 8000 16 2 1500 17 uncoded.dat | ../disorders/multipath - - ../disorders/multipath.txt 10 | ../disorders/cfo - - 234.567 | ../disorders/sfo - - 147 | ../disorders/awgn - - -20 | ./decode - - | diff -q -s uncoded.dat - +./encode - 8000 16 2 1500 5 uncoded.dat | ../disorders/multipath - - ../disorders/multipath.txt 10 | ../disorders/cfo - - 234.567 | ../disorders/sfo - - 147 | ../disorders/awgn - - -20 | ./decode - - | diff -q -s uncoded.dat - ``` ### Reading diff --git a/common.hh b/common.hh index 549bec8..e110f32 100644 --- a/common.hh +++ b/common.hh @@ -16,7 +16,7 @@ struct Common static const int code_max = 16; static const int bits_max = 1 << code_max; static const int data_max = 4096; - static const int symbols_max = 44; + static const int symbols_max = 32; static const int mls0_poly = 0x331; static const int mls0_seed = 214; static const int mls1_poly = 0x43; @@ -55,14 +55,6 @@ struct Common { switch (mode) { case 0: - mod_bits = 1; - symbol_count = 8; - differential = true; - code_order = 11; - data_bits = 1024; - frozen_bits = frozen_2048_1056; - break; - case 1: mod_bits = 1; symbol_count = 16; differential = true; @@ -70,207 +62,55 @@ struct Common data_bits = 2048; frozen_bits = frozen_4096_2080; break; - case 2: - mod_bits = 1; - symbol_count = 32; + case 1: + mod_bits = 2; + symbol_count = 16; differential = true; code_order = 13; data_bits = 4096; frozen_bits = frozen_8192_4128; break; - case 3: - mod_bits = 2; - symbol_count = 4; + case 2: + mod_bits = 3; + symbol_count = 22; differential = true; - code_order = 11; - data_bits = 1024; - frozen_bits = frozen_2048_1056; + code_order = 14; + data_bits = 8192; + frozen_bits = frozen_16384_8224; + break; + case 3: + mod_bits = 1; + symbol_count = 16; + differential = false; + code_order = 12; + data_bits = 2048; + frozen_bits = frozen_4096_2080; break; case 4: mod_bits = 2; - symbol_count = 8; - differential = true; - code_order = 12; - data_bits = 2048; - frozen_bits = frozen_4096_2080; + symbol_count = 16; + differential = false; + code_order = 13; + data_bits = 4096; + frozen_bits = frozen_8192_4128; break; case 5: - mod_bits = 2; + mod_bits = 4; symbol_count = 16; - differential = true; - code_order = 13; - data_bits = 4096; - frozen_bits = frozen_8192_4128; + differential = false; + code_order = 14; + data_bits = 8192; + frozen_bits = frozen_16384_8224; break; case 6: - mod_bits = 2; - symbol_count = 32; - differential = true; - code_order = 14; - data_bits = 8192; - frozen_bits = frozen_16384_8224; + mod_bits = 6; + symbol_count = 22; + differential = false; + code_order = 15; + data_bits = 16384; + frozen_bits = frozen_32768_16416; break; case 7: - mod_bits = 3; - symbol_count = 11; - differential = true; - code_order = 13; - data_bits = 4096; - frozen_bits = frozen_8192_4128; - break; - case 8: - mod_bits = 3; - symbol_count = 22; - differential = true; - code_order = 14; - data_bits = 8192; - frozen_bits = frozen_16384_8224; - break; - case 9: - mod_bits = 3; - symbol_count = 44; - differential = true; - code_order = 15; - data_bits = 16384; - frozen_bits = frozen_32768_16416; - break; - case 10: - mod_bits = 1; - symbol_count = 8; - differential = false; - code_order = 11; - data_bits = 1024; - frozen_bits = frozen_2048_1056; - break; - case 11: - mod_bits = 1; - symbol_count = 16; - differential = false; - code_order = 12; - data_bits = 2048; - frozen_bits = frozen_4096_2080; - break; - case 12: - mod_bits = 1; - symbol_count = 32; - differential = false; - code_order = 13; - data_bits = 4096; - frozen_bits = frozen_8192_4128; - break; - case 13: - mod_bits = 2; - symbol_count = 4; - differential = false; - code_order = 11; - data_bits = 1024; - frozen_bits = frozen_2048_1056; - break; - case 14: - mod_bits = 2; - symbol_count = 8; - differential = false; - code_order = 12; - data_bits = 2048; - frozen_bits = frozen_4096_2080; - break; - case 15: - mod_bits = 2; - symbol_count = 16; - differential = false; - code_order = 13; - data_bits = 4096; - frozen_bits = frozen_8192_4128; - break; - case 16: - mod_bits = 2; - symbol_count = 32; - differential = false; - code_order = 14; - data_bits = 8192; - frozen_bits = frozen_16384_8224; - break; - case 17: - mod_bits = 4; - symbol_count = 4; - differential = false; - code_order = 12; - data_bits = 2048; - frozen_bits = frozen_4096_2080; - break; - case 18: - mod_bits = 4; - symbol_count = 8; - differential = false; - code_order = 13; - data_bits = 4096; - frozen_bits = frozen_8192_4128; - break; - case 19: - mod_bits = 4; - symbol_count = 16; - differential = false; - code_order = 14; - data_bits = 8192; - frozen_bits = frozen_16384_8224; - break; - case 20: - mod_bits = 4; - symbol_count = 32; - differential = false; - code_order = 15; - data_bits = 16384; - frozen_bits = frozen_32768_16416; - break; - case 21: - mod_bits = 6; - symbol_count = 11; - differential = false; - code_order = 14; - data_bits = 8192; - frozen_bits = frozen_16384_8224; - break; - case 22: - mod_bits = 6; - symbol_count = 22; - differential = false; - code_order = 15; - data_bits = 16384; - frozen_bits = frozen_32768_16416; - break; - case 23: - mod_bits = 6; - symbol_count = 44; - differential = false; - code_order = 16; - data_bits = 32768; - frozen_bits = frozen_65536_32800; - break; - case 24: - mod_bits = 8; - symbol_count = 4; - differential = false; - code_order = 13; - data_bits = 4096; - frozen_bits = frozen_8192_4128; - break; - case 25: - mod_bits = 8; - symbol_count = 8; - differential = false; - code_order = 14; - data_bits = 8192; - frozen_bits = frozen_16384_8224; - break; - case 26: - mod_bits = 8; - symbol_count = 16; - differential = false; - code_order = 15; - data_bits = 16384; - frozen_bits = frozen_32768_16416; - break; - case 27: mod_bits = 8; symbol_count = 32; differential = false; diff --git a/decode.cc b/decode.cc index 3a07862..b2de035 100644 --- a/decode.cc +++ b/decode.cc @@ -140,12 +140,7 @@ struct Decoder : Common } void shuffle(code_type *dest, const code_type *src) { - if (code_order == 11) { - CODE::XorShiftMask seq; - dest[0] = src[0]; - for (int i = 1; i < 2048; ++i) - dest[seq()] = src[i]; - } else if (code_order == 12) { + if (code_order == 12) { CODE::XorShiftMask seq; dest[0] = src[0]; for (int i = 1; i < 4096; ++i) @@ -238,13 +233,13 @@ struct Decoder : Common seq1(); } int mode = hadamard_decoder(meta); - if (mode < 0 || mode > 27) { + if (mode < 0 || mode > 7) { std::cerr << "operation mode " << mode << " unsupported." << std::endl; continue; } setup(mode); std::cerr << "oper mode: " << oper_mode << std::endl; - if (oper_mode >= 10) { + if (oper_mode >= 3) { for (int i = 0; i < tone_count; ++i) tone[i] *= DSP::polar(1, tse(i+tone_off)); for (int i = 0; i < tone_count; ++i) @@ -339,9 +334,9 @@ struct Decoder : Common cmplx hard(1, 0); if (i % block_length != meta_off && i % block_length != seed_off) { int bits = mod_bits; - if (oper_mode >= 7 && oper_mode <= 9 && l % 32 == 30) + if (oper_mode == 2 && l % 32 == 30) bits = 2; - if (oper_mode >= 21 && oper_mode <= 23 && l % 64 == 60) + if (oper_mode == 6 && l % 64 == 60) bits = 4; demap_hard(perm+l, demod[i], bits); hard = map_bits(perm+l, bits); @@ -357,9 +352,9 @@ struct Decoder : Common for (int i = 0; i < tone_count; ++i) { if (i % block_length != meta_off && i % block_length != seed_off) { int bits = mod_bits; - if (oper_mode >= 7 && oper_mode <= 9 && k % 32 == 30) + if (oper_mode == 2 && k % 32 == 30) bits = 2; - if (oper_mode >= 21 && oper_mode <= 23 && k % 64 == 60) + if (oper_mode == 6 && k % 64 == 60) bits = 4; demap_soft(perm+k, demod[i], precision, bits); k += bits; diff --git a/encode.cc b/encode.cc index 51bec75..e99bd7b 100644 --- a/encode.cc +++ b/encode.cc @@ -207,12 +207,7 @@ struct Encoder : public Common } void shuffle(code_type *dest, const code_type *src) { - if (code_order == 11) { - CODE::XorShiftMask seq; - dest[0] = src[0]; - for (int i = 1; i < 2048; ++i) - dest[i] = src[seq()]; - } else if (code_order == 12) { + if (code_order == 12) { CODE::XorShiftMask seq; dest[0] = src[0]; for (int i = 1; i < 4096; ++i) @@ -290,9 +285,9 @@ struct Encoder : public Common tone[i] = nrz(seq1()); } else { int bits = mod_bits; - if (oper_mode >= 7 && oper_mode <= 9 && k % 32 == 30) + if (oper_mode == 2 && k % 32 == 30) bits = 2; - if (oper_mode >= 21 && oper_mode <= 23 && k % 64 == 60) + if (oper_mode == 6 && k % 64 == 60) bits = 4; tone[i] = map_bits(perm+k, bits); k += bits; @@ -328,7 +323,7 @@ int main(int argc, char **argv) } int input_count = argc - 7; int oper_mode = std::atoi(argv[6]); - if (oper_mode < 0 || oper_mode > 27) { + if (oper_mode < 0 || oper_mode > 7) { std::cerr << "Unsupported operation mode." << std::endl; return 1; } diff --git a/freezer.cc b/freezer.cc index c9feacd..1b79863 100644 --- a/freezer.cc +++ b/freezer.cc @@ -32,6 +32,5 @@ int main() code<14>(16384, 8192+32, 0.39); code<13>(8192, 4096+32, 0.38); code<12>(4096, 2048+32, 0.37); - code<11>(2048, 1024+32, 0.34); return 0; } diff --git a/polar_tables.hh b/polar_tables.hh index 606bc13..f09ffcb 100644 --- a/polar_tables.hh +++ b/polar_tables.hh @@ -3,4 +3,3 @@ static const uint32_t frozen_32768_16416[1024] = { 0xffffffff, 0xffffffff, 0xfff static const uint32_t frozen_16384_8224[512] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x1171fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x17ffffff, 0x177fffff, 0x3177f, 0xffffffff, 0xffffffff, 0xffffffff, 0x177fffff, 0x7fffffff, 0x77f7fff, 0x11f7fff, 0x10117, 0x7fffffff, 0x1171fff, 0x117177f, 0x117, 0x17177f, 0x3, 0x1, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x17ffffff, 0xffffffff, 0x177f7fff, 0x37f7fff, 0x1011f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177fffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x37f7fff, 0x7fffffff, 0x1171fff, 0x117177f, 0x117, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0x177fffff, 0x7177f, 0x1017f, 0x1, 0x37f7fff, 0x1011f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x11717ff, 0xffffffff, 0x1fffffff, 0x177fffff, 0x7177f, 0x77f7fff, 0x1013f, 0x10117, 0x1, 0xffffffff, 0x177f7fff, 0x13f7fff, 0x10117, 0x1171fff, 0x10117, 0x10117, 0x0, 0x117177f, 0x17, 0x3, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7fffffff, 0x1171fff, 0x117177f, 0x117, 0x17177f, 0x3, 0x1, 0x0, 0x1037f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1011f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x11f7fff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0x177f7fff, 0x3177f, 0x1013f, 0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x1fffffff, 0x177fffff, 0x17177f, 0xffffffff, 0x177f7fff, 0x37f7fff, 0x1011f, 0x1171fff, 0x10117, 0x10117, 0x1, 0x7fffffff, 0x11f7fff, 0x11717ff, 0x10117, 0x117177f, 0x7, 0x1, 0x0, 0x3177f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x17f7fff, 0x1171fff, 0x10117, 0x3fffffff, 0x11717ff, 0x117177f, 0x7, 0x3177f, 0x1, 0x1, 0x0, 0x177fffff, 0x7177f, 0x1017f, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x37f7fff, 0x1011f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7fffffff, 0x3fffffff, 0x11717ff, 0x177fffff, 0x17177f, 0x1037f, 0x1, 0x77f7fff, 0x1013f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x1173fff, 0x10117, 0x10117, 0x1, 0x117, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x117177f, 0x10117, 0x17, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17177f, 0x3, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, }; static const uint32_t frozen_8192_4128[256] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x1171fff, 0xffffffff, 0x3fffffff, 0x177fffff, 0x17177f, 0x177f7fff, 0x1017f, 0x10117, 0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffffffff, 0x177fffff, 0x77f7fff, 0x1013f, 0x7fffffff, 0x17f7fff, 0x1171fff, 0x10117, 0x117177f, 0x17, 0x3, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x77f7fff, 0x7fffffff, 0x1173fff, 0x117177f, 0x117, 0x17ffffff, 0x117177f, 0x3177f, 0x1, 0x1013f, 0x1, 0x1, 0x0, 0x177f7fff, 0x1017f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x13f7fff, 0x1171fff, 0x10117, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x1173fff, 0x17ffffff, 0x117177f, 0x7177f, 0x1, 0x177f7fff, 0x1077f, 0x1011f, 0x1, 0x10117, 0x1, 0x1, 0x0, 0xffffffff, 0x1fffffff, 0x177fffff, 0x3177f, 0x37f7fff, 0x1011f, 0x10117, 0x1, 0x1173fff, 0x10117, 0x10117, 0x0, 0x17, 0x0, 0x0, 0x0, 0x117177f, 0x17, 0x3, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffff, 0x37f7fff, 0x1177fff, 0x10117, 0x11717ff, 0x117, 0x7, 0x0, 0x17177f, 0x3, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1037f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1011f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, }; static const uint32_t frozen_4096_2080[128] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x17ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x77f7fff, 0x7fffffff, 0x1173fff, 0x11717ff, 0x117, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x13f7fff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0x177fffff, 0x3077f, 0x1013f, 0x1, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1017f, 0x11f7fff, 0x10117, 0x10117, 0x0, 0x11717ff, 0x117, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x17ffffff, 0x177fffff, 0x1077f, 0xffffffff, 0x177f7fff, 0x13f7fff, 0x10117, 0x11717ff, 0x10117, 0x17, 0x0, 0x7fffffff, 0x1171fff, 0x117177f, 0x17, 0x3177f, 0x1, 0x1, 0x0, 0x1013f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x177fffff, 0x7177f, 0x1037f, 0x1, 0x1011f, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, }; -static const uint32_t frozen_2048_1056[64] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1013f, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x13f7fff, 0x1171fff, 0x10117, 0x1fffffff, 0x11717ff, 0x7177f, 0x1, 0x1037f, 0x1, 0x1, 0x0, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x11717ff, 0x17ffffff, 0x7177f, 0x1037f, 0x1, 0x77f7fff, 0x1013f, 0x10117, 0x1, 0x10117, 0x1, 0x0, 0x0, 0x1173fff, 0x10117, 0x117, 0x0, 0x7, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };