pub static MODE_WEIGHTS: [i16; 18] = [
4096, 28672, 8192, 8192, 8192, 2048, 4096, 28672, 4915, 4915, 4915, 3195, 32765, 32765, 32765,
32765, 32765, 32765,
];
pub static FCB_PULSES: [i16; 5] = [3, 3, 2, 2, 2];
pub static FCB_RADIX: [i16; 15] = [8, 16, 16, 8, 16, 16, 40, 40, 0, 40, 40, 0, 30, 29, 0];
pub static FCB_SHORTLIST: [i16; 15] = [3, 6, 6, 3, 6, 6, 10, 10, 0, 10, 10, 0, 10, 10, 0];
pub static FCB_POSITIONS: [i16; 600] = [
0, 5, 10, 15, 20, 25, 30, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 6, 7, 11, 12, 16, 17, 21, 22, 26, 27, 31, 32, 36, 37, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 8, 9, 13, 14, 18, 19,
23, 24, 28, 29, 33, 34, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 10, 20, 30, 40, 50, 60, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 12, 14, 22, 24, 32, 34, 42, 44, 52, 54, 62, 64,
72, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 16, 18,
26, 28, 36, 38, 46, 48, 56, 58, 66, 68, 76, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36,
38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 1, 3, 5, 7,
9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55,
57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12,
14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
62, 64, 66, 68, 70, 72, 74, 76, 78, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31,
33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36,
38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 1, 3, 5, 7,
9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55,
57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
];
pub static FCB_CLASS_BASE: [u16; 6] = [0x0000, 0x4000, 0x8000, 0x9900, 0xb200, 0xbf98];
pub const FCB_PAIR_CLASS: usize = 5;
pub static FCB_INDEX_LIMIT: [u16; 1] = [0xff98];
pub static FCB_SHAPE_SEL: [i16; 15] = [0, 1, 2, 3, 4, 5, 6, 7, 0, 8, 9, 0, 10, 11, 0];
pub static FCB_RADIX_INV: [i16; 15] = [
16384, 8192, 8192, 16384, 8192, 8192, 3277, 3277, 0, 3277, 3277, 0, 4369, 4520, 0,
];
pub static FCB_POSITION_TOTAL: [i16; 5] = [40, 40, 80, 80, 59];
pub static FCB_SHAPES: [i16; 240] = [
6371, 622, 385, -1, -340, 473, -992, 15, -969, -172, -531, -408, -43, -972, 326, -838, 164,
-694, -363, -607, 7184, 1030, -942, 432, -1071, 697, -832, 1, -697, -251, -180, -543, 55,
-1216, 338, -764, 99, -474, -457, -482, 7211, 831, -1146, 529, -879, 581, -713, -77, -700,
-390, -187, -497, 43, -1161, 196, -718, 18, -440, -486, -452, 3132, 1597, 1378, 532, 527, 37,
-351, -560, -817, -765, -775, -722, -593, -782, -533, -708, -347, -500, -297, -449, 3344, 2205,
1569, 693, 483, 94, -185, -407, -632, -749, -897, -800, -725, -868, -616, -658, -349, -460,
-270, -516, 3509, 2271, 1220, 551, 214, -79, -295, -542, -772, -851, -934, -853, -589, -771,
-416, -596, -397, -419, -294, -431, 5617, 3661, -2169, 65, -565, -1217, -184, -1488, -317,
-1142, -664, -490, -741, -445, -565, 210, -280, 560, -6, 547, 6589, 2665, -2734, 336, -1105,
-1112, -170, -1464, -36, -1258, -334, -405, -497, -308, -421, 435, -349, 739, -91, 603, 8279,
-6203, -4650, 2742, -3521, 865, -418, -1068, 1310, -1447, 1674, -550, 1089, 16, 801, 823, -282,
1445, -758, 1069, 7352, -343, -1387, 1320, -1951, 42, -1130, -886, -470, -1239, -90, -996, -30,
-800, 233, -205, -29, 520, -157, 650, 7335, 3101, -8513, -1301, -10, -3365, 1713, -2001, 735,
-101, -490, 1421, -550, 1376, -279, 1575, -121, 899, 348, 144, 4463, 1737, 411, 970, -320, 34,
-798, -785, -969, -1239, -762, -1112, -454, -886, -236, -417, -206, 77, -238, 181,
];
pub static FCB_ALT_A: [i16; 640] = [
1, 17, -43, -61, 71, -3, -19, 33, -63, 67, 5, 31, 37, -51, 71, -3, -23, -47, -49, -79, -11, 23,
-39, 53, 75, 3, 17, 47, -55, 69, 5, -23, -39, 49, 69, -15, -29, -45, -55, -77, -1, -17, -47,
55, 79, -5, 31, -39, 63, 73, -7, 23, 35, -61, 73, -9, -21, -45, -55, 67, 15, -23, -33, -61,
-67, -11, 31, -39, 63, 77, -1, -29, 41, 59, 67, 11, -17, 35, 51, 71, -11, 19, 33, 55, 67, -3,
27, -35, 55, -71, -5, -23, 45, 63, 71, 13, -31, 37, 61, -73, 15, 23, -33, 51, -73, 9, -25, -43,
-55, -67, -15, 17, -47, 49, 65, -3, 17, -47, 53, 69, -3, -23, 43, 53, -77, -1, -19, -39, -59,
67, 3, 19, 35, 63, 75, -13, 21, 39, 63, -71, -7, 17, -41, 49, 71, 13, -23, -47, -53, 77, 13,
21, 37, 51, -69, -9, 31, 39, 51, 65, 15, 29, 41, 55, 75, -11, 17, -45, 63, -65, -11, -29, 33,
-53, 79, -5, -27, 33, 51, 79, -11, -17, -41, -49, 77, 3, 21, -45, -61, 65, -3, -21, -45, -53,
75, -5, -29, -45, -55, 65, 5, -17, 41, 57, 71, 13, 21, -43, 53, 71, 3, 29, -35, 55, 65, 3, 25,
-47, -51, -75, -9, 29, -35, 61, -75, 3, 21, -33, -59, 77, 15, 25, 33, 49, 65, -15, -25, -47,
-55, -67, 9, 23, -43, -53, 73, -3, -31, -43, 57, 75, 3, 31, -43, 57, 75, 3, -27, -41, -53, 69,
9, -25, 45, 53, -65, -1, 31, -41, -61, -75, 13, -23, 35, 59, -69, -3, -19, -33, 51, -79, 9, 21,
-47, -51, -69, 3, -27, -47, -55, -65, -5, -25, 41, -59, -67, -7, 25, 39, 59, 75, -13, 19, -33,
-55, -75, -9, -23, 39, -59, 71, 11, -17, 41, -59, 71, 3, 17, -43, -63, -79, 11, -27, 33, -55,
65, 3, -21, 41, -55, -65, 3, 29, 33, 57, 71, -15, -25, 33, 61, 75, 5, 17, 39, 53, -69, -13, 23,
-39, -63, -75, 5, 23, -37, 49, -69, -7, -19, -43, 51, -65, -5, 25, 43, -51, -69, 1, -17, -47,
53, -69, -11, -29, -43, -49, 69, 15, -31, 43, -49, -79, -11, 23, -41, 55, -65, 3, -31, -35,
-51, -79, -7, 25, -47, 61, -67, 7, -17, -43, 63, -67, -9, 19, -45, 55, 67, -3, 25, 35, -51,
-65, -13, 29, 37, 57, 73, 3, -27, -43, -55, 65, -5, 27, -43, -55, 77, 3, 17, -45, -63, 77, -15,
-27, 43, -49, 69, -11, -21, 47, 57, -69, -3, 19, -45, 53, 71, 3, 17, -41, -49, 75, 15, 29, 43,
61, 73, -5, -29, -45, 49, -79, -7, -19, -41, -63, -71, 11, 31, -33, 57, -77, -11, -23, -39, 61,
79, 11, -17, 45, 63, -77, -11, 25, 45, 59, -71, -13, 31, -37, 51, -79, -9, -17, 39, -55, 71,
-5, 17, -41, 51, -71, 5, 21, 43, 63, 69, -1, 31, -47, 63, 75, -13, -17, -45, 59, 79, -9, 19,
45, -53, 71, -1, 27, -41, 59, -65, -3, 29, -35, 53, 69, -9, -27, -33, 49, -75, 15, -21, -41,
-59, -71, -15, -23, 45, 55, 75, -7, -17, -45, 59, -69, -7, 27, 43, -53, 71, 3, -23, 33, -59,
77, -11, -21, 39, -57, 71, 5, -19, 43, -57, -73, -5, -17, -45, 53, 71, 15, -25, 33, 49, -65, 7,
-21, 33, 63, -65, -15, -31, 33, 59, -77, -5, 29, 43, -57, 71, 11, 27, 45, 59, -73, -15, -31,
-37, 51, 75, 13, 27, -45, 61, 77, -7, 27, -39, -53, -77, -7, -25, -33, -55, -73, 13, 29, -39,
49, 75, -1, 31, 35, 55, -79, -11, -23, -37, -59, 79, -15, -17, 33, 53, 79,
];
pub static FCB_ALT_B: [i16; 640] = [
-12, 18, -42, 56, 66, -4, 26, 44, -60, 68, 14, 24, 48, 54, -78, -2, 20, -38, -52, 68, -12, 26,
-46, 62, 72, 2, -28, -34, -58, 74, -6, -26, 36, 64, -78, -12, -26, 38, 50, -80, -4, 22, -36,
50, -68, 4, -22, 48, -52, -68, 14, -22, -36, 56, -78, 2, -24, -46, -54, -68, 12, 20, -34, -58,
70, 16, 30, -42, -62, -72, 12, 24, 36, 54, 72, 12, -30, 44, 58, -66, -8, 20, 44, -60, 72, 4,
26, -46, 50, -70, 2, 30, -42, 54, 74, 14, -18, -44, -62, 66, -10, -20, -40, -52, 76, 12, 18,
34, 52, 72, 8, 24, -44, 60, -72, -2, 28, 38, 60, 76, 2, -18, 38, -60, -72, -8, 26, 36, -52,
-78, 4, -32, -46, -64, 78, -16, -20, 34, 50, -80, -8, 28, 42, -58, -72, -4, -32, -48, 62, 80,
12, 32, -44, 52, 76, -2, -28, 44, -52, 78, 14, 22, 40, 54, 66, -10, 32, -42, 62, 66, 16, 22,
48, 54, -74, 6, -26, 36, -54, -68, 16, 28, 34, 58, 76, -2, 24, -44, 62, -70, 16, -24, -40, -54,
-76, 12, 24, -42, -54, -78, -16, -18, -40, 58, -74, -8, -32, 36, -54, -78, -8, 20, 34, 62, 68,
16, -20, 48, -52, 80, 6, -22, 36, -50, 70, 2, -24, 40, 54, 74, -14, -28, -44, 60, 70, -14, -30,
-46, -60, 68, 12, -30, 46, -62, 72, 12, -18, 44, -52, 70, 6, -22, 40, 54, -74, 12, -18, -44,
62, 68, 2, -18, -36, 60, -70, 8, 22, -42, 58, -76, -2, 26, -48, -56, -66, -8, -30, 42, 60, 70,
12, -20, -40, -54, -80, 4, -18, 36, -60, 70, -8, -30, -34, -64, 70, -16, 18, -34, -50, 78, -4,
-28, 34, -58, 68, 4, -30, 34, -60, -80, 16, 24, -40, 50, 76, -12, 30, 40, 56, 74, 16, -22, 38,
52, 70, 8, -28, 36, -54, 76, 8, 32, -46, -52, -68, -6, 24, -40, -60, -80, -10, 18, 34, -58,
-80, 2, -32, -42, -64, 68, 14, 32, 46, 58, 68, 6, -26, -42, 58, 68, -2, -22, 46, -52, -76, -16,
-18, 34, -64, 74, 2, 18, 34, -56, 80, 8, 28, 42, -56, -78, -8, 28, -48, 62, 66, 10, 18, -34,
60, 74, -4, 30, -48, 52, -72, -2, 32, 34, 54, 66, 14, 18, -46, -62, -78, 4, -28, -40, -50, -80,
12, -28, -48, 50, -78, 12, 30, -34, 58, -68, 8, -22, 46, 64, 78, -2, -24, -38, -62, -70, -14,
22, 48, 54, -68, 16, -20, 48, 54, -72, 12, 24, 34, -62, -76, -12, -20, -34, 58, -76, -12, -28,
-44, -50, 80, 4, -18, 38, 50, -78, 8, 32, 48, -54, 78, -12, 20, -34, 50, -80, 16, -26, 48, -52,
-70, 12, -24, 44, -54, -68, 10, 22, 36, 58, -66, -16, -26, 46, -64, 74, 12, -22, 34, 60, -74,
-2, -20, -46, -50, 78, 10, 24, 38, 64, -74, 14, 24, -48, 52, 74, 12, -28, 38, -52, 80, 6, -28,
34, -50, -66, 14, -22, 36, 54, 76, -12, 20, -46, 58, -78, 14, 28, -42, -64, -78, 10, -28, -38,
-56, 78, 14, -18, -40, -64, -80, -8, -28, -38, -50, -72, -12, 22, 44, -52, 66, 2, 28, 46, -60,
-76, -14, -24, 40, -60, -74, 12, 20, 40, 52, -68, 6, -20, -38, -62, 70, -10, -20, 40, -58, 68,
6, -22, -46, -50, 68, 10, 24, -46, 52, 70, 6, -18, 36, 60, -66, -2, -20, 36, 58, -80, 6, -26,
-48, 52, -74, 16, -26, 44, -52, -66, -2, -30, -46, 58, 74, -4, 18, -36, -58, -76, 10, 30, -36,
-64, 74, 8, 32, -46, -60, 76, 2, 30, 44, 64, -70, 12, -28, 44, 58, 66,
];