diff --git a/decode.cc b/decode.cc index c1f4931..f35bb74 100644 --- a/decode.cc +++ b/decode.cc @@ -6,7 +6,6 @@ Copyright 2021 Ahmet Inan #include #include -#include #include namespace DSP { using std::abs; using std::min; using std::cos; using std::sin; } #include "schmidl_cox.hh" @@ -30,7 +29,7 @@ namespace DSP { using std::abs; using std::min; using std::cos; using std::sin; #include "psk.hh" #include "qam.hh" #include "polar_tables.hh" -#include "polar_parity_aided.hh" +#include "polar_list_decoder.hh" void base37_decoder(char *str, long long int val, int len) { @@ -77,7 +76,7 @@ struct Decoder CODE::CRC crc0; CODE::CRC crc1; CODE::OrderedStatisticsDecoder<255, 71, 4> osddec; - CODE::PolarParityDecoder polardec; + CODE::PolarListDecoder polardec; CODE::ReverseFisherYatesShuffle<4096> shuffle_4096; CODE::ReverseFisherYatesShuffle<8192> shuffle_8192; CODE::ReverseFisherYatesShuffle<16384> shuffle_16384; @@ -251,8 +250,6 @@ struct Decoder std::cerr << "call sign: " << call_sign << std::endl; if (!oper_mode) continue; - int parity_stride = 0; - int first_parity = 0; int data_bits = 0; int cons_rows = 0; int comb_cols = 0; @@ -265,9 +262,7 @@ struct Decoder code_order = 12; code_cols = 256; data_bits = 2048; - parity_stride = 31; - first_parity = 3; - frozen_bits = frozen_4096_2147; + frozen_bits = frozen_4096_2080; break; case 24: mod_bits = 2; @@ -276,9 +271,7 @@ struct Decoder code_order = 13; code_cols = 256; data_bits = 4096; - parity_stride = 31; - first_parity = 5; - frozen_bits = frozen_8192_4261; + frozen_bits = frozen_8192_4128; break; case 25: mod_bits = 2; @@ -287,9 +280,7 @@ struct Decoder code_order = 14; code_cols = 256; data_bits = 8192; - parity_stride = 31; - first_parity = 9; - frozen_bits = frozen_16384_8489; + frozen_bits = frozen_16384_8224; break; case 26: mod_bits = 4; @@ -298,9 +289,7 @@ struct Decoder code_order = 12; code_cols = 256; data_bits = 2048; - parity_stride = 31; - first_parity = 3; - frozen_bits = frozen_4096_2147; + frozen_bits = frozen_4096_2080; break; case 27: mod_bits = 4; @@ -309,9 +298,7 @@ struct Decoder code_order = 13; code_cols = 256; data_bits = 4096; - parity_stride = 31; - first_parity = 5; - frozen_bits = frozen_8192_4261; + frozen_bits = frozen_8192_4128; break; case 28: mod_bits = 4; @@ -320,9 +307,7 @@ struct Decoder code_order = 14; code_cols = 256; data_bits = 8192; - parity_stride = 31; - first_parity = 9; - frozen_bits = frozen_16384_8489; + frozen_bits = frozen_16384_8224; break; case 29: mod_bits = 6; @@ -331,9 +316,7 @@ struct Decoder code_order = 13; code_cols = 273; data_bits = 4096; - parity_stride = 31; - first_parity = 5; - frozen_bits = frozen_8192_4261; + frozen_bits = frozen_8192_4128; break; case 30: mod_bits = 6; @@ -342,9 +325,7 @@ struct Decoder code_order = 14; code_cols = 273; data_bits = 8192; - parity_stride = 31; - first_parity = 9; - frozen_bits = frozen_16384_8489; + frozen_bits = frozen_16384_8224; break; default: return; @@ -458,7 +439,7 @@ struct Decoder for (int i = code_cols * cons_rows * mod_bits; i < bits_max; ++i) code[i] = 0; shuffle(code); - polardec(nullptr, mesg, code, frozen_bits, code_order, parity_stride, first_parity); + polardec(nullptr, mesg, code, frozen_bits, code_order); int best = -1; for (int k = 0; k < mesg_type::SIZE; ++k) { crc1.reset(); diff --git a/encode.cc b/encode.cc index c791904..9b35337 100644 --- a/encode.cc +++ b/encode.cc @@ -6,7 +6,6 @@ Copyright 2021 Ahmet Inan #include #include -#include #include #include "xorshift.hh" #include "complex.hh" @@ -22,7 +21,7 @@ Copyright 2021 Ahmet Inan #include "psk.hh" #include "qam.hh" #include "polar_tables.hh" -#include "polar_parity_aided.hh" +#include "polar_encoder.hh" #include "bose_chaudhuri_hocquenghem_encoder.hh" template @@ -45,7 +44,7 @@ struct Encoder CODE::CRC crc0; CODE::CRC crc1; CODE::BoseChaudhuriHocquenghemEncoder<255, 71> bchenc; - CODE::PolarParityEncoder polarenc; + CODE::PolarEncoder polarenc; CODE::FisherYatesShuffle<4096> shuffle_4096; CODE::FisherYatesShuffle<8192> shuffle_8192; CODE::FisherYatesShuffle<16384> shuffle_16384; @@ -252,8 +251,6 @@ struct Encoder oper_mode(oper_mode) { const uint32_t *frozen_bits = nullptr; - int parity_stride = 0; - int first_parity = 0; int code_cols = 0; int comb_cols = 0; int comb_dist = 1; @@ -271,10 +268,8 @@ struct Encoder code_order = 12; code_cols = 256; data_bits = 2048; - parity_stride = 31; - first_parity = 3; - frozen_bits = frozen_4096_2147; reserved_tones = 0; + frozen_bits = frozen_4096_2080; break; case 24: mod_bits = 2; @@ -283,10 +278,8 @@ struct Encoder code_order = 13; code_cols = 256; data_bits = 4096; - parity_stride = 31; - first_parity = 5; - frozen_bits = frozen_8192_4261; reserved_tones = 0; + frozen_bits = frozen_8192_4128; break; case 25: mod_bits = 2; @@ -295,10 +288,8 @@ struct Encoder code_order = 14; code_cols = 256; data_bits = 8192; - parity_stride = 31; - first_parity = 9; - frozen_bits = frozen_16384_8489; reserved_tones = 0; + frozen_bits = frozen_16384_8224; break; case 26: mod_bits = 4; @@ -307,10 +298,8 @@ struct Encoder code_order = 12; code_cols = 256; data_bits = 2048; - parity_stride = 31; - first_parity = 3; - frozen_bits = frozen_4096_2147; reserved_tones = 8; + frozen_bits = frozen_4096_2080; break; case 27: mod_bits = 4; @@ -319,10 +308,8 @@ struct Encoder code_order = 13; code_cols = 256; data_bits = 4096; - parity_stride = 31; - first_parity = 5; - frozen_bits = frozen_8192_4261; reserved_tones = 8; + frozen_bits = frozen_8192_4128; break; case 28: mod_bits = 4; @@ -331,10 +318,8 @@ struct Encoder code_order = 14; code_cols = 256; data_bits = 8192; - parity_stride = 31; - first_parity = 9; - frozen_bits = frozen_16384_8489; reserved_tones = 8; + frozen_bits = frozen_16384_8224; break; case 29: mod_bits = 6; @@ -343,10 +328,8 @@ struct Encoder code_order = 13; code_cols = 273; data_bits = 4096; - parity_stride = 31; - first_parity = 5; - frozen_bits = frozen_8192_4261; reserved_tones = 15; + frozen_bits = frozen_8192_4128; break; case 30: mod_bits = 6; @@ -355,10 +338,8 @@ struct Encoder code_order = 14; code_cols = 273; data_bits = 8192; - parity_stride = 31; - first_parity = 9; - frozen_bits = frozen_16384_8489; reserved_tones = 15; + frozen_bits = frozen_16384_8224; break; default: return; @@ -411,7 +392,7 @@ struct Encoder crc1(input_data[i]); for (int i = 0; i < 32; ++i) mesg[i+data_bits] = nrz((crc1()>>i)&1); - polarenc(code, mesg, frozen_bits, code_order, parity_stride, first_parity); + polarenc(code, mesg, frozen_bits, code_order); shuffle(code); for (int i = 0; i < cons_cols; ++i) prev[i] = fdom[bin(i+code_off)]; diff --git a/freezer.cc b/freezer.cc index 41ac1d2..a8a6e8f 100644 --- a/freezer.cc +++ b/freezer.cc @@ -25,7 +25,6 @@ void code(int N, int K) (*freeze)(frozen, M, K+(1<(4096, 2048+32+67); - code<13>(8192, 4096+32+133); - code<14>(16384, 8192+32+265); + code<14>(16384, 8192+32); + code<13>(8192, 4096+32); + code<12>(4096, 2048+32); return 0; } diff --git a/polar_tables.hh b/polar_tables.hh index 3d0d720..c55a18e 100644 --- a/polar_tables.hh +++ b/polar_tables.hh @@ -1,3 +1,3 @@ -static const uint32_t frozen_4096_2147[128] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177fffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x13f7fff, 0x7fffffff, 0x11717ff, 0x117177f, 0x7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x1171fff, 0xffffffff, 0x7fffffff, 0x17ffffff, 0x17177f, 0x177f7fff, 0x1017f, 0x10117, 0x1, 0xffffffff, 0x177f7fff, 0x17f7fff, 0x1011f, 0x1171fff, 0x10117, 0x117, 0x0, 0x117177f, 0x17, 0x3, 0x0, 0x1, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1017f, 0x7fffffff, 0x17f7fff, 0x1173fff, 0x10117, 0x117177f, 0x17, 0x3, 0x0, 0x3fffffff, 0x11717ff, 0x17177f, 0x3, 0x1077f, 0x1, 0x1, 0x0, 0x1011f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x177fffff, 0x1077f, 0x1013f, 0x1, 0x10117, 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_8192_4261[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, 0x177fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x17f7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1077f, 0x13f7fff, 0x10117, 0x10117, 0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x1fffffff, 0x177fffff, 0x7177f, 0xffffffff, 0xffffffff, 0xffffffff, 0x177fffff, 0xffffffff, 0x177f7fff, 0x11f7fff, 0x10117, 0x7fffffff, 0x1171fff, 0x117177f, 0x10117, 0x17177f, 0x3, 0x1, 0x0, 0xffffffff, 0xffffffff, 0x7fffffff, 0x11f7fff, 0x1fffffff, 0x117177f, 0x117177f, 0x7, 0x177fffff, 0x7177f, 0x1017f, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x37f7fff, 0x1011f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177fffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x37f7fff, 0x7fffffff, 0x1171fff, 0x117177f, 0x10117, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0x177fffff, 0x7177f, 0x1037f, 0x1, 0x77f7fff, 0x1011f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1017f, 0x11f7fff, 0x10117, 0x10117, 0x1, 0x11717ff, 0x10117, 0x117, 0x0, 0x7, 0x0, 0x0, 0x0, 0x117177f, 0x17, 0x3, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffff, 0x11f7fff, 0x11717ff, 0x10117, 0x117177f, 0x117, 0x7, 0x0, 0x7177f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1017f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10117, 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_16384_8489[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, 0x7fffffff, 0x77f7fff, 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, 0xffffffff, 0x7fffffff, 0x17ffffff, 0x117177f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x17ffffff, 0xffffffff, 0x177f7fff, 0x37f7fff, 0x1011f, 0xffffffff, 0xffffffff, 0x7fffffff, 0x177f7fff, 0x7fffffff, 0x1171fff, 0x117177f, 0x10117, 0x17ffffff, 0x117177f, 0x117177f, 0x7, 0x1077f, 0x1, 0x1, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x13f7fff, 0x1171fff, 0x10117, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x77f7fff, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x11717ff, 0x177fffff, 0x117177f, 0x7177f, 0x1, 0xffffffff, 0x17ffffff, 0x177f7fff, 0x17177f, 0x77f7fff, 0x1013f, 0x10117, 0x1, 0x1173fff, 0x10117, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x3fffffff, 0x177fffff, 0x117177f, 0xffffffff, 0x177f7fff, 0x177f7fff, 0x1013f, 0x11f7fff, 0x10117, 0x10117, 0x1, 0x7fffffff, 0x13f7fff, 0x11717ff, 0x10117, 0x117177f, 0x10117, 0x117, 0x0, 0x117177f, 0x7, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1fffffff, 0x117177f, 0x117177f, 0x17, 0x3177f, 0x1, 0x1, 0x0, 0x1017f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x10117, 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, 0x7fffffff, 0x77f7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0xffffffff, 0x17ffffff, 0x177f7fff, 0x7177f, 0x77f7fff, 0x1011f, 0x10117, 0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0x177f7fff, 0x177f7fff, 0x1017f, 0x7fffffff, 0x17f7fff, 0x1171fff, 0x10117, 0x117177f, 0x10117, 0x10117, 0x0, 0x3fffffff, 0x117177f, 0x117177f, 0x117, 0x17177f, 0x3, 0x1, 0x0, 0x1037f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7fffffff, 0x37f7fff, 0x7fffffff, 0x11717ff, 0x117177f, 0x10117, 0x177fffff, 0x117177f, 0x7177f, 0x1, 0x1037f, 0x1, 0x1, 0x0, 0x177f7fff, 0x1037f, 0x1011f, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x11f7fff, 0x10117, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7fffffff, 0x177fffff, 0x117177f, 0x177f7fff, 0x3177f, 0x1013f, 0x1, 0x17f7fff, 0x10117, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x11717ff, 0x10117, 0x10117, 0x1, 0x10117, 0x1, 0x0, 0x0, 0x117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x117177f, 0x10117, 0x117, 0x0, 0x7, 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, 0x117177f, 0x7, 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_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, 0x11717ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x177fffff, 0x177f7fff, 0x3177f, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x37f7fff, 0x1171fff, 0x10117, 0x7fffffff, 0x11717ff, 0x117177f, 0x10117, 0x117177f, 0x7, 0x1, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177fffff, 0xffffffff, 0x177f7fff, 0x13f7fff, 0x10117, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x11f7fff, 0x3fffffff, 0x117177f, 0x117177f, 0x117, 0xffffffff, 0x7fffffff, 0x17ffffff, 0x117177f, 0x177f7fff, 0x3177f, 0x1017f, 0x1, 0x17f7fff, 0x1011f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0xffffffff, 0x17ffffff, 0x177f7fff, 0x7177f, 0x77f7fff, 0x1011f, 0x10117, 0x1, 0x7fffffff, 0x177f7fff, 0x11f7fff, 0x10117, 0x11717ff, 0x10117, 0x10117, 0x1, 0x117177f, 0x10117, 0x17, 0x0, 0x3, 0x0, 0x0, 0x0, 0x7fffffff, 0x11717ff, 0x117177f, 0x10117, 0x117177f, 0x7, 0x1, 0x0, 0x3177f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1013f, 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, 0x177f7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x1173fff, 0xffffffff, 0x7fffffff, 0x177fffff, 0x117177f, 0x177f7fff, 0x3177f, 0x1013f, 0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x17ffffff, 0x177f7fff, 0x7177f, 0xffffffff, 0x177f7fff, 0x13f7fff, 0x10117, 0x1171fff, 0x10117, 0x10117, 0x1, 0x7fffffff, 0x1173fff, 0x117177f, 0x10117, 0x117177f, 0x117, 0x7, 0x0, 0x7177f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x11f7fff, 0x11717ff, 0x10117, 0x1fffffff, 0x117177f, 0x117177f, 0x117, 0x7177f, 0x1, 0x1, 0x0, 0x177f7fff, 0x17177f, 0x1037f, 0x1, 0x1011f, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x77f7fff, 0x1011f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x10117, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0x177fffff, 0x117177f, 0x1077f, 0x1, 0x177f7fff, 0x1017f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x1177fff, 0x10117, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x117177f, 0x10117, 0x10117, 0x1, 0x117, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x117177f, 0x117, 0x7, 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, 0x11717ff, 0xffffffff, 0x1fffffff, 0x177fffff, 0x17177f, 0x177f7fff, 0x1013f, 0x10117, 0x1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x7fffffff, 0x17ffffff, 0x117177f, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0x177f7fff, 0x77f7fff, 0x1011f, 0x7fffffff, 0x13f7fff, 0x1171fff, 0x10117, 0x117177f, 0x117, 0x7, 0x0, 0xffffffff, 0xffffffff, 0x7fffffff, 0x77f7fff, 0x7fffffff, 0x1171fff, 0x117177f, 0x10117, 0x17ffffff, 0x117177f, 0x3177f, 0x1, 0x1013f, 0x1, 0x1, 0x0, 0x177f7fff, 0x1017f, 0x10117, 0x1, 0x10117, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x177f7fff, 0x7fffffff, 0x11f7fff, 0x11717ff, 0x10117, 0xffffffff, 0x7fffffff, 0x7fffffff, 0x1171fff, 0x17ffffff, 0x117177f, 0x7177f, 0x1, 0x177f7fff, 0x1077f, 0x1011f, 0x1, 0x10117, 0x1, 0x1, 0x0, 0xffffffff, 0x17ffffff, 0x177fffff, 0x3177f, 0x37f7fff, 0x1011f, 0x10117, 0x1, 0x1171fff, 0x10117, 0x10117, 0x1, 0x117, 0x0, 0x0, 0x0, 0x117177f, 0x117, 0x17, 0x0, 0x3, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffff, 0x37f7fff, 0x1173fff, 0x10117, 0x11717ff, 0x10117, 0x17, 0x0, 0x117177f, 0x7, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1077f, 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, 0x11f7fff, 0xffffffff, 0x7fffffff, 0x1fffffff, 0x117177f, 0x177fffff, 0x1077f, 0x1013f, 0x1, 0xffffffff, 0x177fffff, 0x177f7fff, 0x1013f, 0x11f7fff, 0x10117, 0x10117, 0x1, 0x11717ff, 0x117, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0xffffffff, 0x17ffffff, 0x177fffff, 0x1077f, 0xffffffff, 0x177f7fff, 0x11f7fff, 0x10117, 0x11717ff, 0x10117, 0x17, 0x0, 0x7fffffff, 0x1171fff, 0x117177f, 0x17, 0x3177f, 0x1, 0x1, 0x0, 0x1017f, 0x1, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x177fffff, 0x7177f, 0x1037f, 0x1, 0x1011f, 0x1, 0x1, 0x0, 0x10117, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10117, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, };