1 /* 2 * ATRAC3+ compatible decoder 3 * 4 * Copyright (c) 2010-2013 Maxim Poliakovski 5 * 6 * This file is part of FFmpeg. 7 * 8 * FFmpeg is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2.1 of the License, or (at your option) any later version. 12 * 13 * FFmpeg is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with FFmpeg; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 */ 22 23 #ifndef AVCODEC_ATRAC3PLUS_DATA_H 24 #define AVCODEC_ATRAC3PLUS_DATA_H 25 26 #include <stddef.h> 27 #include <stdint.h> 28 29 /** VLC tables for wordlen */ 30 static const uint8_t atrac3p_wl_cbs[][12] = { 31 { 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 32 { 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 33 { 1, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0 }, 34 { 1, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0 }, 35 }; 36 37 /** VLC tables for code table indexes */ 38 static const uint8_t atrac3p_ct_cbs[][12] = { 39 { 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 40 { 0, 1, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, 41 { 0, 1, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, 42 { 1, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0 }, 43 }; 44 /* Symbols for wordlen interleaved with symbols for code table */ 45 static const uint8_t atrac3p_wl_ct_xlats[] = { 46 /* wordlen table 1 - 3 entries */ 47 0, 1, 7, 48 /* code table 1 - 4 entries */ 49 0, 1, 2, 3, 50 /* wordlen table 2 - 5 entries */ 51 0, 1, 2, 6, 7, 52 /* code table 2 - 8 entries */ 53 0, 1, 2, 3, 4, 5, 6, 7, 54 /* wordlen table 3 - 8 entries */ 55 0, 1, 7, 2, 5, 6, 3, 4, 56 /* code table 3 - 8 entries */ 57 0, 1, 2, 3, 6, 7, 4, 5, 58 /* wordlen table 4 - 8 entries */ 59 0, 1, 7, 2, 3, 6, 4, 5, 60 /* code table 4 - 8 entries */ 61 0, 1, 2, 3, 4, 5, 6, 7, 62 }; 63 64 /** VLC tables for scale factor indexes */ 65 static const uint8_t atrac3p_sf_cbs[][12] = { 66 { 0, 1, 4, 2, 0, 0, 0, 7, 50, 0, 0, 0 }, 67 { 0, 1, 4, 2, 0, 0, 0, 7, 50, 0, 0, 0 }, 68 { 1, 0, 2, 0, 4, 0, 2, 1, 54, 0, 0, 0 }, 69 { 0, 1, 4, 0, 4, 0, 3, 0, 52, 0, 0, 0 }, 70 { 0, 1, 4, 2, 0, 8, 0, 0, 0, 0, 0, 0 }, 71 { 0, 1, 4, 2, 0, 8, 0, 0, 0, 0, 0, 0 }, 72 { 1, 0, 2, 2, 2, 0, 8, 0, 0, 0, 0, 0 }, 73 { 0, 1, 4, 2, 2, 2, 4, 0, 0, 0, 0, 0 }, 74 }; 75 76 static const uint8_t atrac3p_sf_xlats[] = { 77 /* Scale factor index 1 - 64 entries */ 78 0, 1, 61, 62, 63, 2, 60, 3, 4, 5, 6, 57, 58, 59, 7, 8, 79 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 80 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 81 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 82 /* Scale factor index 2 - 64 entries */ 83 0, 1, 2, 62, 63, 3, 61, 4, 5, 6, 57, 58, 59, 60, 7, 8, 84 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 85 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 86 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 87 /* Scale factor index 3 - 64 entries */ 88 0, 1, 63, 2, 3, 61, 62, 4, 60, 59, 5, 6, 7, 8, 9, 10, 89 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 90 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 91 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 92 /* Scale factor index 4 - 64 entries */ 93 0, 1, 2, 62, 63, 3, 4, 60, 61, 5, 58, 59, 6, 7, 8, 9, 94 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 95 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 96 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97 /* Scale factor index 5 - 15 entries */ 98 0, 1, 13, 14, 15, 2, 12, 3, 4, 5, 6, 7, 9, 10, 11, 99 /* Scale factor index 6 - 15 entries */ 100 0, 1, 2, 14, 15, 3, 13, 4, 5, 6, 7, 9, 10, 11, 12, 101 /* Scale factor index 7 - 15 entries */ 102 0, 1, 15, 2, 14, 3, 13, 4, 5, 6, 7, 9, 10, 11, 12, 103 /* Scale factor index 8 - 15 entries */ 104 0, 1, 2, 14, 15, 3, 13, 4, 12, 5, 11, 6, 7, 9, 10, 105 }; 106 107 /* weights for quantized word lengths */ 108 static const int8_t atrac3p_wl_weights[6][32] = { 109 { 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 111 { 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 113 { 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 1, 1, 114 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, 115 { 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 117 { 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 119 { 6, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 2, 2, 1, 1, 120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } 121 }; 122 123 /* weights for quantized scale factors 124 * sf_weights[i] = i / (tab_idx + 1) 125 * where tab_idx = [1,2] */ 126 static const int8_t atrac3p_sf_weights[2][32] = { 127 { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 128 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15 }, 129 { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 130 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10 } 131 }; 132 133 /** Ungroup table for word length segments. 134 * Numbers in this table tell which coeff belongs to which segment. */ 135 static const uint8_t atrac3p_qu_num_to_seg[32] = { 136 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 137 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9 138 }; 139 140 /** Map quant unit number to subband number */ 141 static const uint8_t atrac3p_qu_to_subband[32] = { 142 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 143 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 144 }; 145 146 /** Map subband number to number of power compensation groups */ 147 static const int atrac3p_subband_to_num_powgrps[16] = { 148 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 149 }; 150 151 /** 3D base shape tables. The values are grouped together as follows: 152 * [num_start_values = 8][num_shape_tables = 16][num_seg_coeffs = 9] 153 * For each of the 8 start values there are 16 different shapes each 154 * 9 coefficients long. */ 155 static const int8_t atrac3p_wl_shapes[8][16][9] = { 156 { { 0, 0, 0, 0, 0, 0, 0, -2, -1 }, 157 { 0, 0, 0, 0, 0, 0, 0, -5, -1 }, 158 { 0, 0, 0, -7, 0, 0, 0, 0, 0 }, 159 { 0, 0, 0, 0, 0, -7, 0, 0, 0 }, 160 { 0, 0, 0, 0, 0, 0, -5, 0, 0 }, 161 { 0, 0, 0, 0, -5, 0, 0, 0, 0 }, 162 { -7, -7, 0, 0, 0, 0, 0, 0, 0 }, 163 { 0, -7, 0, 0, 0, 0, 0, 0, 0 }, 164 { -2, -2, -5, 0, 0, 0, 0, 0, 0 }, 165 { 0, 0, 0, -2, -5, 0, 0, 0, 0 }, 166 { 0, 0, 0, 0, 0, -2, -5, 0, 0 }, 167 { 0, 0, 0, -5, 0, 0, 0, 0, 0 }, 168 { 0, -2, -7, -2, 0, 0, 0, 0, 0 }, 169 { 0, 0, 0, 0, -2, -5, 0, 0, 0 }, 170 { 0, 0, 0, -5, -5, 0, 0, 0, 0 }, 171 { 0, 0, 0, -5, -2, 0, 0, 0, 0 } }, 172 { { -1, -5, -3, -2, -1, -1, 0, 0, 0 }, 173 { -2, -5, -3, -3, -2, -1, -1, 0, 0 }, 174 { 0, -1, -1, -1, 0, 0, 0, 0, 0 }, 175 { -1, -3, 0, 0, 0, 0, 0, 0, 0 }, 176 { -1, -2, 0, 0, 0, 0, 0, 0, 0 }, 177 { -1, -3, -1, 0, 0, 0, 0, 1, 1 }, 178 { -1, -5, -3, -3, -2, -1, 0, 0, 0 }, 179 { -1, -1, -4, -2, -2, -1, -1, 0, 0 }, 180 { -1, -1, -3, -2, -3, -1, -1, -1, 0 }, 181 { -1, -4, -2, -3, -1, 0, 0, 0, 0 }, 182 { 0, -1, -2, -2, -1, -1, 0, 0, 0 }, 183 { 0, -2, -1, 0, 0, 0, 0, 0, 0 }, 184 { -1, -1, 0, 0, 0, 0, 0, 0, 0 }, 185 { -1, -1, -3, -2, -2, -1, -1, -1, 0 }, 186 { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 187 { 0, -1, -3, -2, -2, -1, -1, -1, 0 }, }, 188 { { -1, -2, 0, 1, 1, 1, 1, 1, 1 }, 189 { 0, -1, 1, 1, 1, 1, 1, 1, 1 }, 190 { 0, -2, 1, 1, 1, 1, 1, 1, 1 }, 191 { 0, -2, 0, 1, 1, 1, 1, 1, 1 }, 192 { -1, -1, 0, 1, 1, 1, 1, 1, 1 }, 193 { 0, 0, -1, 0, 1, 1, 1, 1, 1 }, 194 { -1, -1, 1, 1, 1, 1, 1, 1, 1 }, 195 { 0, 0, -1, 1, 1, 1, 1, 1, 1 }, 196 { 0, -1, 0, 1, 1, 1, 1, 1, 1 }, 197 { -1, -1, -1, 1, 1, 1, 1, 1, 1 }, 198 { 0, 0, 0, 0, 1, 1, 1, 1, 1 }, 199 { 0, 0, 0, 1, 1, 1, 1, 1, 1 }, 200 { 0, -1, -1, 1, 1, 1, 1, 1, 1 }, 201 { 0, 1, 0, 1, 1, 1, 1, 1, 1 }, 202 { 0, -3, -2, 1, 1, 1, 1, 2, 2 }, 203 { -3, -5, -3, 2, 2, 2, 2, 2, 2 }, }, 204 { { -1, -2, 0, 2, 2, 2, 2, 2, 2 }, 205 { -1, -2, 0, 1, 2, 2, 2, 2, 2 }, 206 { 0, -2, 0, 2, 2, 2, 2, 2, 2 }, 207 { -1, 0, 1, 2, 2, 2, 2, 2, 2 }, 208 { 0, 0, 1, 2, 2, 2, 2, 2, 2 }, 209 { 0, -2, 0, 1, 2, 2, 2, 2, 2 }, 210 { 0, -1, 1, 2, 2, 2, 2, 2, 2 }, 211 { -1, -1, 0, 2, 2, 2, 2, 2, 2 }, 212 { -1, -1, 0, 1, 2, 2, 2, 2, 2 }, 213 { -1, -2, -1, 2, 2, 2, 2, 2, 2 }, 214 { 0, -1, 0, 2, 2, 2, 2, 2, 2 }, 215 { 1, 1, 0, 1, 2, 2, 2, 2, 2 }, 216 { 0, 1, 2, 2, 2, 2, 2, 2, 2 }, 217 { 1, 0, 0, 1, 2, 2, 2, 2, 2 }, 218 { 0, 0, 0, 1, 2, 2, 2, 2, 2 }, 219 { -1, -1, -1, 1, 2, 2, 2, 2, 2 }, }, 220 { { 0, 1, 2, 3, 3, 3, 3, 3, 3 }, 221 { 1, 1, 2, 3, 3, 3, 3, 3, 3 }, 222 { -1, 0, 1, 2, 3, 3, 3, 3, 3 }, 223 { 0, 0, 2, 3, 3, 3, 3, 3, 3 }, 224 { -1, 0, 1, 3, 3, 3, 3, 3, 3 }, 225 { 0, 0, 1, 3, 3, 3, 3, 3, 3 }, 226 { 1, 2, 3, 3, 3, 3, 3, 3, 3 }, 227 { 1, 2, 2, 3, 3, 3, 3, 3, 3 }, 228 { 0, 1, 1, 3, 3, 3, 3, 3, 3 }, 229 { 0, 0, 1, 2, 3, 3, 3, 3, 3 }, 230 { -1, 1, 2, 3, 3, 3, 3, 3, 3 }, 231 { -1, 0, 2, 3, 3, 3, 3, 3, 3 }, 232 { 2, 2, 3, 3, 3, 3, 3, 3, 3 }, 233 { 1, 1, 3, 3, 3, 3, 3, 3, 3 }, 234 { 0, 2, 3, 3, 3, 3, 3, 3, 3 }, 235 { 0, 1, 1, 2, 3, 3, 3, 3, 3 }, }, 236 { { 0, 1, 2, 3, 4, 4, 4, 4, 4 }, 237 { 1, 2, 3, 4, 4, 4, 4, 4, 4 }, 238 { 0, 0, 2, 3, 4, 4, 4, 4, 4 }, 239 { 1, 1, 2, 4, 4, 4, 4, 4, 4 }, 240 { 0, 1, 2, 4, 4, 4, 4, 4, 4 }, 241 { -1, 0, 1, 3, 4, 4, 4, 4, 4 }, 242 { 0, 0, 1, 3, 4, 4, 4, 4, 4 }, 243 { 1, 1, 2, 3, 4, 4, 4, 4, 4 }, 244 { 0, 1, 1, 3, 4, 4, 4, 4, 4 }, 245 { 2, 2, 3, 4, 4, 4, 4, 4, 4 }, 246 { 1, 1, 3, 4, 4, 4, 4, 4, 4 }, 247 { 1, 2, 2, 4, 4, 4, 4, 4, 4 }, 248 { -1, 0, 2, 3, 4, 4, 4, 4, 4 }, 249 { 0, 1, 3, 4, 4, 4, 4, 4, 4 }, 250 { 1, 2, 2, 3, 4, 4, 4, 4, 4 }, 251 { 0, 2, 3, 4, 4, 4, 4, 4, 4 }, }, 252 { { 1, 2, 3, 4, 5, 5, 5, 5, 5 }, 253 { 0, 1, 2, 3, 4, 5, 5, 5, 5 }, 254 { 0, 1, 2, 3, 5, 5, 5, 5, 5 }, 255 { 1, 1, 3, 4, 5, 5, 5, 5, 5 }, 256 { 1, 1, 2, 4, 5, 5, 5, 5, 5 }, 257 { 1, 2, 2, 4, 5, 5, 5, 5, 5 }, 258 { 1, 1, 2, 3, 5, 5, 5, 5, 5 }, 259 { 2, 2, 3, 4, 5, 5, 5, 5, 5 }, 260 { 0, 1, 2, 4, 5, 5, 5, 5, 5 }, 261 { 2, 2, 3, 5, 5, 5, 5, 5, 5 }, 262 { 1, 2, 3, 5, 5, 5, 5, 5, 5 }, 263 { 0, 1, 3, 4, 5, 5, 5, 5, 5 }, 264 { 1, 2, 2, 3, 5, 5, 5, 5, 5 }, 265 { 2, 3, 4, 5, 5, 5, 5, 5, 5 }, 266 { 0, 2, 3, 4, 5, 5, 5, 5, 5 }, 267 { 1, 1, 1, 3, 4, 5, 5, 5, 5 }, }, 268 { { 1, 2, 3, 4, 5, 5, 5, 6, 6 }, 269 { 1, 2, 3, 4, 5, 6, 6, 6, 6 }, 270 { 2, 3, 4, 5, 6, 6, 6, 6, 6 }, 271 { 1, 2, 3, 4, 6, 6, 6, 6, 6 }, 272 { 2, 2, 3, 4, 5, 5, 5, 6, 6 }, 273 { 1, 2, 3, 4, 5, 5, 6, 6, 6 }, 274 { 2, 2, 3, 4, 6, 6, 6, 6, 6 }, 275 { 2, 2, 3, 4, 5, 6, 6, 6, 6 }, 276 { 2, 2, 4, 5, 6, 6, 6, 6, 6 }, 277 { 2, 2, 3, 5, 6, 6, 6, 6, 6 }, 278 { 1, 2, 3, 5, 6, 6, 6, 6, 6 }, 279 { 2, 3, 3, 5, 6, 6, 6, 6, 6 }, 280 { 1, 2, 4, 5, 6, 6, 6, 6, 6 }, 281 { 2, 2, 3, 4, 5, 5, 6, 6, 6 }, 282 { 2, 3, 3, 4, 6, 6, 6, 6, 6 }, 283 { 1, 3, 4, 5, 6, 6, 6, 6, 6 } } 284 }; 285 286 /** 2D base shape tables for scale factor coding. 287 * The values are grouped together as follows: 288 * [num_shape_tables = 64][num_seg_coeffs = 9] */ 289 static const int8_t atrac3p_sf_shapes[64][9] = { 290 { -3, -2, -1, 0, 3, 5, 6, 8, 40 }, 291 { -3, -2, 0, 1, 7, 9, 11, 13, 20 }, 292 { -1, 0, 0, 1, 6, 8, 10, 13, 41 }, 293 { 0, 0, 0, 2, 5, 5, 6, 8, 14 }, 294 { 0, 0, 0, 2, 6, 7, 8, 11, 47 }, 295 { 0, 0, 1, 2, 5, 7, 8, 10, 32 }, 296 { 0, 0, 1, 3, 8, 10, 12, 14, 47 }, 297 { 0, 0, 2, 4, 9, 10, 12, 14, 40 }, 298 { 0, 0, 3, 5, 9, 10, 12, 14, 22 }, 299 { 0, 1, 3, 5, 10, 14, 18, 22, 31 }, 300 { 0, 2, 5, 6, 10, 10, 10, 12, 46 }, 301 { 0, 2, 5, 7, 12, 14, 15, 18, 44 }, 302 { 1, 1, 4, 5, 7, 7, 8, 9, 15 }, 303 { 1, 2, 2, 2, 4, 5, 7, 9, 26 }, 304 { 1, 2, 2, 3, 6, 7, 7, 8, 47 }, 305 { 1, 2, 2, 3, 6, 8, 10, 13, 22 }, 306 { 1, 3, 4, 7, 13, 17, 21, 24, 41 }, 307 { 1, 4, 0, 4, 10, 12, 13, 14, 17 }, 308 { 2, 3, 3, 3, 6, 8, 10, 13, 48 }, 309 { 2, 3, 3, 4, 9, 12, 14, 17, 47 }, 310 { 2, 3, 3, 5, 10, 12, 14, 17, 25 }, 311 { 2, 3, 5, 7, 8, 9, 9, 9, 13 }, 312 { 2, 3, 5, 9, 16, 21, 25, 28, 33 }, 313 { 2, 4, 5, 8, 12, 14, 17, 19, 26 }, 314 { 2, 4, 6, 8, 12, 13, 13, 15, 20 }, 315 { 2, 4, 7, 12, 20, 26, 30, 32, 35 }, 316 { 3, 3, 5, 6, 12, 14, 16, 19, 34 }, 317 { 3, 4, 4, 5, 7, 9, 10, 11, 48 }, 318 { 3, 4, 5, 6, 8, 9, 10, 11, 16 }, 319 { 3, 5, 5, 5, 7, 9, 10, 13, 35 }, 320 { 3, 5, 5, 7, 10, 12, 13, 15, 49 }, 321 { 3, 5, 7, 7, 8, 7, 9, 12, 21 }, 322 { 3, 5, 7, 8, 12, 14, 15, 15, 24 }, 323 { 3, 5, 7, 10, 16, 21, 24, 27, 44 }, 324 { 3, 5, 8, 14, 21, 26, 28, 29, 42 }, 325 { 3, 6, 10, 13, 18, 19, 20, 22, 27 }, 326 { 3, 6, 11, 16, 24, 27, 28, 29, 31 }, 327 { 4, 5, 4, 3, 4, 6, 8, 11, 18 }, 328 { 4, 6, 5, 6, 9, 10, 12, 14, 20 }, 329 { 4, 6, 7, 6, 6, 6, 7, 8, 46 }, 330 { 4, 6, 7, 9, 13, 16, 18, 20, 48 }, 331 { 4, 6, 7, 9, 14, 17, 20, 23, 31 }, 332 { 4, 6, 9, 11, 14, 15, 15, 17, 21 }, 333 { 4, 8, 13, 20, 27, 32, 35, 36, 38 }, 334 { 5, 6, 6, 4, 5, 6, 7, 6, 6 }, 335 { 5, 7, 7, 8, 9, 9, 10, 12, 49 }, 336 { 5, 8, 9, 9, 10, 11, 12, 13, 42 }, 337 { 5, 8, 10, 12, 15, 16, 17, 19, 42 }, 338 { 5, 8, 12, 17, 26, 31, 32, 33, 44 }, 339 { 5, 9, 13, 16, 20, 22, 23, 23, 35 }, 340 { 6, 8, 8, 7, 6, 5, 6, 8, 15 }, 341 { 6, 8, 8, 8, 9, 10, 12, 16, 24 }, 342 { 6, 8, 8, 9, 10, 10, 11, 11, 13 }, 343 { 6, 8, 10, 13, 19, 21, 24, 26, 32 }, 344 { 6, 9, 10, 11, 13, 13, 14, 16, 49 }, 345 { 7, 9, 9, 10, 13, 14, 16, 19, 27 }, 346 { 7, 10, 12, 13, 16, 16, 17, 17, 27 }, 347 { 7, 10, 12, 14, 17, 19, 20, 22, 48 }, 348 { 8, 9, 10, 9, 10, 11, 11, 11, 19 }, 349 { 8, 11, 12, 12, 13, 13, 13, 13, 17 }, 350 { 8, 11, 13, 14, 16, 17, 19, 20, 27 }, 351 { 8, 12, 17, 22, 26, 28, 29, 30, 33 }, 352 { 10, 14, 16, 19, 21, 22, 22, 24, 28 }, 353 { 10, 15, 17, 18, 21, 22, 23, 25, 43 } 354 }; 355 356 static const uint8_t atrac3p_ct_restricted_to_full[2][7][4] = { 357 { { 0, 5, 4, 1 }, 358 { 0, 1, 2, 3 }, 359 { 3, 0, 4, 2 }, 360 { 4, 0, 1, 2 }, 361 { 1, 0, 4, 3 }, 362 { 3, 0, 2, 1 }, 363 { 0, 3, 1, 2 } }, 364 { { 4, 0, 1, 2 }, 365 { 0, 3, 2, 1 }, 366 { 0, 1, 2, 3 }, 367 { 0, 1, 2, 4 }, 368 { 0, 1, 2, 3 }, 369 { 1, 4, 2, 0 }, 370 { 0, 1, 2, 3 } } 371 }; 372 373 /** Tables for spectrum coding */ 374 375 /* If the first entry of a subtable is negative, it means 376 * that another VLC is to be reused. */ 377 static const int8_t atrac3p_spectra_cbs[][12] = { 378 { 1, 0, 0, 1, 7, 0, 19, 5, 13, 21, 6, 8 }, 379 { 0, 1, 0, 4, 11, 0, 1, 29, 6, 20, 7, 2 }, 380 { 0, 0, 1, 8, 0, 13, 18, 7, 2, 0, 0, 0 }, 381 { 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 382 { 0, 0, 1, 3, 5, 8, 12, 23, 72, 68, 31, 2 }, 383 { 0, 1, 3, 2, 6, 4, 0, 0, 0, 0, 0, 0 }, 384 { 0, 1, 2, 2, 2, 6, 14, 21, 13, 2, 0, 0 }, 385 { 1, 0, 0, 0, 8, 1, 18, 9, 22, 10, 12, 0 }, 386 { 0, 0, 0, 0, 16, 11, 32, 19, 1, 2, 0, 0 }, 387 { 1, 0, 0, 4, 2, 2, 9, 15, 12, 4, 0, 0 }, 388 { 0, 1, 0, 4, 3, 5, 16, 28, 34, 26, 4, 0 }, 389 { 0, 0, 0, 0, 9, 12, 16, 44, 98, 42, 4, 0 }, 390 { 0, 1, 1, 2, 2, 5, 7, 21, 54, 85, 62, 16 }, 391 { 0, 0, 3, 2, 5, 7, 17, 23, 6, 0, 0, 0 }, 392 { 1, 0, 0, 2, 6, 0, 7, 21, 15, 17, 8, 4 }, 393 { 0, 1, 4, 0, 4, 3, 8, 3, 2, 0, 0, 0 }, 394 { 0, 0, 5, 0, 4, 6, 10, 16, 8, 0, 0, 0 }, 395 { 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, 396 { 0, 1, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, 397 { 0, 0, 0, 3, 4, 12, 15, 34, 83, 75, 30, 0 }, 398 { 0, 0, 0, 3, 14, 10, 20, 16, 0, 0, 0, 0 }, 399 { 1, 0, 3, 1, 0, 4, 0, 0, 0, 0, 0, 0 }, 400 { 1, 0, 0, 2, 2, 6, 12, 18, 19, 15, 6, 0 }, 401 { 0, 0, 1, 1, 13, 1, 14, 28, 33, 81, 32, 52 }, 402 { 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0 }, 403 { 0, 1, 0, 2, 3, 6, 19, 9, 75, 110, 0, 0 }, 404 { 0, 0, 1, 3, 5, 5, 13, 27, 69, 96, 35, 2 }, 405 { 0, 0, 0, 7, 6, 8, 22, 20, 0, 0, 0, 0 }, 406 { 1, 0, 0, 6, 2, 0, 0, 0, 19, 9, 24, 20 }, 407 { 0, 0, 1, 2, 13, 1, 31, 13, 16, 4, 0, 0 }, 408 { 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, 409 { 0, 0, 0, 5, 4, 12, 17, 47, 24, 12, 0, 0 }, 410 { 0, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0 }, 411 { 0, 0, 0, 0, 1, 16, 31, 36, 172, 0, 0, 0 }, 412 { 0, 0, 0, 5, 12, 9, 12, 15, 10, 0, 0, 0 }, 413 { 0, 1, 0, 6, 2, 6, 18, 4, 26, 6, 12, 0 }, 414 { 1, 0, 2, 2, 0, 4, 3, 8, 3, 2, 0, 0 }, 415 { 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0 }, 416 { 0, 0, 0, 4, 7, 12, 19, 21, 58, 0, 0, 0 }, 417 { 1, 1, 1, 0, 3, 2, 0, 0, 0, 0, 0, 0 }, 418 { 0, 0, 1, 8, 6, 8, 8, 0, 0, 0, 0, 0 }, 419 { 0, 0, 1, 5, 7, 8, 16, 22, 4, 0, 0, 0 }, 420 { 0, 1, 0, 8, 0, 1, 16, 10, 29, 12, 4, 0 }, 421 { 0, 0, 5, 2, 2, 9, 5, 2, 0, 0, 0, 0 }, 422 { 0, 0, 1, 1, 10, 4, 16, 29, 46, 75, 74, 0 }, 423 { 0, 0, 0, 1, 7, 12, 36, 63, 2, 0, 0, 0 }, 424 { 0, 3, 0, 1, 3, 4, 4, 0, 0, 0, 0, 0 }, 425 { 0, 1, 2, 2, 6, 8, 6, 3, 1, 2, 0, 0 }, 426 { 0, 1, 1, 3, 4, 6, 13, 25, 10, 0, 0, 0 }, 427 { 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 428 { 0, 1, 0, 4, 8, 3, 8, 24, 17, 12, 4, 0 }, 429 { 0, 1, 1, 5, 2, 8, 7, 13, 8, 4, 0, 0 }, 430 { 1, 0, 0, 4, 0, 4, 5, 9, 30, 45, 21, 2 }, 431 { 0, 1, 3, 3, 4, 4, 0, 0, 0, 0, 0, 0 }, 432 { 0, 0, 1, 3, 4, 8, 10, 36, 60, 78, 48, 8 }, 433 { -6 }, 434 { 1, 0, 0, 2, 6, 0, 11, 13, 12, 24, 4, 8 }, 435 { 1, 0, 0, 4, 0, 8, 4, 9, 19, 13, 13, 10 }, 436 { 1, 0, 0, 4, 0, 5, 12, 13, 14, 0, 0, 0 }, 437 { 0, 1, 0, 4, 4, 5, 9, 30, 45, 21, 2, 0 }, 438 { 0, 0, 1, 4, 4, 4, 12, 30, 73, 75, 22, 0 }, 439 { -5 }, 440 { 0, 0, 3, 2, 4, 8, 23, 13, 10, 0, 0, 0 }, 441 { -14 }, 442 { 0, 0, 1, 3, 12, 0, 30, 9, 18, 8, 0, 0 }, 443 { -9 }, 444 { 1, 0, 0, 4, 0, 3, 5, 16, 28, 34, 26, 4 }, 445 { -11 }, 446 { 0, 0, 0, 4, 4, 9, 13, 37, 76, 72, 39, 2 }, 447 { -6 }, 448 { -28 }, 449 { -22 }, 450 { -2 }, 451 { -31 }, 452 { -60 }, 453 { 0, 0, 2, 2, 4, 5, 11, 26, 67, 78, 51, 10 }, 454 { -6 }, 455 { -35 }, 456 { 0, 1, 0, 4, 6, 7, 10, 22, 11, 16, 4, 0 }, 457 { 0, 1, 0, 0, 4, 11, 8, 28, 92, 97, 13, 2 }, 458 { -59 }, 459 { 1, 0, 0, 0, 4, 6, 6, 14, 42, 63, 59, 30 }, 460 { -75 }, 461 { 1, 0, 2, 0, 2, 2, 6, 17, 14, 13, 6, 0 }, 462 { 1, 0, 0, 1, 7, 0, 20, 4, 10, 24, 2, 12 }, 463 { 1, 0, 1, 3, 2, 3, 7, 4, 4, 0, 0, 0 }, 464 { 0, 1, 1, 3, 4, 9, 15, 12, 4, 0, 0, 0 }, 465 { -66 }, 466 { -32 }, 467 { -12 }, 468 { 0, 1, 1, 3, 4, 6, 14, 22, 12, 0, 0, 0 }, 469 { -42 }, 470 { 1, 0, 1, 3, 2, 3, 7, 4, 4, 0, 0, 0 }, 471 { 1, 1, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0 }, 472 { -17 }, 473 { -39 }, 474 { 1, 0, 2, 0, 2, 4, 11, 9, 2, 0, 0, 0 }, 475 { -62 }, 476 { -28 }, 477 { 1, 0, 0, 2, 3, 5, 12, 14, 18, 15, 9, 2 }, 478 { 1, 1, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0 }, 479 { 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0 }, 480 { 1, 0, 0, 2, 2, 2, 6, 12, 34, 92, 54, 20 }, 481 { 1, 0, 0, 3, 0, 3, 3, 10, 40, 85, 61, 50 }, 482 { 0, 1, 2, 1, 4, 7, 10, 26, 12, 0, 0, 0 }, 483 { 1, 0, 0, 1, 7, 0, 19, 5, 13, 23, 0, 12 }, 484 { -78 }, 485 { 1, 0, 0, 0, 1, 4, 9, 4, 103, 110, 24, 0 }, 486 { 1, 0, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0 }, 487 { 0, 1, 4, 0, 0, 0, 8, 11, 24, 53, 64, 60 }, 488 { -47 }, 489 { 0, 1, 0, 4, 6, 10, 12, 7, 15, 4, 4, 0 }, 490 }; 491 492 static const uint8_t atrac3p_spectra_xlats[] = { 493 /* Table set A, code table 0, wordlen 1 - 81 entries */ 494 0x00, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x50, 0xD0, 0x70, 495 0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 496 0xC3, 0x13, 0x07, 0x0F, 0x44, 0xCC, 0x11, 0x43, 0x33, 0x54, 0x74, 0xDC, 497 0xFC, 0x71, 0x15, 0x4D, 0xCD, 0x1D, 0xD3, 0xC7, 0x37, 0x3F, 0xD4, 0xF4, 498 0x5C, 0x7C, 0x51, 0xD1, 0xF1, 0x45, 0xC5, 0x35, 0xDD, 0x3D, 0x53, 0x73, 499 0xF3, 0x47, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0x55, 0xF5, 0x7D, 0xD7, 0x5F, 500 0xFF, 0xD5, 0x75, 0x5D, 0xFD, 0x57, 0xF7, 0xDF, 0x7F, 501 /* Table set A, code table 0, wordlen 2 - 81 entries */ 502 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51, 503 0x05, 0x45, 0x15, 0x55, 0x90, 0x80, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64, 504 0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x85, 0x95, 0x65, 0x09, 0x49, 505 0x19, 0x59, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 0x88, 0x61, 506 0x25, 0x29, 0x69, 0x5A, 0xA0, 0xA4, 0x98, 0x28, 0x68, 0xA1, 0xA5, 0x89, 507 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x96, 0x26, 0x66, 0x0A, 0x4A, 0x1A, 508 0xA8, 0x86, 0xA6, 0x8A, 0x9A, 0x2A, 0x6A, 0xA2, 0xAA, 509 /* Table set A, code table 0, wordlen 3 - 49 entries */ 510 0x00, 0x08, 0x38, 0x01, 0x09, 0x39, 0x07, 0x0F, 0x3F, 0x10, 0x30, 0x11, 511 0x31, 0x02, 0x0A, 0x3A, 0x05, 0x06, 0x0E, 0x3E, 0x17, 0x37, 0x18, 0x28, 512 0x19, 0x29, 0x2A, 0x32, 0x03, 0x0B, 0x33, 0x3B, 0x0D, 0x15, 0x3D, 0x16, 513 0x1E, 0x36, 0x1F, 0x2F, 0x12, 0x1A, 0x13, 0x2B, 0x1D, 0x35, 0x2E, 0x1B, 514 0x2D, 515 /* Table set A, code table 0, wordlen 4 - 6 entries */ 516 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 517 /* Table set A, code table 0, wordlen 5 - 225 entries */ 518 0x00, 0x10, 0xF0, 0x01, 0x11, 0xF1, 0x0F, 0x1F, 0xFF, 0x20, 0xE0, 0xE1, 519 0x02, 0xF2, 0x0E, 0x1E, 0x2F, 0x30, 0xD0, 0x21, 0x12, 0x22, 0xE2, 0x03, 520 0x0D, 0x2E, 0xEE, 0xFE, 0xEF, 0x40, 0xC0, 0x31, 0xC1, 0xD1, 0x32, 0xD2, 521 0x13, 0x23, 0xE3, 0xF3, 0x04, 0xF4, 0x0C, 0x1C, 0x1D, 0x2D, 0xED, 0xFD, 522 0x3E, 0xDE, 0x3F, 0xDF, 0x50, 0x60, 0x70, 0x90, 0xA0, 0xB0, 0x41, 0x51, 523 0x61, 0x71, 0x91, 0xA1, 0xB1, 0x42, 0x62, 0x92, 0xA2, 0xC2, 0x33, 0xC3, 524 0xD3, 0x14, 0x24, 0x34, 0xD4, 0xE4, 0x05, 0x15, 0xF5, 0x06, 0x16, 0x26, 525 0xE6, 0xF6, 0x07, 0x17, 0xE7, 0xF7, 0x09, 0x19, 0x29, 0xF9, 0x0A, 0x1A, 526 0x2A, 0xEA, 0xFA, 0x0B, 0x1B, 0xFB, 0x2C, 0x3C, 0xDC, 0xEC, 0xFC, 0x3D, 527 0x4D, 0xCD, 0xDD, 0x4E, 0x6E, 0x7E, 0xAE, 0xCE, 0x4F, 0x5F, 0x6F, 0x7F, 528 0x9F, 0xAF, 0xBF, 0xCF, 0x52, 0x72, 0xB2, 0x43, 0x53, 0x63, 0x73, 0x93, 529 0xA3, 0xB3, 0x44, 0x64, 0x74, 0x94, 0xA4, 0xB4, 0xC4, 0x25, 0x35, 0xA5, 530 0xC5, 0xD5, 0xE5, 0x36, 0x46, 0xB6, 0xC6, 0xD6, 0x27, 0x37, 0x47, 0xB7, 531 0xC7, 0xD7, 0x39, 0x49, 0x59, 0xC9, 0xD9, 0xE9, 0x3A, 0x4A, 0x5A, 0xCA, 532 0xDA, 0x2B, 0x3B, 0x4B, 0x6B, 0x7B, 0xDB, 0xEB, 0x4C, 0x5C, 0x6C, 0x7C, 533 0x9C, 0xAC, 0xCC, 0x5D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0x5E, 0x9E, 0xBE, 534 0x54, 0x45, 0x55, 0x65, 0x75, 0x95, 0xB5, 0x56, 0x66, 0x76, 0x96, 0xA6, 535 0x57, 0x67, 0x97, 0xA7, 0x69, 0x79, 0xA9, 0xB9, 0x6A, 0x7A, 0x9A, 0xAA, 536 0xBA, 0x5B, 0x9B, 0xAB, 0xBB, 0xCB, 0xBC, 0x77, 0x99, 537 /* Table set A, code table 0, wordlen 6 - 16 entries */ 538 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0D, 0x0E, 539 0x0A, 0x0B, 0x0C, 0x0F, 540 /* Table set A, code table 0, wordlen 7 - 63 entries */ 541 0x00, 0x01, 0x3F, 0x02, 0x3E, 0x03, 0x3D, 0x04, 0x05, 0x06, 0x3A, 0x3B, 542 0x3C, 0x07, 0x08, 0x09, 0x0A, 0x1A, 0x1B, 0x1C, 0x24, 0x25, 0x26, 0x36, 543 0x37, 0x38, 0x39, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x19, 0x1D, 0x1E, 544 0x1F, 0x21, 0x22, 0x23, 0x27, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 545 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 546 0x2E, 0x18, 0x28, 547 /* Table set A, code table 1, wordlen 1 - 81 entries */ 548 0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0xD0, 0x50, 0x70, 549 0xF0, 0xC4, 0x34, 0x4C, 0xCC, 0x1C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0x43, 550 0xC3, 0x13, 0x07, 0x0F, 0x44, 0x14, 0x74, 0xDC, 0x3C, 0x11, 0x1D, 0x33, 551 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0x15, 0x35, 552 0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x3F, 0x51, 553 0x45, 0xC5, 0x55, 0x53, 0xF3, 0x4F, 0xCF, 0x1F, 0xFF, 0xD5, 0x75, 0xF5, 554 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F, 555 /* Table set A, code table 1, wordlen 2 - 81 entries */ 556 0x00, 0x40, 0x10, 0x50, 0x04, 0x44, 0x14, 0x54, 0x01, 0x41, 0x11, 0x51, 557 0x05, 0x45, 0x15, 0x55, 0x90, 0x94, 0x58, 0x91, 0x95, 0x19, 0x59, 0x06, 558 0x46, 0x16, 0x56, 0x80, 0x60, 0x84, 0x24, 0x64, 0xA4, 0x08, 0x48, 0x18, 559 0x68, 0x81, 0x21, 0x61, 0xA1, 0x85, 0x25, 0x65, 0xA5, 0x09, 0x49, 0x99, 560 0x69, 0xA9, 0x02, 0x42, 0x12, 0x52, 0x96, 0x26, 0x66, 0x1A, 0x5A, 0x20, 561 0xA0, 0x88, 0x98, 0x28, 0xA8, 0x89, 0x29, 0x82, 0x92, 0x22, 0x62, 0x86, 562 0xA6, 0x0A, 0x4A, 0x9A, 0x6A, 0xAA, 0xA2, 0x8A, 0x2A, 563 /* Table set A, code table 1, wordlen 3 - 49 entries */ 564 0x00, 0x08, 0x38, 0x01, 0x07, 0x39, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31, 565 0x02, 0x3A, 0x06, 0x0E, 0x3E, 0x17, 0x18, 0x28, 0x11, 0x29, 0x0A, 0x32, 566 0x03, 0x0B, 0x3B, 0x05, 0x0D, 0x3D, 0x16, 0x1F, 0x37, 0x19, 0x12, 0x1A, 567 0x2A, 0x13, 0x33, 0x15, 0x35, 0x1E, 0x2E, 0x36, 0x2F, 0x1B, 0x2B, 0x1D, 568 0x2D, 569 /* Table set A, code table 1, wordlen 4 - 121 entries */ 570 0x00, 0x10, 0xF0, 0x01, 0x0F, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x11, 0x02, 571 0x0E, 0x30, 0x50, 0xB0, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x05, 0x0B, 572 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0xC0, 0x31, 0x51, 0xB1, 0xC1, 0xD1, 573 0x22, 0x52, 0xE2, 0x13, 0xF3, 0x04, 0x15, 0xF5, 0x1B, 0xEB, 0xFB, 0x0C, 574 0x1D, 0xFD, 0x2E, 0x5E, 0xEE, 0x3F, 0x5F, 0xBF, 0xDF, 0x41, 0x32, 0x42, 575 0xB2, 0xD2, 0x23, 0x53, 0xB3, 0xE3, 0x14, 0x24, 0xE4, 0xF4, 0x25, 0x35, 576 0xD5, 0xE5, 0x2B, 0x3B, 0xDB, 0x1C, 0x2C, 0xBC, 0xEC, 0xFC, 0x2D, 0xBD, 577 0xED, 0x3E, 0x4E, 0xBE, 0xDE, 0x4F, 0xCF, 0xC2, 0x33, 0x43, 0xC3, 0xD3, 578 0x34, 0x44, 0x54, 0xB4, 0xD4, 0x45, 0x55, 0xC5, 0x4B, 0xCB, 0x3C, 0x4C, 579 0x5C, 0xCC, 0xDC, 0x3D, 0x4D, 0x5D, 0xCD, 0xDD, 0xCE, 0xC4, 0xB5, 0x5B, 580 0xBB, 581 /* Table set A, code table 1, wordlen 5 - 225 entries */ 582 0x00, 0x10, 0xF0, 0x01, 0x11, 0xF1, 0x0F, 0x1F, 0xFF, 0x20, 0xE0, 0x21, 583 0xE1, 0x02, 0x12, 0xF2, 0x0E, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0xD0, 0x31, 584 0xD1, 0x22, 0xE2, 0x03, 0x13, 0xF3, 0x0D, 0x1D, 0xFD, 0x2E, 0xEE, 0x3F, 585 0xDF, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x41, 0xC1, 0x32, 0x42, 0xC2, 586 0xD2, 0x23, 0x33, 0xD3, 0xE3, 0x04, 0x14, 0x24, 0xE4, 0xF4, 0x06, 0x16, 587 0xF6, 0x07, 0x09, 0x0A, 0x1A, 0xFA, 0x0C, 0x1C, 0x2C, 0xEC, 0xFC, 0x2D, 588 0x3D, 0xDD, 0xED, 0x3E, 0x4E, 0xCE, 0xDE, 0x4F, 0xCF, 0x50, 0xB0, 0x51, 589 0x61, 0x71, 0x91, 0xA1, 0xB1, 0x52, 0x62, 0x72, 0x92, 0xA2, 0xB2, 0x43, 590 0x53, 0x63, 0x73, 0x93, 0xA3, 0xC3, 0x34, 0x44, 0x64, 0xA4, 0xC4, 0xD4, 591 0x05, 0x15, 0x25, 0x35, 0xD5, 0xE5, 0xF5, 0x26, 0x36, 0x46, 0xC6, 0xD6, 592 0xE6, 0x17, 0x27, 0x37, 0xC7, 0xD7, 0xE7, 0xF7, 0x19, 0x29, 0x39, 0xC9, 593 0xD9, 0xE9, 0xF9, 0x2A, 0x3A, 0x4A, 0x5A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 594 0x2B, 0x3B, 0xCB, 0xDB, 0xEB, 0xFB, 0x3C, 0x4C, 0x6C, 0x7C, 0x9C, 0xAC, 595 0xBC, 0xCC, 0xDC, 0x4D, 0x5D, 0x6D, 0x7D, 0x9D, 0xAD, 0xBD, 0xCD, 0x5E, 596 0x6E, 0x7E, 0x9E, 0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x9F, 0xAF, 0xBF, 0xB3, 597 0x54, 0x74, 0x94, 0xB4, 0x45, 0x55, 0x65, 0x75, 0x95, 0xA5, 0xB5, 0xC5, 598 0x56, 0x66, 0x76, 0x96, 0xA6, 0xB6, 0x47, 0x57, 0x67, 0xA7, 0xB7, 0x49, 599 0x59, 0x69, 0xA9, 0xB9, 0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0x4B, 0x5B, 0x6B, 600 0x7B, 0x9B, 0xAB, 0xBB, 0x5C, 0x77, 0x97, 0x79, 0x99, 601 /* Table set A, code table 1, wordlen 6 - 256 entries */ 602 0x00, 0x01, 0x10, 0x11, 0x21, 0x12, 0x20, 0x31, 0x02, 0x22, 0x13, 0x30, 603 0x41, 0x32, 0x03, 0x23, 0x14, 0x24, 0x40, 0x51, 0x61, 0xD1, 0xE1, 0x42, 604 0x52, 0xD2, 0x33, 0x43, 0xD3, 0x04, 0x34, 0x05, 0x15, 0x25, 0x16, 0x1D, 605 0x2D, 0x1E, 0x2E, 0x50, 0x60, 0xD0, 0xE0, 0xF0, 0x71, 0x81, 0xF1, 0x62, 606 0x72, 0xE2, 0xF2, 0x53, 0x63, 0xE3, 0xF3, 0x44, 0x54, 0xD4, 0xE4, 0xF4, 607 0x35, 0x45, 0x55, 0xD5, 0xE5, 0xF5, 0x06, 0x26, 0x36, 0xD6, 0x07, 0x17, 608 0x27, 0x37, 0xD7, 0x18, 0x28, 0x1C, 0x0D, 0x3D, 0x4D, 0x5D, 0x6D, 0x8D, 609 0x0E, 0x3E, 0x4E, 0x5E, 0x0F, 0x1F, 0x2F, 0x3F, 0x5F, 0x70, 0x80, 0x90, 610 0xC0, 0x91, 0xA1, 0xB1, 0xC1, 0x82, 0x92, 0xA2, 0xC2, 0x73, 0x83, 0x93, 611 0xA3, 0xC3, 0x64, 0x74, 0x84, 0x94, 0xA4, 0xC4, 0x65, 0x75, 0x85, 0x46, 612 0x56, 0x66, 0xC6, 0xE6, 0xF6, 0x47, 0x57, 0xE7, 0xF7, 0x08, 0x38, 0x48, 613 0x58, 0x68, 0xD8, 0xE8, 0xF8, 0x09, 0x19, 0x29, 0x39, 0x59, 0xD9, 0xE9, 614 0xF9, 0x1A, 0x2A, 0x3A, 0xDA, 0xEA, 0xFA, 0x1B, 0x2B, 0xDB, 0xEB, 0xFB, 615 0x0C, 0x2C, 0x3C, 0xDC, 0xEC, 0x7D, 0x9D, 0xAD, 0xBD, 0xCD, 0x6E, 0x7E, 616 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0x4F, 0x6F, 0x7F, 0x8F, 0xAF, 0xA0, 0xB2, 617 0xB3, 0xB4, 0x95, 0xA5, 0xB5, 0xC5, 0x76, 0x86, 0x96, 0xA6, 0xB6, 0x67, 618 0x77, 0x87, 0x97, 0xC7, 0x78, 0x88, 0x98, 0xC8, 0x49, 0x69, 0x79, 0x89, 619 0x99, 0xC9, 0x0A, 0x4A, 0x5A, 0x6A, 0x7A, 0xCA, 0x0B, 0x3B, 0x4B, 0x5B, 620 0x6B, 0xCB, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xFC, 621 0xDD, 0xED, 0xFD, 0xDE, 0xEE, 0xFE, 0x9F, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF, 622 0xB0, 0xA7, 0xB7, 0xA8, 0xB8, 0xA9, 0xB9, 0x8A, 0x9A, 0xAA, 0xBA, 0x7B, 623 0x8B, 0x9B, 0xAB, 0xBB, 624 /* Table set A, code table 1, wordlen 7 - 63 entries */ 625 0x00, 0x01, 0x3F, 0x02, 0x3E, 0x03, 0x04, 0x3B, 0x3C, 0x3D, 0x05, 0x06, 626 0x07, 0x08, 0x38, 0x39, 0x3A, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x1A, 627 0x1B, 0x24, 0x25, 0x26, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x0F, 0x10, 628 0x11, 0x12, 0x13, 0x14, 0x15, 0x19, 0x1C, 0x1D, 0x1E, 0x1F, 0x21, 0x22, 629 0x23, 0x27, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x16, 0x17, 0x18, 630 0x28, 0x29, 0x2A, 631 /* Table set A, code table 2, wordlen 1 - 81 entries */ 632 0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0xD0, 0x70, 0x34, 633 0x1C, 0x0D, 0x13, 0x07, 0x50, 0xF0, 0x44, 0xC4, 0x14, 0x74, 0x4C, 0xCC, 634 0xDC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x05, 0x1D, 0x43, 0xC3, 0x33, 0x37, 635 0x0F, 0x54, 0xF4, 0xFC, 0xD1, 0x71, 0x15, 0x4D, 0xCD, 0xDD, 0xD3, 0x73, 636 0x47, 0xC7, 0x77, 0x3F, 0xD4, 0x5C, 0x7C, 0x51, 0xF1, 0x45, 0xC5, 0x55, 637 0x35, 0x3D, 0x53, 0xF3, 0x17, 0x4F, 0xCF, 0x1F, 0xFF, 0x75, 0xF5, 0x5D, 638 0x7D, 0xD7, 0xF7, 0x5F, 0xDF, 0xD5, 0xFD, 0x57, 0x7F, 639 /* Table set A, code table 2, wordlen 2 - 25 entries */ 640 0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x02, 0x06, 641 0x30, 0x11, 0x31, 0x0A, 0x3A, 0x0E, 0x17, 0x37, 0x32, 0x16, 0x3E, 0x12, 642 0x36, 643 /* Table set A, code table 2, wordlen 3 - 49 entries */ 644 0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x30, 0x02, 645 0x3A, 0x06, 0x0E, 0x18, 0x28, 0x11, 0x31, 0x0A, 0x03, 0x05, 0x3E, 0x17, 646 0x37, 0x19, 0x29, 0x12, 0x2A, 0x32, 0x0B, 0x33, 0x3B, 0x0D, 0x15, 0x3D, 647 0x16, 0x1E, 0x36, 0x1F, 0x2F, 0x1A, 0x13, 0x1B, 0x2B, 0x1D, 0x2D, 0x35, 648 0x2E, 649 /* Table set A, code table 2, wordlen 4 - 6 entries */ 650 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 651 /* Table set A, code table 2, wordlen 5 - 8 entries */ 652 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 653 /* Table set A, code table 2, wordlen 6 - 256 entries */ 654 0x00, 0x01, 0x11, 0x10, 0x21, 0x12, 0x22, 0x20, 0x30, 0x31, 0x41, 0x02, 655 0x32, 0x03, 0x13, 0x23, 0x33, 0x14, 0x24, 0x40, 0x51, 0x61, 0x42, 0x52, 656 0x43, 0x53, 0x04, 0x34, 0x44, 0x15, 0x25, 0x35, 0x16, 0x26, 0x50, 0x60, 657 0x71, 0x81, 0xD1, 0x62, 0x72, 0x82, 0xD2, 0x63, 0x73, 0xD3, 0x54, 0x64, 658 0x05, 0x45, 0x55, 0x65, 0x06, 0x36, 0x46, 0x56, 0x17, 0x27, 0x37, 0x47, 659 0x18, 0x28, 0x38, 0x19, 0x1D, 0x2D, 0x3D, 0x1E, 0x70, 0x80, 0x90, 0xD0, 660 0xE0, 0x91, 0xA1, 0xB1, 0xC1, 0xE1, 0xF1, 0x92, 0xA2, 0xC2, 0xE2, 0xF2, 661 0x83, 0x93, 0xA3, 0xC3, 0xE3, 0xF3, 0x74, 0x84, 0x94, 0xA4, 0xC4, 0xD4, 662 0xE4, 0xF4, 0x75, 0x85, 0x95, 0xD5, 0xE5, 0x66, 0x76, 0x86, 0xD6, 0xE6, 663 0x07, 0x57, 0x67, 0x77, 0xD7, 0x08, 0x48, 0x58, 0x68, 0xD8, 0x09, 0x29, 664 0x39, 0x49, 0x59, 0x69, 0x1A, 0x2A, 0x3A, 0x4A, 0x1B, 0x2B, 0x1C, 0x2C, 665 0x3C, 0x4C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x8D, 0x0E, 0x2E, 0x3E, 0x4E, 666 0x5E, 0x6E, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0xA0, 0xB0, 0xC0, 0xF0, 0xB2, 667 0xB3, 0xB4, 0xA5, 0xB5, 0xC5, 0xF5, 0x96, 0xA6, 0xB6, 0xC6, 0xF6, 0x87, 668 0x97, 0xA7, 0xB7, 0xC7, 0xE7, 0xF7, 0x78, 0x88, 0x98, 0xA8, 0xC8, 0xE8, 669 0xF8, 0x79, 0x89, 0x99, 0xC9, 0xD9, 0xE9, 0xF9, 0x0A, 0x5A, 0x6A, 0x7A, 670 0x8A, 0xDA, 0xEA, 0xFA, 0x0B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x8B, 0xDB, 671 0x0C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xDC, 0x9D, 0xAD, 0xBD, 0xCD, 0x7E, 672 0x8E, 0x9E, 0xAE, 0xBE, 0x0F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xB8, 0xA9, 673 0xB9, 0x9A, 0xAA, 0xBA, 0xCA, 0x9B, 0xAB, 0xBB, 0xCB, 0xEB, 0xFB, 0xAC, 674 0xBC, 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 675 0xCF, 0xDF, 0xEF, 0xFF, 676 /* Table set A, code table 2, wordlen 7 - 63 entries */ 677 0x00, 0x02, 0x03, 0x01, 0x05, 0x06, 0x07, 0x09, 0x36, 0x37, 0x38, 0x3A, 678 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x04, 0x08, 0x0A, 0x0B, 0x0C, 0x0E, 0x31, 679 0x34, 0x35, 0x39, 0x0D, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x16, 0x17, 0x19, 680 0x1A, 0x1E, 0x27, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x32, 0x33, 0x14, 681 0x15, 0x18, 0x1B, 0x1C, 0x1D, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 682 0x28, 0x29, 0x2A, 683 /* Table set A, code table 3, wordlen 1 - 9 entries */ 684 0x00, 0x04, 0x0C, 0x01, 0x03, 0x05, 0x0D, 0x07, 0x0F, 685 /* Table set A, code table 3, wordlen 2 - 81 entries */ 686 0x00, 0x40, 0x01, 0x10, 0x04, 0x80, 0x50, 0x20, 0x14, 0x05, 0x02, 0x90, 687 0x60, 0x44, 0x54, 0x24, 0x08, 0x18, 0x41, 0x11, 0x15, 0x09, 0x06, 0xA0, 688 0x84, 0x94, 0x64, 0xA4, 0x48, 0x58, 0x28, 0x51, 0x21, 0x45, 0x55, 0x25, 689 0x19, 0x12, 0x16, 0x0A, 0x1A, 0x68, 0xA8, 0x81, 0x91, 0x61, 0xA1, 0x85, 690 0x95, 0x65, 0xA5, 0x49, 0x59, 0x29, 0x69, 0x42, 0x52, 0x46, 0x56, 0x2A, 691 0x88, 0x98, 0x89, 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x26, 0x66, 692 0x4A, 0x5A, 0x6A, 0xA2, 0x96, 0xA6, 0x8A, 0x9A, 0xAA, 693 /* Table set A, code table 3, wordlen 3 - 256 entries */ 694 0x00, 0x10, 0x40, 0x50, 0x04, 0x44, 0x14, 0x54, 0x01, 0x41, 0x11, 0x51, 695 0x05, 0x45, 0x15, 0x55, 0x90, 0x20, 0x94, 0x64, 0x18, 0x21, 0x95, 0x19, 696 0x69, 0x02, 0x52, 0x06, 0x46, 0x16, 0x80, 0x60, 0x84, 0xD4, 0x24, 0x08, 697 0x48, 0x58, 0x68, 0x81, 0x91, 0x61, 0x85, 0x25, 0x65, 0xA5, 0x09, 0x49, 698 0x59, 0x29, 0x42, 0x12, 0x56, 0x96, 0xA6, 0x0A, 0x17, 0x1B, 0xD0, 0xC4, 699 0x74, 0xF4, 0x88, 0xC8, 0x28, 0xA1, 0x71, 0xC5, 0xD5, 0x75, 0x99, 0xB9, 700 0x4D, 0x1D, 0x2D, 0x6D, 0x22, 0x62, 0x66, 0x4A, 0x1A, 0x9A, 0x6A, 0x8E, 701 0x5E, 0x43, 0x23, 0x07, 0x47, 0x57, 0x6B, 0xC0, 0xA0, 0xE0, 0x70, 0xB0, 702 0xA4, 0xE4, 0x34, 0xB4, 0x98, 0xD8, 0xA8, 0x38, 0x78, 0x0C, 0x4C, 0x1C, 703 0x5C, 0x9C, 0x6C, 0x7C, 0xC1, 0xD1, 0xE1, 0x31, 0xE5, 0x35, 0xB5, 0xF5, 704 0x89, 0xA9, 0x79, 0xF9, 0x0D, 0xCD, 0x9D, 0xDD, 0xAD, 0x3D, 0x7D, 0x82, 705 0xC2, 0x92, 0xD2, 0xE2, 0x72, 0xF2, 0x86, 0xD6, 0xE6, 0x76, 0xB6, 0x8A, 706 0x5A, 0xDA, 0xEA, 0xFA, 0x4E, 0x1E, 0x9E, 0xEE, 0x03, 0x13, 0x53, 0x97, 707 0xB7, 0x0B, 0x4B, 0x8B, 0x5B, 0x9B, 0xEB, 0x7B, 0x0F, 0x4F, 0x1F, 0x5F, 708 0x9F, 0x2F, 0x3F, 0xBF, 0xE8, 0xB8, 0xF8, 0x8C, 0x2C, 0x3C, 0xFC, 0xB1, 709 0xC9, 0xD9, 0xE9, 0x39, 0x5D, 0xED, 0xBD, 0xA2, 0x32, 0x26, 0x36, 0x2A, 710 0xAA, 0xBA, 0x0E, 0x2E, 0x6E, 0x83, 0xC3, 0x93, 0x63, 0xB3, 0xA7, 0x37, 711 0x30, 0xF0, 0xCC, 0xDC, 0xAC, 0xEC, 0xBC, 0xF1, 0x8D, 0xFD, 0xB2, 0xC6, 712 0xF6, 0xCA, 0x3A, 0x7A, 0xCE, 0xDE, 0xAE, 0x3E, 0x7E, 0xBE, 0xFE, 0xD3, 713 0xA3, 0xE3, 0x33, 0x73, 0xF3, 0x87, 0xC7, 0xD7, 0x27, 0x67, 0xE7, 0x77, 714 0xF7, 0xCB, 0xDB, 0x2B, 0xAB, 0x3B, 0xBB, 0xFB, 0x8F, 0xCF, 0xDF, 0x6F, 715 0xAF, 0xEF, 0x7F, 0xFF, 716 /* Table set A, code table 3, wordlen 4 - 6 entries */ 717 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, 718 /* Table set A, code table 3, wordlen 5 - 225 entries */ 719 0x00, 0xF0, 0x0F, 0x10, 0x01, 0xFF, 0x20, 0xE0, 0x11, 0xF1, 0x0E, 0x1F, 720 0x30, 0x40, 0xD0, 0x21, 0xE1, 0x02, 0x12, 0x22, 0xE2, 0xF2, 0x03, 0x13, 721 0x1E, 0x2E, 0x3E, 0xEE, 0xFE, 0x2F, 0xEF, 0xD2, 0x43, 0xF3, 0x04, 0x0D, 722 0x2D, 0x3D, 0x3F, 0xDF, 0x50, 0x60, 0x70, 0x90, 0xB0, 0x31, 0x41, 0x91, 723 0xA1, 0xC1, 0xD1, 0x42, 0xA2, 0xC2, 0x23, 0x33, 0xE3, 0x24, 0x34, 0xB4, 724 0xD4, 0xF4, 0x05, 0x15, 0x45, 0xE5, 0x16, 0x36, 0x56, 0xA6, 0xC6, 0xD6, 725 0xF6, 0x57, 0xC7, 0xF7, 0x09, 0x29, 0x49, 0x59, 0x69, 0xF9, 0x0A, 0x2A, 726 0x3A, 0x4A, 0xDA, 0xEA, 0xFA, 0x0B, 0x2B, 0xAB, 0xEB, 0xFB, 0x0C, 0x1C, 727 0x2C, 0x3C, 0x4C, 0x5C, 0xCC, 0xDC, 0xFC, 0x1D, 0x4D, 0x6D, 0xBD, 0xCD, 728 0xED, 0xFD, 0x4E, 0x6E, 0xCE, 0xDE, 0x7F, 0xA0, 0xC0, 0x51, 0x61, 0x71, 729 0xB1, 0x32, 0x52, 0x62, 0x72, 0x92, 0xB2, 0x53, 0x63, 0x73, 0x93, 0xA3, 730 0xB3, 0xC3, 0xD3, 0x14, 0x44, 0x54, 0x64, 0x74, 0x94, 0xA4, 0xC4, 0xE4, 731 0x25, 0x35, 0x55, 0x65, 0x75, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xF5, 0x06, 732 0x26, 0x46, 0x66, 0x76, 0x96, 0xB6, 0xE6, 0x07, 0x17, 0x27, 0x37, 0x47, 733 0x67, 0x77, 0x97, 0xA7, 0xB7, 0xD7, 0xE7, 0x19, 0x39, 0x79, 0x99, 0xA9, 734 0xB9, 0xC9, 0xD9, 0xE9, 0x1A, 0x5A, 0x6A, 0x7A, 0x9A, 0xAA, 0xBA, 0xCA, 735 0x1B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x9B, 0xBB, 0xCB, 0xDB, 0x6C, 0x7C, 736 0x9C, 0xAC, 0xBC, 0xEC, 0x5D, 0x7D, 0x9D, 0xAD, 0xDD, 0x5E, 0x7E, 0x9E, 737 0xAE, 0xBE, 0x4F, 0x5F, 0x6F, 0x9F, 0xAF, 0xBF, 0xCF, 738 /* Table set A, code table 3, wordlen 6 - 256 entries */ 739 0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x22, 0x31, 0x41, 0x32, 740 0x13, 0x23, 0x30, 0x40, 0x51, 0x42, 0x03, 0x33, 0x43, 0x04, 0x14, 0x24, 741 0x34, 0x15, 0x25, 0x50, 0x61, 0x71, 0xD1, 0x52, 0x62, 0x72, 0xD2, 0x53, 742 0x63, 0xD3, 0x44, 0x54, 0x64, 0x05, 0x35, 0x45, 0x55, 0x16, 0x26, 0x36, 743 0x46, 0x17, 0x27, 0x1D, 0x2D, 0x3D, 0x60, 0x70, 0xD0, 0x81, 0x91, 0xA1, 744 0xC1, 0xE1, 0xF1, 0x82, 0x92, 0xC2, 0xE2, 0xF2, 0x73, 0x83, 0xE3, 0xF3, 745 0x74, 0x84, 0xC4, 0xD4, 0xE4, 0xF4, 0x65, 0x75, 0x85, 0xD5, 0xE5, 0x06, 746 0x56, 0x66, 0xD6, 0xE6, 0x07, 0x37, 0x47, 0x57, 0x67, 0xD7, 0xE7, 0x18, 747 0x28, 0x38, 0x48, 0x58, 0xD8, 0x19, 0x29, 0x2A, 0x1C, 0x2C, 0x0D, 0x4D, 748 0x5D, 0x6D, 0x7D, 0x8D, 0x9D, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E, 749 0x1F, 0x2F, 0x3F, 0x80, 0x90, 0xA0, 0xC0, 0xE0, 0xF0, 0xB1, 0xA2, 0xB2, 750 0x93, 0xA3, 0xB3, 0xC3, 0x94, 0xA4, 0xB4, 0x95, 0xA5, 0xB5, 0xC5, 0xF5, 751 0x76, 0x86, 0x96, 0xA6, 0xC6, 0xF6, 0x77, 0x87, 0x97, 0xA7, 0xC7, 0xF7, 752 0x08, 0x68, 0x78, 0x88, 0x98, 0xC8, 0xE8, 0xF8, 0x09, 0x39, 0x49, 0x59, 753 0x69, 0x79, 0x89, 0xD9, 0xE9, 0xF9, 0x0A, 0x1A, 0x3A, 0x4A, 0x5A, 0x6A, 754 0xDA, 0xEA, 0xFA, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0xDB, 0xEB, 0xFB, 0x0C, 755 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xDC, 0xEC, 0xAD, 0xBD, 0xCD, 756 0xDD, 0xED, 0x0E, 0x8E, 0x9E, 0xAE, 0xBE, 0x0F, 0x4F, 0x5F, 0x6F, 0x7F, 757 0x8F, 0x9F, 0xAF, 0xB0, 0xB6, 0xB7, 0xA8, 0xB8, 0x99, 0xA9, 0xB9, 0xC9, 758 0x7A, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0x0B, 0x6B, 0x7B, 0x8B, 0x9B, 0xCB, 759 0xAC, 0xBC, 0xCC, 0xFC, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 760 0xEF, 0xFF, 0xAB, 0xBB, 761 /* Table set A, code table 3, wordlen 7 - 63 entries */ 762 0x00, 0x01, 0x02, 0x03, 0x3D, 0x3E, 0x3F, 0x04, 0x05, 0x06, 0x3A, 0x3B, 763 0x3C, 0x07, 0x08, 0x09, 0x0A, 0x36, 0x37, 0x38, 0x39, 0x0B, 0x0C, 0x0D, 764 0x0E, 0x0F, 0x10, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x23, 0x24, 0x25, 765 0x26, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x11, 0x12, 0x13, 0x14, 0x15, 766 0x16, 0x17, 0x18, 0x1F, 0x21, 0x22, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 767 0x2D, 0x2E, 0x2F, 768 /* Table set A, code table 4, wordlen 1 - 81 entries */ 769 0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0x50, 0xD0, 0x70, 770 0xF0, 0xC4, 0x34, 0x4C, 0xCC, 0x1C, 0x41, 0xC1, 0x31, 0x05, 0x0D, 0x43, 771 0xC3, 0x13, 0x07, 0x0F, 0x44, 0x14, 0x74, 0xDC, 0x3C, 0x11, 0x1D, 0x33, 772 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0xC5, 0x15, 773 0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 0x1F, 774 0x3F, 0x51, 0x45, 0x55, 0xD5, 0x75, 0xF5, 0x5D, 0x7D, 0xFD, 0x53, 0xF3, 775 0x57, 0xD7, 0xF7, 0x4F, 0xCF, 0x5F, 0xDF, 0x7F, 0xFF, 776 /* Table set A, code table 4, wordlen 2 - 81 entries */ 777 0x00, 0x40, 0x01, 0x10, 0x50, 0x04, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51, 778 0x05, 0x45, 0x15, 0x55, 0x59, 0x80, 0x90, 0x20, 0x60, 0x84, 0x94, 0x24, 779 0x64, 0x08, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x61, 0x85, 0x95, 0x25, 780 0x65, 0x09, 0x49, 0x19, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 781 0xA0, 0xA4, 0x68, 0xA1, 0xA5, 0x99, 0x29, 0x69, 0x96, 0x66, 0x4A, 0x1A, 782 0x5A, 0x88, 0x98, 0x28, 0x89, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 0x26, 783 0xA6, 0x0A, 0x9A, 0x2A, 0x6A, 0xA8, 0xA2, 0x8A, 0xAA, 784 /* Table set A, code table 4, wordlen 3 - 7 entries */ 785 0x00, 0x07, 0x01, 0x02, 0x06, 0x03, 0x05, 786 /* Table set A, code table 4, wordlen 4 - 121 entries */ 787 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x21, 788 0xE1, 0x02, 0x12, 0xF2, 0x0E, 0x1E, 0xFE, 0x2F, 0xEF, 0x30, 0x50, 0xD0, 789 0xD1, 0x22, 0xE2, 0x03, 0x13, 0xF3, 0x0D, 0x1D, 0x2D, 0xFD, 0x2E, 0xEE, 790 0x3F, 0xDF, 0x40, 0xB0, 0xC0, 0x31, 0x41, 0x51, 0xB1, 0xC1, 0x32, 0xB2, 791 0xC2, 0xD2, 0x23, 0xB3, 0xD3, 0xE3, 0x04, 0x14, 0xE4, 0xF4, 0x05, 0x15, 792 0xD5, 0xE5, 0xF5, 0x0B, 0x1B, 0x2B, 0x3B, 0xEB, 0xFB, 0x0C, 0x1C, 0x2C, 793 0xFC, 0x3D, 0x5D, 0xED, 0x3E, 0x4E, 0x5E, 0xBE, 0xDE, 0x4F, 0x5F, 0xBF, 794 0xCF, 0x42, 0x52, 0x33, 0x53, 0xC3, 0x24, 0xB4, 0xD4, 0x25, 0x35, 0xC5, 795 0x4B, 0xCB, 0xDB, 0x3C, 0x4C, 0x5C, 0xDC, 0xEC, 0x4D, 0xBD, 0xCD, 0xDD, 796 0xCE, 0x43, 0x34, 0x44, 0x54, 0xC4, 0x45, 0x55, 0xB5, 0x5B, 0xBB, 0xBC, 797 0xCC, 798 /* Table set A, code table 4, wordlen 5 - 8 entries */ 799 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 800 /* Table set A, code table 4, wordlen 6 - 256 entries */ 801 0x02, 0x00, 0x30, 0x21, 0x31, 0x41, 0x61, 0x12, 0x22, 0x42, 0x62, 0x43, 802 0x53, 0x24, 0x45, 0x26, 0x27, 0x10, 0x40, 0xB0, 0x01, 0x11, 0x81, 0x32, 803 0x52, 0x72, 0x92, 0x03, 0x13, 0x33, 0x63, 0x14, 0x34, 0x54, 0x64, 0x74, 804 0x05, 0x15, 0x25, 0x35, 0x55, 0x65, 0x06, 0x46, 0x56, 0x57, 0x67, 0x88, 805 0x20, 0x51, 0x91, 0xD1, 0xF2, 0x23, 0x83, 0x93, 0x04, 0x44, 0x84, 0x94, 806 0x75, 0x85, 0xC5, 0x36, 0x66, 0x96, 0xB6, 0x07, 0x37, 0x97, 0x08, 0x28, 807 0x38, 0x48, 0x68, 0x09, 0x69, 0x79, 0x0A, 0x2A, 0x1B, 0x9B, 0x2C, 0x4D, 808 0x50, 0x60, 0x70, 0x80, 0x90, 0xA0, 0xC0, 0xD0, 0xE0, 0xF0, 0x71, 0xA1, 809 0xB1, 0xC1, 0xE1, 0xF1, 0x82, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0x73, 0xA3, 810 0xB3, 0xC3, 0xD3, 0xE3, 0xF3, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, 0x95, 811 0xA5, 0xB5, 0xD5, 0xE5, 0xF5, 0x16, 0x76, 0x86, 0xA6, 0xC6, 0xD6, 0xE6, 812 0xF6, 0x17, 0x47, 0x77, 0x87, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7, 0x18, 813 0x58, 0x78, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, 0x19, 0x29, 0x39, 814 0x49, 0x59, 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9, 0x1A, 0x3A, 815 0x4A, 0x5A, 0x6A, 0x7A, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA, 816 0x0B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0x8B, 0xAB, 0xBB, 0xCB, 0xDB, 817 0xEB, 0xFB, 0x0C, 0x1C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0x9C, 0xAC, 818 0xBC, 0xCC, 0xDC, 0xEC, 0xFC, 0x0D, 0x1D, 0x2D, 0x3D, 0x5D, 0x6D, 0x7D, 819 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD, 0x0E, 0x1E, 0x2E, 0x3E, 820 0x4E, 0x5E, 0x6E, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE, 821 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xBF, 822 0xCF, 0xDF, 0xEF, 0xFF, 823 /* Table set A, code table 4, wordlen 7 - 63 entries */ 824 0x00, 0x01, 0x02, 0x3E, 0x3F, 0x03, 0x04, 0x05, 0x06, 0x08, 0x36, 0x38, 825 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x07, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 826 0x35, 0x37, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x24, 0x25, 0x27, 827 0x2A, 0x34, 0x16, 0x19, 0x1C, 0x23, 0x26, 0x28, 0x29, 0x2B, 0x2D, 0x2E, 828 0x2F, 0x30, 0x31, 0x32, 0x33, 0x17, 0x18, 0x1A, 0x1B, 0x1D, 0x1E, 0x1F, 829 0x21, 0x22, 0x2C, 830 /* Table set A, code table 5, wordlen 1 - 81 entries */ 831 0x00, 0x40, 0xC0, 0x30, 0x04, 0x01, 0x03, 0x10, 0x0C, 0xD0, 0x70, 0x34, 832 0x1C, 0x0D, 0x07, 0x50, 0xF0, 0x44, 0xC4, 0x14, 0x4C, 0xCC, 0x3C, 0x41, 833 0xC1, 0x11, 0x31, 0x05, 0x43, 0xC3, 0x13, 0x33, 0x0F, 0x74, 0xDC, 0x1D, 834 0x37, 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0xFC, 0xD1, 0x71, 0xF1, 0xC5, 0x15, 835 0x35, 0x4D, 0xCD, 0xDD, 0x3D, 0x53, 0xD3, 0x73, 0x47, 0xC7, 0x17, 0x77, 836 0x4F, 0x1F, 0x3F, 0x51, 0x45, 0x55, 0xF3, 0xCF, 0xFF, 0xD5, 0x75, 0xF5, 837 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F, 838 /* Table set A, code table 5, wordlen 2 - 25 entries */ 839 0x00, 0x08, 0x38, 0x01, 0x07, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x02, 0x06, 840 0x30, 0x11, 0x31, 0x0A, 0x3A, 0x0E, 0x17, 0x37, 0x32, 0x16, 0x3E, 0x12, 841 0x36, 842 /* Table set A, code table 5, wordlen 3 - 7 entries */ 843 0x00, 0x01, 0x02, 0x06, 0x07, 0x03, 0x05, 844 /* Table set A, code table 5, wordlen 4 - 121 entries */ 845 0x00, 0x01, 0x0F, 0x1F, 0x10, 0xE0, 0xF0, 0x11, 0xF1, 0x2F, 0xFF, 0x20, 846 0x21, 0xE1, 0x02, 0x12, 0xF2, 0x03, 0xF3, 0x0E, 0x2E, 0xFE, 0x3F, 0x30, 847 0x40, 0xD0, 0xC1, 0xD1, 0x22, 0xC2, 0x33, 0xE3, 0x0C, 0xCC, 0x0D, 0x1D, 848 0x2D, 0xFD, 0x1E, 0x3E, 0x5E, 0xEF, 0xC0, 0x52, 0xB2, 0xD2, 0x43, 0xC3, 849 0xD3, 0x24, 0x45, 0xF5, 0x4B, 0x5B, 0xFB, 0x1C, 0x3D, 0xBD, 0xDD, 0xEE, 850 0xBF, 0xCF, 0xDF, 0x50, 0xB0, 0x31, 0x41, 0x51, 0xB1, 0x32, 0x42, 0xE2, 851 0x13, 0x23, 0x53, 0xB3, 0x04, 0x14, 0x34, 0x44, 0x54, 0xB4, 0xC4, 0xD4, 852 0xE4, 0xF4, 0x05, 0x15, 0x25, 0x35, 0x55, 0xB5, 0xC5, 0xD5, 0xE5, 0x0B, 853 0x1B, 0x2B, 0x3B, 0xBB, 0xCB, 0xDB, 0xEB, 0x2C, 0x3C, 0x4C, 0x5C, 0xBC, 854 0xDC, 0xEC, 0xFC, 0x4D, 0x5D, 0xCD, 0xED, 0x4E, 0xBE, 0xCE, 0xDE, 0x4F, 855 0x5F, 856 /* Table set A, code table 5, wordlen 5 - 8 entries */ 857 0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x04, 0x05, 858 /* Table set A, code table 5, wordlen 6 - 31 entries */ 859 0x04, 0x00, 0x01, 0x02, 0x03, 0x1C, 0x1D, 0x1E, 0x1F, 0x05, 0x06, 0x07, 860 0x18, 0x19, 0x1B, 0x08, 0x09, 0x0E, 0x13, 0x15, 0x16, 0x17, 0x1A, 0x0A, 861 0x0B, 0x0C, 0x0D, 0x0F, 0x11, 0x12, 0x14, 862 /* Table set A, code table 5, wordlen 7 - 63 entries */ 863 0x00, 0x01, 0x02, 0x3D, 0x3E, 0x3F, 0x03, 0x04, 0x05, 0x06, 0x3A, 0x3B, 864 0x3C, 0x07, 0x08, 0x09, 0x0A, 0x36, 0x37, 0x38, 0x39, 0x0B, 0x0C, 0x0D, 865 0x0E, 0x0F, 0x1A, 0x1B, 0x1C, 0x24, 0x25, 0x26, 0x31, 0x32, 0x33, 0x34, 866 0x35, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, 0x1D, 0x1E, 867 0x1F, 0x21, 0x22, 0x23, 0x27, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x16, 868 0x28, 0x29, 0x2A, 869 /* Table set A, code table 6, wordlen 1 - 81 entries */ 870 0x00, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x03, 0x70, 0x50, 0xD0, 871 0xF0, 0x44, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0x31, 0x05, 0x0D, 0x13, 872 0x07, 0x0F, 0x74, 0xCC, 0xDC, 0xFC, 0x41, 0xC1, 0x11, 0x43, 0xC3, 0x33, 873 0x54, 0xD4, 0xF4, 0x5C, 0x7C, 0x51, 0xD1, 0x71, 0xF1, 0x45, 0xC5, 0x15, 874 0x35, 0x4D, 0xCD, 0x1D, 0x3D, 0x53, 0xD3, 0x73, 0xF3, 0x47, 0xC7, 0x17, 875 0x37, 0x4F, 0xCF, 0x1F, 0x3F, 0x55, 0xD5, 0x75, 0xF5, 0x5D, 0xDD, 0xFD, 876 0x57, 0xD7, 0x77, 0xF7, 0xFF, 0x7D, 0x5F, 0xDF, 0x7F, 877 /* Table set A, code table 6, wordlen 2 - 25 entries */ 878 0x00, 0x08, 0x38, 0x01, 0x07, 0x39, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31, 879 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x37, 0x11, 0x0A, 0x32, 0x16, 0x3E, 0x12, 880 0x36, 881 /* Table set A, code table 6, wordlen 3 - 256 entries */ 882 0x00, 0x40, 0x10, 0x50, 0x04, 0x44, 0x14, 0x01, 0x41, 0x05, 0x45, 0x55, 883 0x54, 0x11, 0x51, 0x15, 0x80, 0x90, 0x60, 0x24, 0x64, 0xA4, 0x48, 0x61, 884 0x95, 0x25, 0xA5, 0x02, 0x42, 0x52, 0x16, 0x56, 0x20, 0x84, 0x94, 0x18, 885 0x58, 0x81, 0x91, 0x85, 0x65, 0x09, 0x49, 0x19, 0x59, 0x99, 0x29, 0x69, 886 0x79, 0x5D, 0x12, 0x62, 0x06, 0x46, 0x86, 0x66, 0x1A, 0x5A, 0x6A, 0x47, 887 0x17, 0xC0, 0xA0, 0xE0, 0xC4, 0xD4, 0x74, 0x08, 0x78, 0x0C, 0x4C, 0x1C, 888 0x5C, 0xD1, 0x21, 0xE1, 0x71, 0xC5, 0xE5, 0x75, 0xB5, 0x89, 0xBD, 0x92, 889 0x22, 0x96, 0xA6, 0x36, 0x0A, 0x4A, 0x8A, 0x9A, 0x2A, 0x7A, 0xDE, 0x6E, 890 0x43, 0x13, 0x53, 0x23, 0x07, 0x77, 0x4B, 0x1B, 0x9B, 0x6B, 0x2F, 0xD0, 891 0x30, 0x70, 0xE4, 0x34, 0xF4, 0xC8, 0x98, 0x28, 0x68, 0xA8, 0xE8, 0x38, 892 0xB8, 0xF8, 0x9C, 0x2C, 0x6C, 0x7C, 0xA1, 0xB1, 0xD5, 0x35, 0xC9, 0xD9, 893 0xA9, 0xE9, 0x39, 0xB9, 0xF9, 0xCD, 0x1D, 0x2D, 0xAD, 0x7D, 0xC2, 0xD2, 894 0xA2, 0xB2, 0xF2, 0xC6, 0x26, 0x76, 0xB6, 0xDA, 0xAA, 0xEA, 0x3A, 0xFA, 895 0x0E, 0x4E, 0x2E, 0x7E, 0xBE, 0xFE, 0x03, 0x83, 0x63, 0xA3, 0xB3, 0x87, 896 0x57, 0x97, 0xD7, 0x27, 0x0B, 0x8B, 0x5B, 0x2B, 0xAB, 0xCF, 0x1F, 0x9F, 897 0x7F, 0xBF, 0xB0, 0xF0, 0xB4, 0x88, 0xD8, 0x8C, 0xCC, 0xDC, 0xAC, 0xEC, 898 0x3C, 0xBC, 0xFC, 0xC1, 0x31, 0xF1, 0xF5, 0x0D, 0x4D, 0x8D, 0x9D, 0xDD, 899 0x6D, 0xED, 0x3D, 0xFD, 0x82, 0xE2, 0x32, 0x72, 0xD6, 0xE6, 0xF6, 0xCA, 900 0xBA, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xAE, 0xEE, 0x3E, 0xC3, 0x93, 0xD3, 901 0xE3, 0x33, 0x73, 0xF3, 0xC7, 0x67, 0xA7, 0xE7, 0x37, 0xB7, 0xF7, 0xCB, 902 0xDB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB, 0x0F, 0x4F, 0x8F, 0x5F, 0xDF, 0x6F, 903 0xAF, 0xEF, 0x3F, 0xFF, 904 /* Table set A, code table 6, wordlen 4 - 121 entries */ 905 0x00, 0x10, 0x20, 0xE0, 0xF0, 0x02, 0x0E, 0xEF, 0x30, 0x01, 0x11, 0x21, 906 0x31, 0xF1, 0x12, 0xF2, 0x1E, 0xEE, 0xDF, 0xFF, 0x40, 0xC0, 0xD0, 0xD1, 907 0xE1, 0x22, 0x32, 0x42, 0xD2, 0xE2, 0x03, 0x13, 0x23, 0xB3, 0xC3, 0xE3, 908 0xF3, 0xE4, 0x05, 0xF5, 0x2B, 0x0C, 0xFC, 0x1D, 0x2D, 0xBD, 0xDD, 0xFD, 909 0x2E, 0x4E, 0xDE, 0xFE, 0x0F, 0x1F, 0x2F, 0x3F, 0x50, 0xB0, 0x41, 0x51, 910 0xB1, 0xC1, 0x52, 0xB2, 0xC2, 0x33, 0x43, 0x53, 0xD3, 0x04, 0x14, 0x24, 911 0x34, 0x44, 0x54, 0xB4, 0xC4, 0xD4, 0xF4, 0x15, 0x25, 0x35, 0x45, 0x55, 912 0xB5, 0xC5, 0xD5, 0xE5, 0x0B, 0x1B, 0x3B, 0x4B, 0x5B, 0xBB, 0xCB, 0xDB, 913 0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0xBC, 0xCC, 0xDC, 0xEC, 0x0D, 914 0x3D, 0x4D, 0x5D, 0xCD, 0xED, 0x3E, 0x5E, 0xBE, 0xCE, 0x4F, 0xCF, 0x5F, 915 0xBF, 916 /* Table set A, code table 6, wordlen 5 - 15 entries */ 917 0x00, 0x01, 0x0F, 0x0E, 0x02, 0x03, 0x0D, 0x04, 0x06, 0x0A, 0x0C, 0x05, 918 0x07, 0x09, 0x0B, 919 /* Table set A, code table 6, wordlen 6 - 31 entries */ 920 0x00, 0x01, 0x1F, 0x02, 0x1E, 0x03, 0x04, 0x0F, 0x11, 0x1C, 0x1D, 0x05, 921 0x06, 0x07, 0x08, 0x18, 0x19, 0x1A, 0x1B, 0x09, 0x0A, 0x0B, 0x15, 0x16, 922 0x17, 0x0C, 0x13, 0x14, 0x0D, 0x0E, 0x12, 923 /* Table set A, code table 6, wordlen 7 - 63 entries */ 924 0x00, 0x01, 0x02, 0x3E, 0x3F, 0x03, 0x04, 0x3C, 0x3D, 0x05, 0x06, 0x07, 925 0x39, 0x3A, 0x3B, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x1A, 0x26, 0x34, 926 0x35, 0x36, 0x37, 0x38, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x19, 0x1B, 927 0x1C, 0x1D, 0x1E, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x27, 0x2D, 0x2E, 928 0x2F, 0x30, 0x31, 0x32, 0x33, 0x14, 0x15, 0x16, 0x17, 0x18, 0x28, 0x29, 929 0x2A, 0x2B, 0x2C, 930 /* Table set A, code table 7, wordlen 1 - 4 entries */ 931 0x00, 0x01, 0x02, 0x03, 932 /* Table set A, code table 7, wordlen 2 - 81 entries */ 933 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x05, 934 0x15, 0x51, 0x45, 0x55, 0x80, 0x90, 0x20, 0x64, 0x08, 0x19, 0x02, 0x06, 935 0x60, 0x84, 0x94, 0x24, 0x48, 0x18, 0x58, 0x81, 0x91, 0x21, 0x61, 0x85, 936 0x95, 0x25, 0x65, 0x09, 0x49, 0x59, 0x42, 0x12, 0x52, 0x46, 0x16, 0x56, 937 0xA0, 0xA4, 0x98, 0x28, 0x68, 0xA1, 0xA5, 0x99, 0x29, 0x69, 0x96, 0x26, 938 0x66, 0x0A, 0x4A, 0x1A, 0x5A, 0x88, 0xA8, 0x89, 0xA9, 0x82, 0x92, 0x22, 939 0x62, 0x86, 0xA6, 0x2A, 0x6A, 0xA2, 0x8A, 0x9A, 0xAA, 940 /* Table set A, code table 7, wordlen 3 - 49 entries */ 941 0x00, 0x08, 0x38, 0x01, 0x39, 0x07, 0x0F, 0x09, 0x3F, 0x10, 0x30, 0x31, 942 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x32, 0x0D, 0x16, 0x3E, 0x37, 943 0x18, 0x28, 0x19, 0x29, 0x12, 0x2A, 0x03, 0x3B, 0x05, 0x15, 0x1E, 0x1F, 944 0x2F, 0x1A, 0x0B, 0x2B, 0x33, 0x35, 0x3D, 0x2E, 0x36, 0x13, 0x1B, 0x1D, 945 0x2D, 946 /* Table set A, code table 7, wordlen 4 - 121 entries */ 947 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02, 948 0xF2, 0x0E, 0x21, 0xE1, 0x12, 0xE2, 0x1E, 0x2E, 0xFE, 0x2F, 0xEF, 0x30, 949 0x50, 0xB0, 0xC0, 0xD0, 0x31, 0xB1, 0xD1, 0x22, 0xD2, 0x03, 0x13, 0xE3, 950 0xF3, 0xF4, 0x05, 0xE5, 0xF5, 0x0B, 0x1B, 0x0C, 0x0D, 0x1D, 0x2D, 0xFD, 951 0x3E, 0xEE, 0x3F, 0x5F, 0xDF, 0x40, 0x41, 0x51, 0xC1, 0x32, 0x42, 0x52, 952 0xB2, 0xC2, 0x23, 0x33, 0xB3, 0xC3, 0xD3, 0x04, 0x14, 0x24, 0xD4, 0xE4, 953 0x15, 0x25, 0xC5, 0xD5, 0x2B, 0x3B, 0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x5C, 954 0xEC, 0xFC, 0x3D, 0x5D, 0xDD, 0xED, 0x4E, 0x5E, 0xBE, 0xCE, 0xDE, 0x4F, 955 0xBF, 0xCF, 0x43, 0x53, 0x34, 0x54, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0xB5, 956 0x4B, 0x5B, 0xCB, 0xDB, 0x4C, 0xBC, 0xCC, 0xDC, 0x4D, 0xBD, 0xCD, 0x44, 957 0xBB, 958 /* Table set A, code table 7, wordlen 5 - 15 entries */ 959 0x00, 0x01, 0x0E, 0x0F, 0x02, 0x03, 0x0D, 0x04, 0x06, 0x0A, 0x0C, 0x05, 960 0x07, 0x09, 0x0B, 961 /* Table set A, code table 7, wordlen 6 - 256 entries */ 962 0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x41, 0x22, 963 0x03, 0x13, 0x23, 0x14, 0x40, 0x51, 0x61, 0x32, 0x42, 0x33, 0x04, 0x24, 964 0x15, 0x16, 0x50, 0x60, 0xD0, 0x71, 0x81, 0xD1, 0xE1, 0xF1, 0x52, 0x62, 965 0x72, 0xD2, 0x43, 0x53, 0x63, 0xD3, 0x34, 0x44, 0x54, 0x05, 0x25, 0x35, 966 0x45, 0x06, 0x26, 0x36, 0x17, 0x27, 0x18, 0x0D, 0x1D, 0x2D, 0x3D, 0x1E, 967 0x2E, 0x1F, 0x70, 0x80, 0xE0, 0xF0, 0x91, 0xA1, 0xC1, 0x82, 0x92, 0xC2, 968 0xE2, 0xF2, 0x73, 0x83, 0x93, 0xE3, 0xF3, 0x64, 0x74, 0x84, 0xD4, 0xE4, 969 0xF4, 0x55, 0x65, 0xD5, 0xE5, 0xF5, 0x46, 0x56, 0x66, 0xD6, 0x07, 0x37, 970 0x47, 0x57, 0x08, 0x28, 0x38, 0x48, 0x19, 0x29, 0x39, 0x1A, 0x2A, 0x1B, 971 0x1C, 0x2C, 0x3C, 0x4D, 0x5D, 0x6D, 0x0E, 0x3E, 0x4E, 0x5E, 0x0F, 0x2F, 972 0x3F, 0x4F, 0x90, 0xA0, 0xB0, 0xC0, 0xB1, 0xA2, 0xB2, 0xA3, 0xB3, 0xC3, 973 0x94, 0xA4, 0xB4, 0xC4, 0x75, 0x85, 0x95, 0xA5, 0xC5, 0x76, 0x86, 0x96, 974 0xE6, 0xF6, 0x67, 0x77, 0x87, 0xD7, 0xE7, 0xF7, 0x58, 0x68, 0x78, 0x88, 975 0xD8, 0xE8, 0xF8, 0x09, 0x49, 0x59, 0x69, 0xD9, 0xE9, 0xF9, 0x0A, 0x3A, 976 0x4A, 0x5A, 0xDA, 0xEA, 0x0B, 0x2B, 0x3B, 0x4B, 0xDB, 0x0C, 0x4C, 0x5C, 977 0x6C, 0xDC, 0x7D, 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0x6E, 0x7E, 0x8E, 0x9E, 978 0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xAF, 0xB5, 0xA6, 0xB6, 0xC6, 979 0x97, 0xA7, 0xC7, 0x98, 0xA8, 0xB8, 0xC8, 0x79, 0x89, 0x99, 0xA9, 0xB9, 980 0xC9, 0x6A, 0x7A, 0x8A, 0x9A, 0xAA, 0xCA, 0xFA, 0x5B, 0x6B, 0x7B, 0x8B, 981 0xCB, 0xEB, 0xFB, 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xEC, 0xFC, 0xDD, 0xED, 982 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xB7, 0xBA, 0x9B, 0xAB, 983 0xBB, 0xCC, 0xEF, 0xFF, 984 /* Table set B, code table 0, wordlen 1 - 81 entries */ 985 0x00, 0x01, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x50, 0xD0, 0x70, 986 0xF0, 0x34, 0x1C, 0x05, 0x0D, 0x13, 0x07, 0x0F, 0x44, 0xC4, 0x14, 0x4C, 987 0xCC, 0x3C, 0x41, 0xC1, 0x11, 0x31, 0x43, 0xC3, 0x33, 0x54, 0x74, 0xDC, 988 0xFC, 0x71, 0x15, 0x4D, 0x1D, 0xD3, 0xC7, 0x37, 0x3F, 0xD4, 0xF4, 0x5C, 989 0x7C, 0x51, 0xD1, 0xF1, 0x45, 0xC5, 0x55, 0x35, 0xCD, 0xDD, 0x3D, 0x53, 990 0x73, 0xF3, 0x47, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0xFF, 0xF5, 0x7D, 0xD7, 991 0x5F, 0xD5, 0x75, 0x5D, 0xFD, 0x57, 0xF7, 0xDF, 0x7F, 992 /* Table set B, code table 0, wordlen 2 - 81 entries */ 993 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x05, 994 0x15, 0x80, 0x51, 0x45, 0x55, 0x90, 0x20, 0x60, 0x24, 0x08, 0x18, 0x09, 995 0x02, 0x06, 0x84, 0x94, 0x64, 0x48, 0x58, 0x81, 0x91, 0x21, 0x61, 0x95, 996 0x25, 0x65, 0x19, 0x59, 0x42, 0x12, 0x46, 0x16, 0x56, 0xA0, 0xA4, 0x28, 997 0x68, 0x85, 0xA5, 0x49, 0x29, 0x69, 0x52, 0x0A, 0x1A, 0x5A, 0x88, 0x98, 998 0xA1, 0x89, 0x99, 0xA9, 0x22, 0x62, 0x96, 0x26, 0x66, 0x4A, 0x6A, 0xA8, 999 0x82, 0x92, 0xA2, 0x86, 0xA6, 0x8A, 0x9A, 0x2A, 0xAA, 1000 /* Table set B, code table 0, wordlen 3 - 49 entries */ 1001 0x00, 0x08, 0x38, 0x01, 0x07, 0x30, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x18, 1002 0x28, 0x31, 0x02, 0x3A, 0x03, 0x05, 0x06, 0x0E, 0x17, 0x37, 0x11, 0x19, 1003 0x29, 0x0A, 0x32, 0x0B, 0x3B, 0x0D, 0x15, 0x3D, 0x3E, 0x1F, 0x2F, 0x12, 1004 0x1A, 0x2A, 0x13, 0x1B, 0x2B, 0x33, 0x1D, 0x2D, 0x35, 0x16, 0x1E, 0x2E, 1005 0x36, 1006 /* Table set B, code table 0, wordlen 4 - 121 entries */ 1007 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02, 1008 0xF2, 0x0E, 0x21, 0xE1, 0x12, 0xE2, 0x1E, 0x2E, 0xFE, 0x2F, 0xEF, 0x30, 1009 0x50, 0xB0, 0xC0, 0xD0, 0x31, 0xB1, 0xD1, 0x22, 0xD2, 0x03, 0x13, 0xE3, 1010 0xF3, 0xF4, 0x05, 0xE5, 0xF5, 0x0B, 0x1B, 0x0C, 0x0D, 0x1D, 0x2D, 0xFD, 1011 0x3E, 0xEE, 0x3F, 0x5F, 0xDF, 0x40, 0x41, 0x51, 0xC1, 0x32, 0x42, 0x52, 1012 0xB2, 0xC2, 0x23, 0x33, 0xB3, 0xC3, 0xD3, 0x04, 0x14, 0x24, 0xD4, 0xE4, 1013 0x15, 0x25, 0xC5, 0xD5, 0x2B, 0x3B, 0xEB, 0xFB, 0x1C, 0x2C, 0x3C, 0x5C, 1014 0xEC, 0xFC, 0x3D, 0x5D, 0xDD, 0xED, 0x4E, 0x5E, 0xBE, 0xCE, 0xDE, 0x4F, 1015 0xBF, 0xCF, 0x43, 0x53, 0x34, 0x54, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0xB5, 1016 0x4B, 0x5B, 0xCB, 0xDB, 0x4C, 0xBC, 0xCC, 0xDC, 0x4D, 0xBD, 0xCD, 0x44, 1017 0xBB, 1018 /* Table set B, code table 0, wordlen 5 - 225 entries */ 1019 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x02, 1020 0x0E, 0x30, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x0D, 0x1E, 0xFE, 0x2F, 1021 0xEF, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x31, 0xD1, 0x22, 0x32, 0xD2, 1022 0xE2, 0x13, 0x23, 0xE3, 0xF3, 0x04, 0x06, 0x07, 0x09, 0x0A, 0x0C, 0x1D, 1023 0x2D, 0xFD, 0x2E, 0x3E, 0xEE, 0x3F, 0xDF, 0x50, 0xB0, 0x41, 0x51, 0x61, 1024 0x71, 0x91, 0xA1, 0xB1, 0xC1, 0x42, 0x62, 0x72, 0x92, 0xA2, 0xC2, 0x33, 1025 0x93, 0xA3, 0xD3, 0x14, 0x24, 0xE4, 0xF4, 0x05, 0x15, 0xF5, 0x16, 0x26, 1026 0xD6, 0xE6, 0xF6, 0x17, 0x27, 0xD7, 0xE7, 0xF7, 0x19, 0x29, 0x39, 0xE9, 1027 0xF9, 0x1A, 0x2A, 0xEA, 0xFA, 0x0B, 0x1B, 0xFB, 0x1C, 0x2C, 0xEC, 0xFC, 1028 0x3D, 0x7D, 0x9D, 0xDD, 0xED, 0x4E, 0x6E, 0x7E, 0x9E, 0xAE, 0xCE, 0xDE, 1029 0x4F, 0x5F, 0x6F, 0x7F, 0x9F, 0xAF, 0xBF, 0xCF, 0x52, 0xB2, 0x43, 0x53, 1030 0x63, 0x73, 0xB3, 0xC3, 0x34, 0x44, 0x64, 0x74, 0x94, 0xA4, 0xB4, 0xC4, 1031 0xD4, 0x25, 0x35, 0x65, 0x75, 0x95, 0xA5, 0xD5, 0xE5, 0x36, 0x46, 0x56, 1032 0x66, 0xA6, 0xB6, 0xC6, 0x37, 0x47, 0x57, 0xB7, 0xC7, 0x49, 0x59, 0x69, 1033 0xB9, 0xC9, 0xD9, 0x3A, 0x4A, 0x5A, 0x6A, 0xAA, 0xBA, 0xCA, 0xDA, 0x2B, 1034 0x3B, 0x6B, 0x7B, 0x9B, 0xAB, 0xDB, 0xEB, 0x3C, 0x4C, 0x6C, 0x7C, 0x9C, 1035 0xAC, 0xCC, 0xDC, 0x4D, 0x5D, 0x6D, 0xAD, 0xBD, 0xCD, 0x5E, 0xBE, 0x54, 1036 0x45, 0x55, 0xB5, 0xC5, 0x76, 0x96, 0x67, 0x77, 0x97, 0xA7, 0x79, 0x99, 1037 0xA9, 0x7A, 0x9A, 0x4B, 0x5B, 0xBB, 0xCB, 0x5C, 0xBC, 1038 /* Table set B, code table 0, wordlen 7 - 63 entries */ 1039 0x00, 0x01, 0x3F, 0x02, 0x3E, 0x03, 0x04, 0x3C, 0x3D, 0x05, 0x06, 0x07, 1040 0x08, 0x38, 0x39, 0x3A, 0x3B, 0x09, 0x0A, 0x0B, 0x0C, 0x19, 0x1A, 0x1B, 1041 0x1C, 0x1D, 0x1E, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x33, 1042 0x34, 0x35, 0x36, 0x37, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x2D, 1043 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x14, 0x15, 0x16, 0x17, 0x18, 0x28, 0x29, 1044 0x2A, 0x2B, 0x2C, 1045 /* Table set B, code table 1, wordlen 2 - 81 entries */ 1046 0x00, 0x40, 0x04, 0x01, 0x10, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51, 1047 0x05, 0x45, 0x15, 0x55, 0x80, 0x90, 0x20, 0x60, 0x84, 0x94, 0x24, 0x64, 1048 0x08, 0x48, 0x18, 0x81, 0x91, 0x61, 0x85, 0x95, 0x25, 0x65, 0x09, 0x49, 1049 0x19, 0x59, 0x02, 0x42, 0x12, 0x52, 0x06, 0x46, 0x16, 0x56, 0xA4, 0x58, 1050 0x68, 0x21, 0xA5, 0x29, 0x69, 0x1A, 0x5A, 0xA0, 0x88, 0x98, 0x28, 0xA1, 1051 0x89, 0x99, 0xA9, 0x92, 0x22, 0x62, 0x86, 0x96, 0x26, 0x66, 0x0A, 0x4A, 1052 0x6A, 0xA8, 0x82, 0xA2, 0xA6, 0x8A, 0x9A, 0x2A, 0xAA, 1053 /* Table set B, code table 1, wordlen 4 - 121 entries */ 1054 0x00, 0x10, 0xF0, 0x01, 0x0F, 0xF1, 0x1F, 0xFF, 0x20, 0xE0, 0x11, 0x02, 1055 0x0E, 0x30, 0x50, 0xB0, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x05, 0x0B, 1056 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 0x40, 0xC0, 0x31, 0x51, 0xB1, 0xC1, 0xD1, 1057 0x22, 0x52, 0xE2, 0x13, 0xF3, 0x04, 0x15, 0xF5, 0x1B, 0xEB, 0xFB, 0x0C, 1058 0x1D, 0xFD, 0x2E, 0x5E, 0xEE, 0x3F, 0x5F, 0xBF, 0xDF, 0x41, 0x32, 0x42, 1059 0xB2, 0xD2, 0x23, 0x53, 0xB3, 0xE3, 0x14, 0x24, 0xE4, 0xF4, 0x25, 0x35, 1060 0xD5, 0xE5, 0x2B, 0x3B, 0xDB, 0x1C, 0x2C, 0xBC, 0xEC, 0xFC, 0x2D, 0xBD, 1061 0xED, 0x3E, 0x4E, 0xBE, 0xDE, 0x4F, 0xCF, 0xC2, 0x33, 0x43, 0xC3, 0xD3, 1062 0x34, 0x44, 0x54, 0xB4, 0xD4, 0x45, 0x55, 0xC5, 0x4B, 0xCB, 0x3C, 0x4C, 1063 0x5C, 0xCC, 0xDC, 0x3D, 0x4D, 0x5D, 0xCD, 0xDD, 0xCE, 0xC4, 0xB5, 0x5B, 1064 0xBB, 1065 /* Table set B, code table 1, wordlen 6 - 256 entries */ 1066 0x00, 0x10, 0x01, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x41, 0x22, 1067 0x32, 0x03, 0x13, 0x23, 0x14, 0x40, 0x51, 0x61, 0x42, 0x52, 0x33, 0x43, 1068 0x04, 0x24, 0x34, 0x15, 0x25, 0x16, 0x50, 0x60, 0x70, 0x71, 0x81, 0xD1, 1069 0xE1, 0x62, 0x72, 0x82, 0xD2, 0x53, 0x63, 0x73, 0xD3, 0x44, 0x54, 0x05, 1070 0x35, 0x45, 0x55, 0x06, 0x26, 0x36, 0x07, 0x17, 0x27, 0x37, 0x18, 0x28, 1071 0x19, 0x1D, 0x2D, 0x3D, 0x1E, 0x2E, 0x1F, 0x80, 0x90, 0xD0, 0xE0, 0xF0, 1072 0x91, 0xA1, 0xB1, 0xC1, 0xF1, 0x92, 0xA2, 0xB2, 0xC2, 0xE2, 0xF2, 0x83, 1073 0x93, 0xA3, 0xC3, 0xE3, 0xF3, 0x64, 0x74, 0x84, 0x94, 0xD4, 0xE4, 0xF4, 1074 0x65, 0x75, 0x85, 0xD5, 0xE5, 0x46, 0x56, 0x66, 0x76, 0xD6, 0xE6, 0x47, 1075 0x57, 0x67, 0xD7, 0x08, 0x38, 0x48, 0x58, 0x09, 0x29, 0x39, 0x49, 0x0A, 1076 0x1A, 0x2A, 0x3A, 0x1B, 0x2B, 0x0C, 0x1C, 0x2C, 0x3C, 0x0D, 0x4D, 0x5D, 1077 0x6D, 0x7D, 0x0E, 0x3E, 0x4E, 0x5E, 0x6E, 0x0F, 0x2F, 0x3F, 0x4F, 0xA0, 1078 0xB0, 0xC0, 0xB3, 0xA4, 0xB4, 0xC4, 0x95, 0xA5, 0xB5, 0xC5, 0xF5, 0x86, 1079 0x96, 0xA6, 0xB6, 0xC6, 0xF6, 0x77, 0x87, 0x97, 0xA7, 0xC7, 0xE7, 0xF7, 1080 0x68, 0x78, 0x88, 0x98, 0xD8, 0xE8, 0xF8, 0x59, 0x69, 0x79, 0x89, 0xD9, 1081 0xE9, 0xF9, 0x4A, 0x5A, 0x6A, 0x7A, 0xDA, 0xEA, 0x0B, 0x3B, 0x4B, 0x5B, 1082 0xDB, 0xEB, 0x4C, 0x5C, 0x6C, 0x7C, 0x8C, 0xDC, 0x8D, 0x9D, 0xAD, 0xBD, 1083 0xCD, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0x5F, 0x6F, 0x7F, 0x8F, 0x9F, 0xB7, 1084 0xA8, 0xB8, 0xC8, 0x99, 0xA9, 0xB9, 0xC9, 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 1085 0xFA, 0x6B, 0x7B, 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xFB, 0x9C, 0xAC, 0xBC, 1086 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xCE, 0xDE, 0xEE, 0xFE, 0xAF, 0xBF, 1087 0xCF, 0xDF, 0xEF, 0xFF, 1088 /* Table set B, code table 2, wordlen 6 - 256 entries */ 1089 0x00, 0x01, 0x10, 0x11, 0x20, 0x21, 0x02, 0x12, 0x30, 0x31, 0x22, 0x03, 1090 0x13, 0x40, 0x41, 0x51, 0x32, 0x42, 0x23, 0x33, 0x04, 0x14, 0x24, 0x15, 1091 0x50, 0x61, 0x71, 0xD1, 0xE1, 0x52, 0x62, 0xD2, 0x43, 0x53, 0xD3, 0x34, 1092 0x44, 0x05, 0x25, 0x35, 0x06, 0x16, 0x26, 0x17, 0x18, 0x1D, 0x2D, 0x3D, 1093 0x1E, 0x2E, 0x60, 0x70, 0x80, 0xD0, 0xE0, 0xF0, 0x81, 0x91, 0xA1, 0xC1, 1094 0xF1, 0x72, 0x82, 0x92, 0xC2, 0xE2, 0xF2, 0x63, 0x73, 0xE3, 0xF3, 0x54, 1095 0x64, 0x74, 0xD4, 0xE4, 0xF4, 0x45, 0x55, 0x65, 0xD5, 0xE5, 0xF5, 0x36, 1096 0x46, 0x56, 0xD6, 0xE6, 0x07, 0x27, 0x37, 0x47, 0xD7, 0x08, 0x28, 0x38, 1097 0x19, 0x29, 0x1A, 0x1B, 0x1C, 0x2C, 0x0D, 0x4D, 0x5D, 0x6D, 0x7D, 0x0E, 1098 0x3E, 0x4E, 0x5E, 0x6E, 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x90, 0xA0, 0xC0, 1099 0xB1, 0xA2, 0xB2, 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0x84, 0x94, 0xA4, 0xC4, 1100 0x75, 0x85, 0x95, 0xC5, 0x66, 0x76, 0x86, 0x96, 0xC6, 0xF6, 0x57, 0x67, 1101 0x77, 0xE7, 0xF7, 0x48, 0x58, 0x68, 0x78, 0xD8, 0xE8, 0xF8, 0x09, 0x39, 1102 0x49, 0x59, 0xD9, 0xE9, 0xF9, 0x0A, 0x2A, 0x3A, 0x4A, 0xDA, 0xEA, 0x0B, 1103 0x2B, 0x3B, 0xDB, 0xEB, 0x0C, 0x3C, 0x4C, 0x5C, 0x6C, 0xDC, 0x8D, 0x9D, 1104 0xAD, 0xBD, 0xCD, 0x7E, 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0x5F, 0x6F, 0x7F, 1105 0x8F, 0x9F, 0xAF, 0xB0, 0xB4, 0xA5, 0xB5, 0xA6, 0xB6, 0x87, 0x97, 0xA7, 1106 0xB7, 0xC7, 0x88, 0x98, 0xA8, 0xC8, 0x69, 0x79, 0x89, 0x99, 0xA9, 0xC9, 1107 0x5A, 0x6A, 0x7A, 0x9A, 0xCA, 0xFA, 0x4B, 0x5B, 0x6B, 0x7B, 0xCB, 0xFB, 1108 0x7C, 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xEC, 0xFC, 0xDD, 0xED, 0xFD, 0xDE, 1109 0xEE, 0xFE, 0xBF, 0xCF, 0xDF, 0xEF, 0xB8, 0xB9, 0x8A, 0xAA, 0xBA, 0x8B, 1110 0x9B, 0xAB, 0xBB, 0xFF, 1111 /* Table set B, code table 3, wordlen 2 - 81 entries */ 1112 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x41, 0x11, 0x05, 0x80, 1113 0x54, 0x51, 0x45, 0x15, 0x55, 0x02, 0x90, 0x20, 0x60, 0x84, 0x24, 0x08, 1114 0x18, 0x09, 0x12, 0x06, 0xA0, 0x94, 0x64, 0x48, 0x58, 0x81, 0x91, 0x21, 1115 0x61, 0x85, 0x95, 0x25, 0x65, 0x49, 0x19, 0x59, 0x42, 0x52, 0x46, 0x16, 1116 0x56, 0x0A, 0xA4, 0x28, 0x68, 0xA1, 0xA5, 0x29, 0x69, 0x26, 0x4A, 0x1A, 1117 0x5A, 0x88, 0x98, 0xA8, 0x89, 0x99, 0xA9, 0x82, 0x92, 0x22, 0x62, 0x86, 1118 0x96, 0x66, 0x9A, 0x2A, 0x6A, 0xA2, 0xA6, 0x8A, 0xAA, 1119 /* Table set B, code table 3, wordlen 3 - 256 entries */ 1120 0x00, 0x40, 0x10, 0x04, 0x01, 0x50, 0x44, 0x14, 0x54, 0x41, 0x11, 0x51, 1121 0x05, 0x45, 0x15, 0x55, 0x20, 0x95, 0x65, 0x49, 0x59, 0x52, 0x46, 0x16, 1122 0x80, 0x90, 0x60, 0x84, 0x94, 0x24, 0x64, 0xA4, 0x08, 0x48, 0x18, 0x58, 1123 0x81, 0x91, 0x21, 0x61, 0x85, 0x25, 0x09, 0x19, 0x69, 0x02, 0x42, 0x12, 1124 0x06, 0x56, 0x5A, 0x57, 0xD0, 0x74, 0x68, 0x5C, 0xC1, 0xD5, 0xA5, 0xE5, 1125 0x75, 0xB5, 0xF5, 0x99, 0xD9, 0xA9, 0xE9, 0x79, 0xB9, 0xF9, 0x1D, 0x5D, 1126 0x9D, 0xDD, 0x6D, 0xAD, 0xED, 0x7D, 0xBD, 0xFD, 0x82, 0x92, 0xD2, 0x62, 1127 0x96, 0xD6, 0x26, 0x66, 0xA6, 0xE6, 0x76, 0xB6, 0xF6, 0x0A, 0x4A, 0x1A, 1128 0x9A, 0xDA, 0x2A, 0x6A, 0xAA, 0xEA, 0x7A, 0xBA, 0xFA, 0x5E, 0x9E, 0xDE, 1129 0x6E, 0xAE, 0xEE, 0x7E, 0xBE, 0xFE, 0x03, 0x13, 0x53, 0x17, 0x97, 0xD7, 1130 0x67, 0xA7, 0xE7, 0x77, 0xB7, 0xF7, 0x5B, 0x9B, 0xDB, 0x6B, 0xAB, 0xEB, 1131 0x7B, 0xBB, 0xFB, 0x5F, 0x9F, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F, 0xBF, 0xFF, 1132 0xC0, 0xA0, 0xE0, 0x30, 0xC4, 0xD4, 0xE4, 0x34, 0xB4, 0xF4, 0x88, 0xC8, 1133 0x98, 0xD8, 0x28, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8, 0x0C, 0x4C, 0x1C, 1134 0x9C, 0xDC, 0x6C, 0xAC, 0xEC, 0x7C, 0xBC, 0xFC, 0xD1, 0xA1, 0xE1, 0x31, 1135 0x71, 0xB1, 0xF1, 0xC5, 0x35, 0x89, 0xC9, 0x29, 0x39, 0x0D, 0x4D, 0x8D, 1136 0xCD, 0x2D, 0x3D, 0x22, 0xA2, 0xE2, 0x72, 0xB2, 0xF2, 0x86, 0xC6, 0x36, 1137 0x8A, 0xCA, 0x3A, 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x2E, 0x3E, 0x43, 0x83, 1138 0x93, 0xD3, 0x23, 0x63, 0xA3, 0xE3, 0x73, 0xB3, 0xF3, 0x07, 0x47, 0x87, 1139 0xC7, 0x27, 0x37, 0x4B, 0x8B, 0xCB, 0x1B, 0x2B, 0x3B, 0x4F, 0x8F, 0xCF, 1140 0x1F, 0x70, 0xB0, 0xF0, 0x8C, 0xCC, 0x2C, 0x3C, 0xC2, 0x32, 0xC3, 0x0F, 1141 0x2F, 0x3F, 0x33, 0x0B, 1142 /* Table set B, code table 3, wordlen 5 - 225 entries */ 1143 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x11, 0xF1, 0x02, 0x0E, 0x1F, 0xFF, 0x20, 1144 0xE0, 0x21, 0xF2, 0xFE, 0xEF, 0x30, 0xD0, 0xE1, 0x12, 0x22, 0xE2, 0x03, 1145 0x0D, 0x1D, 0x1E, 0x2E, 0xEE, 0x2F, 0xDF, 0x40, 0x60, 0x70, 0x90, 0xA0, 1146 0xB0, 0xC0, 0x31, 0x71, 0x91, 0xC1, 0xD1, 0x32, 0xD2, 0x13, 0xE3, 0xF3, 1147 0x04, 0x05, 0x06, 0x07, 0x17, 0xF7, 0x09, 0x19, 0x0A, 0x1A, 0xFA, 0x0C, 1148 0x1C, 0x2D, 0xED, 0xFD, 0x3E, 0x7E, 0xDE, 0x3F, 0x6F, 0x7F, 0x9F, 0xAF, 1149 0xCF, 0x50, 0x41, 0x51, 0x61, 0xA1, 0xB1, 0x62, 0x72, 0x92, 0xA2, 0xC2, 1150 0x23, 0x33, 0x63, 0x73, 0x93, 0xA3, 0xD3, 0x14, 0x24, 0x34, 0xD4, 0xE4, 1151 0xF4, 0x15, 0xF5, 0x16, 0x26, 0xD6, 0xE6, 0xF6, 0x27, 0x37, 0x47, 0xE7, 1152 0x29, 0x39, 0xC9, 0xD9, 0xE9, 0xF9, 0x2A, 0xEA, 0x0B, 0x1B, 0xFB, 0x2C, 1153 0x7C, 0xEC, 0xFC, 0x3D, 0x4D, 0x6D, 0x7D, 0xDD, 0x4E, 0x5E, 0x6E, 0x9E, 1154 0xAE, 0xCE, 0x4F, 0x5F, 0x42, 0x52, 0xB2, 0x43, 0xB3, 0xC3, 0x44, 0x64, 1155 0x74, 0x94, 0xA4, 0x25, 0x35, 0x65, 0x75, 0x95, 0xA5, 0xE5, 0x36, 0x46, 1156 0x66, 0x76, 0x96, 0xA6, 0xB6, 0xC6, 0x57, 0xA7, 0xB7, 0xC7, 0xD7, 0x59, 1157 0xA9, 0xB9, 0x3A, 0x4A, 0x6A, 0xCA, 0xDA, 0x2B, 0x3B, 0x6B, 0x9B, 0xAB, 1158 0xDB, 0xEB, 0x3C, 0x6C, 0x9C, 0xAC, 0xCC, 0xDC, 0x5D, 0x9D, 0xAD, 0xBD, 1159 0xCD, 0xBE, 0xBF, 0x53, 0x54, 0xB4, 0xC4, 0x45, 0x55, 0xB5, 0xC5, 0xD5, 1160 0x56, 0x67, 0x77, 0x97, 0x49, 0x69, 0x79, 0x99, 0x5A, 0x7A, 0x9A, 0xAA, 1161 0xBA, 0x4B, 0x5B, 0x7B, 0xBB, 0xCB, 0x4C, 0x5C, 0xBC, 1162 /* Table set B, code table 3, wordlen 7 - 63 entries */ 1163 0x00, 0x01, 0x3F, 0x02, 0x3E, 0x03, 0x3D, 0x04, 0x05, 0x06, 0x3A, 0x3B, 1164 0x3C, 0x07, 0x08, 0x09, 0x0A, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x22, 0x23, 1165 0x25, 0x26, 0x27, 0x37, 0x38, 0x39, 0x0B, 0x0D, 0x0E, 0x0F, 0x1E, 0x1F, 1166 0x21, 0x24, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0C, 0x10, 0x11, 0x12, 1167 0x13, 0x15, 0x29, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x14, 0x16, 0x17, 1168 0x18, 0x28, 0x2A, 1169 /* Table set B, code table 4, wordlen 1 - 81 entries */ 1170 0x00, 0x01, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x03, 0x50, 0xD0, 0x70, 1171 0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0xC1, 0x11, 0x31, 0x05, 0x0D, 1172 0xC3, 0x13, 0x33, 0x07, 0x0F, 0x44, 0xCC, 0x41, 0x43, 0x54, 0x74, 0xDC, 1173 0xFC, 0x71, 0x15, 0x4D, 0x1D, 0x37, 0x3F, 0xD4, 0xF4, 0x5C, 0x7C, 0x51, 1174 0xD1, 0xF1, 0x45, 0xC5, 0x35, 0xCD, 0xDD, 0x3D, 0x53, 0xD3, 0x73, 0xF3, 1175 0x47, 0xC7, 0x17, 0x77, 0x4F, 0xCF, 0x1F, 0x55, 0xFF, 0xD5, 0x75, 0xF5, 1176 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F, 1177 /* Table set B, code table 4, wordlen 2 - 25 entries */ 1178 0x00, 0x07, 0x08, 0x38, 0x01, 0x39, 0x0F, 0x10, 0x09, 0x3F, 0x30, 0x31, 1179 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x3E, 0x37, 0x12, 0x32, 0x16, 1180 0x36, 1181 /* Table set B, code table 4, wordlen 3 - 49 entries */ 1182 0x00, 0x07, 0x08, 0x38, 0x01, 0x09, 0x39, 0x0F, 0x3F, 0x10, 0x30, 0x31, 1183 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x37, 0x18, 0x28, 0x11, 0x19, 0x29, 0x0A, 1184 0x03, 0x0B, 0x3B, 0x05, 0x0D, 0x3D, 0x3E, 0x1F, 0x2F, 0x12, 0x1A, 0x2A, 1185 0x32, 0x13, 0x33, 0x15, 0x35, 0x16, 0x1E, 0x2E, 0x36, 0x1B, 0x2B, 0x1D, 1186 0x2D, 1187 /* Table set B, code table 4, wordlen 7 - 63 entries */ 1188 0x00, 0x01, 0x02, 0x3E, 0x3F, 0x03, 0x04, 0x3C, 0x3D, 0x05, 0x06, 0x07, 1189 0x39, 0x3A, 0x3B, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x1A, 0x1B, 0x25, 0x26, 1190 0x34, 0x35, 0x36, 0x37, 0x38, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x19, 1191 0x1C, 0x1D, 0x1E, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x27, 0x2E, 0x2F, 0x30, 1192 0x31, 0x32, 0x33, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x28, 0x29, 0x2A, 1193 0x2B, 0x2C, 0x2D, 1194 /* Table set B, code table 5, wordlen 2 - 25 entries */ 1195 0x00, 0x01, 0x08, 0x38, 0x07, 0x39, 0x0F, 0x30, 0x09, 0x3F, 0x10, 0x31, 1196 0x02, 0x3A, 0x06, 0x0E, 0x17, 0x11, 0x0A, 0x3E, 0x37, 0x12, 0x32, 0x16, 1197 0x36, 1198 /* Table set B, code table 5, wordlen 3 - 7 entries */ 1199 0x00, 0x07, 0x01, 0x02, 0x03, 0x05, 0x06, 1200 /* Table set B, code table 5, wordlen 6 - 31 entries */ 1201 0x00, 0x01, 0x1F, 0x02, 0x1E, 0x03, 0x04, 0x0D, 0x1D, 0x05, 0x06, 0x07, 1202 0x0E, 0x0F, 0x11, 0x12, 0x13, 0x1A, 0x1B, 0x1C, 0x08, 0x09, 0x0C, 0x14, 1203 0x15, 0x16, 0x17, 0x18, 0x19, 0x0A, 0x0B, 1204 /* Table set B, code table 6, wordlen 2 - 81 entries */ 1205 0x00, 0x40, 0x01, 0x10, 0x04, 0x02, 0x80, 0x50, 0x90, 0x05, 0x06, 0x20, 1206 0x60, 0x44, 0x14, 0x54, 0x24, 0x08, 0x18, 0x41, 0x11, 0x15, 0x09, 0xA0, 1207 0x84, 0x94, 0x64, 0xA4, 0x28, 0x51, 0x45, 0x55, 0x19, 0x12, 0x16, 0x0A, 1208 0x1A, 0x48, 0x58, 0x68, 0x81, 0x91, 0x21, 0x61, 0x85, 0x95, 0x25, 0x65, 1209 0x49, 0x59, 0x29, 0x69, 0x42, 0x46, 0x56, 0x88, 0x98, 0xA8, 0xA1, 0xA5, 1210 0x99, 0xA9, 0x52, 0x22, 0x26, 0x66, 0x4A, 0x5A, 0x2A, 0x6A, 0x89, 0x82, 1211 0x92, 0x62, 0x86, 0x96, 0xA6, 0x8A, 0xAA, 0xA2, 0x9A, 1212 /* Table set B, code table 6, wordlen 3 - 7 entries */ 1213 0x00, 0x01, 0x07, 0x02, 0x03, 0x05, 0x06, 1214 /* Table set B, code table 6, wordlen 4 - 6 entries */ 1215 0x01, 0x00, 0x02, 0x05, 0x03, 0x04, 1216 /* Table set B, code table 6, wordlen 5 - 225 entries */ 1217 0x00, 0xF0, 0x01, 0x10, 0x0F, 0x11, 0xF1, 0x20, 0xE0, 0x02, 0x0E, 0x1F, 1218 0xFF, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x07, 0x0A, 0x0D, 0x1E, 0xFE, 0x2F, 1219 0xEF, 0x30, 0x70, 0x90, 0xA0, 0xC0, 0x71, 0x91, 0xC1, 0xD1, 0x32, 0x92, 1220 0xE2, 0x03, 0x13, 0x63, 0x04, 0x06, 0xE6, 0xE7, 0xF7, 0x09, 0x19, 0x39, 1221 0xFA, 0x0C, 0x1C, 0xDD, 0xED, 0xFD, 0x2E, 0x7E, 0x9E, 0x3F, 0x9F, 0x40, 1222 0x50, 0x60, 0xB0, 0x31, 0x41, 0x61, 0xA1, 0xB1, 0x22, 0x42, 0x72, 0xA2, 1223 0xB2, 0xC2, 0xD2, 0x23, 0x33, 0x73, 0xA3, 0xC3, 0xD3, 0xE3, 0xF3, 0x14, 1224 0x24, 0x34, 0x44, 0x74, 0xD4, 0xE4, 0x05, 0x25, 0x45, 0x65, 0x95, 0xA5, 1225 0x16, 0x26, 0x46, 0x76, 0xA6, 0xB6, 0xC6, 0xD6, 0xF6, 0x17, 0x27, 0x37, 1226 0x47, 0x67, 0xA7, 0xD7, 0x29, 0x69, 0xB9, 0xD9, 0xE9, 0xF9, 0x1A, 0x2A, 1227 0x3A, 0x9A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 0x3B, 0x6B, 0xEB, 0xFB, 0x2C, 1228 0x6C, 0xEC, 0xFC, 0x1D, 0x2D, 0x4D, 0x6D, 0x9D, 0xAD, 0x3E, 0x4E, 0x6E, 1229 0xAE, 0xCE, 0xEE, 0x4F, 0x5F, 0x6F, 0xDF, 0x51, 0x52, 0x62, 0x43, 0x93, 1230 0xB3, 0x54, 0x94, 0xA4, 0xF4, 0x15, 0x75, 0xB5, 0xE5, 0xF5, 0x36, 0x56, 1231 0x66, 0x96, 0x57, 0x77, 0x49, 0x59, 0xA9, 0xC9, 0x4A, 0x5A, 0x6A, 0x7A, 1232 0xAA, 0xBA, 0x2B, 0x4B, 0x7B, 0x9B, 0xAB, 0xDB, 0x3C, 0x4C, 0x7C, 0x9C, 1233 0xAC, 0xBC, 0xCC, 0x3D, 0x5D, 0x7D, 0xBD, 0xCD, 0x5E, 0xBE, 0xDE, 0xBF, 1234 0xCF, 0x53, 0x64, 0xB4, 0xC4, 0x35, 0x55, 0xC5, 0xD5, 0x97, 0xB7, 0xC7, 1235 0x79, 0x99, 0x5B, 0xBB, 0xCB, 0x5C, 0xDC, 0x7F, 0xAF, 1236 /* Table set B, code table 6, wordlen 6 - 256 entries */ 1237 0x00, 0x10, 0x01, 0x11, 0x21, 0x02, 0x12, 0x20, 0x22, 0x13, 0x30, 0x31, 1238 0x41, 0xD1, 0xE1, 0x32, 0x52, 0x03, 0x23, 0x2D, 0x40, 0x50, 0x60, 0x80, 1239 0xD0, 0xE0, 0x51, 0x61, 0xF1, 0x42, 0x62, 0xD2, 0xE2, 0xF2, 0x33, 0x43, 1240 0xC3, 0xD3, 0xE3, 0x04, 0x14, 0xD4, 0xF4, 0x25, 0x35, 0x16, 0x17, 0xF7, 1241 0xD8, 0x1C, 0x3C, 0x0D, 0x1D, 0x3D, 0x5D, 0x0E, 0x1E, 0x2E, 0x7E, 0x2F, 1242 0xC0, 0xF0, 0x71, 0x81, 0x91, 0xC1, 0x72, 0x82, 0x92, 0xB2, 0xC2, 0x53, 1243 0x63, 0x73, 0x93, 0xA3, 0xF3, 0x24, 0x44, 0x64, 0x84, 0xA4, 0xB4, 0x05, 1244 0x15, 0x95, 0xD5, 0x06, 0x26, 0x36, 0x46, 0x96, 0xD6, 0xE6, 0xF6, 0x07, 1245 0x27, 0x37, 0xD7, 0xE7, 0x08, 0x18, 0x28, 0x38, 0xE8, 0xF8, 0x09, 0x19, 1246 0x29, 0xE9, 0xF9, 0x0A, 0x1A, 0xCA, 0xDA, 0xEA, 0x0B, 0x1B, 0xDB, 0xEB, 1247 0xFB, 0x2C, 0x4C, 0x5C, 0x7C, 0x8C, 0x4D, 0x6D, 0x8D, 0x9D, 0xFD, 0x3E, 1248 0x5E, 0x6E, 0x8E, 0x9E, 0xEE, 0x0F, 0x1F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, 1249 0xCF, 0x70, 0xA1, 0xA2, 0x83, 0xB3, 0x34, 0x74, 0xC4, 0xE4, 0x55, 0x65, 1250 0x85, 0xA5, 0xC5, 0xE5, 0xF5, 0x56, 0x66, 0x76, 0x86, 0xA6, 0xC6, 0x57, 1251 0x67, 0x77, 0x97, 0xA7, 0x48, 0x88, 0x98, 0x49, 0x59, 0x79, 0x99, 0x3A, 1252 0x4A, 0x8A, 0xBA, 0xFA, 0x2B, 0x7B, 0x0C, 0xAC, 0xBC, 0xCC, 0xEC, 0x7D, 1253 0xAD, 0xBD, 0xDD, 0x4E, 0xBE, 0xCE, 0xFE, 0x8F, 0x9F, 0xAF, 0xBF, 0xDF, 1254 0xEF, 0xFF, 0x90, 0xA0, 0xB0, 0xB1, 0x54, 0x94, 0x45, 0x75, 0xB5, 0xB6, 1255 0x47, 0x87, 0xB7, 0xC7, 0x58, 0x68, 0x78, 0xA8, 0xB8, 0xC8, 0x39, 0x69, 1256 0x89, 0xA9, 0xB9, 0xC9, 0xD9, 0x2A, 0x5A, 0x6A, 0x7A, 0x9A, 0xAA, 0x3B, 1257 0x4B, 0x5B, 0x6B, 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0x6C, 0x9C, 0xDC, 0xFC, 1258 0xCD, 0xED, 0xAE, 0xDE, 1259 /* Table set B, code table 6, wordlen 7 - 63 entries */ 1260 0x00, 0x01, 0x3F, 0x3E, 0x02, 0x03, 0x3C, 0x3D, 0x04, 0x05, 0x06, 0x07, 1261 0x39, 0x3A, 0x3B, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x34, 0x35, 0x36, 0x37, 1262 0x38, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 1263 0x1E, 0x1F, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x2E, 0x2F, 0x30, 1264 0x31, 0x32, 0x33, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x28, 0x29, 0x2A, 1265 0x2B, 0x2C, 0x2D, 1266 /* Table set B, code table 7, wordlen 1 - 81 entries */ 1267 0x00, 0x03, 0x40, 0xC0, 0x10, 0x30, 0x04, 0x0C, 0x01, 0x50, 0xD0, 0x70, 1268 0xF0, 0xC4, 0x14, 0x34, 0x4C, 0x1C, 0x3C, 0xC1, 0x11, 0x31, 0x05, 0x0D, 1269 0x13, 0x33, 0x07, 0x0F, 0x44, 0xCC, 0x41, 0x43, 0xC3, 0x54, 0x74, 0xDC, 1270 0xFC, 0xF1, 0xC5, 0x15, 0x1D, 0x53, 0xC7, 0x37, 0x4F, 0x3F, 0xD4, 0xF4, 1271 0x5C, 0x7C, 0x51, 0xD1, 0x71, 0x45, 0x55, 0x35, 0x4D, 0xCD, 0xDD, 0x3D, 1272 0xD3, 0x73, 0xF3, 0x47, 0x17, 0x77, 0xCF, 0x1F, 0xFF, 0xD5, 0x75, 0xF5, 1273 0x5D, 0x7D, 0xFD, 0x57, 0xD7, 0xF7, 0x5F, 0xDF, 0x7F, 1274 /* Table set B, code table 7, wordlen 3 - 256 entries */ 1275 0x00, 0x40, 0x10, 0x04, 0x01, 0x05, 0x50, 0x14, 0x54, 0x41, 0x11, 0x51, 1276 0x45, 0x15, 0x55, 0x44, 0x95, 0x6A, 0x03, 0x80, 0xC0, 0x90, 0xD0, 0x94, 1277 0xD4, 0x24, 0x64, 0x58, 0x91, 0xA1, 0x85, 0xD5, 0x25, 0x65, 0xA5, 0xE5, 1278 0x75, 0xB5, 0xF5, 0x19, 0x59, 0x99, 0xD9, 0x69, 0xA9, 0xE9, 0x79, 0xB9, 1279 0xF9, 0x4D, 0x5D, 0x9D, 0xDD, 0x6D, 0xAD, 0xED, 0x7D, 0xBD, 0xFD, 0x02, 1280 0x42, 0x52, 0x06, 0x46, 0x16, 0x56, 0x96, 0xD6, 0x26, 0x66, 0xA6, 0xE6, 1281 0x76, 0xB6, 0xF6, 0x1A, 0x5A, 0x9A, 0xDA, 0xAA, 0xEA, 0x7A, 0xBA, 0xFA, 1282 0x5E, 0x9E, 0xDE, 0x6E, 0xAE, 0xEE, 0x7E, 0xBE, 0xFE, 0x07, 0x47, 0x57, 1283 0x97, 0xD7, 0x67, 0xA7, 0xE7, 0x77, 0xB7, 0xF7, 0x5B, 0x9B, 0xDB, 0x6B, 1284 0xAB, 0xEB, 0x7B, 0xBB, 0xFB, 0x5F, 0x9F, 0xDF, 0x6F, 0xAF, 0xEF, 0x7F, 1285 0xBF, 0xFF, 0x20, 0x60, 0x70, 0xB0, 0xF0, 0x84, 0xC4, 0xA4, 0xE4, 0x74, 1286 0xB4, 0xF4, 0x08, 0x88, 0x18, 0x98, 0xD8, 0x68, 0xA8, 0xE8, 0x78, 0xB8, 1287 0xF8, 0x1C, 0x5C, 0x9C, 0xDC, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC, 1288 0x81, 0xD1, 0x21, 0x61, 0xE1, 0x71, 0xB1, 0xF1, 0xC5, 0x35, 0x09, 0x49, 1289 0x89, 0xC9, 0x29, 0x39, 0x0D, 0x8D, 0xCD, 0x1D, 0x2D, 0x3D, 0x92, 0xD2, 1290 0x22, 0x62, 0xA2, 0xE2, 0x72, 0xB2, 0xF2, 0x86, 0xC6, 0x36, 0x0A, 0x4A, 1291 0x8A, 0xCA, 0x2A, 0x3A, 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x2E, 0x3E, 0x13, 1292 0x53, 0x93, 0xD3, 0x63, 0xA3, 0xE3, 0x73, 0xB3, 0xF3, 0x87, 0xC7, 0x17, 1293 0x27, 0x37, 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x2B, 0x3B, 0x0F, 0x4F, 0x8F, 1294 0xCF, 0x1F, 0x2F, 0x3F, 0xA0, 0xE0, 0x30, 0x34, 0x48, 0xC8, 0x28, 0x38, 1295 0x0C, 0x4C, 0x8C, 0xCC, 0x2C, 0xC1, 0x31, 0x82, 0xC2, 0x12, 0x32, 0x43, 1296 0x83, 0xC3, 0x23, 0x33, 1297 /* Table set B, code table 7, wordlen 4 - 11 entries */ 1298 0x00, 0x01, 0x0F, 0x02, 0x0E, 0x05, 0x0D, 0x03, 0x04, 0x0B, 0x0C, 1299 /* Table set B, code table 7, wordlen 5 - 225 entries */ 1300 0x00, 0x10, 0xF0, 0x01, 0x0F, 0x20, 0xE0, 0x11, 0xF1, 0x02, 0x0E, 0x1F, 1301 0xFF, 0xD0, 0x21, 0xE1, 0x12, 0xF2, 0x03, 0x0D, 0x1E, 0xFE, 0x2F, 0xEF, 1302 0x30, 0x40, 0x60, 0x70, 0x90, 0xA0, 0xC0, 0x31, 0xD1, 0x22, 0xE2, 0x13, 1303 0xF3, 0x04, 0x06, 0x07, 0x09, 0x0C, 0x1D, 0xFD, 0x2E, 0xEE, 0x3F, 0xDF, 1304 0x50, 0xB0, 0x41, 0x61, 0x71, 0x91, 0xA1, 0xC1, 0x32, 0x62, 0x72, 0x92, 1305 0xA2, 0xD2, 0x23, 0xD3, 0xE3, 0x14, 0xF4, 0x05, 0x16, 0x26, 0xE6, 0xF6, 1306 0x17, 0x27, 0xE7, 0xF7, 0x19, 0x29, 0xF9, 0x0A, 0x1A, 0x2A, 0xFA, 0x0B, 1307 0x1C, 0x2C, 0xFC, 0x2D, 0x3D, 0xED, 0x3E, 0x4E, 0x7E, 0x9E, 0xDE, 0x4F, 1308 0x6F, 0x7F, 0x9F, 0xAF, 0xCF, 0x51, 0xB1, 0x42, 0x52, 0xB2, 0xC2, 0x33, 1309 0x63, 0x73, 0x93, 0xA3, 0xB3, 0xC3, 0x24, 0x34, 0x74, 0xA4, 0xD4, 0xE4, 1310 0x15, 0x25, 0x65, 0x95, 0xE5, 0xF5, 0x36, 0xD6, 0x37, 0x47, 0xC7, 0xD7, 1311 0x39, 0x59, 0xB9, 0xC9, 0xD9, 0xE9, 0x3A, 0x6A, 0xDA, 0xEA, 0x1B, 0x2B, 1312 0x9B, 0xAB, 0xEB, 0xFB, 0x6C, 0x7C, 0x9C, 0xAC, 0xEC, 0x4D, 0x6D, 0x7D, 1313 0x9D, 0xAD, 0xBD, 0xDD, 0x5E, 0x6E, 0xAE, 0xCE, 0x5F, 0x43, 0x53, 0x44, 1314 0x54, 0x64, 0x94, 0xB4, 0xC4, 0x35, 0x45, 0x55, 0x75, 0xA5, 0xB5, 0xC5, 1315 0xD5, 0x46, 0x56, 0x66, 0x76, 0x96, 0xA6, 0xB6, 0xC6, 0x57, 0x67, 0x77, 1316 0x97, 0xA7, 0xB7, 0x49, 0x69, 0x79, 0x99, 0xA9, 0x4A, 0x5A, 0x7A, 0x9A, 1317 0xAA, 0xBA, 0xCA, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, 0xBB, 0xCB, 0xDB, 0x3C, 1318 0x4C, 0x5C, 0xBC, 0xCC, 0xDC, 0x5D, 0xCD, 0xBE, 0xBF, 1319 /* Table set B, code table 7, wordlen 7 - 63 entries */ 1320 0x00, 0x01, 0x02, 0x3E, 0x3F, 0x03, 0x04, 0x05, 0x3B, 0x3C, 0x3D, 0x06, 1321 0x07, 0x08, 0x09, 0x0A, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x0B, 0x0C, 0x0D, 1322 0x0E, 0x0F, 0x10, 0x2F, 0x31, 0x32, 0x33, 0x34, 0x35, 0x11, 0x12, 0x13, 1323 0x14, 0x2D, 0x2E, 0x30, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x25, 1324 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x1C, 0x1D, 0x1E, 0x23, 0x1F, 1325 0x21, 0x22, 0x24, 1326 /* Table set B, code table 7, wordlen 7 - 8 entries */ 1327 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1328 /* Table set B, code table 7, wordlen 7 - 8 entries */ 1329 0x00, 0x01, 0x07, 0x02, 0x06, 0x03, 0x04, 0x05, 1330 /* Table set B, code table 7, wordlen 7 - 16 entries */ 1331 0x07, 0x05, 0x08, 0x06, 0x09, 0x04, 0x0A, 0x0B, 0x00, 0x01, 0x02, 0x03, 1332 0x0C, 0x0D, 0x0E, 0x0F, 1333 /* Table set B, code table 7, wordlen 7 - 15 entries */ 1334 0x0F, 0x0E, 0x01, 0x0D, 0x02, 0x03, 0x0C, 0x04, 0x05, 0x06, 0x07, 0x08, 1335 0x09, 0x0A, 0x0B, 1336 /* Table set B, code table 7, wordlen 7 - 16 entries */ 1337 0x00, 0x01, 0x0E, 0x0F, 0x02, 0x0D, 0x03, 0x0C, 0x04, 0x05, 0x06, 0x07, 1338 0x08, 0x09, 0x0A, 0x0B, 1339 /* Table set B, code table 7, wordlen 7 - 16 entries */ 1340 0x00, 0x01, 0x0F, 0x0E, 0x02, 0x0D, 0x03, 0x0C, 0x04, 0x05, 0x06, 0x07, 1341 0x08, 0x09, 0x0A, 0x0B, 1342 /* Table set B, code table 7, wordlen 7 - 32 entries */ 1343 0x00, 0x01, 0x1F, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x1A, 0x1B, 0x1C, 1344 0x1D, 0x1E, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 1345 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 1346 /* Table set B, code table 7, wordlen 7 - 31 entries */ 1347 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 1348 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 1349 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 1350 /* Table set B, code table 7, wordlen 7 - 32 entries */ 1351 0x00, 0x1C, 0x1D, 0x01, 0x02, 0x03, 0x04, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 1352 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 1353 0x1E, 0x1F, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 1354 /* Table set B, code table 7, wordlen 7 - 31 entries */ 1355 0x02, 0x03, 0x04, 0x05, 0x06, 0x01, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 1356 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 1357 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 1358 /* Table set B, code table 7, wordlen 7 - 32 entries */ 1359 0x00, 0x01, 0x02, 0x1F, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x1D, 0x1E, 1360 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 1361 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 1362 /* Table set B, code table 7, wordlen 7 - 16 entries */ 1363 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 1364 0x0C, 0x0D, 0x0E, 0x0F, 1365 /* Table set B, code table 7, wordlen 7 - 8 entries */ 1366 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1367 /* Table set B, code table 7, wordlen 7 - 8 entries */ 1368 0x00, 0x01, 0x07, 0x02, 0x03, 0x04, 0x05, 0x06, 1369 /* Table set B, code table 7, wordlen 7 - 32 entries */ 1370 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x05, 0x06, 1371 0x07, 0x12, 0x13, 0x14, 0x15, 0x16, 0x04, 0x17, 0x18, 0x19, 0x1A, 0x1B, 1372 0x00, 0x01, 0x02, 0x03, 0x1C, 0x1D, 0x1E, 0x1F, 1373 /* Table set B, code table 7, wordlen 7 - 32 entries */ 1374 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x0E, 1375 0x0F, 0x10, 0x11, 0x1D, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x1E, 0x04, 0x05, 1376 0x06, 0x07, 0x08, 0x1F, 0x00, 0x01, 0x02, 0x03, 1377 /* Table set B, code table 7, wordlen 7 - 32 entries */ 1378 0x00, 0x01, 0x02, 0x1F, 0x03, 0x1D, 0x1E, 0x04, 0x05, 0x06, 0x1B, 0x1C, 1379 0x07, 0x18, 0x19, 0x1A, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 1380 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 1381 /* Table set B, code table 7, wordlen 7 - 256 entries */ 1382 0x00, 0x01, 0xFF, 0x02, 0xFE, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0xFB, 1383 0xFC, 0xFD, 0x09, 0x0A, 0x0B, 0x0C, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0x0D, 1384 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 1385 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 1386 0x26, 0xF3, 0xF4, 0xF5, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 1387 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 1388 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 1389 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 1390 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0xC2, 1391 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 1392 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 1393 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 1394 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 1395 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 1396 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 1397 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 1398 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 1399 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 1400 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 1401 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 1402 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 1403 0xBE, 0xBF, 0xC0, 0xC1, 1404 }; 1405 1406 /** Tables for spectrum coding. */ 1407 typedef struct Atrac3pSpecCodeTab { 1408 uint8_t group_size; ///< number of coefficients grouped together 1409 uint8_t num_coeffs; ///< 1 - map index to a single value, > 1 - map index to a vector of values 1410 uint8_t bits; ///< number of bits a single coefficient occupy 1411 uint8_t is_signed; ///< 1 - values in that table are signed ones, otherwise - absolute ones 1412 } Atrac3pSpecCodeTab; 1413 1414 static const Atrac3pSpecCodeTab atrac3p_spectra_tabs[112] = { 1415 /* table set = A */ 1416 /* code table = 0 */ 1417 { 1, 4, 2, 1 }, // wordlen = 1 1418 { 1, 4, 2, 0 }, // wordlen = 2 1419 { 1, 2, 3, 1 }, // wordlen = 3 1420 { 1, 1, 3, 0 }, // wordlen = 4 1421 { 1, 2, 4, 1 }, // wordlen = 5 1422 { 1, 1, 4, 0 }, // wordlen = 6 1423 { 1, 1, 6, 1 }, // wordlen = 7 1424 1425 /* code table = 1 */ 1426 { 4, 4, 2, 1 }, // wordlen = 1 1427 { 1, 4, 2, 0 }, // wordlen = 2 1428 { 1, 2, 3, 1 }, // wordlen = 3 1429 { 1, 2, 4, 1 }, // wordlen = 4 1430 { 1, 2, 4, 1 }, // wordlen = 5 1431 { 1, 2, 4, 0 }, // wordlen = 6 1432 { 1, 1, 6, 1 }, // wordlen = 7 1433 1434 /* code table = 2 */ 1435 { 1, 4, 2, 1 }, // wordlen = 1 1436 { 1, 2, 3, 1 }, // wordlen = 2 1437 { 1, 2, 3, 1 }, // wordlen = 3 1438 { 1, 1, 3, 0 }, // wordlen = 4 1439 { 1, 1, 3, 0 }, // wordlen = 5 1440 { 1, 2, 4, 0 }, // wordlen = 6 1441 { 1, 1, 6, 1 }, // wordlen = 7 1442 1443 /* code table = 3 */ 1444 { 1, 2, 2, 1 }, // wordlen = 1 1445 { 1, 4, 2, 0 }, // wordlen = 2 1446 { 1, 4, 2, 0 }, // wordlen = 3 1447 { 1, 1, 3, 0 }, // wordlen = 4 1448 { 1, 2, 4, 1 }, // wordlen = 5 1449 { 1, 2, 4, 0 }, // wordlen = 6 1450 { 1, 1, 6, 1 }, // wordlen = 7 1451 1452 /* code table = 4 */ 1453 { 1, 4, 2, 1 }, // wordlen = 1 1454 { 1, 4, 2, 0 }, // wordlen = 2 1455 { 1, 1, 3, 1 }, // wordlen = 3 1456 { 1, 2, 4, 1 }, // wordlen = 4 1457 { 1, 1, 3, 0 }, // wordlen = 5 1458 { 1, 2, 4, 0 }, // wordlen = 6 1459 { 1, 1, 6, 1 }, // wordlen = 7 1460 1461 /* code table = 5 */ 1462 { 1, 4, 2, 1 }, // wordlen = 1 1463 { 1, 2, 3, 1 }, // wordlen = 2 1464 { 1, 1, 3, 1 }, // wordlen = 3 1465 { 1, 2, 4, 1 }, // wordlen = 4 1466 { 1, 1, 3, 0 }, // wordlen = 5 1467 { 1, 1, 5, 1 }, // wordlen = 6 1468 { 1, 1, 6, 1 }, // wordlen = 7 1469 1470 /* code table = 6 */ 1471 { 2, 4, 2, 1 }, // wordlen = 1 1472 { 1, 2, 3, 1 }, // wordlen = 2 1473 { 1, 4, 2, 0 }, // wordlen = 3 1474 { 1, 2, 4, 1 }, // wordlen = 4 1475 { 1, 1, 4, 1 }, // wordlen = 5 1476 { 1, 1, 5, 1 }, // wordlen = 6 1477 { 1, 1, 6, 1 }, // wordlen = 7 1478 1479 /* code table = 7 */ 1480 { 1, 2, 1, 0 }, // wordlen = 1 1481 { 2, 4, 2, 0 }, // wordlen = 2 1482 { 1, 2, 3, 1 }, // wordlen = 3 1483 { 1, 2, 4, 1 }, // wordlen = 4 1484 { 1, 1, 4, 1 }, // wordlen = 5 1485 { 2, 2, 4, 0 }, // wordlen = 6 1486 { 4, 1, 6, 1 }, // wordlen = 7 1487 1488 /* table set = B */ 1489 /* code table = 0 */ 1490 { 4, 4, 2, 1 }, // wordlen = 1 1491 { 1, 4, 2, 0 }, // wordlen = 2 1492 { 4, 2, 3, 1 }, // wordlen = 3 1493 { 1, 2, 4, 1 }, // wordlen = 4 1494 { 1, 2, 4, 1 }, // wordlen = 5 1495 { 1, 1, 4, 0 }, // wordlen = 6 1496 { 1, 1, 6, 1 }, // wordlen = 7 1497 1498 /* code table = 1 */ 1499 { 1, 4, 2, 1 }, // wordlen = 1 1500 { 1, 4, 2, 0 }, // wordlen = 2 1501 { 1, 2, 3, 1 }, // wordlen = 3 1502 { 1, 2, 4, 1 }, // wordlen = 4 1503 { 1, 2, 4, 1 }, // wordlen = 5 1504 { 1, 2, 4, 0 }, // wordlen = 6 1505 { 1, 1, 6, 1 }, // wordlen = 7 1506 1507 /* code table = 2 */ 1508 { 4, 4, 2, 1 }, // wordlen = 1 1509 { 4, 4, 2, 0 }, // wordlen = 2 1510 { 1, 2, 3, 1 }, // wordlen = 3 1511 { 1, 2, 4, 1 }, // wordlen = 4 1512 { 2, 2, 4, 1 }, // wordlen = 5 1513 { 2, 2, 4, 0 }, // wordlen = 6 1514 { 4, 1, 6, 1 }, // wordlen = 7 1515 1516 /* code table = 3 */ 1517 { 1, 4, 2, 1 }, // wordlen = 1 1518 { 1, 4, 2, 0 }, // wordlen = 2 1519 { 1, 4, 2, 0 }, // wordlen = 3 1520 { 2, 2, 4, 1 }, // wordlen = 4 1521 { 1, 2, 4, 1 }, // wordlen = 5 1522 { 1, 2, 4, 0 }, // wordlen = 6 1523 { 1, 1, 6, 1 }, // wordlen = 7 1524 1525 /* code table = 4 */ 1526 { 1, 4, 2, 1 }, // wordlen = 1 1527 { 4, 2, 3, 1 }, // wordlen = 2 1528 { 1, 2, 3, 1 }, // wordlen = 3 1529 { 4, 2, 4, 1 }, // wordlen = 4 1530 { 1, 1, 3, 0 }, // wordlen = 5 1531 { 1, 2, 4, 0 }, // wordlen = 6 1532 { 1, 1, 6, 1 }, // wordlen = 7 1533 1534 /* code table = 5 */ 1535 { 2, 4, 2, 1 }, // wordlen = 1 1536 { 1, 2, 3, 1 }, // wordlen = 2 1537 { 4, 1, 3, 1 }, // wordlen = 3 1538 { 1, 1, 3, 0 }, // wordlen = 4 1539 { 1, 1, 3, 0 }, // wordlen = 5 1540 { 1, 1, 5, 1 }, // wordlen = 6 1541 { 2, 1, 6, 1 }, // wordlen = 7 1542 1543 /* code table = 6 */ 1544 { 1, 4, 2, 1 }, // wordlen = 1 1545 { 1, 4, 2, 0 }, // wordlen = 2 1546 { 1, 1, 3, 1 }, // wordlen = 3 1547 { 1, 1, 3, 0 }, // wordlen = 4 1548 { 4, 2, 4, 1 }, // wordlen = 5 1549 { 1, 2, 4, 0 }, // wordlen = 6 1550 { 1, 1, 6, 1 }, // wordlen = 7 1551 1552 /* code table = 7 */ 1553 { 1, 4, 2, 1 }, // wordlen = 1 1554 { 4, 4, 2, 0 }, // wordlen = 2 1555 { 4, 4, 2, 0 }, // wordlen = 3 1556 { 1, 1, 4, 1 }, // wordlen = 4 1557 { 1, 2, 4, 1 }, // wordlen = 5 1558 { 1, 1, 5, 1 }, // wordlen = 6 1559 { 1, 1, 6, 1 }, // wordlen = 7 1560 }; 1561 1562 /* Huffman tables for gain control data. */ 1563 static const uint8_t atrac3p_gain_cbs[][12] = { 1564 { 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0 }, 1565 { 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0 }, 1566 { 1, 0, 2, 2, 1, 2, 8, 0, 0, 0, 0, 0 }, 1567 { 1, 1, 1, 1, 1, 0, 2, 0, 8, 0, 0, 0 }, 1568 { 1, 0, 3, 1, 1, 0, 2, 0, 8, 0, 0, 0 }, 1569 { 1, 1, 1, 1, 1, 0, 1, 2, 8, 0, 0, 0 }, 1570 { 0, 1, 0, 2, 11, 18, 0, 0, 0, 0, 0, 0 }, 1571 { 0, 1, 2, 4, 4, 4, 0, 16, 0, 0, 0, 0 }, 1572 { 0, 0, 0, 3, 23, 6, 0, 0, 0, 0, 0, 0 }, 1573 { 0, 0, 5, 3, 2, 3, 2, 16, 0, 0, 0, 0 }, 1574 { 1, 0, 0, 3, 2, 6, 20, 0, 0, 0, 0, 0 }, 1575 }; 1576 1577 static const uint8_t atrac3p_gain_xlats[] = { 1578 /* Number of gain control points 1 - 8 entries */ 1579 0, 1, 2, 3, 4, 5, 6, 7, 1580 /* Number of gain control points 2 - 8 entries */ 1581 0, 1, 7, 2, 6, 3, 4, 5, 1582 /* Gain compensation level 1 - 16 entries */ 1583 7, 5, 8, 6, 9, 4, 10, 11, 0, 1, 2, 3, 12, 13, 14, 15, 1584 /* Gain compensation level 2 - 15 entries */ 1585 15, 14, 1, 13, 2, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11, 1586 /* Gain compensation level 3 - 16 entries */ 1587 0, 1, 14, 15, 2, 13, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11, 1588 /* Gain compensation level 4 - 16 entries */ 1589 0, 1, 15, 14, 2, 13, 3, 12, 4, 5, 6, 7, 8, 9, 10, 11, 1590 /* Gain compensation location 3 - 32 entries */ 1591 0, 1, 31, 2, 3, 4, 5, 6, 7, 26, 27, 28, 29, 30, 8, 9, 10, 11, 12, 1592 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 1593 /* Gain compensation location 1 - 31 entries */ 1594 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1595 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 1596 /* Gain compensation location 4 - 32 entries */ 1597 0, 28, 29, 1, 2, 3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1598 23, 24, 25, 26, 27, 30, 31, 5, 6, 7, 8, 9, 10, 1599 /* Gain compensation location 2 - 31 entries */ 1600 2, 3, 4, 5, 6, 1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1601 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 1602 /* Gain compensation location 5 - 32 entries */ 1603 0, 1, 2, 31, 3, 4, 5, 6, 7, 8, 29, 30, 9, 10, 11, 12, 13, 14, 15, 1604 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1605 }; 1606 1607 /* Huffman tables for GHA waves data. */ 1608 static const uint8_t atrac3p_tone_cbs[][12] = { 1609 { 1, 0, 1, 2, 4, 8, 0, 0, 0, 0, 0, 0 }, 1610 { 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0 }, 1611 { 1, 1, 1, 1, 0, 4, 0, 0, 0, 0, 0, 0 }, 1612 { 0, 0, 0, 10, 8, 6, 0, 8, 0, 0, 0, 0 }, 1613 { 0, 0, 0, 11, 5, 6, 6, 4, 0, 0, 0, 0 }, 1614 { 0, 1, 3, 3, 1, 4, 4, 16, 0, 0, 0, 0 }, 1615 { 1, 0, 0, 2, 2, 0, 9, 9, 29,104, 100, 0 }, 1616 }; 1617 1618 static const uint8_t atrac3p_tone_xlats[] = { 1619 /* Number of tone bands - 16 entries */ 1620 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1621 15, 1622 /* Number of tones 1 - 8 entries */ 1623 0, 1, 2, 3, 4, 5, 6, 7, 1624 /* Number of tones 2 - 8 entries */ 1625 0, 1, 7, 2, 3, 4, 5, 6, 1626 /* Amplitude information 1 - 32 entries */ 1627 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 5, 6, 7, 18, 19, 1628 20, 21, 22, 4, 23, 24, 25, 26, 27, 0, 1, 2, 3, 28, 29, 1629 30, 31, 1630 /* Amplitude information 2 - 32 entries */ 1631 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 14, 15, 16, 17, 1632 29, 9, 10, 11, 12, 13, 30, 4, 5, 6, 7, 8, 31, 0, 1, 1633 2, 3, 1634 /* Amplitude information 3 - 32 entries */ 1635 0, 1, 2, 31, 3, 29, 30, 4, 5, 6, 27, 28, 7, 24, 25, 1636 26, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 1637 22, 23, 1638 /* Frequencies - 256 entries */ 1639 0, 1, 255, 2, 254, 3, 4, 5, 6, 7, 8, 251, 252, 253, 9, 1640 10, 11, 12, 246, 247, 248, 249, 250, 13, 14, 15, 16, 17, 18, 19, 1641 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 1642 35, 36, 37, 38, 243, 244, 245, 39, 40, 41, 42, 43, 44, 45, 46, 1643 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 1644 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 1645 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 1646 92, 93, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 1647 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 1648 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 1649 237, 238, 239, 240, 241, 242, 94, 95, 96, 97, 98, 99, 100, 101, 102, 1650 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 1651 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 1652 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 1653 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 1654 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 1655 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 1656 193, 1657 }; 1658 1659 #endif /* AVCODEC_ATRAC3PLUS_DATA_H */ 1660