diff options
author | Thom Johansen <thomj@rockbox.org> | 2006-09-09 01:35:12 +0000 |
---|---|---|
committer | Thom Johansen <thomj@rockbox.org> | 2006-09-09 01:35:12 +0000 |
commit | 6e219f84d244d44f9da2b77781bb4c9d1d95eb9a (patch) | |
tree | bc7f51eb3464fc8f052540748dcaac0cb411a0e2 /apps | |
parent | bd3c18e271a45b6811229b7260d243bc5e280c1c (diff) | |
download | rockbox-6e219f84d244d44f9da2b77781bb4c9d1d95eb9a.tar.gz rockbox-6e219f84d244d44f9da2b77781bb4c9d1d95eb9a.zip |
FS patch #5959 by Antonius Hellmann. Update MP3 encoder to the state of the MP3 encoder plugin.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10903 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/mp3_enc.c | 4244 |
1 files changed, 1827 insertions, 2417 deletions
diff --git a/apps/codecs/mp3_enc.c b/apps/codecs/mp3_enc.c index 12db9a5243..3caca94f35 100644 --- a/apps/codecs/mp3_enc.c +++ b/apps/codecs/mp3_enc.c | |||
@@ -30,306 +30,480 @@ | |||
30 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 30 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
31 | // Library General Public License for more details. | 31 | // Library General Public License for more details. |
32 | 32 | ||
33 | #include "codeclib.h" | ||
34 | |||
35 | #ifndef SIMULATOR | 33 | #ifndef SIMULATOR |
36 | 34 | ||
35 | #include "codeclib.h" | ||
36 | |||
37 | CODEC_HEADER | 37 | CODEC_HEADER |
38 | 38 | ||
39 | #define SAMP_PER_FRAME 1152 | 39 | #ifdef USE_IRAM |
40 | #define SAMP_PER_FRAME2 576 | 40 | extern char iramcopy[]; |
41 | #define HAN_SIZE 512 | 41 | extern char iramstart[]; |
42 | #define SBLIMIT 32 | 42 | extern char iramend[]; |
43 | #define WAVE_RIFF_PCM 0 | 43 | extern char iedata[]; |
44 | #define MAX_CHANNELS 2 | 44 | extern char iend[]; |
45 | #define MAX_GRANULES 2 | 45 | #endif |
46 | #define HTN 34 | 46 | |
47 | |||
48 | #define SAMP_PER_FRAME 1152 | ||
49 | #define SAMPL2 576 | ||
50 | #define SBLIMIT 32 | ||
51 | #define HTN 16 | ||
52 | #define memcpy ci->memcpy | ||
53 | #define memset ci->memset | ||
54 | #define putlong(c, s) if(s+sz <= 32) { cc = (cc << s) | c; sz+= s; } \ | ||
55 | else { putbits(cc, sz); cc = c; sz = s; } | ||
56 | |||
57 | enum e_byte_order { order_unknown, order_bigEndian, order_littleEndian }; | ||
47 | 58 | ||
48 | typedef unsigned long uint32; | 59 | typedef unsigned long uint32; |
49 | typedef unsigned short uint16; | 60 | typedef unsigned short uint16; |
50 | typedef unsigned char uint8; | 61 | typedef unsigned char uint8; |
51 | 62 | ||
52 | enum e_byte_order { order_unknown, order_bigEndian, order_littleEndian }; | ||
53 | |||
54 | #define memcpy ci->memcpy | ||
55 | #define memset ci->memset | ||
56 | 63 | ||
57 | typedef struct { | 64 | typedef struct { |
58 | int type; /* 0=(22.05,24,16kHz) 1=(44.1,48,32kHz) */ | 65 | int type; /* 0=(22.05,24,16kHz) 1=(44.1,48,32kHz) */ |
59 | int mode; /* 0=stereo, 1=jstereo, 2=dual, 3=mono */ | 66 | int mode; /* 0=stereo, 1=jstereo, 2=dual, 3=mono */ |
60 | int bitrate; | 67 | int bitrate; |
61 | int padding; | 68 | int padding; |
62 | long bits_per_frame; | 69 | int num_bands; |
63 | long bitrate_index; | 70 | long bitr_id; |
64 | int smprate_index; | 71 | int smpl_id; |
65 | } mpeg_t; | 72 | } mpeg_t; |
66 | 73 | ||
67 | /* Side information */ | 74 | /* Side information */ |
68 | typedef struct { | 75 | typedef struct { |
69 | unsigned part2_3_length; | 76 | uint32 part2_3_length; |
70 | unsigned big_values; | 77 | int count1; /* number of 0-1-quadruples */ |
71 | int count1; | 78 | uint32 global_gain; |
72 | unsigned global_gain; | 79 | uint32 table_select[4]; |
73 | unsigned table_select[4]; | 80 | uint32 region_0_1; |
74 | unsigned region0_count; | 81 | uint32 address1; |
75 | unsigned region1_count; | 82 | uint32 address2; |
76 | unsigned address1; | 83 | uint32 address3; |
77 | unsigned address2; | 84 | long quantStep; |
78 | unsigned address3; | 85 | long additStep; |
79 | long quantizerStepSize; | 86 | long max_val; |
80 | } side_info_t; | 87 | } side_info_t; |
81 | 88 | ||
82 | typedef struct { | 89 | typedef struct { |
83 | enum e_byte_order byte_order; | 90 | enum e_byte_order byte_order; |
84 | side_info_t cod_info[2][2]; | 91 | side_info_t cod_info[2][2]; |
92 | mpeg_t mpg; | ||
85 | long frac_per_frame; | 93 | long frac_per_frame; |
86 | long byte_per_frame; | 94 | long byte_per_frame; |
87 | long slot_lag; | 95 | long slot_lag; |
88 | int sideinfo_len; | 96 | int sideinfo_len; |
89 | int mean_bits; | 97 | int mean_bits; |
98 | int ResvSize; | ||
90 | int channels; | 99 | int channels; |
100 | int granules; | ||
101 | int resample; | ||
91 | long samplerate; | 102 | long samplerate; |
92 | mpeg_t mpg; | ||
93 | } config_t; | 103 | } config_t; |
94 | 104 | ||
95 | typedef struct { | 105 | typedef struct { |
96 | int bitpos; /* current bitpos for writing */ | 106 | int bitpos; /* current bitpos for writing */ |
97 | uint32 bbuf[263]; | 107 | uint32 bbuf[263]; |
98 | } BF_Data; | 108 | } BF_Data; |
99 | 109 | ||
100 | struct huffcodetab { | 110 | struct huffcodetab { |
101 | int xlen; /*max. x-index+ */ | 111 | int len; /* max. index */ |
102 | int ylen; /*max. y-index+ */ | 112 | const uint8 *table; /* pointer to array[len][len] */ |
103 | int linbits; /*number of linbits */ | 113 | const uint8 *hlen; /* pointer to array[len][len] */ |
104 | int linmax; /*max number stored in linbits */ | ||
105 | const uint16 *table; /*pointer to array[xlen][ylen] */ | ||
106 | const uint8 *hlen; /*pointer to array[xlen][ylen] */ | ||
107 | }; | 114 | }; |
108 | 115 | ||
109 | /* !!!!!!!! start of IRAM area: do not insert before x_int1 array !!!!!!!!! */ | 116 | struct huffcodebig { |
110 | short x_int0 [HAN_SIZE] IBSS_ATTR; // 1024 Bytes | 117 | int len; /* max. index */ |
111 | int mdct_freq [2][2][SAMP_PER_FRAME2] IBSS_ATTR; // 9216 Bytes | 118 | int linbits; /* number of linbits */ |
112 | short x_int1 [HAN_SIZE] IBSS_ATTR; // 1024 Bytes | 119 | int linmax; /* max number stored in linbits */ |
113 | /* !!!!!!!!!!!!!!!!!! here you may insert other data !!!!!!!!!!!!!!!!!!!!!! */ | 120 | }; |
114 | uint8 int2idx [5000] IBSS_ATTR; // 5000 Bytes | ||
115 | uint16 enc_data [2][2][SAMP_PER_FRAME2] IBSS_ATTR; // 4608 Bytes | ||
116 | short y_int [64] IBSS_ATTR; // 256 Bytes | ||
117 | int scalefac [23] IBSS_ATTR; // 92 Bytes | ||
118 | int mdct_in [36] IBSS_ATTR; // 144 Bytes | ||
119 | int sb_sample [2][3][18][SBLIMIT] IBSS_ATTR; // 13824 Bytes | ||
120 | BF_Data CodedData IBSS_ATTR; // 1040 Bytes | ||
121 | int ca_int [8] IBSS_ATTR; // 32 Bytes | ||
122 | int cs_int [8] IBSS_ATTR; // 32 Bytes | ||
123 | int win_int [18][36] IBSS_ATTR; // 2592 Bytes | ||
124 | short filter_int [SBLIMIT][64] IBSS_ATTR; // 8192 Bytes | ||
125 | short enwindow_int[512] IBSS_ATTR; // 1024 Bytes | ||
126 | uint8 ht_count1 [2][2][16] IBSS_ATTR; // 64 Bytes | ||
127 | uint16 t1HB [ 4] IBSS_ATTR; // Bytes | ||
128 | uint16 t2HB [ 9] IBSS_ATTR; // Bytes | ||
129 | uint16 t3HB [ 9] IBSS_ATTR; // Bytes | ||
130 | uint16 t5HB [ 16] IBSS_ATTR; // Bytes | ||
131 | uint16 t6HB [ 16] IBSS_ATTR; // Bytes | ||
132 | uint16 t7HB [ 36] IBSS_ATTR; // Bytes | ||
133 | uint16 t8HB [ 36] IBSS_ATTR; // Bytes | ||
134 | uint16 t9HB [ 36] IBSS_ATTR; // Bytes | ||
135 | uint16 t10HB [ 64] IBSS_ATTR; // Bytes | ||
136 | uint16 t11HB [ 64] IBSS_ATTR; // Bytes | ||
137 | uint16 t12HB [ 64] IBSS_ATTR; // Bytes | ||
138 | uint16 t13HB [256] IBSS_ATTR; // Bytes | ||
139 | uint16 t15HB [256] IBSS_ATTR; // Bytes | ||
140 | uint16 t16HB [256] IBSS_ATTR; // Bytes | ||
141 | uint16 t24HB [256] IBSS_ATTR; // Bytes | ||
142 | uint8 t1l [ 4] IBSS_ATTR; // Bytes | ||
143 | uint8 t2l [ 9] IBSS_ATTR; // Bytes | ||
144 | uint8 t3l [ 9] IBSS_ATTR; // Bytes | ||
145 | uint8 t5l [ 16] IBSS_ATTR; // Bytes | ||
146 | uint8 t6l [ 16] IBSS_ATTR; // Bytes | ||
147 | uint8 t7l [ 36] IBSS_ATTR; // Bytes | ||
148 | uint8 t8l [ 36] IBSS_ATTR; // Bytes | ||
149 | uint8 t9l [ 36] IBSS_ATTR; // Bytes | ||
150 | uint8 t10l [ 64] IBSS_ATTR; // Bytes | ||
151 | uint8 t11l [ 64] IBSS_ATTR; // Bytes | ||
152 | uint8 t12l [ 64] IBSS_ATTR; // Bytes | ||
153 | uint8 t13l [256] IBSS_ATTR; // Bytes | ||
154 | uint8 t15l [256] IBSS_ATTR; // Bytes | ||
155 | uint8 t16l [256] IBSS_ATTR; // Bytes | ||
156 | uint8 t24l [256] IBSS_ATTR; // Bytes | ||
157 | struct huffcodetab ht [HTN] IBSS_ATTR; // Bytes | ||
158 | 121 | ||
122 | #define shft4(x) ((x + 8) >> 4) | ||
123 | #define shft9(x) ((x + 256) >> 9) | ||
124 | #define shft13(x) ((x + 4096) >> 13) | ||
125 | #define shft15(x) ((x + 16384) >> 15) | ||
126 | #define shft16(x) ((x + 32768) >> 16) | ||
127 | #define shft_n(x,n) ((x) >> n) | ||
128 | #define SQRT 724 /* sqrt(2) * 512 */ | ||
129 | |||
130 | short mfbuf [2*(1152+512)] IBSS_ATTR; /* 3328 Bytes */ | ||
131 | int sb_data [2][2][18][SBLIMIT] IBSS_ATTR; /* 13824 Bytes */ | ||
132 | int mdct_freq [SAMPL2] IBSS_ATTR; /* 9216 Bytes */ | ||
133 | short enc_data [SAMPL2] IBSS_ATTR; /* 4608 Bytes */ | ||
134 | uint32 scalefac [23] IBSS_ATTR; /* 92 Bytes */ | ||
135 | BF_Data CodedData IBSS_ATTR; /* 1056 Bytes */ | ||
136 | int ca [8] IBSS_ATTR; /* 32 Bytes */ | ||
137 | int cs [8] IBSS_ATTR; /* 32 Bytes */ | ||
138 | int cx [9] IBSS_ATTR; /* 36 Bytes */ | ||
139 | int win [18][4] IBSS_ATTR; /* 288 Bytes */ | ||
140 | short enwindow [15*27+24] IBSS_ATTR; /* 862 Bytes */ | ||
141 | short int2idx [4096] IBSS_ATTR; /* 8192 Bytes */ | ||
142 | uint8 ht_count [2][2][16] IBSS_ATTR; /* 64 Bytes */ | ||
143 | uint32 tab01 [ 16] IBSS_ATTR; /* 64 Bytes */ | ||
144 | uint32 tab23 [ 9] IBSS_ATTR; /* 36 Bytes */ | ||
145 | uint32 tab56 [ 16] IBSS_ATTR; /* 64 Bytes */ | ||
146 | uint32 tab1315 [256] IBSS_ATTR; /* 1024 Bytes */ | ||
147 | uint32 tab1624 [256] IBSS_ATTR; /* 1024 Bytes */ | ||
148 | uint32 tab789 [ 36] IBSS_ATTR; /* 144 Bytes */ | ||
149 | uint32 tabABC [ 64] IBSS_ATTR; /* 256 Bytes */ | ||
150 | uint8 t1HB [ 4] IBSS_ATTR; | ||
151 | uint8 t2HB [ 9] IBSS_ATTR; | ||
152 | uint8 t3HB [ 9] IBSS_ATTR; | ||
153 | uint8 t5HB [ 16] IBSS_ATTR; | ||
154 | uint8 t6HB [ 16] IBSS_ATTR; | ||
155 | uint8 t7HB [ 36] IBSS_ATTR; | ||
156 | uint8 t8HB [ 36] IBSS_ATTR; | ||
157 | uint8 t9HB [ 36] IBSS_ATTR; | ||
158 | uint8 t10HB [ 64] IBSS_ATTR; | ||
159 | uint8 t11HB [ 64] IBSS_ATTR; | ||
160 | uint8 t12HB [ 64] IBSS_ATTR; | ||
161 | uint8 t13HB [256] IBSS_ATTR; | ||
162 | uint8 t15HB [256] IBSS_ATTR; | ||
163 | uint16 t16HB [256] IBSS_ATTR; | ||
164 | uint16 t24HB [256] IBSS_ATTR; | ||
165 | uint8 t1l [ 8] IBSS_ATTR; | ||
166 | uint8 t2l [ 9] IBSS_ATTR; | ||
167 | uint8 t3l [ 9] IBSS_ATTR; | ||
168 | uint8 t5l [ 16] IBSS_ATTR; | ||
169 | uint8 t6l [ 16] IBSS_ATTR; | ||
170 | uint8 t7l [ 36] IBSS_ATTR; | ||
171 | uint8 t8l [ 36] IBSS_ATTR; | ||
172 | uint8 t9l [ 36] IBSS_ATTR; | ||
173 | uint8 t10l [ 64] IBSS_ATTR; | ||
174 | uint8 t11l [ 64] IBSS_ATTR; | ||
175 | uint8 t12l [ 64] IBSS_ATTR; | ||
176 | uint8 t13l [256] IBSS_ATTR; | ||
177 | uint8 t15l [256] IBSS_ATTR; | ||
178 | uint8 t16l [256] IBSS_ATTR; | ||
179 | uint8 t24l [256] IBSS_ATTR; | ||
180 | struct huffcodetab ht [HTN] IBSS_ATTR; | ||
181 | |||
182 | static config_t cfg; | ||
159 | static struct codec_api *ci; | 183 | static struct codec_api *ci; |
160 | static int enc_channels; | 184 | static int enc_channels; |
161 | static short *x_int[2]; | ||
162 | static config_t cfg; | ||
163 | 185 | ||
164 | static const uint8 ht_count1_const[2][2][16] = | 186 | static const uint8 ht_count_const[2][2][16] = |
165 | { { { 1, 5, 4, 5, 6, 5,4,4,7,3,6,0,7,2,3, 1 }, /* table0 */ | 187 | { { { 1, 5, 4, 5, 6, 5, 4, 4, 7, 3, 6, 0, 7, 2, 3, 1 }, /* table0 */ |
166 | { 1, 5, 5, 7, 5, 8,7,9,5,7,7,9,7,9,9,10 } }, /* hleng0 */ | 188 | { 1, 5, 5, 7, 5, 8, 7, 9, 5, 7, 7, 9, 7, 9, 9,10 } }, /* hleng0 */ |
167 | { {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1, 0 }, /* table1 */ | 189 | { {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }, /* table1 */ |
168 | { 4, 5, 5, 6, 5, 6,6,7,5,6,6,7,6,7,7, 8 } } }; /* hleng1 */ | 190 | { 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 } } }; /* hleng1 */ |
169 | 191 | ||
170 | static const uint16 t1HB_const[4] = {1,1,1,0}; | 192 | static const uint8 t1HB_const[4] = {1,1,1,0}; |
171 | static const uint16 t2HB_const[9] = {1,2,1,3,1,1,3,2,0}; | 193 | static const uint8 t2HB_const[9] = {1,2,1,3,1,1,3,2,0}; |
172 | static const uint16 t3HB_const[9] = {3,2,1,1,1,1,3,2,0}; | 194 | static const uint8 t3HB_const[9] = {3,2,1,1,1,1,3,2,0}; |
173 | static const uint16 t5HB_const[16] = {1,2,6,5,3,1,4,4,7,5,7,1,6,1,1,0}; | 195 | static const uint8 t5HB_const[16] = {1,2,6,5,3,1,4,4,7,5,7,1,6,1,1,0}; |
174 | static const uint16 t6HB_const[16] = {7,3,5,1,6,2,3,2,5,4,4,1,3,3,2,0}; | 196 | static const uint8 t6HB_const[16] = {7,3,5,1,6,2,3,2,5,4,4,1,3,3,2,0}; |
175 | static const uint16 t7HB_const[36] = {1,2,10,19,16,10,3,3,7,10,5,3,11,4,13,17,8,4,12,11,18,15,11,2,7,6,9,14,3,1,6,4,5,3,2,0}; | 197 | |
176 | static const uint16 t8HB_const[36] = {3,4,6,18,12,5,5,1,2,16,9,3,7,3,5,14,7,3,19,17,15,13,10,4,13,5,8,11,5,1,12,4,4,1,1,0}; | 198 | static const uint8 t7HB_const[36] = |
177 | static const uint16 t9HB_const[36] = {7,5,9,14,15,7,6,4,5,5,6,7,7,6,8,8,8,5,15,6,9,10,5,1,11,7,9,6,4,1,14,4,6,2,6,0}; | 199 | { 1, 2,10,19,16,10, 3, 3, 7,10, 5, 3,11, 4,13,17, 8, 4, |
178 | static const uint16 t10HB_const[64] = {1,2,10,23,35,30,12,17,3,3,8,12,18,21,12,7,11,9,15,21,32,40,19,6,14,13,22,34,46,23,18, | 200 | 12,11,18,15,11, 2, 7, 6, 9,14, 3, 1, 6, 4, 5, 3, 2, 0 }; |
179 | 7,20,19,33,47,27,22,9,3,31,22,41,26,21,20,5,3,14,13,10,11,16,6,5,1,9,8,7,8,4 ,4,2,0}; | 201 | |
180 | static const uint16 t11HB_const[64] = {3,4,10,24,34,33,21,15,5,3,4,10,32,17,11,10,11,7,13,18,30,31,20,5,25,11,19,59,27,18,12, | 202 | static const uint8 t8HB_const[36] = |
181 | 5,35,33,31,58,30,16,7,5,28,26,32,19,17,15,8,14,14,12,9,13,14,9,4,1,11,4,6,6,6,3,2,0}; | 203 | { 3, 4, 6,18,12, 5, 5, 1, 2,16, 9, 3, 7, 3, 5,14, 7, 3, |
182 | static const uint16 t12HB_const[64] = {9,6,16,33,41,39,38,26,7,5,6,9,23,16,26,11,17,7,11,14,21,30,10,7,17,10,15,12,18,28,14, | 204 | 19,17,15,13,10, 4,13, 5, 8,11, 5, 1,12, 4, 4, 1, 1, 0 }; |
183 | 5,32,13,22,19,18,16,9,5,40,17,31,29,17,13,4,2,27,12,11,15,10,7,4,1,27,12,8,12,6,3,1,0}; | 205 | |
184 | static const uint16 t13HB_const[256] = {1,5,14,21,34,51,46,71,42,52,68,52,67,44,43,19,3,4,12,19,31,26,44,33,31,24,32, | 206 | static const uint8 t9HB_const[36] = |
185 | 24,31,35,22,14,15,13,23,36,59,49,77,65,29,40,30,40,27,33,42,16,22,20,37,61,56, | 207 | { 7, 5, 9,14,15, 7, 6, 4, 5, 5, 6, 7, 7, 6, 8, 8, 8, 5, |
186 | 79,73,64,43,76,56,37,26,31,25,14,35,16,60,57,97,75,114,91,54,73,55,41,48,53, | 208 | 15, 6, 9,10, 5, 1,11, 7, 9, 6, 4, 1,14, 4, 6, 2, 6, 0 }; |
187 | 23,24,58,27,50,96,76,70,93,84,77,58,79,29,74,49,41,17,47,45,78,74,115,94,90, | 209 | |
188 | 79,69,83,71,50,59,38,36,15,72,34,56,95,92,85,91,90,86,73,77,65,51,44,43,42,43, | 210 | static const uint8 t10HB_const[64] = |
189 | 20,30,44,55,78,72,87,78,61,46,54,37,30,20,16,53,25,41,37,44,59,54,81,66,76,57, | 211 | {1,2,10,23,35,30,12,17,3,3,8,12,18,21,12,7,11,9,15,21,32, |
190 | 54,37,18,39,11,35,33,31,57,42,82,72,80,47,58,55,21,22,26,38,22,53,25,23,38,70, | 212 | 40,19,6,14,13,22,34,46,23,18,7,20,19,33,47,27,22,9,3,31,22, |
191 | 60,51,36,55,26,34,23,27,14,9,7,34,32,28,39,49,75,30,52,48,40,52,28,18,17,9,5, | 213 | 41,26,21,20,5,3,14,13,10,11,16,6,5,1,9,8,7,8,4,4,2,0 }; |
192 | 45,21,34,64,56,50,49,45,31,19,12,15,10,7,6,3,48,23,20,39,36,35,53,21,16,23,13, | 214 | |
193 | 10,6,1,4,2,16,15,17,27,25,20,29,11,17,12,16,8,1,1,0,1}; | 215 | static const uint8 t11HB_const[64] = |
194 | static const uint16 t15HB_const[256] = {7,12,18,53,47,76,124,108,89,123,108,119,107,81,122,63,13,5,16,27,46,36,61,51, | 216 | {3,4,10,24,34,33,21,15,5,3,4,10,32,17,11,10,11,7,13,18,30, |
195 | 42,70,52,83,65,41,59,36,19,17,15,24,41,34,59,48,40,64,50,78,62,80,56,33,29,28, | 217 | 31,20,5,25,11,19,59,27,18,12,5,35,33,31,58,30,16,7,5,28,26, |
196 | 25,43,39,63,55,93,76,59,93,72,54,75,50,29,52,22,42,40,67,57,95,79,72,57,89,69, | 218 | 32,19,17,15,8,14,14,12,9,13,14,9,4,1,11,4,6,6,6,3,2,0 }; |
197 | 49,66,46,27,77,37,35,66,58,52,91,74,62,48,79,63,90,62,40,38,125,32,60,56,50, | 219 | |
198 | 92,78,65,55,87,71,51,73,51,70,30,109,53,49,94,88,75,66,122,91,73,56,42,64,44, | 220 | static const uint8 t12HB_const[64] = |
199 | 21,25,90,43,41,77,73,63,56,92,77,66,47,67,48,53,36,20,71,34,67,60,58,49,88,76, | 221 | {9,6,16,33,41,39,38,26,7,5,6,9,23,16,26,11,17,7,11,14,21, |
200 | 67,106,71,54,38,39,23,15,109,53,51,47,90,82,58,57,48,72,57,41,23,27,62,9,86, | 222 | 30,10,7,17,10,15,12,18,28,14,5,32,13,22,19,18,16,9,5,40,17, |
201 | 42,40,37,70,64,52,43,70,55,42,25,29,18,11,11,118,68,30,55,50,46,74,65,49,39, | 223 | 31,29,17,13,4,2,27,12,11,15,10,7,4,1,27,12,8,12,6,3,1,0 }; |
202 | 24,16,22,13,14,7,91,44,39,38,34,63,52,45,31,52,28,19,14,8,9,3,123,60,58,53,47, | 224 | |
203 | 43,32,22,37,24,17,12,15,10,2,1,71,37,34,30,28,20,17,26,21,16,10,6,8,6,2,0}; | 225 | static const uint8 t13HB_const[256] = |
204 | static const uint16 t16HB_const[256] = {1,5,14,44,74,63,110,93,172,149,138,242,225,195,376,17,3,4,12,20,35,62,53,47, | 226 | {1,5,14,21,34,51,46,71,42,52,68,52,67,44,43,19,3,4,12,19,31,26,44,33,31,24,32, |
205 | 83,75,68,119,201,107,207,9,15,13,23,38,67,58,103,90,161,72,127,117,110,209, | 227 | 24,31,35,22,14,15,13,23,36,59,49,77,65,29,40,30,40,27,33,42,16,22,20,37,61,56, |
206 | 206,16,45,21,39,69,64,114,99,87,158,140,252,212,199,387,365,26,75,36,68,65, | 228 | 79,73,64,43,76,56,37,26,31,25,14,35,16,60,57,97,75,114,91,54,73,55,41,48,53, |
207 | 115,101,179,164,155,264,246,226,395,382,362,9,66,30,59,56,102,185,173,265,142, | 229 | 23,24,58,27,50,96,76,70,93,84,77,58,79,29,74,49,41,17,47,45,78,74,115,94,90, |
208 | 253,232,400,388,378,445,16,111,54,52,100,184,178,160,133,257,244,228,217,385, | 230 | 79,69,83,71,50,59,38,36,15,72,34,56,95,92,85,91,90,86,73,77,65,51,44,43,42,43, |
209 | 366,715,10,98,48,91,88,165,157,148,261,248,407,397,372,380,889,884,8,85,84,81, | 231 | 20,30,44,55,78,72,87,78,61,46,54,37,30,20,16,53,25,41,37,44,59,54,81,66,76,57, |
210 | 159,156,143,260,249,427,401,392,383,727,713,708,7,154,76,73,141,131,256,245, | 232 | 54,37,18,39,11,35,33,31,57,42,82,72,80,47,58,55,21,22,26,38,22,53,25,23,38,70, |
211 | 426,406,394,384,735,359,710,352,11,139,129,67,125,247,233,229,219,393,743,737, | 233 | 60,51,36,55,26,34,23,27,14,9,7,34,32,28,39,49,75,30,52,48,40,52,28,18,17,9,5, |
212 | 720,885,882,439,4,243,120,118,115,227,223,396,746,742,736,721,712,706,223,436, | 234 | 45,21,34,64,56,50,49,45,31,19,12,15,10,7,6,3,48,23,20,39,36,35,53,21,16,23,13, |
213 | 6,202,224,222,218,216,389,386,381,364,888,443,707,440,437,1728,4,747,211,210, | 235 | 10,6,1,4,2,16,15,17,27,25,20,29,11,17,12,16,8,1,1,0,1 }; |
214 | 208,370,379,734,723,714,1735,883,877,876,3459,865,2,377,369,102,187,726,722, | 236 | |
215 | 358,711,709,866,1734,871,3458,870,434,0,12,10,7,11,10,17,11,9,13,12,10,7,5,3,1,3}; | 237 | static const uint8 t15HB_const[256] = |
216 | static const uint16 t24HB_const[256] = {15,13,46,80,146,262,248,434,426,669,653,649,621,517,1032,88,14,12,21,38,71, | 238 | {7,12,18,53,47,76,124,108,89,123,108,119,107,81,122,63,13,5,16,27,46,36,61,51, |
217 | 130,122,216,209,198,327,345,319,297,279,42,47,22,41,74,68,128,120,221,207,194, | 239 | 42,70,52,83,65,41,59,36,19,17,15,24,41,34,59,48,40,64,50,78,62,80,56,33,29,28, |
218 | 182,340,315,295,541,18,81,39,75,70,134,125,116,220,204,190,178,325,311,293, | 240 | 25,43,39,63,55,93,76,59,93,72,54,75,50,29,52,22,42,40,67,57,95,79,72,57,89,69, |
219 | 271,16,147,72,69,135,127,118,112,210,200,188,352,323,306,285,540,14,263,66, | 241 | 49,66,46,27,77,37,35,66,58,52,91,74,62,48,79,63,90,62,40,38,125,32,60,56,50, |
220 | 129,126,119,114,214,202,192,180,341,317,301,281,262,12,249,123,121,117,113, | 242 | 92,78,65,55,87,71,51,73,51,70,30,109,53,49,94,88,75,66,122,91,73,56,42,64,44, |
221 | 215,206,195,185,347,330,308,291,272,520,10,435,115,111,109,211,203,196,187, | 243 | 21,25,90,43,41,77,73,63,56,92,77,66,47,67,48,53,36,20,71,34,67,60,58,49,88,76, |
222 | 353,332,313,298,283,531,381,17,427,212,208,205,201,193,186,177,169,320,303, | 244 | 67,106,71,54,38,39,23,15,109,53,51,47,90,82,58,57,48,72,57,41,23,27,62,9,86, |
223 | 286,268,514,377,16,335,199,197,191,189,181,174,333,321,305,289,275,521,379, | 245 | 42,40,37,70,64,52,43,70,55,42,25,29,18,11,11,118,68,30,55,50,46,74,65,49,39, |
224 | 371,11,668,184,183,179,175,344,331,314,304,290,277,530,383,373,366,10,652,346, | 246 | 24,16,22,13,14,7,91,44,39,38,34,63,52,45,31,52,28,19,14,8,9,3,123,60,58,53,47, |
225 | 171,168,164,318,309,299,287,276,263,513,375,368,362,6,648,322,316,312,307,302, | 247 | 43,32,22,37,24,17,12,15,10,2,1,71,37,34,30,28,20,17,26,21,16,10,6,8,6,2,0}; |
226 | 292,284,269,261,512,376,370,364,359,4,620,300,296,294,288,282,273,266,515,380, | 248 | |
227 | 374,369,365,361,357,2,1033,280,278,274,267,264,259,382,378,372,367,363,360, | 249 | static const uint16 t16HB_const[256] = |
228 | 358,356,0,43,20,19,17,15,13,11,9,7,6,4,7,5,3,1,3}; | 250 | {1,5,14,44,74,63,110,93,172,149,138,242,225,195,376,17,3,4,12,20,35,62,53,47, |
229 | 251 | 83,75,68,119,201,107,207,9,15,13,23,38,67,58,103,90,161,72,127,117,110,209, | |
230 | static const uint8 t1l_const[4] = {1,3,2,3}; | 252 | 206,16,45,21,39,69,64,114,99,87,158,140,252,212,199,387,365,26,75,36,68,65, |
231 | static const uint8 t2l_const[9] = {1,3,6,3,3,5,5,5,6}; | 253 | 115,101,179,164,155,264,246,226,395,382,362,9,66,30,59,56,102,185,173,265,142, |
232 | static const uint8 t3l_const[9] = {2,2,6,3,2,5,5,5,6}; | 254 | 253,232,400,388,378,445,16,111,54,52,100,184,178,160,133,257,244,228,217,385, |
233 | static const uint8 t5l_const[16] = {1,3,6,7,3,3,6,7,6,6,7,8,7,6,7,8}; | 255 | 366,715,10,98,48,91,88,165,157,148,261,248,407,397,372,380,889,884,8,85,84,81, |
234 | static const uint8 t6l_const[16] = {3,3,5,7,3,2,4,5,4,4,5,6,6,5,6,7}; | 256 | 159,156,143,260,249,427,401,392,383,727,713,708,7,154,76,73,141,131,256,245, |
235 | static const uint8 t7l_const[36] = {1,3,6,8,8,9,3,4,6,7,7,8,6,5,7,8,8,9,7,7,8,9,9,9,7,7,8,9,9,10,8,8,9,10,10,10}; | 257 | 426,406,394,384,735,359,710,352,11,139,129,67,125,247,233,229,219,393,743,737, |
236 | static const uint8 t8l_const[36] = {2,3,6,8,8,9,3,2,4,8,8,8,6,4,6,8,8,9,8,8,8,9,9,10,8,7,8,9,10,10,9,8,9,9,11,11}; | 258 | 720,885,882,439,4,243,120,118,115,227,223,396,746,742,736,721,712,706,223,436, |
237 | static const uint8 t9l_const[36] = {3,3,5,6,8,9,3,3,4,5,6,8,4,4,5,6,7,8,6,5,6,7,7,8,7,6,7,7,8,9,8,7,8,8,9,9}; | 259 | 6,202,224,222,218,216,389,386,381,364,888,443,707,440,437,1728,4,747,211,210, |
238 | static const uint8 t10l_const[64] = {1,3,6,8,9,9,9,10,3,4,6,7,8,9,8,8,6,6,7,8,9,10,9,9,7,7,8,9,10,10,9,10,8,8,9,10, | 260 | 208,370,379,734,723,714,1735,883,877,876,3459,865,2,377,369,102,187,726,722, |
239 | 10,10,10,10,9,9,10,10,11,11,10,11,8,8,9,10,10,10,11,11,9,8,9,10,10,11,11,11}; | 261 | 358,711,709,866,1734,871,3458,870,434,0,12,10,7,11,10,17,11,9,13,12,10,7,5,3, |
240 | static const uint8 t11l_const[64] = {2,3,5,7,8,9,8,9,3,3,4,6,8,8,7,8,5,5,6,7,8,9,8,8,7,6,7,9,8,10,8,9,8,8,8,9,9,10, | 262 | 1,3}; |
241 | 9,10,8,8,9,10,10,11,10,11,8,7,7,8,9,10,10,10,8,7,8,9,10,10,10,10}; | 263 | |
242 | static const uint8 t12l_const[64] = {4,3,5,7,8,9,9,9,3,3,4,5,7,7,8,8,5,4,5,6,7,8,7,8,6,5,6,6,7,8,8,8,7,6,7,7,8, | 264 | static const uint16 t24HB_const[256] = |
243 | 8,8,9,8,7,8,8,8,9,8,9,8,7,7,8,8,9,9,10,9,8,8,9,9,9,9,10}; | 265 | {15,13,46,80,146,262,248,434,426,669,653,649,621,517,1032,88,14,12,21,38,71, |
244 | static const uint8 t13l_const[256] = {1,4,6,7,8,9,9,10,9,10,11,11,12,12,13,13,3,4,6,7,8,8,9,9,9,9,10,10,11,12,12,12, | 266 | 130,122,216,209,198,327,345,319,297,279,42,47,22,41,74,68,128,120,221,207,194, |
245 | 6,6,7,8,9,9,10,10,9,10,10,11,11,12,13,13,7,7,8,9,9,10,10,10,10,11,11,11,11,12, | 267 | 182,340,315,295,541,18,81,39,75,70,134,125,116,220,204,190,178,325,311,293, |
246 | 13,13,8,7,9,9,10,10,11,11,10,11,11,12,12,13,13,14,9,8,9,10,10,10,11,11,11,11, | 268 | 271,16,147,72,69,135,127,118,112,210,200,188,352,323,306,285,540,14,263,66, |
247 | 12,11,13,13,14,14,9,9,10,10,11,11,11,11,11,12,12,12,13,13,14,14,10,9,10,11,11, | 269 | 129,126,119,114,214,202,192,180,341,317,301,281,262,12,249,123,121,117,113, |
248 | 11,12,12,12,12,13,13,13,14,16,16,9,8,9,10,10,11,11,12,12,12,12,13,13,14,15,15, | 270 | 215,206,195,185,347,330,308,291,272,520,10,435,115,111,109,211,203,196,187, |
249 | 10,9,10,10,11,11,11,13,12,13,13,14,14,14,16,15,10,10,10,11,11,12,12,13,12,13, | 271 | 353,332,313,298,283,531,381,17,427,212,208,205,201,193,186,177,169,320,303, |
250 | 14,13,14,15,16,17,11,10,10,11,12,12,12,12,13,13,13,14,15,15,15,16,11,11,11,12, | 272 | 286,268,514,377,16,335,199,197,191,189,181,174,333,321,305,289,275,521,379, |
251 | 12,13,12,13,14,14,15,15,15,16,16,16,12,11,12,13,13,13,14,14,14,14,14,15,16,15, | 273 | 371,11,668,184,183,179,175,344,331,314,304,290,277,530,383,373,366,10,652,346, |
252 | 16,16,13,12,12,13,13,13,15,14,14,17,15,15,15,17,16,16,12,12,13,14,14,14,15,14, | 274 | 171,168,164,318,309,299,287,276,263,513,375,368,362,6,648,322,316,312,307,302, |
253 | 15,15,16,16,19,18,19,16}; | 275 | 292,284,269,261,512,376,370,364,359,4,620,300,296,294,288,282,273,266,515,380, |
254 | static const uint8 t15l_const[256] = {3,4,5,7,7,8,9,9,9,10,10,11,11,11,12,13,4,3,5,6,7,7,8,8,8,9,9,10,10,10,11,11,5, | 276 | 374,369,365,361,357,2,1033,280,278,274,267,264,259,382,378,372,367,363,360, |
255 | 5,5,6,7,7,8,8,8,9,9,10,10,11,11,11,6,6,6,7,7,8,8,9,9,9,10,10,10,11,11,11,7,6,7, | 277 | 358,356,0,43,20,19,17,15,13,11,9,7,6,4,7,5,3,1,3}; |
256 | 7,8,8,9,9,9,9,10,10,10,11,11,11,8,7,7,8,8,8,9,9,9,9,10,10,11,11,11,12,9,7,8,8, | 278 | |
257 | 8,9,9,9,9,10,10,10,11,11,12,12,9,8,8,9,9,9,9,10,10,10,10,10,11,11,11,12,9,8,8, | 279 | static const uint32 tab1315_const[256] = |
258 | 9,9,9,9,10,10,10,10,11,11,12,12,12,9,8,9,9,9,9,10,10,10,11,11,11,11,12,12,12,10, | 280 | { 0x010003,0x050005,0x070006,0x080008,0x090008,0x0a0009,0x0a000a,0x0b000a, |
259 | 9,9,9,10,10,10,10,10,11,11,11,11,12,13,12,10,9,9,9,10,10,10,10,11,11,11,11,12, | 281 | 0x0a000a,0x0b000b,0x0c000b,0x0c000c,0x0d000c,0x0d000c,0x0e000d,0x0e000e, |
260 | 12,12,13,11,10,9,10,10,10,11,11,11,11,11,11,12,12,13,13,11,10,10,10,10,11,11,11, | 282 | 0x040005,0x060005,0x080007,0x090008,0x0a0009,0x0a0009,0x0b000a,0x0b000a, |
261 | 11,12,12,12,12,12,13,13,12,11,11,11,11,11,11,11,12,12,12,12,13,13,12,13,12,11, | 283 | 0x0b000a,0x0b000b,0x0c000b,0x0c000c,0x0d000c,0x0e000c,0x0e000d,0x0e000d, |
262 | 11,11,11,11,11,12,12,12,12,12,13,13,13,13}; | 284 | 0x070006,0x080007,0x090007,0x0a0008,0x0b0009,0x0b0009,0x0c000a,0x0c000a, |
263 | static const uint8 t16l_const[256] = {1,4,6,8,9,9,10,10,11,11,11,12,12,12,13,9,3,4,6,7,8,9,9,9,10,10,10,11,12,11,12, | 285 | 0x0b000a,0x0c000b,0x0c000b,0x0d000c,0x0d000c,0x0e000d,0x0f000d,0x0f000d, |
264 | 8,6,6,7,8,9,9,10,10,11,10,11,11,11,12,12,9,8,7,8,9,9,10,10,10,11,11,12,12,12, | 286 | 0x080007,0x090008,0x0a0008,0x0b0009,0x0b0009,0x0c000a,0x0c000a,0x0c000b, |
265 | 13,13,10,9,8,9,9,10,10,11,11,11,12,12,12,13,13,13,9,9,8,9,9,10,11,11,12,11,12, | 287 | 0x0c000b,0x0d000b,0x0d000c,0x0d000c,0x0d000c,0x0e000d,0x0f000d,0x0f000d, |
266 | 12,13,13,13,14,10,10,9,9,10,11,11,11,11,12,12,12,12,13,13,14,10,10,9,10,10,11, | 288 | 0x090008,0x090008,0x0b0009,0x0b0009,0x0c000a,0x0c000a,0x0d000b,0x0d000b, |
267 | 11,11,12,12,13,13,13,13,15,15,10,10,10,10,11,11,11,12,12,13,13,13,13,14,14,14, | 289 | 0x0c000b,0x0d000b,0x0d000c,0x0e000c,0x0e000c,0x0f000d,0x0f000d,0x10000d, |
268 | 10,11,10,10,11,11,12,12,13,13,13,13,14,13,14,13,11,11,11,10,11,12,12,12,12,13, | 290 | 0x0a0009,0x0a0009,0x0b0009,0x0c000a,0x0c000a,0x0c000a,0x0d000b,0x0d000b, |
269 | 14,14,14,15,15,14,10,12,11,11,11,12,12,13,14,14,14,14,14,14,13,14,11,12,12,12, | 291 | 0x0d000b,0x0d000b,0x0e000c,0x0d000c,0x0f000d,0x0f000d,0x10000d,0x10000e, |
270 | 12,12,13,13,13,13,15,14,14,14,14,16,11,14,12,12,12,13,13,14,14,14,16,15,15,15, | 292 | 0x0a000a,0x0b0009,0x0c000a,0x0c000a,0x0d000a,0x0d000b,0x0d000b,0x0d000b, |
271 | 17,15,11,13,13,11,12,14,14,13,14,14,15,16,15,17,15,14,11,9,8,8,9,9,10,10,10,11, | 293 | 0x0d000b,0x0e000c,0x0e000c,0x0e000c,0x0f000d,0x0f000d,0x10000e,0x10000e, |
272 | 11,11,11,11,11,11,8}; | 294 | 0x0b000a,0x0b000a,0x0c000a,0x0d000b,0x0d000b,0x0d000b,0x0e000b,0x0e000c, |
273 | static const uint8 t24l_const[256] = {4,4,6,7,8,9,9,10,10,11,11,11,11,11,12,9,4,4,5,6,7,8,8,9,9,9,10,10,10,10,10,8,6, | 295 | 0x0e000c,0x0e000c,0x0f000c,0x0f000c,0x0f000d,0x10000d,0x12000d,0x12000e, |
274 | 5,6,7,7,8,8,9,9,9,9,10,10,10,11,7,7,6,7,7,8,8,8,9,9,9,9,10,10,10,10,7,8,7,7,8, | 296 | 0x0a000a,0x0a000a,0x0b000a,0x0c000b,0x0c000b,0x0d000b,0x0d000b,0x0e000c, |
275 | 8,8,8,9,9,9,10,10,10,10,11,7,9,7,8,8,8,8,9,9,9,9,10,10,10,10,10,7,9,8,8,8,8,9, | 297 | 0x0e000c,0x0e000c,0x0e000c,0x0f000d,0x0f000d,0x10000e,0x11000e,0x11000e, |
276 | 9,9,9,10,10,10,10,10,11,7,10,8,8,8,9,9,9,9,10,10,10,10,10,11,11,8,10,9,9,9,9,9, | 298 | 0x0b000a,0x0b000a,0x0c000b,0x0c000b,0x0d000b,0x0d000b,0x0d000c,0x0f000c, |
277 | 9,9,9,10,10,10,10,11,11,8,10,9,9,9,9,9,9,10,10,10,10,10,11,11,11,8,11,9,9,9,9, | 299 | 0x0e000c,0x0f000d,0x0f000d,0x10000d,0x10000d,0x10000e,0x12000e,0x11000e, |
278 | 10,10,10,10,10,10,11,11,11,11,8,11,10,9,9,9,10,10,10,10,10,10,11,11,11,11,8,11, | 300 | 0x0b000b,0x0c000b,0x0c000b,0x0d000b,0x0d000c,0x0e000c,0x0e000c,0x0f000c, |
279 | 10,10,10,10,10,10,10,10,10,11,11,11,11,11,8,11,10,10,10,10,10,10,10,11,11,11,11, | 301 | 0x0e000c,0x0f000d,0x10000d,0x0f000d,0x10000d,0x11000e,0x12000f,0x13000e, |
280 | 11,11,11,8,12,10,10,10,10,10,10,11,11,11,11,11,11,11,11,8,8,7,7,7,7,7,7,7,7,7, | 302 | 0x0c000b,0x0c000b,0x0c000b,0x0d000b,0x0e000c,0x0e000c,0x0e000c,0x0e000c, |
281 | 7,8,8,8,8,4}; | 303 | 0x0f000d,0x0f000d,0x0f000d,0x10000d,0x11000e,0x11000e,0x11000e,0x12000f, |
304 | 0x0c000c,0x0d000c,0x0d000b,0x0e000c,0x0e000c,0x0f000c,0x0e000d,0x0f000d, | ||
305 | 0x10000d,0x10000d,0x11000d,0x11000d,0x11000e,0x12000e,0x12000f,0x12000f, | ||
306 | 0x0d000c,0x0d000c,0x0e000c,0x0f000c,0x0f000c,0x0f000d,0x10000d,0x10000d, | ||
307 | 0x10000d,0x10000e,0x10000e,0x11000e,0x12000e,0x11000e,0x12000f,0x12000f, | ||
308 | 0x0e000d,0x0e000d,0x0e000d,0x0f000d,0x0f000d,0x0f000d,0x11000d,0x10000d, | ||
309 | 0x10000e,0x13000e,0x11000e,0x11000e,0x11000f,0x13000f,0x12000e,0x12000f, | ||
310 | 0x0d000d,0x0e000d,0x0f000d,0x10000d,0x10000d,0x10000d,0x11000d,0x10000e, | ||
311 | 0x11000e,0x11000e,0x12000e,0x12000e,0x15000f,0x14000f,0x15000f,0x12000f }; | ||
312 | |||
313 | static const uint32 tab01_const[16] = | ||
314 | { 0x10004,0x50005,0x50005,0x70006,0x50005,0x80006,0x70006,0x90007, | ||
315 | 0x50005,0x70006,0x70006,0x90007,0x70006,0x90007,0x90007,0xa0008 }; | ||
316 | |||
317 | static const uint32 tab23_const[ 9] = | ||
318 | { 0x10002,0x40003,0x70007,0x40004,0x50004,0x70007,0x60006,0x70007,0x80008 }; | ||
319 | |||
320 | static const uint32 tab56_const[16] = | ||
321 | { 0x10003,0x40004,0x70006,0x80008,0x40004,0x50004,0x80006,0x90007, | ||
322 | 0x70005,0x80006,0x90007,0xa0008,0x80007,0x80007,0x90008,0xa0009 }; | ||
323 | |||
324 | static const uint32 tab789_const[36] = | ||
325 | {0x00100803,0x00401004,0x00701c06,0x00902407,0x00902409,0x00a0280a,0x00401004, | ||
326 | 0x00601005,0x00801806,0x00902807,0x00902808,0x00a0280a,0x00701c05,0x00701806, | ||
327 | 0x00902007,0x00a02808,0x00a02809,0x00b02c0a,0x00802407,0x00902807,0x00a02808, | ||
328 | 0x00b02c09,0x00b02c09,0x00b0300a,0x00802408,0x00902408,0x00a02809,0x00b02c09, | ||
329 | 0x00b0300a,0x00c0300b,0x00902809,0x00a02809,0x00b02c0a,0x00c02c0a,0x00c0340b, | ||
330 | 0x00c0340b}; | ||
331 | |||
332 | static const uint32 tabABC_const[64] = | ||
333 | {0x00100804,0x00401004,0x00701806,0x00902008,0x00a02409,0x00a0280a,0x00a0240a, | ||
334 | 0x00b0280a,0x00401004,0x00601405,0x00801806,0x00902007,0x00a02809,0x00b02809, | ||
335 | 0x00a0240a,0x00a0280a,0x00701806,0x00801c06,0x00902007,0x00a02408,0x00b02809, | ||
336 | 0x00c02c0a,0x00b02809,0x00b0280a,0x00802007,0x00902007,0x00a02408,0x00b02c08, | ||
337 | 0x00c02809,0x00c0300a,0x00b0280a,0x00c02c0a,0x00902408,0x00a02808,0x00b02809, | ||
338 | 0x00c02c09,0x00c02c0a,0x00c0300a,0x00c02c0a,0x00c0300b,0x00a02409,0x00b02809, | ||
339 | 0x00c02c0a,0x00c0300a,0x00d0300a,0x00d0340b,0x00c0300a,0x00d0340b,0x00902409, | ||
340 | 0x00a02409,0x00b02409,0x00c0280a,0x00c02c0a,0x00c0300b,0x00d0300b,0x00d0300c, | ||
341 | 0x00a0240a,0x00a0240a,0x00b0280a,0x00c02c0b,0x00c0300b,0x00d0300b,0x00d0300b, | ||
342 | 0x00d0300c}; | ||
343 | |||
344 | static const uint32 tab1624_const[256] = | ||
345 | {0x00010004,0x00050005,0x00070007,0x00090008,0x000a0009,0x000a000a,0x000b000a, | ||
346 | 0x000b000b,0x000c000b,0x000c000c,0x000c000c,0x000d000c,0x000d000c,0x000d000c, | ||
347 | 0x000e000d,0x000a000a,0x00040005,0x00060006,0x00080007,0x00090008,0x000a0009, | ||
348 | 0x000b000a,0x000b000a,0x000b000b,0x000c000b,0x000c000b,0x000c000c,0x000d000c, | ||
349 | 0x000e000c,0x000d000c,0x000e000c,0x000a000a,0x00070007,0x00080007,0x00090008, | ||
350 | 0x000a0009,0x000b0009,0x000b000a,0x000c000a,0x000c000b,0x000d000b,0x000c000b, | ||
351 | 0x000d000b,0x000d000c,0x000d000c,0x000e000c,0x000e000d,0x000b0009,0x00090008, | ||
352 | 0x00090008,0x000a0009,0x000b0009,0x000b000a,0x000c000a,0x000c000a,0x000c000b, | ||
353 | 0x000d000b,0x000d000b,0x000e000b,0x000e000c,0x000e000c,0x000f000c,0x000f000c, | ||
354 | 0x000c0009,0x000a0009,0x000a0009,0x000b0009,0x000b000a,0x000c000a,0x000c000a, | ||
355 | 0x000d000a,0x000d000b,0x000d000b,0x000e000b,0x000e000c,0x000e000c,0x000f000c, | ||
356 | 0x000f000c,0x000f000d,0x000b0009,0x000a000a,0x000a0009,0x000b000a,0x000b000a, | ||
357 | 0x000c000a,0x000d000a,0x000d000b,0x000e000b,0x000d000b,0x000e000b,0x000e000c, | ||
358 | 0x000f000c,0x000f000c,0x000f000c,0x0010000c,0x000c0009,0x000b000a,0x000b000a, | ||
359 | 0x000b000a,0x000c000a,0x000d000a,0x000d000b,0x000d000b,0x000d000b,0x000e000b, | ||
360 | 0x000e000c,0x000e000c,0x000e000c,0x000f000c,0x000f000c,0x0010000d,0x000c0009, | ||
361 | 0x000b000b,0x000b000a,0x000c000a,0x000c000a,0x000d000b,0x000d000b,0x000d000b, | ||
362 | 0x000e000b,0x000e000c,0x000f000c,0x000f000c,0x000f000c,0x000f000c,0x0011000d, | ||
363 | 0x0011000d,0x000c000a,0x000b000b,0x000c000b,0x000c000b,0x000d000b,0x000d000b, | ||
364 | 0x000d000b,0x000e000b,0x000e000b,0x000f000b,0x000f000c,0x000f000c,0x000f000c, | ||
365 | 0x0010000c,0x0010000d,0x0010000d,0x000c000a,0x000c000b,0x000c000b,0x000c000b, | ||
366 | 0x000d000b,0x000d000b,0x000e000b,0x000e000b,0x000f000c,0x000f000c,0x000f000c, | ||
367 | 0x000f000c,0x0010000c,0x000f000d,0x0010000d,0x000f000d,0x000d000a,0x000c000c, | ||
368 | 0x000d000b,0x000c000b,0x000d000b,0x000e000b,0x000e000c,0x000e000c,0x000e000c, | ||
369 | 0x000f000c,0x0010000c,0x0010000c,0x0010000d,0x0011000d,0x0011000d,0x0010000d, | ||
370 | 0x000c000a,0x000d000c,0x000d000c,0x000d000b,0x000d000b,0x000e000b,0x000e000c, | ||
371 | 0x000f000c,0x0010000c,0x0010000c,0x0010000c,0x0010000c,0x0010000d,0x0010000d, | ||
372 | 0x000f000d,0x0010000d,0x000d000a,0x000d000c,0x000e000c,0x000e000c,0x000e000c, | ||
373 | 0x000e000c,0x000f000c,0x000f000c,0x000f000c,0x000f000c,0x0011000c,0x0010000d, | ||
374 | 0x0010000d,0x0010000d,0x0010000d,0x0012000d,0x000d000a,0x000f000c,0x000e000c, | ||
375 | 0x000e000c,0x000e000c,0x000f000c,0x000f000c,0x0010000c,0x0010000c,0x0010000d, | ||
376 | 0x0012000d,0x0011000d,0x0011000d,0x0011000d,0x0013000d,0x0011000d,0x000d000a, | ||
377 | 0x000e000d,0x000f000c,0x000d000c,0x000e000c,0x0010000c,0x0010000c,0x000f000c, | ||
378 | 0x0010000d,0x0010000d,0x0011000d,0x0012000d,0x0011000d,0x0013000d,0x0011000d, | ||
379 | 0x0010000d,0x000d000a,0x000a0009,0x000a0009,0x000a0009,0x000b0009,0x000b0009, | ||
380 | 0x000c0009,0x000c0009,0x000c0009,0x000d0009,0x000d0009,0x000d0009,0x000d000a, | ||
381 | 0x000d000a,0x000d000a,0x000d000a,0x000a0006}; | ||
382 | |||
383 | static const uint8 t1l_const[8] = {1,3,2,3,1,4,3,5}; | ||
384 | static const uint8 t2l_const[9] = {1,3,6,3,3,5,5,5,6}; | ||
385 | static const uint8 t3l_const[9] = {2,2,6,3,2,5,5,5,6}; | ||
386 | static const uint8 t5l_const[16] = {1,3,6,7,3,3,6,7,6,6,7,8,7,6,7,8}; | ||
387 | static const uint8 t6l_const[16] = {3,3,5,7,3,2,4,5,4,4,5,6,6,5,6,7}; | ||
388 | |||
389 | static const uint8 t7l_const[36] = | ||
390 | {1,3,6,8,8,9,3,4,6,7,7,8,6,5,7,8,8,9,7,7,8,9,9,9,7,7,8,9,9,10,8,8,9,10,10,10}; | ||
391 | |||
392 | static const uint8 t8l_const[36] = | ||
393 | {2,3,6,8,8,9,3,2,4,8,8,8,6,4,6,8,8,9,8,8,8,9,9,10,8,7,8,9,10,10,9,8,9,9,11,11}; | ||
394 | |||
395 | static const uint8 t9l_const[36] = | ||
396 | {3,3,5,6,8,9,3,3,4,5,6,8,4,4,5,6,7,8,6,5,6,7,7,8,7,6,7,7,8,9,8,7,8,8,9,9}; | ||
397 | |||
398 | static const uint8 t10l_const[64] = | ||
399 | {1,3,6,8,9,9,9,10,3,4,6,7,8,9,8,8,6,6,7,8,9,10,9,9,7,7,8,9,10,10,9,10,8,8,9,10, | ||
400 | 10,10,10,10,9,9,10,10,11,11,10,11,8,8,9,10,10,10,11,11,9,8,9,10,10,11,11,11}; | ||
401 | |||
402 | static const uint8 t11l_const[64] = | ||
403 | {2,3,5,7,8,9,8,9,3,3,4,6,8,8,7,8,5,5,6,7,8,9,8,8,7,6,7,9,8,10,8,9,8,8,8,9,9,10, | ||
404 | 9,10,8,8,9,10,10,11,10,11,8,7,7,8,9,10,10,10,8,7,8,9,10,10,10,10}; | ||
405 | |||
406 | static const uint8 t12l_const[64] = | ||
407 | {4,3,5,7,8,9,9,9,3,3,4,5,7,7,8,8,5,4,5,6,7,8,7,8,6,5,6,6,7,8,8,8,7,6,7,7,8, | ||
408 | 8,8,9,8,7,8,8,8,9,8,9,8,7,7,8,8,9,9,10,9,8,8,9,9,9,9,10}; | ||
409 | |||
410 | static const uint8 t13l_const[256] = | ||
411 | {1,4,6,7,8,9,9,10,9,10,11,11,12,12,13,13,3,4,6,7,8,8,9,9,9,9,10,10,11,12,12,12, | ||
412 | 6,6,7,8,9,9,10,10,9,10,10,11,11,12,13,13,7,7,8,9,9,10,10,10,10,11,11,11,11,12, | ||
413 | 13,13,8,7,9,9,10,10,11,11,10,11,11,12,12,13,13,14,9,8,9,10,10,10,11,11,11,11, | ||
414 | 12,11,13,13,14,14,9,9,10,10,11,11,11,11,11,12,12,12,13,13,14,14,10,9,10,11,11, | ||
415 | 11,12,12,12,12,13,13,13,14,16,16,9,8,9,10,10,11,11,12,12,12,12,13,13,14,15,15, | ||
416 | 10,9,10,10,11,11,11,13,12,13,13,14,14,14,16,15,10,10,10,11,11,12,12,13,12,13, | ||
417 | 14,13,14,15,16,17,11,10,10,11,12,12,12,12,13,13,13,14,15,15,15,16,11,11,11,12, | ||
418 | 12,13,12,13,14,14,15,15,15,16,16,16,12,11,12,13,13,13,14,14,14,14,14,15,16,15, | ||
419 | 16,16,13,12,12,13,13,13,15,14,14,17,15,15,15,17,16,16,12,12,13,14,14,14,15,14, | ||
420 | 15,15,16,16,19,18,19,16}; | ||
421 | |||
422 | static const uint8 t15l_const[256] = | ||
423 | {3,4,5,7,7,8,9,9,9,10,10,11,11,11,12,13,4,3,5,6,7,7,8,8,8,9,9,10,10,10,11,11,5, | ||
424 | 5,5,6,7,7,8,8,8,9,9,10,10,11,11,11,6,6,6,7,7,8,8,9,9,9,10,10,10,11,11,11,7,6, | ||
425 | 7,7,8,8,9,9,9,9,10,10,10,11,11,11,8,7,7,8,8,8,9,9,9,9,10,10,11,11,11,12,9,7,8, | ||
426 | 8,8,9,9,9,9,10,10,10,11,11,12,12,9,8,8,9,9,9,9,10,10,10,10,10,11,11,11,12,9,8, | ||
427 | 8,9,9,9,9,10,10,10,10,11,11,12,12,12,9,8,9,9,9,9,10,10,10,11,11,11,11,12,12, | ||
428 | 12,10,9,9,9,10,10,10,10,10,11,11,11,11,12,13,12,10,9,9,9,10,10,10,10,11,11,11, | ||
429 | 11,12,12,12,13,11,10,9,10,10,10,11,11,11,11,11,11,12,12,13,13,11,10,10,10,10, | ||
430 | 11,11,11,11,12,12,12,12,12,13,13,12,11,11,11,11,11,11,11,12,12,12,12,13,13,12, | ||
431 | 13,12,11,11,11,11,11,11,12,12,12,12,12,13,13,13,13}; | ||
432 | |||
433 | static const uint8 t16l_const[256] = | ||
434 | {1,4,6,8,9,9,10,10,11,11,11,12,12,12,13,9,3,4,6,7,8,9,9,9,10,10,10,11,12,11,12, | ||
435 | 8,6,6,7,8,9,9,10,10,11,10,11,11,11,12,12,9,8,7,8,9,9,10,10,10,11,11,12,12,12, | ||
436 | 13,13,10,9,8,9,9,10,10,11,11,11,12,12,12,13,13,13,9,9,8,9,9,10,11,11,12,11,12, | ||
437 | 12,13,13,13,14,10,10,9,9,10,11,11,11,11,12,12,12,12,13,13,14,10,10,9,10,10,11, | ||
438 | 11,11,12,12,13,13,13,13,15,15,10,10,10,10,11,11,11,12,12,13,13,13,13,14,14,14, | ||
439 | 10,11,10,10,11,11,12,12,13,13,13,13,14,13,14,13,11,11,11,10,11,12,12,12,12,13, | ||
440 | 14,14,14,15,15,14,10,12,11,11,11,12,12,13,14,14,14,14,14,14,13,14,11,12,12,12, | ||
441 | 12,12,13,13,13,13,15,14,14,14,14,16,11,14,12,12,12,13,13,14,14,14,16,15,15,15, | ||
442 | 17,15,11,13,13,11,12,14,14,13,14,14,15,16,15,17,15,14,11,9,8,8,9,9,10,10,10, | ||
443 | 11,11,11,11,11,11,11,8}; | ||
444 | |||
445 | static const uint8 t24l_const[256] = | ||
446 | {4,4,6,7,8,9,9,10,10,11,11,11,11,11,12,9,4,4,5,6,7,8,8,9,9,9,10,10,10,10,10,8, | ||
447 | 6,5,6,7,7,8,8,9,9,9,9,10,10,10,11,7,7,6,7,7,8,8,8,9,9,9,9,10,10,10,10,7,8,7,7, | ||
448 | 8,8,8,8,9,9,9,10,10,10,10,11,7,9,7,8,8,8,8,9,9,9,9,10,10,10,10,10,7,9,8,8,8,8, | ||
449 | 9,9,9,9,10,10,10,10,10,11,7,10,8,8,8,9,9,9,9,10,10,10,10,10,11,11,8,10,9,9,9, | ||
450 | 9,9,9,9,9,10,10,10,10,11,11,8,10,9,9,9,9,9,9,10,10,10,10,10,11,11,11,8,11,9,9, | ||
451 | 9,9,10,10,10,10,10,10,11,11,11,11,8,11,10,9,9,9,10,10,10,10,10,10,11,11,11,11, | ||
452 | 8,11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,8,11,10,10,10,10,10,10,10,11, | ||
453 | 11,11,11,11,11,11,8,12,10,10,10,10,10,10,11,11,11,11,11,11,11,11,8,8,7,7,7,7, | ||
454 | 7,7,7,7,7,7,8,8,8,8,4}; | ||
282 | 455 | ||
283 | static const struct huffcodetab ht_const[HTN] = | 456 | static const struct huffcodetab ht_const[HTN] = |
284 | { | 457 | { { 0, NULL, NULL}, /* Apparently not used */ |
285 | { 0, 0, 0, 0, NULL, NULL}, | 458 | { 2, t1HB, t1l}, |
286 | { 2, 2, 0, 0, t1HB, t1l}, | 459 | { 3, t2HB, t2l}, |
287 | { 3, 3, 0, 0, t2HB, t2l}, | 460 | { 3, t3HB, t3l}, |
288 | { 3, 3, 0, 0, t3HB, t3l}, | 461 | { 0, NULL, NULL}, /* Apparently not used */ |
289 | { 0, 0, 0, 0, NULL, NULL},// Apparently not used | 462 | { 4, t5HB, t5l}, |
290 | { 4, 4, 0, 0, t5HB, t5l}, | 463 | { 4, t6HB, t6l}, |
291 | { 4, 4, 0, 0, t6HB, t6l}, | 464 | { 6, t7HB, t7l}, |
292 | { 6, 6, 0, 0, t7HB, t7l}, | 465 | { 6, t8HB, t8l}, |
293 | { 6, 6, 0, 0, t8HB, t8l}, | 466 | { 6, t9HB, t9l}, |
294 | { 6, 6, 0, 0, t9HB, t9l}, | 467 | { 8, t10HB, t10l}, |
295 | { 8, 8, 0, 0,t10HB, t10l}, | 468 | { 8, t11HB, t11l}, |
296 | { 8, 8, 0, 0,t11HB, t11l}, | 469 | { 8, t12HB, t12l}, |
297 | { 8, 8, 0, 0,t12HB, t12l}, | 470 | {16, t13HB, t13l}, |
298 | {16,16, 0, 0,t13HB, t13l}, | 471 | { 0, NULL, NULL}, /* Apparently not used */ |
299 | { 0, 0, 0, 0, NULL, NULL},// Apparently not used | 472 | {16, t15HB, t15l} }; |
300 | {16,16, 0, 0,t15HB, t15l}, | 473 | |
301 | {16,16, 1, 1,t16HB, t16l}, | 474 | static const struct huffcodebig ht_big[HTN] = |
302 | {16,16, 2, 3,t16HB, t16l}, | 475 | { { 16, 1, 1 }, |
303 | {16,16, 3, 7,t16HB, t16l}, | 476 | { 16, 2, 3 }, |
304 | {16,16, 4, 15,t16HB, t16l}, | 477 | { 16, 3, 7 }, |
305 | {16,16, 6, 63,t16HB, t16l}, | 478 | { 16, 4, 15 }, |
306 | {16,16, 8, 255,t16HB, t16l}, | 479 | { 16, 6, 63 }, |
307 | {16,16,10,1023,t16HB, t16l}, | 480 | { 16, 8, 255 }, |
308 | {16,16,13,8191,t16HB, t16l}, | 481 | { 16, 10, 1023 }, |
309 | {16,16, 4, 15,t24HB, t24l}, | 482 | { 16, 13, 8191 }, |
310 | {16,16, 5, 31,t24HB, t24l}, | 483 | { 16, 4, 15 }, |
311 | {16,16, 6, 63,t24HB, t24l}, | 484 | { 16, 5, 31 }, |
312 | {16,16, 7, 127,t24HB, t24l}, | 485 | { 16, 6, 63 }, |
313 | {16,16, 8, 255,t24HB, t24l}, | 486 | { 16, 7, 127 }, |
314 | {16,16, 9, 511,t24HB, t24l}, | 487 | { 16, 8, 255 }, |
315 | {16,16,11,2047,t24HB, t24l}, | 488 | { 16, 9, 511 }, |
316 | {16,16,13,8191,t24HB, t24l} }; | 489 | { 16, 11, 2047 }, |
490 | { 16, 13, 8191 } }; | ||
317 | 491 | ||
318 | static const struct | 492 | static const struct |
319 | { | 493 | { |
320 | unsigned region0_count; | 494 | uint32 region0_cnt; |
321 | unsigned region1_count; | 495 | uint32 region1_cnt; |
322 | } subdv_table[23] = | 496 | } subdv_table[23] = |
323 | { {0, 0}, /* 0 bands */ | 497 | { {0, 0}, /* 0 bands */ |
324 | {0, 0}, /* 1 bands */ | 498 | {0, 0}, /* 1 bands */ |
325 | {0, 0}, /* 2 bands */ | 499 | {0, 0}, /* 2 bands */ |
326 | {0, 0}, /* 3 bands */ | 500 | {0, 0}, /* 3 bands */ |
327 | {0, 0}, /* 4 bands */ | 501 | {0, 0}, /* 4 bands */ |
328 | {0, 1}, /* 5 bands */ | 502 | {0, 1}, /* 5 bands */ |
329 | {1, 1}, /* 6 bands */ | 503 | {1, 1}, /* 6 bands */ |
330 | {1, 1}, /* 7 bands */ | 504 | {1, 1}, /* 7 bands */ |
331 | {1, 2}, /* 8 bands */ | 505 | {1, 2}, /* 8 bands */ |
332 | {2, 2}, /* 9 bands */ | 506 | {2, 2}, /* 9 bands */ |
333 | {2, 3}, /* 10 bands */ | 507 | {2, 3}, /* 10 bands */ |
334 | {2, 3}, /* 11 bands */ | 508 | {2, 3}, /* 11 bands */ |
335 | {3, 4}, /* 12 bands */ | 509 | {3, 4}, /* 12 bands */ |
@@ -345,64 +519,7 @@ static const struct | |||
345 | {6, 7}, /* 22 bands */ | 519 | {6, 7}, /* 22 bands */ |
346 | }; | 520 | }; |
347 | 521 | ||
348 | /* This is table B.9: coefficients for aliasing reduction */ | 522 | static const uint32 sfBand[6][23] = |
349 | static const int ca_int_const[8] = {0xffffbe25,0xffffc39e,0xffffd7e3,0xffffe8b7,0xfffff3e5,0xfffffac2,0xfffffe2f,0xffffff87}; | ||
350 | static const int cs_int_const[8] = {0x00006dc2,0x000070dd,0x0000798d,0x00007ddd,0x00007f6d,0x00007fe4,0x00007ffd,0x00008000}; | ||
351 | static const int win_int_const[18][36] = { | ||
352 | { 0x0000006b,0x00000121,0x000001a7,0x000001f9,0x00000215,0x000001f9,0x000001a7,0x00000121,0x0000006b,0xffffff8b,0xfffffe87,0xfffffd68,0xfffffc35,0xfffffaf9,0xfffff9bd,0xfffff88b,0xfffff76b,0xfffff667,0xfffff587,0xfffff4d1,0xfffff44b,0xfffff3f8,0xfffff3dd,0xfffff3f8,0xfffff44b,0xfffff4d1,0xfffff587,0xfffff667,0xfffff76b,0xfffff88b,0xfffff9bd,0xfffffaf9,0xfffffc35,0xfffffd68,0xfffffe87,0xffffff8b,}, | ||
353 | { 0xffffff83,0xfffffe49,0xfffffcf3,0xfffffbc3,0xfffffaf9,0xfffffacb,0xfffffb5a,0xfffffcb0,0xfffffebf,0x0000015e,0x00000451,0x0000074d,0x00000a02,0x00000c23,0x00000d72,0x00000dc4,0x00000d06,0x00000b45,0x000008a6,0x00000565,0x000001cf,0xfffffe3b,0xfffffaf9,0xfffff853,0xfffff67c,0xfffff594,0xfffff59b,0xfffff67a,0xfffff801,0xfffff9f1,0xfffffc01,0xfffffdeb,0xffffff72,0x00000066,0x000000b5,0x00000060,}, | ||
354 | { 0xffffffab,0xffffffc2,0x000000ec,0x000002e3,0x00000507,0x0000068f,0x000006c7,0x00000545,0x00000214,0xfffffdbc,0xfffff922,0xfffff55d,0xfffff366,0xfffff3dd,0xfffff6d7,0xfffffbd4,0x000001d7,0x000007a2,0x00000bfb,0x00000dfa,0x00000d3e,0x00000a00,0x00000507,0xffffff74,0xfffffa77,0xfffff70d,0xfffff5c4,0xfffff69f,0xfffff922,0xfffffc79,0xffffffb7,0x00000215,0x00000327,0x000002ef,0x000001d7,0x00000085,}, | ||
355 | { 0x0000008c,0x000001d7,0x00000244,0x000000ec,0xfffffdeb,0xfffffa77,0xfffff85e,0xfffff922,0xfffffd1d,0x00000327,0x000008f3,0x00000bfb,0x00000aa3,0x00000507,0xfffffd11,0xfffff5c4,0xfffff206,0xfffff366,0xfffff971,0x000001d7,0x00000961,0x00000d3e,0x00000c23,0x000006c7,0xffffff7b,0xfffff922,0xfffff600,0xfffff6d7,0xfffffabb,0xffffffab,0x00000387,0x00000507,0x0000042c,0x00000214,0x0000003e,0xffffffb7,}, | ||
356 | { 0x0000003c,0xffffff4b,0xfffffd28,0xfffffc0d,0xfffffdeb,0x00000283,0x0000070f,0x000007ff,0x000003ad,0xfffffbfd,0xfffff594,0xfffff4ec,0xfffffb2d,0x00000507,0x00000c88,0x00000cd4,0x00000565,0xfffffa91,0xfffff2e0,0xfffff2fa,0xfffffab0,0x00000530,0x00000c23,0x00000ba7,0x00000497,0xfffffbaf,0xfffff650,0xfffff720,0xfffffcb0,0x000002ec,0x00000611,0x00000507,0x000001a2,0xfffffed3,0xfffffe49,0xffffff6e,}, | ||
357 | { 0xffffff69,0xfffffe87,0x00000022,0x0000039b,0x00000507,0x0000016b,0xfffffad7,0xfffff76b,0xfffffb91,0x000004d7,0x00000b2f,0x0000081a,0xfffffd46,0xfffff3dd,0xfffff490,0xffffff65,0x00000b2f,0x00000d8d,0x00000445,0xfffff76b,0xfffff221,0xfffff8b7,0x00000507,0x00000c50,0x000008d7,0xfffffe87,0xfffff6b3,0xfffff77b,0xfffffedf,0x000005a2,0x00000669,0x00000215,0xfffffdb4,0xfffffced,0xfffffedf,0x0000002f,}, | ||
358 | { 0xffffffde,0x00000179,0x000002ba,0xffffffd1,0xfffffaf9,0xfffffb29,0x0000024c,0x00000895,0x00000529,0xfffffa5e,0xfffff4d1,0xfffffc65,0x0000094d,0x00000c23,0x00000097,0xfffff3b0,0xfffff4d1,0x00000313,0x00000ddf,0x00000895,0xfffff997,0xfffff273,0xfffffaf9,0x00000885,0x00000b70,0x00000179,0xfffff729,0xfffff7e6,0x00000121,0x00000749,0x0000046f,0xfffffdeb,0xfffffbbb,0xfffffe95,0x00000121,0x0000009b,}, | ||
359 | { 0x0000009d,0x000000b5,0xfffffd8f,0xfffffc9c,0x00000215,0x00000682,0x000000ff,0xfffff801,0xfffffa27,0x00000662,0x00000a6c,0xfffffe70,0xfffff37f,0xfffffaf9,0x00000ac2,0x00000b04,0xfffffa9b,0xfffff1ea,0xfffffe26,0x00000d06,0x00000873,0xfffff7bf,0xfffff3dd,0x000001a5,0x00000be4,0x00000451,0xfffff7af,0xfffff861,0x00000350,0x00000793,0x000000db,0xfffffaf9,0xfffffd66,0x000001df,0x000001b7,0xffffffec,}, | ||
360 | { 0x00000006,0xfffffe29,0xffffff56,0x00000414,0x00000215,0xfffffa2d,0xfffffbe5,0x000006de,0x0000067d,0xfffff8eb,0xfffff70d,0x00000671,0x00000b30,0xfffffaf9,0xfffff311,0x00000301,0x00000dfa,0xffffff62,0xfffff1cf,0xfffffe29,0x00000d8e,0x00000414,0xfffff3dd,0xfffffa2d,0x00000a1d,0x000006de,0xfffff845,0xfffff8eb,0x00000545,0x00000671,0xfffffcf8,0xfffffaf9,0x00000149,0x00000301,0xffffffc2,0xffffff62,}, | ||
361 | { 0xffffff62,0x0000003e,0x00000301,0xfffffeb7,0xfffffaf9,0x00000308,0x00000671,0xfffffabb,0xfffff8eb,0x000007bb,0x000006de,0xfffff5e3,0xfffffa2d,0x00000c23,0x00000414,0xfffff272,0xfffffe29,0x00000e31,0xffffff62,0xfffff206,0x00000301,0x00000cef,0xfffffaf9,0xfffff4d0,0x00000671,0x000008f3,0xfffff8eb,0xfffff983,0x000006de,0x0000041b,0xfffffa2d,0xfffffdeb,0x00000414,0x000000aa,0xfffffe29,0xfffffffa,}, | ||
362 | { 0x00000014,0x000001b7,0xfffffe21,0xfffffd66,0x00000507,0x000000db,0xfffff86d,0x00000350,0x0000079f,0xfffff7af,0xfffffbaf,0x00000be4,0xfffffe5b,0xfffff3dd,0x00000841,0x00000873,0xfffff2fa,0xfffffe26,0x00000e16,0xfffffa9b,0xfffff4fc,0x00000ac2,0x00000507,0xfffff37f,0x00000190,0x00000a6c,0xfffff99e,0xfffffa27,0x000007ff,0x000000ff,0xfffff97e,0x00000215,0x00000364,0xfffffd8f,0xffffff4b,0x0000009d,}, | ||
363 | { 0x0000009b,0xfffffedf,0xfffffe95,0x00000445,0xfffffdeb,0xfffffb91,0x00000749,0xfffffedf,0xfffff7e6,0x000008d7,0x00000179,0xfffff490,0x00000885,0x00000507,0xfffff273,0x00000669,0x00000895,0xfffff221,0x00000313,0x00000b2f,0xfffff3b0,0xffffff69,0x00000c23,0xfffff6b3,0xfffffc65,0x00000b2f,0xfffffa5e,0xfffffad7,0x00000895,0xfffffdb4,0xfffffb29,0x00000507,0xffffffd1,0xfffffd46,0x00000179,0x00000022,}, | ||
364 | { 0xffffffd1,0xfffffedf,0x00000313,0xfffffdb4,0xfffffdeb,0x00000669,0xfffffa5e,0xfffffedf,0x00000885,0xfffff6b3,0x00000179,0x000008d7,0xfffff3b0,0x00000507,0x00000749,0xfffff221,0x00000895,0x00000445,0xfffff273,0x00000b2f,0x0000009b,0xfffff490,0x00000c23,0xfffffd46,0xfffff7e6,0x00000b2f,0xfffffb29,0xfffffb91,0x00000895,0xfffffad7,0xfffffe95,0x00000507,0xfffffc65,0x00000022,0x00000179,0xffffff69,}, | ||
365 | { 0xffffff6e,0x000001b7,0xfffffed3,0xfffffe5e,0x00000507,0xfffff9ef,0x000002ec,0x00000350,0xfffff720,0x000009b0,0xfffffbaf,0xfffffb69,0x00000ba7,0xfffff3dd,0x00000530,0x00000550,0xfffff2fa,0x00000d20,0xfffffa91,0xfffffa9b,0x00000cd4,0xfffff378,0x00000507,0x000004d3,0xfffff4ec,0x00000a6c,0xfffffbfd,0xfffffc53,0x000007ff,0xfffff8f1,0x00000283,0x00000215,0xfffffc0d,0x000002d8,0xffffff4b,0xffffffc4,}, | ||
366 | { 0x00000049,0x0000003e,0xfffffdec,0x0000042c,0xfffffaf9,0x00000387,0x00000055,0xfffffabb,0x00000929,0xfffff600,0x000006de,0xffffff7b,0xfffff939,0x00000c23,0xfffff2c2,0x00000961,0xfffffe29,0xfffff971,0x00000c9a,0xfffff206,0x00000a3c,0xfffffd11,0xfffffaf9,0x00000aa3,0xfffff405,0x000008f3,0xfffffcd9,0xfffffd1d,0x000006de,0xfffff85e,0x00000589,0xfffffdeb,0xffffff14,0x00000244,0xfffffe29,0x0000008c,}, | ||
367 | { 0x00000085,0xfffffe29,0x000002ef,0xfffffcd9,0x00000215,0x00000049,0xfffffc79,0x000006de,0xfffff69f,0x00000a3c,0xfffff70d,0x00000589,0xffffff74,0xfffffaf9,0x00000a00,0xfffff2c2,0x00000dfa,0xfffff405,0x000007a2,0xfffffe29,0xfffffbd4,0x00000929,0xfffff3dd,0x00000c9a,0xfffff55d,0x000006de,0xfffffdbc,0xfffffdec,0x00000545,0xfffff939,0x0000068f,0xfffffaf9,0x000002e3,0xffffff14,0xffffffc2,0x00000055,}, | ||
368 | { 0xffffffa0,0x000000b5,0xffffff9a,0xffffff72,0x00000215,0xfffffc01,0x0000060f,0xfffff801,0x00000986,0xfffff59b,0x00000a6c,0xfffff67c,0x000007ad,0xfffffaf9,0x000001c5,0x000001cf,0xfffffa9b,0x000008a6,0xfffff4bb,0x00000d06,0xfffff23c,0x00000d72,0xfffff3dd,0x00000a02,0xfffff8b3,0x00000451,0xfffffea2,0xfffffebf,0x00000350,0xfffffb5a,0x00000535,0xfffffaf9,0x0000043d,0xfffffcf3,0x000001b7,0xffffff83,}, | ||
369 | { 0xffffff8b,0x00000179,0xfffffd68,0x000003cb,0xfffffaf9,0x00000643,0xfffff88b,0x00000895,0xfffff667,0x00000a79,0xfffff4d1,0x00000bb5,0xfffff3f8,0x00000c23,0xfffff3f8,0x00000bb5,0xfffff4d1,0x00000a79,0xfffff667,0x00000895,0xfffff88b,0x00000643,0xfffffaf9,0x000003cb,0xfffffd68,0x00000179,0xffffff8b,0xffffff95,0x00000121,0xfffffe59,0x000001f9,0xfffffdeb,0x000001f9,0xfffffe59,0x00000121,0xffffff95,}}; | ||
370 | |||
371 | static const short filter_int_const[SBLIMIT][64] = { | ||
372 | { 23170, 24279, 25330, 26320, 27246, 28106, 28899, 29622, 30274, 30853, 31357, 31786, 32138, 32413, 32610, 32729, 32767, 32729, 32610, 32413, 32138, 31786, 31357, 30853, 30274, 29622, 28899, 28106, 27246, 26320, 25330, 24279, 23170, 22006, 20788, 19520, 18205, 16846, 15447, 14010, 12540, 11039, 9512, 7962, 6393, 4808, 3212, 1608, 0, -1607, -3211, -4807, -6392, -7961, -9511,-11038,-12539,-14009,-15446,-16845,-18204,-19519,-20787,-22005, }, | ||
373 | { -23169,-19519,-15446,-11038, -6392, -1607, 3212, 7962, 12540, 16846, 20788, 24279, 27246, 29622, 31357, 32413, 32767, 32413, 31357, 29622, 27246, 24279, 20788, 16846, 12540, 7962, 3212, -1607, -6392,-11038,-15446,-19519,-23169,-26319,-28898,-30852,-32137,-32728,-32609,-31785,-30273,-28105,-25329,-22005,-18204,-14009, -9511, -4807, 0, 4808, 9512, 14010, 18205, 22006, 25330, 28106, 30274, 31786, 32610, 32729, 32138, 30853, 28899, 26320, }, | ||
374 | { -23169,-28105,-31356,-32728,-32137,-29621,-25329,-19519,-12539, -4807, 3212, 11039, 18205, 24279, 28899, 31786, 32767, 31786, 28899, 24279, 18205, 11039, 3212, -4807,-12539,-19519,-25329,-29621,-32137,-32728,-31356,-28105,-23169,-16845, -9511, -1607, 6393, 14010, 20788, 26320, 30274, 32413, 32610, 30853, 27246, 22006, 15447, 7962, 0, -7961,-15446,-22005,-27245,-30852,-32609,-32412,-30273,-26319,-20787,-14009, -6392, 1608, 9512, 16846, }, | ||
375 | { 23170, 14010, 3212, -7961,-18204,-26319,-31356,-32728,-30273,-24278,-15446, -4807, 6393, 16846, 25330, 30853, 32767, 30853, 25330, 16846, 6393, -4807,-15446,-24278,-30273,-32728,-31356,-26319,-18204, -7961, 3212, 14010, 23170, 29622, 32610, 31786, 27246, 19520, 9512, -1607,-12539,-22005,-28898,-32412,-32137,-28105,-20787,-11038, 0, 11039, 20788, 28106, 32138, 32413, 28899, 22006, 12540, 1608, -9511,-19519,-27245,-31785,-32609,-29621, }, | ||
376 | { 23170, 30853, 32610, 28106, 18205, 4808, -9511,-22005,-30273,-32728,-28898,-19519, -6392, 7962, 20788, 29622, 32767, 29622, 20788, 7962, -6392,-19519,-28898,-32728,-30273,-22005, -9511, 4808, 18205, 28106, 32610, 30853, 23170, 11039, -3211,-16845,-27245,-32412,-31356,-24278,-12539, 1608, 15447, 26320, 32138, 31786, 25330, 14010, 0,-14009,-25329,-31785,-32137,-26319,-15446, -1607, 12540, 24279, 31357, 32413, 27246, 16846, 3212,-11038, }, | ||
377 | { -23169, -7961, 9512, 24279, 32138, 30853, 20788, 4808,-12539,-26319,-32609,-29621,-18204, -1607, 15447, 28106, 32767, 28106, 15447, -1607,-18204,-29621,-32609,-26319,-12539, 4808, 20788, 30853, 32138, 24279, 9512, -7961,-23169,-31785,-31356,-22005, -6392, 11039, 25330, 32413, 30274, 19520, 3212,-14009,-27245,-32728,-28898,-16845, 0, 16846, 28899, 32729, 27246, 14010, -3211,-19519,-30273,-32412,-25329,-11038, 6393, 22006, 31357, 31786, }, | ||
378 | { -23169,-32412,-28898,-14009, 6393, 24279, 32610, 28106, 12540, -7961,-25329,-32728,-27245,-11038, 9512, 26320, 32767, 26320, 9512,-11038,-27245,-32728,-25329, -7961, 12540, 28106, 32610, 24279, 6393,-14009,-28898,-32412,-23169, -4807, 15447, 29622, 32138, 22006, 3212,-16845,-30273,-31785,-20787, -1607, 18205, 30853, 31357, 19520, 0,-19519,-31356,-30852,-18204, 1608, 20788, 31786, 30274, 16846, -3211,-22005,-32137,-29621,-15446, 4808, }, | ||
379 | { 23170, 1608,-20787,-32412,-27245, -7961, 15447, 30853, 30274, 14010, -9511,-28105,-32137,-19519, 3212, 24279, 32767, 24279, 3212,-19519,-32137,-28105, -9511, 14010, 30274, 30853, 15447, -7961,-27245,-32412,-20787, 1608, 23170, 32729, 25330, 4808,-18204,-31785,-28898,-11038, 12540, 29622, 31357, 16846, -6392,-26319,-32609,-22005, 0, 22006, 32610, 26320, 6393,-16845,-31356,-29621,-12539, 11039, 28899, 31786, 18205, -4807,-25329,-32728, }, | ||
380 | { 23170, 32729, 20788, -4807,-27245,-31785,-15446, 11039, 30274, 29622, 9512,-16845,-32137,-26319, -3211, 22006, 32767, 22006, -3211,-26319,-32137,-16845, 9512, 29622, 30274, 11039,-15446,-31785,-27245, -4807, 20788, 32729, 23170, -1607,-25329,-32412,-18204, 7962, 28899, 30853, 12540,-14009,-31356,-28105, -6392, 19520, 32610, 24279, 0,-24278,-32609,-19519, 6393, 28106, 31357, 14010,-12539,-30852,-28898, -7961, 18205, 32413, 25330, 1608, }, | ||
381 | { -23169, 4808, 28899, 29622, 6393,-22005,-32609,-16845, 12540, 31786, 25330, -1607,-27245,-30852, -9511, 19520, 32767, 19520, -9511,-30852,-27245, -1607, 25330, 31786, 12540,-16845,-32609,-22005, 6393, 29622, 28899, 4808,-23169,-32412,-15446, 14010, 32138, 24279, -3211,-28105,-30273, -7961, 20788, 32729, 18205,-11038,-31356,-26319, 0, 26320, 31357, 11039,-18204,-32728,-20787, 7962, 30274, 28106, 3212,-24278,-32137,-14009, 15447, 32413, }, | ||
382 | { -23169,-31785, -9511, 22006, 32138, 11039,-20787,-32412,-12539, 19520, 32610, 14010,-18204,-32728,-15446, 16846, 32767, 16846,-15446,-32728,-18204, 14010, 32610, 19520,-12539,-32412,-20787, 11039, 32138, 22006, -9511,-31785,-23169, 7962, 31357, 24279, -6392,-30852,-25329, 4808, 30274, 26320, -3211,-29621,-27245, 1608, 28899, 28106, 0,-28105,-28898, -1607, 27246, 29622, 3212,-26319,-30273, -4807, 25330, 30853, 6393,-24278,-31356, -7961, }, | ||
383 | { 23170,-11038,-32609,-16845, 18205, 32413, 9512,-24278,-30273, -1607, 28899, 26320, -6392,-31785,-20787, 14010, 32767, 14010,-20787,-31785, -6392, 26320, 28899, -1607,-30273,-24278, 9512, 32413, 18205,-16845,-32609,-11038, 23170, 30853, 3212,-28105,-27245, 4808, 31357, 22006,-12539,-32728,-15446, 19520, 32138, 7962,-25329,-29621, 0, 29622, 25330, -7961,-32137,-19519, 15447, 32729, 12540,-22005,-31356, -4807, 27246, 28106, -3211,-30852, }, | ||
384 | { 23170, 29622, -3211,-31785,-18204, 19520, 31357, 1608,-30273,-22005, 15447, 32413, 6393,-28105,-25329, 11039, 32767, 11039,-25329,-28105, 6393, 32413, 15447,-22005,-30273, 1608, 31357, 19520,-18204,-31785, -3211, 29622, 23170,-14009,-32609, -7961, 27246, 26320, -9511,-32728,-12539, 24279, 28899, -4807,-32137,-16845, 20788, 30853, 0,-30852,-20787, 16846, 32138, 4808,-28898,-24278, 12540, 32729, 9512,-26319,-27245, 7962, 32610, 14010, }, | ||
385 | { -23169, 16846, 31357, -1607,-32137,-14009, 25330, 26320,-12539,-32412, -3211, 30853, 18205,-22005,-28898, 7962, 32767, 7962,-28898,-22005, 18205, 30853, -3211,-32412,-12539, 26320, 25330,-14009,-32137, -1607, 31357, 16846,-23169,-28105, 9512, 32729, 6393,-29621,-20787, 19520, 30274, -4807,-32609,-11038, 27246, 24279,-15446,-31785, 0, 31786, 15447,-24278,-27245, 11039, 32610, 4808,-30273,-19519, 20788, 29622, -6392,-32728, -9511, 28106, }, | ||
386 | { -23169,-26319, 15447, 30853, -6392,-32728, -3211, 31786, 12540,-28105,-20787, 22006, 27246,-14009,-31356, 4808, 32767, 4808,-31356,-14009, 27246, 22006,-20787,-28105, 12540, 31786, -3211,-32728, -6392, 30853, 15447,-26319,-23169, 19520, 28899,-11038,-32137, 1608, 32610, 7962,-30273,-16845, 25330, 24279,-18204,-29621, 9512, 32413, 0,-32412, -9511, 29622, 18205,-24278,-25329, 16846, 30274, -7961,-32609, -1607, 32138, 11039,-28898,-19519, }, | ||
387 | { 23170,-22005,-25329, 19520, 27246,-16845,-28898, 14010, 30274,-11038,-31356, 7962, 32138, -4807,-32609, 1608, 32767, 1608,-32609, -4807, 32138, 7962,-31356,-11038, 30274, 14010,-28898,-16845, 27246, 19520,-25329,-22005, 23170, 24279,-20787,-26319, 18205, 28106,-15446,-29621, 12540, 30853, -9511,-31785, 6393, 32413, -3211,-32728, 0, 32729, 3212,-32412, -6392, 31786, 9512,-30852,-12539, 29622, 15447,-28105,-18204, 26320, 20788,-24278, }, | ||
388 | { 23170, 22006,-25329,-19519, 27246, 16846,-28898,-14009, 30274, 11039,-31356, -7961, 32138, 4808,-32609, -1607, 32767, -1607,-32609, 4808, 32138, -7961,-31356, 11039, 30274,-14009,-28898, 16846, 27246,-19519,-25329, 22006, 23170,-24278,-20787, 26320, 18205,-28105,-15446, 29622, 12540,-30852, -9511, 31786, 6393,-32412, -3211, 32729, 0,-32728, 3212, 32413, -6392,-31785, 9512, 30853,-12539,-29621, 15447, 28106,-18204,-26319, 20788, 24279, }, | ||
389 | { -23169, 26320, 15447,-30852, -6392, 32729, -3211,-31785, 12540, 28106,-20787,-22005, 27246, 14010,-31356, -4807, 32767, -4807,-31356, 14010, 27246,-22005,-20787, 28106, 12540,-31785, -3211, 32729, -6392,-30852, 15447, 26320,-23169,-19519, 28899, 11039,-32137, -1607, 32610, -7961,-30273, 16846, 25330,-24278,-18204, 29622, 9512,-32412, 0, 32413, -9511,-29621, 18205, 24279,-25329,-16845, 30274, 7962,-32609, 1608, 32138,-11038,-28898, 19520, }, | ||
390 | { -23169,-16845, 31357, 1608,-32137, 14010, 25330,-26319,-12539, 32413, -3211,-30852, 18205, 22006,-28898, -7961, 32767, -7961,-28898, 22006, 18205,-30852, -3211, 32413,-12539,-26319, 25330, 14010,-32137, 1608, 31357,-16845,-23169, 28106, 9512,-32728, 6393, 29622,-20787,-19519, 30274, 4808,-32609, 11039, 27246,-24278,-15446, 31786, 0,-31785, 15447, 24279,-27245,-11038, 32610, -4807,-30273, 19520, 20788,-29621, -6392, 32729, -9511,-28105, }, | ||
391 | { 23170,-29621, -3211, 31786,-18204,-19519, 31357, -1607,-30273, 22006, 15447,-32412, 6393, 28106,-25329,-11038, 32767,-11038,-25329, 28106, 6393,-32412, 15447, 22006,-30273, -1607, 31357,-19519,-18204, 31786, -3211,-29621, 23170, 14010,-32609, 7962, 27246,-26319, -9511, 32729,-12539,-24278, 28899, 4808,-32137, 16846, 20788,-30852, 0, 30853,-20787,-16845, 32138, -4807,-28898, 24279, 12540,-32728, 9512, 26320,-27245, -7961, 32610,-14009, }, | ||
392 | { 23170, 11039,-32609, 16846, 18205,-32412, 9512, 24279,-30273, 1608, 28899,-26319, -6392, 31786,-20787,-14009, 32767,-14009,-20787, 31786, -6392,-26319, 28899, 1608,-30273, 24279, 9512,-32412, 18205, 16846,-32609, 11039, 23170,-30852, 3212, 28106,-27245, -4807, 31357,-22005,-12539, 32729,-15446,-19519, 32138, -7961,-25329, 29622, 0,-29621, 25330, 7962,-32137, 19520, 15447,-32728, 12540, 22006,-31356, 4808, 27246,-28105, -3211, 30853, }, | ||
393 | { -23169, 31786, -9511,-22005, 32138,-11038,-20787, 32413,-12539,-19519, 32610,-14009,-18204, 32729,-15446,-16845, 32767,-16845,-15446, 32729,-18204,-14009, 32610,-19519,-12539, 32413,-20787,-11038, 32138,-22005, -9511, 31786,-23169, -7961, 31357,-24278, -6392, 30853,-25329, -4807, 30274,-26319, -3211, 29622,-27245, -1607, 28899,-28105, 0, 28106,-28898, 1608, 27246,-29621, 3212, 26320,-30273, 4808, 25330,-30852, 6393, 24279,-31356, 7962, }, | ||
394 | { -23169, -4807, 28899,-29621, 6393, 22006,-32609, 16846, 12540,-31785, 25330, 1608,-27245, 30853, -9511,-19519, 32767,-19519, -9511, 30853,-27245, 1608, 25330,-31785, 12540, 16846,-32609, 22006, 6393,-29621, 28899, -4807,-23169, 32413,-15446,-14009, 32138,-24278, -3211, 28106,-30273, 7962, 20788,-32728, 18205, 11039,-31356, 26320, 0,-26319, 31357,-11038,-18204, 32729,-20787, -7961, 30274,-28105, 3212, 24279,-32137, 14010, 15447,-32412, }, | ||
395 | { 23170,-32728, 20788, 4808,-27245, 31786,-15446,-11038, 30274,-29621, 9512, 16846,-32137, 26320, -3211,-22005, 32767,-22005, -3211, 26320,-32137, 16846, 9512,-29621, 30274,-11038,-15446, 31786,-27245, 4808, 20788,-32728, 23170, 1608,-25329, 32413,-18204, -7961, 28899,-30852, 12540, 14010,-31356, 28106, -6392,-19519, 32610,-24278, 0, 24279,-32609, 19520, 6393,-28105, 31357,-14009,-12539, 30853,-28898, 7962, 18205,-32412, 25330, -1607, }, | ||
396 | { 23170, -1607,-20787, 32413,-27245, 7962, 15447,-30852, 30274,-14009, -9511, 28106,-32137, 19520, 3212,-24278, 32767,-24278, 3212, 19520,-32137, 28106, -9511,-14009, 30274,-30852, 15447, 7962,-27245, 32413,-20787, -1607, 23170,-32728, 25330, -4807,-18204, 31786,-28898, 11039, 12540,-29621, 31357,-16845, -6392, 26320,-32609, 22006, 0,-22005, 32610,-26319, 6393, 16846,-31356, 29622,-12539,-11038, 28899,-31785, 18205, 4808,-25329, 32729, }, | ||
397 | { -23169, 32413,-28898, 14010, 6393,-24278, 32610,-28105, 12540, 7962,-25329, 32729,-27245, 11039, 9512,-26319, 32767,-26319, 9512, 11039,-27245, 32729,-25329, 7962, 12540,-28105, 32610,-24278, 6393, 14010,-28898, 32413,-23169, 4808, 15447,-29621, 32138,-22005, 3212, 16846,-30273, 31786,-20787, 1608, 18205,-30852, 31357,-19519, 0, 19520,-31356, 30853,-18204, -1607, 20788,-31785, 30274,-16845, -3211, 22006,-32137, 29622,-15446, -4807, }, | ||
398 | { -23169, 7962, 9512,-24278, 32138,-30852, 20788, -4807,-12539, 26320,-32609, 29622,-18204, 1608, 15447,-28105, 32767,-28105, 15447, 1608,-18204, 29622,-32609, 26320,-12539, -4807, 20788,-30852, 32138,-24278, 9512, 7962,-23169, 31786,-31356, 22006, -6392,-11038, 25330,-32412, 30274,-19519, 3212, 14010,-27245, 32729,-28898, 16846, 0,-16845, 28899,-32728, 27246,-14009, -3211, 19520,-30273, 32413,-25329, 11039, 6393,-22005, 31357,-31785, }, | ||
399 | { 23170,-30852, 32610,-28105, 18205, -4807, -9511, 22006,-30273, 32729,-28898, 19520, -6392, -7961, 20788,-29621, 32767,-29621, 20788, -7961, -6392, 19520,-28898, 32729,-30273, 22006, -9511, -4807, 18205,-28105, 32610,-30852, 23170,-11038, -3211, 16846,-27245, 32413,-31356, 24279,-12539, -1607, 15447,-26319, 32138,-31785, 25330,-14009, 0, 14010,-25329, 31786,-32137, 26320,-15446, 1608, 12540,-24278, 31357,-32412, 27246,-16845, 3212, 11039, }, | ||
400 | { 23170,-14009, 3212, 7962,-18204, 26320,-31356, 32729,-30273, 24279,-15446, 4808, 6393,-16845, 25330,-30852, 32767,-30852, 25330,-16845, 6393, 4808,-15446, 24279,-30273, 32729,-31356, 26320,-18204, 7962, 3212,-14009, 23170,-29621, 32610,-31785, 27246,-19519, 9512, 1608,-12539, 22006,-28898, 32413,-32137, 28106,-20787, 11039, 0,-11038, 20788,-28105, 32138,-32412, 28899,-22005, 12540, -1607, -9511, 19520,-27245, 31786,-32609, 29622, }, | ||
401 | { -23169, 28106,-31356, 32729,-32137, 29622,-25329, 19520,-12539, 4808, 3212,-11038, 18205,-24278, 28899,-31785, 32767,-31785, 28899,-24278, 18205,-11038, 3212, 4808,-12539, 19520,-25329, 29622,-32137, 32729,-31356, 28106,-23169, 16846, -9511, 1608, 6393,-14009, 20788,-26319, 30274,-32412, 32610,-30852, 27246,-22005, 15447, -7961, 0, 7962,-15446, 22006,-27245, 30853,-32609, 32413,-30273, 26320,-20787, 14010, -6392, -1607, 9512,-16845, }, | ||
402 | { -23169, 19520,-15446, 11039, -6392, 1608, 3212, -7961, 12540,-16845, 20788,-24278, 27246,-29621, 31357,-32412, 32767,-32412, 31357,-29621, 27246,-24278, 20788,-16845, 12540, -7961, 3212, 1608, -6392, 11039,-15446, 19520,-23169, 26320,-28898, 30853,-32137, 32729,-32609, 31786,-30273, 28106,-25329, 22006,-18204, 14010, -9511, 4808, 0, -4807, 9512,-14009, 18205,-22005, 25330,-28105, 30274,-31785, 32610,-32728, 32138,-30852, 28899,-26319, }, | ||
403 | { 23170,-24278, 25330,-26319, 27246,-28105, 28899,-29621, 30274,-30852, 31357,-31785, 32138,-32412, 32610,-32728, 32767,-32728, 32610,-32412, 32138,-31785, 31357,-30852, 30274,-29621, 28899,-28105, 27246,-26319, 25330,-24278, 23170,-22005, 20788,-19519, 18205,-16845, 15447,-14009, 12540,-11038, 9512, -7961, 6393, -4807, 3212, -1607, 0, 1608, -3211, 4808, -6392, 7962, -9511, 11039,-12539, 14010,-15446, 16846,-18204, 19520,-20787, 22006, } }; | ||
404 | |||
405 | static const int sfBand[6][23] = | ||
406 | { | 523 | { |
407 | /* Table B.2.b: 22.05 kHz */ | 524 | /* Table B.2.b: 22.05 kHz */ |
408 | {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, | 525 | {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, |
@@ -417,1474 +534,577 @@ static const int sfBand[6][23] = | |||
417 | /* Table B.8.a: 32 kHz */ | 534 | /* Table B.8.a: 32 kHz */ |
418 | {0,4, 8,12,16,20,24,30,36,44,54,66, 82,102,126,156,194,240,296,364,448,550,576} }; | 535 | {0,4, 8,12,16,20,24,30,36,44,54,66, 82,102,126,156,194,240,296,364,448,550,576} }; |
419 | 536 | ||
420 | static const uint16 enwindow_int_const[512] = { | 537 | |
421 | 0x0000,0x0035,0x01fd,0x066c,0x4948,0x066c,0x01fd,0x0035,0x0000,0x0037,0x01f4,0x05d2,0x493c,0x06f8,0x0204,0x0034, | 538 | static const short int2idx_const[4096] = /* int2idx[i] = sqrt(i*sqrt(i)); */ |
422 | 0x0000,0x0038,0x01e8,0x052a,0x491a,0x0776,0x0208,0x0032,0x0000,0x0038,0x01d9,0x0474,0x48e1,0x07e7,0x020a,0x0031, | 539 | { |
423 | 0x0000,0x0039,0x01c8,0x03b0,0x4892,0x084b,0x0209,0x0030,0x0000,0x0039,0x01b3,0x02de,0x482d,0x08a2,0x0207,0x002e, | 540 | 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, |
424 | 0x0000,0x0039,0x019b,0x01fd,0x47b2,0x08ed,0x0202,0x002c,0x0000,0x0039,0x0180,0x010f,0x4721,0x092b,0x01fc,0x002a, | 541 | 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, |
425 | 0x0000,0x0038,0x0161,0x0011,0x467a,0x095e,0x01f4,0x0028,0x0000,0x0037,0x0140,0xff07,0x45bf,0x0985,0x01eb,0x0026, | 542 | 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, |
426 | 0x0000,0x0036,0x011b,0xfdee,0x44f0,0x09a2,0x01e0,0x0025,0x0000,0x0034,0x00f3,0xfcc8,0x440c,0x09b4,0x01d4,0x0023, | 543 | 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, |
427 | 0x0000,0x0032,0x00c7,0xfb93,0x4315,0x09bb,0x01c6,0x0021,0x0000,0x002f,0x0097,0xfa53,0x420b,0x09ba,0x01b8,0x001f, | 544 | 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, |
428 | 0x0000,0x002c,0x0065,0xf905,0x40f0,0x09af,0x01a9,0x001d,0x0000,0x0029,0x002e,0xf7aa,0x3fc3,0x099b,0x0198,0x001c, | 545 | 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, |
429 | 0x0000,0x0025,0xfff6,0xf643,0x3e85,0x0980,0x0188,0x001a,0xffff,0x0020,0xffb9,0xf4d1,0x3d37,0x095c,0x0176,0x0018, | 546 | 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 40, |
430 | 0xffff,0x001b,0xff79,0xf354,0x3bda,0x0932,0x0165,0x0017,0xffff,0x0015,0xff36,0xf1cc,0x3a70,0x0901,0x0153,0x0015, | 547 | 41, 41, 41, 41, 42, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 44, 45, 45, |
431 | 0xffff,0x000e,0xfeef,0xf03a,0x38f7,0x08ca,0x0141,0x0014,0xffff,0x0007,0xfea6,0xee9f,0x3773,0x088d,0x012f,0x0012, | 548 | 45, 45, 45, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, |
432 | 0xfffe,0x0000,0xfe5a,0xecfb,0x35e3,0x084b,0x011c,0x0011,0xfffe,0xfff8,0xfe0b,0xeb50,0x3447,0x0804,0x010a,0x0010, | 549 | 49, 49, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, 53, |
433 | 0xfffe,0xffef,0xfdbb,0xe99d,0x32a3,0x07ba,0x00f8,0x000f,0xfffd,0xffe5,0xfd67,0xe7e4,0x30f6,0x076b,0x00e6,0x000d, | 550 | 53, 53, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 57, 57, 57, |
434 | 0xfffd,0xffdb,0xfd12,0xe624,0x2f41,0x071a,0x00d4,0x000c,0xfffd,0xffd0,0xfcbb,0xe461,0x2d86,0x06c6,0x00c3,0x000b, | 551 | 57, 57, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 61, 61, |
435 | 0xfffc,0xffc4,0xfc63,0xe299,0x2bc5,0x066f,0x00b2,0x000a,0xfffc,0xffb8,0xfc09,0xe0ce,0x2a00,0x0617,0x00a1,0x0009, | 552 | 61, 61, 61, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 65, |
436 | 0xfffb,0xffaa,0xfbaf,0xdf01,0x2836,0x05be,0x0091,0x0009,0xfffb,0xff9d,0xfb54,0xdd33,0x266a,0x0563,0x0081,0x0008, | 553 | 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, |
437 | 0xfffa,0xff8e,0xfaf9,0xdb65,0x249c,0x0508,0x0073,0x0007,0xfff9,0xff80,0xfa9e,0xd997,0x22ce,0x04ad,0x0064,0x0006, | 554 | 68, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 72, 72, 72, |
438 | 0xfff8,0xff70,0xfa43,0xd7cb,0x2100,0x0452,0x0057,0x0006,0xfff8,0xff60,0xf9ea,0xd601,0x1f33,0x03f8,0x0049,0x0005, | 555 | 72, 72, 72, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, |
439 | 0xfff7,0xff4f,0xf992,0xd43c,0x1d68,0x039e,0x003d,0x0005,0xfff6,0xff3e,0xf93b,0xd27b,0x1ba0,0x0346,0x0031,0x0004, | 556 | 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 79, 79, 79, |
440 | 0xfff5,0xff2d,0xf8e7,0xd0c0,0x19dd,0x02ef,0x0026,0x0004,0xfff4,0xff1b,0xf896,0xcf0b,0x181d,0x029a,0x001c,0x0004, | 557 | 79, 79, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, |
441 | 0xfff2,0xff09,0xf847,0xcd5e,0x1664,0x0246,0x0012,0x0003,0xfff1,0xfef7,0xf7fd,0xcbba,0x14b1,0x01f6,0x0009,0x0003, | 558 | 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 86, 86, 86, |
442 | 0xfff0,0xfee5,0xf7b6,0xca1e,0x1306,0x01a7,0x0001,0x0003,0xffef,0xfed2,0xf774,0xc88e,0x1162,0x015b,0xfffa,0x0002, | 559 | 86, 86, 86, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, |
443 | 0xffed,0xfec0,0xf737,0xc70a,0x0fc7,0x0112,0xfff3,0x0002,0xffec,0xfeae,0xf700,0xc591,0x0e35,0x00cb,0xffec,0x0002, | 560 | 89, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, 93, |
444 | 0xffea,0xfe9c,0xf6cf,0xc427,0x0cad,0x0088,0xffe6,0x0002,0xffe9,0xfe8b,0xf6a5,0xc2ca,0x0b30,0x0048,0xffe1,0x0002, | 561 | 93, 93, 93, 93, 93, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 96, 96, 96, |
445 | 0xffe7,0xfe79,0xf681,0xc17c,0x09be,0x000b,0xffdc,0x0001,0xffe5,0xfe69,0xf666,0xc03e,0x0857,0xffd3,0xffd8,0x0001, | 562 | 96, 96, 96, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, |
446 | 0xffe4,0xfe58,0xf652,0xbf11,0x06fc,0xff9c,0xffd5,0x0001,0xffe2,0xfe49,0xf647,0xbdf6,0x05ae,0xff6a,0xffd2,0x0001, | 563 | 99, 99,100,100,100,100,100,100,101,101,101,101,101,101,102,102,102,102,102,102, |
447 | 0xffe0,0xfe3b,0xf646,0xbcec,0x046e,0xff3a,0xffcf,0x0001,0xffde,0xfe2d,0xf64d,0xbbf5,0x0339,0xff0e,0xffcd,0x0001, | 564 | 103,103,103,103,103,103,104,104,104,104,104,104,104,105,105,105,105,105,105,106, |
448 | 0xffdc,0xfe21,0xf65f,0xbb11,0x0213,0xfee6,0xffcb,0x0001,0xffdb,0xfe16,0xf67c,0xba42,0x00fa,0xfec1,0xffca,0x0001, | 565 | 106,106,106,106,106,107,107,107,107,107,107,107,108,108,108,108,108,108,109,109, |
449 | 0xffd9,0xfe0d,0xf6a3,0xb987,0xfff0,0xfea0,0xffc9,0x0001,0xffd7,0xfe05,0xf6d6,0xb8e0,0xfef2,0xfe81,0xffc8,0x0001, | 566 | 109,109,109,109,110,110,110,110,110,110,110,111,111,111,111,111,111,112,112,112, |
450 | 0xffd5,0xfdff,0xf714,0xb84f,0xfe04,0xfe66,0xffc8,0x0000,0xffd3,0xfdfa,0xf75f,0xb7d4,0xfd23,0xfe4e,0xffc8,0x0000, | 567 | 112,112,112,112,113,113,113,113,113,113,114,114,114,114,114,114,115,115,115,115, |
451 | 0xffd1,0xfdf8,0xf7b6,0xb76f,0xfc51,0xfe39,0xffc8,0x0000,0xffd0,0xfdf7,0xf81a,0xb720,0xfb8d,0xfe28,0xffc9,0x0000, | 568 | 115,115,115,116,116,116,116,116,116,117,117,117,117,117,117,117,118,118,118,118, |
452 | 0xffcf,0xfdf9,0xf88b,0xb6e7,0xfad7,0xfe19,0xffc9,0x0000,0xffcd,0xfdfd,0xf909,0xb6c5,0xfa2f,0xfe0d,0xffca,0x0000, | 569 | 118,118,118,119,119,119,119,119,119,120,120,120,120,120,120,120,121,121,121,121, |
570 | 121,121,122,122,122,122,122,122,122,123,123,123,123,123,123,123,124,124,124,124, | ||
571 | 124,124,125,125,125,125,125,125,125,126,126,126,126,126,126,126,127,127,127,127, | ||
572 | 127,127,128,128,128,128,128,128,128,129,129,129,129,129,129,129,130,130,130,130, | ||
573 | 130,130,131,131,131,131,131,131,131,132,132,132,132,132,132,132,133,133,133,133, | ||
574 | 133,133,133,134,134,134,134,134,134,134,135,135,135,135,135,135,136,136,136,136, | ||
575 | 136,136,136,137,137,137,137,137,137,137,138,138,138,138,138,138,138,139,139,139, | ||
576 | 139,139,139,139,140,140,140,140,140,140,140,141,141,141,141,141,141,141,142,142, | ||
577 | 142,142,142,142,142,143,143,143,143,143,143,143,144,144,144,144,144,144,144,145, | ||
578 | 145,145,145,145,145,145,146,146,146,146,146,146,146,147,147,147,147,147,147,147, | ||
579 | 148,148,148,148,148,148,148,149,149,149,149,149,149,149,150,150,150,150,150,150, | ||
580 | 150,151,151,151,151,151,151,151,152,152,152,152,152,152,152,153,153,153,153,153, | ||
581 | 153,153,154,154,154,154,154,154,154,154,155,155,155,155,155,155,155,156,156,156, | ||
582 | 156,156,156,156,157,157,157,157,157,157,157,158,158,158,158,158,158,158,159,159, | ||
583 | 159,159,159,159,159,160,160,160,160,160,160,160,160,161,161,161,161,161,161,161, | ||
584 | 162,162,162,162,162,162,162,163,163,163,163,163,163,163,163,164,164,164,164,164, | ||
585 | 164,164,165,165,165,165,165,165,165,166,166,166,166,166,166,166,167,167,167,167, | ||
586 | 167,167,167,167,168,168,168,168,168,168,168,169,169,169,169,169,169,169,169,170, | ||
587 | 170,170,170,170,170,170,171,171,171,171,171,171,171,172,172,172,172,172,172,172, | ||
588 | 172,173,173,173,173,173,173,173,174,174,174,174,174,174,174,174,175,175,175,175, | ||
589 | 175,175,175,176,176,176,176,176,176,176,176,177,177,177,177,177,177,177,178,178, | ||
590 | 178,178,178,178,178,178,179,179,179,179,179,179,179,180,180,180,180,180,180,180, | ||
591 | 180,181,181,181,181,181,181,181,182,182,182,182,182,182,182,182,183,183,183,183, | ||
592 | 183,183,183,184,184,184,184,184,184,184,184,185,185,185,185,185,185,185,186,186, | ||
593 | 186,186,186,186,186,186,187,187,187,187,187,187,187,187,188,188,188,188,188,188, | ||
594 | 188,189,189,189,189,189,189,189,189,190,190,190,190,190,190,190,190,191,191,191, | ||
595 | 191,191,191,191,192,192,192,192,192,192,192,192,193,193,193,193,193,193,193,193, | ||
596 | 194,194,194,194,194,194,194,195,195,195,195,195,195,195,195,196,196,196,196,196, | ||
597 | 196,196,196,197,197,197,197,197,197,197,197,198,198,198,198,198,198,198,199,199, | ||
598 | 199,199,199,199,199,199,200,200,200,200,200,200,200,200,201,201,201,201,201,201, | ||
599 | 201,201,202,202,202,202,202,202,202,202,203,203,203,203,203,203,203,204,204,204, | ||
600 | 204,204,204,204,204,205,205,205,205,205,205,205,205,206,206,206,206,206,206,206, | ||
601 | 206,207,207,207,207,207,207,207,207,208,208,208,208,208,208,208,208,209,209,209, | ||
602 | 209,209,209,209,209,210,210,210,210,210,210,210,210,211,211,211,211,211,211,211, | ||
603 | 211,212,212,212,212,212,212,212,212,213,213,213,213,213,213,213,213,214,214,214, | ||
604 | 214,214,214,214,214,215,215,215,215,215,215,215,215,216,216,216,216,216,216,216, | ||
605 | 216,217,217,217,217,217,217,217,217,218,218,218,218,218,218,218,218,219,219,219, | ||
606 | 219,219,219,219,219,220,220,220,220,220,220,220,220,221,221,221,221,221,221,221, | ||
607 | 221,222,222,222,222,222,222,222,222,223,223,223,223,223,223,223,223,224,224,224, | ||
608 | 224,224,224,224,224,225,225,225,225,225,225,225,225,226,226,226,226,226,226,226, | ||
609 | 226,227,227,227,227,227,227,227,227,228,228,228,228,228,228,228,228,229,229,229, | ||
610 | 229,229,229,229,229,229,230,230,230,230,230,230,230,230,231,231,231,231,231,231, | ||
611 | 231,231,232,232,232,232,232,232,232,232,233,233,233,233,233,233,233,233,234,234, | ||
612 | 234,234,234,234,234,234,234,235,235,235,235,235,235,235,235,236,236,236,236,236, | ||
613 | 236,236,236,237,237,237,237,237,237,237,237,238,238,238,238,238,238,238,238,238, | ||
614 | 239,239,239,239,239,239,239,239,240,240,240,240,240,240,240,240,241,241,241,241, | ||
615 | 241,241,241,241,242,242,242,242,242,242,242,242,242,243,243,243,243,243,243,243, | ||
616 | 243,244,244,244,244,244,244,244,244,245,245,245,245,245,245,245,245,245,246,246, | ||
617 | 246,246,246,246,246,246,247,247,247,247,247,247,247,247,248,248,248,248,248,248, | ||
618 | 248,248,248,249,249,249,249,249,249,249,249,250,250,250,250,250,250,250,250,250, | ||
619 | 251,251,251,251,251,251,251,251,252,252,252,252,252,252,252,252,253,253,253,253, | ||
620 | 253,253,253,253,253,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255, | ||
621 | 255,255,256,256,256,256,256,256,256,256,257,257,257,257,257,257,257,257,257,258, | ||
622 | 258,258,258,258,258,258,258,259,259,259,259,259,259,259,259,259,260,260,260,260, | ||
623 | 260,260,260,260,261,261,261,261,261,261,261,261,261,262,262,262,262,262,262,262, | ||
624 | 262,263,263,263,263,263,263,263,263,263,264,264,264,264,264,264,264,264,265,265, | ||
625 | 265,265,265,265,265,265,265,266,266,266,266,266,266,266,266,267,267,267,267,267, | ||
626 | 267,267,267,267,268,268,268,268,268,268,268,268,268,269,269,269,269,269,269,269, | ||
627 | 269,270,270,270,270,270,270,270,270,270,271,271,271,271,271,271,271,271,271,272, | ||
628 | 272,272,272,272,272,272,272,273,273,273,273,273,273,273,273,273,274,274,274,274, | ||
629 | 274,274,274,274,275,275,275,275,275,275,275,275,275,276,276,276,276,276,276,276, | ||
630 | 276,276,277,277,277,277,277,277,277,277,277,278,278,278,278,278,278,278,278,279, | ||
631 | 279,279,279,279,279,279,279,279,280,280,280,280,280,280,280,280,280,281,281,281, | ||
632 | 281,281,281,281,281,282,282,282,282,282,282,282,282,282,283,283,283,283,283,283, | ||
633 | 283,283,283,284,284,284,284,284,284,284,284,284,285,285,285,285,285,285,285,285, | ||
634 | 286,286,286,286,286,286,286,286,286,287,287,287,287,287,287,287,287,287,288,288, | ||
635 | 288,288,288,288,288,288,288,289,289,289,289,289,289,289,289,289,290,290,290,290, | ||
636 | 290,290,290,290,291,291,291,291,291,291,291,291,291,292,292,292,292,292,292,292, | ||
637 | 292,292,293,293,293,293,293,293,293,293,293,294,294,294,294,294,294,294,294,294, | ||
638 | 295,295,295,295,295,295,295,295,295,296,296,296,296,296,296,296,296,296,297,297, | ||
639 | 297,297,297,297,297,297,297,298,298,298,298,298,298,298,298,299,299,299,299,299, | ||
640 | 299,299,299,299,300,300,300,300,300,300,300,300,300,301,301,301,301,301,301,301, | ||
641 | 301,301,302,302,302,302,302,302,302,302,302,303,303,303,303,303,303,303,303,303, | ||
642 | 304,304,304,304,304,304,304,304,304,305,305,305,305,305,305,305,305,305,306,306, | ||
643 | 306,306,306,306,306,306,306,307,307,307,307,307,307,307,307,307,308,308,308,308, | ||
644 | 308,308,308,308,308,309,309,309,309,309,309,309,309,309,310,310,310,310,310,310, | ||
645 | 310,310,310,311,311,311,311,311,311,311,311,311,312,312,312,312,312,312,312,312, | ||
646 | 312,313,313,313,313,313,313,313,313,313,314,314,314,314,314,314,314,314,314,315, | ||
647 | 315,315,315,315,315,315,315,315,316,316,316,316,316,316,316,316,316,317,317,317, | ||
648 | 317,317,317,317,317,317,318,318,318,318,318,318,318,318,318,318,319,319,319,319, | ||
649 | 319,319,319,319,319,320,320,320,320,320,320,320,320,320,321,321,321,321,321,321, | ||
650 | 321,321,321,322,322,322,322,322,322,322,322,322,323,323,323,323,323,323,323,323, | ||
651 | 323,324,324,324,324,324,324,324,324,324,325,325,325,325,325,325,325,325,325,325, | ||
652 | 326,326,326,326,326,326,326,326,326,327,327,327,327,327,327,327,327,327,328,328, | ||
653 | 328,328,328,328,328,328,328,329,329,329,329,329,329,329,329,329,330,330,330,330, | ||
654 | 330,330,330,330,330,330,331,331,331,331,331,331,331,331,331,332,332,332,332,332, | ||
655 | 332,332,332,332,333,333,333,333,333,333,333,333,333,334,334,334,334,334,334,334, | ||
656 | 334,334,335,335,335,335,335,335,335,335,335,335,336,336,336,336,336,336,336,336, | ||
657 | 336,337,337,337,337,337,337,337,337,337,338,338,338,338,338,338,338,338,338,338, | ||
658 | 339,339,339,339,339,339,339,339,339,340,340,340,340,340,340,340,340,340,341,341, | ||
659 | 341,341,341,341,341,341,341,341,342,342,342,342,342,342,342,342,342,343,343,343, | ||
660 | 343,343,343,343,343,343,344,344,344,344,344,344,344,344,344,344,345,345,345,345, | ||
661 | 345,345,345,345,345,346,346,346,346,346,346,346,346,346,347,347,347,347,347,347, | ||
662 | 347,347,347,347,348,348,348,348,348,348,348,348,348,349,349,349,349,349,349,349, | ||
663 | 349,349,350,350,350,350,350,350,350,350,350,350,351,351,351,351,351,351,351,351, | ||
664 | 351,352,352,352,352,352,352,352,352,352,352,353,353,353,353,353,353,353,353,353, | ||
665 | 354,354,354,354,354,354,354,354,354,355,355,355,355,355,355,355,355,355,355,356, | ||
666 | 356,356,356,356,356,356,356,356,357,357,357,357,357,357,357,357,357,357,358,358, | ||
667 | 358,358,358,358,358,358,358,359,359,359,359,359,359,359,359,359,359,360,360,360, | ||
668 | 360,360,360,360,360,360,361,361,361,361,361,361,361,361,361,361,362,362,362,362, | ||
669 | 362,362,362,362,362,363,363,363,363,363,363,363,363,363,363,364,364,364,364,364, | ||
670 | 364,364,364,364,365,365,365,365,365,365,365,365,365,365,366,366,366,366,366,366, | ||
671 | 366,366,366,367,367,367,367,367,367,367,367,367,367,368,368,368,368,368,368,368, | ||
672 | 368,368,369,369,369,369,369,369,369,369,369,369,370,370,370,370,370,370,370,370, | ||
673 | 370,370,371,371,371,371,371,371,371,371,371,372,372,372,372,372,372,372,372,372, | ||
674 | 372,373,373,373,373,373,373,373,373,373,374,374,374,374,374,374,374,374,374,374, | ||
675 | 375,375,375,375,375,375,375,375,375,375,376,376,376,376,376,376,376,376,376,377, | ||
676 | 377,377,377,377,377,377,377,377,377,378,378,378,378,378,378,378,378,378,379,379, | ||
677 | 379,379,379,379,379,379,379,379,380,380,380,380,380,380,380,380,380,380,381,381, | ||
678 | 381,381,381,381,381,381,381,382,382,382,382,382,382,382,382,382,382,383,383,383, | ||
679 | 383,383,383,383,383,383,383,384,384,384,384,384,384,384,384,384,385,385,385,385, | ||
680 | 385,385,385,385,385,385,386,386,386,386,386,386,386,386,386,386,387,387,387,387, | ||
681 | 387,387,387,387,387,387,388,388,388,388,388,388,388,388,388,389,389,389,389,389, | ||
682 | 389,389,389,389,389,390,390,390,390,390,390,390,390,390,390,391,391,391,391,391, | ||
683 | 391,391,391,391,391,392,392,392,392,392,392,392,392,392,393,393,393,393,393,393, | ||
684 | 393,393,393,393,394,394,394,394,394,394,394,394,394,394,395,395,395,395,395,395, | ||
685 | 395,395,395,395,396,396,396,396,396,396,396,396,396,397,397,397,397,397,397,397, | ||
686 | 397,397,397,398,398,398,398,398,398,398,398,398,398,399,399,399,399,399,399,399, | ||
687 | 399,399,399,400,400,400,400,400,400,400,400,400,400,401,401,401,401,401,401,401, | ||
688 | 401,401,402,402,402,402,402,402,402,402,402,402,403,403,403,403,403,403,403,403, | ||
689 | 403,403,404,404,404,404,404,404,404,404,404,404,405,405,405,405,405,405,405,405, | ||
690 | 405,405,406,406,406,406,406,406,406,406,406,406,407,407,407,407,407,407,407,407, | ||
691 | 407,407,408,408,408,408,408,408,408,408,408,408,409,409,409,409,409,409,409,409, | ||
692 | 409,410,410,410,410,410,410,410,410,410,410,411,411,411,411,411,411,411,411,411, | ||
693 | 411,412,412,412,412,412,412,412,412,412,412,413,413,413,413,413,413,413,413,413, | ||
694 | 413,414,414,414,414,414,414,414,414,414,414,415,415,415,415,415,415,415,415,415, | ||
695 | 415,416,416,416,416,416,416,416,416,416,416,417,417,417,417,417,417,417,417,417, | ||
696 | 417,418,418,418,418,418,418,418,418,418,418,419,419,419,419,419,419,419,419,419, | ||
697 | 419,420,420,420,420,420,420,420,420,420,420,421,421,421,421,421,421,421,421,421, | ||
698 | 421,422,422,422,422,422,422,422,422,422,422,423,423,423,423,423,423,423,423,423, | ||
699 | 423,424,424,424,424,424,424,424,424,424,424,425,425,425,425,425,425,425,425,425, | ||
700 | 425,426,426,426,426,426,426,426,426,426,426,427,427,427,427,427,427,427,427,427, | ||
701 | 427,428,428,428,428,428,428,428,428,428,428,429,429,429,429,429,429,429,429,429, | ||
702 | 429,430,430,430,430,430,430,430,430,430,430,431,431,431,431,431,431,431,431,431, | ||
703 | 431,432,432,432,432,432,432,432,432,432,432,433,433,433,433,433,433,433,433,433, | ||
704 | 433,434,434,434,434,434,434,434,434,434,434,435,435,435,435,435,435,435,435,435, | ||
705 | 435,435,436,436,436,436,436,436,436,436,436,436,437,437,437,437,437,437,437,437, | ||
706 | 437,437,438,438,438,438,438,438,438,438,438,438,439,439,439,439,439,439,439,439, | ||
707 | 439,439,440,440,440,440,440,440,440,440,440,440,441,441,441,441,441,441,441,441, | ||
708 | 441,441,442,442,442,442,442,442,442,442,442,442,443,443,443,443,443,443,443,443, | ||
709 | 443,443,443,444,444,444,444,444,444,444,444,444,444,445,445,445,445,445,445,445, | ||
710 | 445,445,445,446,446,446,446,446,446,446,446,446,446,447,447,447,447,447,447,447, | ||
711 | 447,447,447,448,448,448,448,448,448,448,448,448,448,448,449,449,449,449,449,449, | ||
712 | 449,449,449,449,450,450,450,450,450,450,450,450,450,450,451,451,451,451,451,451, | ||
713 | 451,451,451,451,452,452,452,452,452,452,452,452,452,452,453,453,453,453,453,453, | ||
714 | 453,453,453,453,453,454,454,454,454,454,454,454,454,454,454,455,455,455,455,455, | ||
715 | 455,455,455,455,455,456,456,456,456,456,456,456,456,456,456,457,457,457,457,457, | ||
716 | 457,457,457,457,457,457,458,458,458,458,458,458,458,458,458,458,459,459,459,459, | ||
717 | 459,459,459,459,459,459,460,460,460,460,460,460,460,460,460,460,460,461,461,461, | ||
718 | 461,461,461,461,461,461,461,462,462,462,462,462,462,462,462,462,462,463,463,463, | ||
719 | 463,463,463,463,463,463,463,463,464,464,464,464,464,464,464,464,464,464,465,465, | ||
720 | 465,465,465,465,465,465,465,465,466,466,466,466,466,466,466,466,466,466,466,467, | ||
721 | 467,467,467,467,467,467,467,467,467,468,468,468,468,468,468,468,468,468,468,469, | ||
722 | 469,469,469,469,469,469,469,469,469,469,470,470,470,470,470,470,470,470,470,470, | ||
723 | 471,471,471,471,471,471,471,471,471,471,472,472,472,472,472,472,472,472,472,472, | ||
724 | 472,473,473,473,473,473,473,473,473,473,473,474,474,474,474,474,474,474,474,474, | ||
725 | 474,475,475,475,475,475,475,475,475,475,475,475,476,476,476,476,476,476,476,476, | ||
726 | 476,476,477,477,477,477,477,477,477,477,477,477,477,478,478,478,478,478,478,478, | ||
727 | 478,478,478,479,479,479,479,479,479,479,479,479,479,479,480,480,480,480,480,480, | ||
728 | 480,480,480,480,481,481,481,481,481,481,481,481,481,481,482,482,482,482,482,482, | ||
729 | 482,482,482,482,482,483,483,483,483,483,483,483,483,483,483,484,484,484,484,484, | ||
730 | 484,484,484,484,484,484,485,485,485,485,485,485,485,485,485,485,486,486,486,486, | ||
731 | 486,486,486,486,486,486,486,487,487,487,487,487,487,487,487,487,487,488,488,488, | ||
732 | 488,488,488,488,488,488,488,488,489,489,489,489,489,489,489,489,489,489,490,490, | ||
733 | 490,490,490,490,490,490,490,490,490,491,491,491,491,491,491,491,491,491,491,492, | ||
734 | 492,492,492,492,492,492,492,492,492,492,493,493,493,493,493,493,493,493,493,493, | ||
735 | 494,494,494,494,494,494,494,494,494,494,494,495,495,495,495,495,495,495,495,495, | ||
736 | 495,496,496,496,496,496,496,496,496,496,496,496,497,497,497,497,497,497,497,497, | ||
737 | 497,497,497,498,498,498,498,498,498,498,498,498,498,499,499,499,499,499,499,499, | ||
738 | 499,499,499,499,500,500,500,500,500,500,500,500,500,500,501,501,501,501,501,501, | ||
739 | 501,501,501,501,501,502,502,502,502,502,502,502,502,502,502,503,503,503,503,503, | ||
740 | 503,503,503,503,503,503,504,504,504,504,504,504,504,504,504,504,504,505,505,505, | ||
741 | 505,505,505,505,505,505,505,506,506,506,506,506,506,506,506,506,506,506,507,507, | ||
742 | 507,507,507,507,507,507,507,507,507,508,508,508,508,508,508,508,508,508,508,509, | ||
743 | 509,509,509,509,509,509,509,509,509,509,510,510,510,510,510,510,510,510,510,510, | ||
744 | 510,511,511,511,511,511,511,511,511,511,511,512,512,512,512,512 }; | ||
745 | |||
746 | static const int order[32] = | ||
747 | { 0, 1, 16, 17, 8, 9, 24, 25, 4, 5, 20, 21, 12, 13, 28, 29, | ||
748 | 2, 3, 18, 19,10,11, 26, 27, 6, 7, 22, 23, 14, 15, 30, 31 }; | ||
749 | |||
750 | static const int bitr_index[2][15] = | ||
751 | { {0, 8,16,24,32,40,48,56, 64, 80, 96,112,128,144,160}, | ||
752 | {0,32,40,48,56,64,80,96,112,128,160,192,224,256,320} }; | ||
753 | |||
754 | static const int num_bands[3][15] = | ||
755 | { {0,10,10,10,10,12,14,16, 20, 22, 24, 26, 28, 30, 32}, | ||
756 | {0,10,10,10,10,10,12,14, 18, 24, 26, 28, 30, 32, 32}, | ||
757 | {0,10,12,14,18,24,26,28, 30, 32, 32, 32, 32, 32, 32} }; | ||
758 | |||
759 | static const int cx_const[9] = | ||
760 | { 16135, 10531, 5604, 15396, -2845,-12551, 14189, 8192, 16384 }; | ||
761 | |||
762 | static const int ca_const[8] = | ||
763 | {-16859,-15458,-10269, -5961, -3099, -1342, -465, -121 }; | ||
764 | |||
765 | static const int cs_const[8] = | ||
766 | { 28098, 28893, 31117, 32221, 32621, 32740, 32765, 32768 }; | ||
767 | |||
768 | static const short enwindow_const[15*27+24] = | ||
769 | { 0, 65, 593, 1766, 22228, 2115, 611, 62, | ||
770 | 8, 119, 1419, 10564,-11659,-1635,-154, -9, | ||
771 | -8, -119,-1419,-10564, 11659, 1635, 154, 9, 464, 100, 91, | ||
772 | 0, 69, 604, 1635, 23148, 2363, 643, 62, | ||
773 | 7, 107, 1368, 10449,-12733,-1818,-180,-11, | ||
774 | -7, -107,-1368,-10449, 12733, 1818, 180, 11, 420, 200, 164, | ||
775 | 0, 72, 608, 1465, 23979, 2600, 671, 63, | ||
776 | 7, 94, 1305, 10265,-13818,-2004,-207,-12, | ||
777 | -7, -94,-1305,-10265, 13818, 2004, 207, 12, 380, 297, 220, | ||
778 | 0, 76, 606, 1256, 24718, 2825, 693, 63, | ||
779 | 6, 81, 1232, 10016,-14908,-2192,-236,-14, | ||
780 | -6, -81,-1232,-10016, 14908, 2192, 236, 14, 342, 392, 262, | ||
781 | 0, 78, 597, 1007, 25359, 3033, 712, 63, | ||
782 | 6, 68, 1150, 9706,-15995,-2380,-267,-15, | ||
783 | -6, -68,-1150, -9706, 15995, 2380, 267, 15, 307, 483, 289, | ||
784 | 0, 80, 580, 719, 25901, 3224, 726, 62, | ||
785 | 6, 54, 1060, 9343,-17072,-2565,-299,-17, | ||
786 | -6, -54,-1060, -9343, 17072, 2565, 299, 17, 274, 569, 304, | ||
787 | -1, 82, 555, 391, 26339, 3395, 735, 61, | ||
788 | 5, 40, 963, 8930,-18131,-2747,-332,-19, | ||
789 | -5, -40, -963, -8930, 18131, 2747, 332, 19, 242, 650, 307, | ||
790 | -1, 83, 523, 26, 26672, 3545, 740, 60, | ||
791 | 5, 27, 861, 8474,-19164,-2923,-366,-21, | ||
792 | -5, -27, -861, -8474, 19164, 2923, 366, 21, 212, 724, 300, | ||
793 | -1, 83, 482, -376, 26900, 3672, 739, 58, | ||
794 | 4, 14, 756, 7981,-20163,-3092,-401,-24, | ||
795 | -4, -14, -756, -7981, 20163, 3092, 401, 24, 183, 792, 283, | ||
796 | -1, 82, 433, -812, 27022, 3776, 735, 56, | ||
797 | 4, 1, 648, 7456,-21122,-3250,-435,-26, | ||
798 | -4, -1, -648, -7456, 21122, 3250, 435, 26, 155, 851, 258, | ||
799 | -1, 81, 376, -1281, 27038, 3855, 726, 54, | ||
800 | 3, -11, 539, 6907,-22032,-3397,-470,-28, | ||
801 | -3, 11, -539, -6907, 22032, 3397, 470, 28, 128, 903, 226, | ||
802 | -1, 78, 312, -1778, 26951, 3910, 713, 52, | ||
803 | 3, -22, 430, 6338,-22887,-3530,-503,-31, | ||
804 | -3, 22, -430, -6338, 22887, 3530, 503, 31, 102, 946, 188, | ||
805 | -2, 75, 239, -2302, 26761, 3941, 696, 49, | ||
806 | 3, -33, 322, 5757,-23678,-3648,-537,-34, | ||
807 | -3, 33, -322, -5757, 23678, 3648, 537, 34, 76, 980, 145, | ||
808 | -2, 70, 160, -2848, 26472, 3948, 676, 47, | ||
809 | 3, -42, 217, 5167,-24399,-3749,-568,-36, | ||
810 | -3, 42, -217, -5167, 24399, 3749, 568, 36, 50, 1004, 99, | ||
811 | -2, 65, 74, -3412, 26087, 3931, 653, 44, | ||
812 | 2, -51, 115, 4577,-25045,-3830,-599,-39, | ||
813 | -2, 51, -115, -4577, 25045, 3830, 599, 39, 25, 1019, 50, | ||
814 | |||
815 | 25610,3891,627,42,-3990,-18,58,-2, | ||
816 | 21226,-21226,10604,-10604,1860,-1860,1458,-1458,576,-576,130,-130,60,-60,8,-8 | ||
453 | }; | 817 | }; |
454 | 818 | ||
455 | static const uint8 int2idx_const[5000] = { | 819 | static const int win_const[18][4] = { |
456 | 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, | 820 | { -3072, -134, -146, 3352 }, |
457 | 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, | 821 | { -2747, -362, -471, 3579 }, |
458 | 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, | 822 | { -2387, -529, -831, 3747 }, |
459 | 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, | 823 | { -2004, -632,-1214, 3850 }, |
460 | 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, | 824 | { -1609, -666,-1609, 3884 }, |
461 | 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, | 825 | { -1214, -632,-2004, 3850 }, |
462 | 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, | 826 | { -831, -529,-2387, 3747 }, |
463 | 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, | 827 | { -471, -362,-2747, 3579 }, |
464 | 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, | 828 | { -146, -134,-3072, 3352 }, |
465 | 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, | 829 | { 134,-3072,-3352, -146 }, |
466 | 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, | 830 | { 362,-2747,-3579, -471 }, |
467 | 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, | 831 | { 529,-2387,-3747, -831 }, |
468 | 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, | 832 | { 632,-2004,-3850,-1214 }, |
469 | 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, | 833 | { 666,-1609,-3884,-1609 }, |
470 | 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, | 834 | { 632,-1214,-3850,-2004 }, |
471 | 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, | 835 | { 529, -831,-3747,-2387 }, |
472 | 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, | 836 | { 362, -471,-3579,-2747 }, |
473 | 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, | 837 | { 134, -146,-3352,-3072 } }; |
474 | 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, | ||
475 | 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, | ||
476 | 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, | ||
477 | 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, | ||
478 | 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, | ||
479 | 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, | ||
480 | 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, | ||
481 | 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, | ||
482 | 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, | ||
483 | 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, | ||
484 | 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, | ||
485 | 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, | ||
486 | 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, | ||
487 | 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, | ||
488 | 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, | ||
489 | 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, | ||
490 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, | ||
491 | 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, | ||
492 | 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, | ||
493 | 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, | ||
494 | 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, | ||
495 | 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, | ||
496 | 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, | ||
497 | 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, | ||
498 | 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, | ||
499 | 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, | ||
500 | 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, | ||
501 | 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, | ||
502 | 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, | ||
503 | 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, | ||
504 | 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, | ||
505 | 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, | ||
506 | 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, | ||
507 | 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, | ||
508 | 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, | ||
509 | 93, 93, 93, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, | ||
510 | 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, | ||
511 | 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, | ||
512 | 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, | ||
513 | 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,100,100,100,100,100,100,100,100,100,100, | ||
514 | 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, | ||
515 | 101,101,101,101,101,101,101,101,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, | ||
516 | 102,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,104,104,104,104,104,104, | ||
517 | 104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105, | ||
518 | 105,105,105,105,105,105,105,105,105,105,105,105,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106, | ||
519 | 106,106,106,106,106,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,108, | ||
520 | 108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,109,109,109,109,109,109,109, | ||
521 | 109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,110,110,110,110,110,110,110,110,110,110,110,110,110,110, | ||
522 | 110,110,110,110,110,110,110,110,110,110,110,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, | ||
523 | 111,111,111,111,111,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,113, | ||
524 | 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,114,114,114,114,114,114,114,114, | ||
525 | 114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115, | ||
526 | 115,115,115,115,115,115,115,115,115,115,115,115,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, | ||
527 | 116,116,116,116,116,116,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, | ||
528 | 118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,119,119,119,119,119,119, | ||
529 | 119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,120,120,120,120,120,120,120,120,120,120,120, | ||
530 | 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, | ||
531 | 121,121,121,121,121,121,121,121,121,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122, | ||
532 | 122,122,122,122,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,124,124, | ||
533 | 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,125,125,125,125,125,125,125, | ||
534 | 125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,126,126,126,126,126,126,126,126,126,126,126,126, | ||
535 | 126,126,126,126,126,126,126,126,126,126,126,126,126,126,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, | ||
536 | 127,127,127,127,127,127,127,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, | ||
537 | 128,128,128,128,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,130, | ||
538 | 130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,131,131,131,131,131,131, | ||
539 | 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,132,132,132,132,132,132,132,132,132,132,132, | ||
540 | 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, | ||
541 | 133,133,133,133,133,133,133,133,133,133,133,133,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134, | ||
542 | 134,134,134,134,134,134,134,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135, | ||
543 | 135,135,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,137,137, | ||
544 | 137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,138,138,138,138,138,138,138, | ||
545 | 138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,139,139,139,139,139,139,139,139,139,139,139, | ||
546 | 139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, | ||
547 | 140,140,140,140,140,140,140,140,140,140,140,140,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, | ||
548 | 141,141,141,141,141,141,141,141,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, | ||
549 | 142,142,142,142,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,144, | ||
550 | 144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,145,145,145,145,145, | ||
551 | 145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,146,146,146,146,146,146,146,146,146, | ||
552 | 146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,147,147,147,147,147,147,147,147,147,147,147,147, | ||
553 | 147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, | ||
554 | 148,148,148,148,148,148,148,148,148,148,148,148,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, | ||
555 | 149,149,149,149,149,149,149,149,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150, | ||
556 | 150,150,150,150,150,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151, | ||
557 | 151,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,153,153,153, | ||
558 | 153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,154,154,154,154,154,154, | ||
559 | 154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,155,155,155,155,155,155,155,155,155, | ||
560 | 155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,156,156,156,156,156,156,156,156,156,156,156,156,156, | ||
561 | 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, | ||
562 | 157,157,157,157,157,157,157,157,157,157,157,157,157,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158, | ||
563 | 158,158,158,158,158,158,158,158,158,158,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159, | ||
564 | 159,159,159,159,159,159,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, | ||
565 | 160,160,160,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, | ||
566 | 162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,163,163,163, | ||
567 | 163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,164,164,164,164,164, | ||
568 | 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,165,165,165,165,165,165,165,165, | ||
569 | 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,166,166,166,166,166,166,166,166,166,166,166, | ||
570 | 166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,167,167,167,167,167,167,167,167,167,167,167,167,167,167, | ||
571 | 167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, | ||
572 | 168,168,168,168,168,168,168,168,168,168,168,168,168,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, | ||
573 | 169,169,169,169,169,169,169,169,169,169,169,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170, | ||
574 | 170,170,170,170,170,170,170,170,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171, | ||
575 | 171,171,171,171,171,171,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, | ||
576 | 172,172,172,172,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173, | ||
577 | 173,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,175, | ||
578 | 175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,176,176,176, | ||
579 | 176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,177,177,177,177,177, | ||
580 | 177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,178,178,178,178,178,178,178, | ||
581 | 178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,179,179,179,179,179,179,179,179,179, | ||
582 | 179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,180,180,180,180,180,180,180,180,180,180,180, | ||
583 | 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,181,181,181,181,181,181,181,181,181,181,181,181,181, | ||
584 | 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, | ||
585 | 182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183, | ||
586 | 183,183,183,183,183,183,183,183,183,183,183,183,183,183,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, | ||
587 | 184,184,184,184,184,184,184,184,184,184,184,184,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, | ||
588 | 185,185,185,185,185,185,185,185,185,185,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186, | ||
589 | 186,186,186,186,186,186,186,186,186,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187, | ||
590 | 187,187,187,187,187,187,187,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, | ||
591 | 188,188,188,188,188,188,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189, | ||
592 | 189,189,189,189,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190, | ||
593 | 190,190,190,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, | ||
594 | 191,191,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, | ||
595 | 192,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,194, | ||
596 | 194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,195,195, | ||
597 | 195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,196,196,196, | ||
598 | 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,197,197,197,197, | ||
599 | 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,198,198,198,198,198, | ||
600 | 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,199,199,199,199,199,199, | ||
601 | 199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,200,200,200,200,200,200,200, | ||
602 | 200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,201,201,201,201,201,201,201, | ||
603 | 201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,202, | ||
604 | 202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,203,203,203,203,203,203,203,203,203, | ||
605 | 203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,204,204,204,204,204,204,204,204,204, | ||
606 | 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,205,205,205,205,205,205,205,205,205,205, | ||
607 | 205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,206,206,206,206,206,206,206,206,206,206,206, | ||
608 | 206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,207,207,207,207,207,207,207,207,207,207,207, | ||
609 | 207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,208,208,208,208,208,208,208,208,208,208,208,208, | ||
610 | 208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,209,209,209,209,209,209,209,209,209,209,209,209, | ||
611 | 209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,210,210,210,210,210,210,210,210,210,210,210,210, | ||
612 | 210,210,210,210,210,210,210,210 }; | ||
613 | |||
614 | static const uint16 int3idx[32768] = { | ||
615 | 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, | ||
616 | 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, | ||
617 | 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, | ||
618 | 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, | ||
619 | 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, | ||
620 | 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, | ||
621 | 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, | ||
622 | 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, | ||
623 | 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, | ||
624 | 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, | ||
625 | 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, | ||
626 | 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, | ||
627 | 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, | ||
628 | 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, | ||
629 | 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, | ||
630 | 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, | ||
631 | 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, | ||
632 | 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, | ||
633 | 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, | ||
634 | 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, | ||
635 | 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, | ||
636 | 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, | ||
637 | 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, | ||
638 | 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, | ||
639 | 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, | ||
640 | 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, | ||
641 | 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, | ||
642 | 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, | ||
643 | 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, | ||
644 | 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, | ||
645 | 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, | ||
646 | 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, | ||
647 | 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, | ||
648 | 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, | ||
649 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, | ||
650 | 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, | ||
651 | 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, | ||
652 | 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, | ||
653 | 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, | ||
654 | 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, | ||
655 | 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, | ||
656 | 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, | ||
657 | 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, | ||
658 | 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, | ||
659 | 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, | ||
660 | 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, | ||
661 | 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, | ||
662 | 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, | ||
663 | 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, | ||
664 | 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, | ||
665 | 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, | ||
666 | 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, | ||
667 | 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, | ||
668 | 93, 93, 93, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, | ||
669 | 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, | ||
670 | 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, | ||
671 | 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, | ||
672 | 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,100,100,100,100,100,100,100,100,100,100, | ||
673 | 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, | ||
674 | 101,101,101,101,101,101,101,101,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, | ||
675 | 102,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,104,104,104,104,104,104, | ||
676 | 104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,105,105,105,105,105,105,105,105,105,105,105,105,105, | ||
677 | 105,105,105,105,105,105,105,105,105,105,105,105,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106, | ||
678 | 106,106,106,106,106,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,108, | ||
679 | 108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,109,109,109,109,109,109,109,109, | ||
680 | 109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,110,110,110,110,110,110,110,110,110,110,110,110,110,110, | ||
681 | 110,110,110,110,110,110,110,110,110,110,110,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, | ||
682 | 111,111,111,111,111,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,113, | ||
683 | 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,114,114,114,114,114,114,114,114, | ||
684 | 114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,115,115,115,115,115,115,115,115,115,115,115,115,115,115, | ||
685 | 115,115,115,115,115,115,115,115,115,115,115,115,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, | ||
686 | 116,116,116,116,116,116,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, | ||
687 | 118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,118,119,119,119,119,119,119, | ||
688 | 119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,120,120,120,120,120,120,120,120,120,120,120, | ||
689 | 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, | ||
690 | 121,121,121,121,121,121,121,121,121,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122, | ||
691 | 122,122,122,122,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,124,124, | ||
692 | 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,125,125,125,125,125,125,125, | ||
693 | 125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,126,126,126,126,126,126,126,126,126,126,126,126, | ||
694 | 126,126,126,126,126,126,126,126,126,126,126,126,126,126,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, | ||
695 | 127,127,127,127,127,127,127,127,127,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, | ||
696 | 128,128,128,128,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,130, | ||
697 | 130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,131,131,131,131,131,131, | ||
698 | 131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,132,132,132,132,132,132,132,132,132,132,132, | ||
699 | 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, | ||
700 | 133,133,133,133,133,133,133,133,133,133,133,133,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134,134, | ||
701 | 134,134,134,134,134,134,134,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135, | ||
702 | 135,135,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,137,137, | ||
703 | 137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,138,138,138,138,138,138,138, | ||
704 | 138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,139,139,139,139,139,139,139,139,139,139,139, | ||
705 | 139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,139,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, | ||
706 | 140,140,140,140,140,140,140,140,140,140,140,140,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, | ||
707 | 141,141,141,141,141,141,141,141,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142,142, | ||
708 | 142,142,142,142,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,144, | ||
709 | 144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,145,145,145,145,145, | ||
710 | 145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,146,146,146,146,146,146,146,146,146, | ||
711 | 146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146,147,147,147,147,147,147,147,147,147,147,147,147, | ||
712 | 147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, | ||
713 | 148,148,148,148,148,148,148,148,148,148,148,148,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, | ||
714 | 149,149,149,149,149,149,149,149,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150, | ||
715 | 150,150,150,150,150,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151,151, | ||
716 | 151,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,153,153,153, | ||
717 | 153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,154,154,154,154,154,154, | ||
718 | 154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,155,155,155,155,155,155,155,155,155, | ||
719 | 155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,156,156,156,156,156,156,156,156,156,156,156,156,156, | ||
720 | 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, | ||
721 | 157,157,157,157,157,157,157,157,157,157,157,157,157,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158, | ||
722 | 158,158,158,158,158,158,158,158,158,158,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159, | ||
723 | 159,159,159,159,159,159,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, | ||
724 | 160,160,160,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, | ||
725 | 162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,163,163,163, | ||
726 | 163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,164,164,164,164,164, | ||
727 | 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,165,165,165,165,165,165,165,165, | ||
728 | 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,166,166,166,166,166,166,166,166,166,166,166, | ||
729 | 166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,167,167,167,167,167,167,167,167,167,167,167,167,167,167, | ||
730 | 167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, | ||
731 | 168,168,168,168,168,168,168,168,168,168,168,168,168,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, | ||
732 | 169,169,169,169,169,169,169,169,169,169,169,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170, | ||
733 | 170,170,170,170,170,170,170,170,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171, | ||
734 | 171,171,171,171,171,171,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, | ||
735 | 172,172,172,172,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173, | ||
736 | 173,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,175, | ||
737 | 175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,176,176,176, | ||
738 | 176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,177,177,177,177,177, | ||
739 | 177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,178,178,178,178,178,178,178, | ||
740 | 178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,179,179,179,179,179,179,179,179,179, | ||
741 | 179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,180,180,180,180,180,180,180,180,180,180,180, | ||
742 | 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,181,181,181,181,181,181,181,181,181,181,181,181,181, | ||
743 | 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, | ||
744 | 182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183,183, | ||
745 | 183,183,183,183,183,183,183,183,183,183,183,183,183,183,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, | ||
746 | 184,184,184,184,184,184,184,184,184,184,184,184,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, | ||
747 | 185,185,185,185,185,185,185,185,185,185,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186,186, | ||
748 | 186,186,186,186,186,186,186,186,186,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187, | ||
749 | 187,187,187,187,187,187,187,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, | ||
750 | 188,188,188,188,188,188,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189, | ||
751 | 189,189,189,189,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190, | ||
752 | 190,190,190,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191, | ||
753 | 191,191,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, | ||
754 | 192,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,194, | ||
755 | 194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,195,195, | ||
756 | 195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,196,196,196, | ||
757 | 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,197,197,197,197, | ||
758 | 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,198,198,198,198,198, | ||
759 | 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,199,199,199,199,199,199, | ||
760 | 199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,200,200,200,200,200,200,200, | ||
761 | 200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,201,201,201,201,201,201,201, | ||
762 | 201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,202,202,202,202,202,202,202,202, | ||
763 | 202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,203,203,203,203,203,203,203,203,203, | ||
764 | 203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,204,204,204,204,204,204,204,204,204, | ||
765 | 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,205,205,205,205,205,205,205,205,205,205, | ||
766 | 205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,206,206,206,206,206,206,206,206,206,206,206, | ||
767 | 206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,207,207,207,207,207,207,207,207,207,207,207, | ||
768 | 207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,208,208,208,208,208,208,208,208,208,208,208,208, | ||
769 | 208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,209,209,209,209,209,209,209,209,209,209,209,209, | ||
770 | 209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,210,210,210,210,210,210,210,210,210,210,210,210, | ||
771 | 210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,211,211,211,211,211,211,211,211,211,211,211,211,211, | ||
772 | 211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,212,212,212,212,212,212,212,212,212,212,212,212,212, | ||
773 | 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,213,213,213,213,213,213,213,213,213,213,213,213,213, | ||
774 | 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,214,214,214,214,214,214,214,214,214,214,214,214,214, | ||
775 | 214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,215,215,215,215,215,215,215,215,215,215,215,215,215, | ||
776 | 215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,216,216,216,216,216,216,216,216,216,216,216,216,216, | ||
777 | 216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,217,217,217,217,217,217,217,217,217,217,217,217,217, | ||
778 | 217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,218,218,218,218,218,218,218,218,218,218,218,218,218, | ||
779 | 218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,219,219,219,219,219,219,219,219,219,219,219,219,219, | ||
780 | 219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,220,220,220,220,220,220,220,220,220,220,220,220,220, | ||
781 | 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,221,221,221,221,221,221,221,221,221,221,221,221,221, | ||
782 | 221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,222,222,222,222,222,222,222,222,222,222,222,222,222, | ||
783 | 222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,223,223,223,223,223,223,223,223,223,223,223,223, | ||
784 | 223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,224,224,224,224,224,224,224,224,224,224,224,224, | ||
785 | 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,225,225,225,225,225,225,225,225,225,225,225, | ||
786 | 225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,226,226,226,226,226,226,226,226,226,226,226, | ||
787 | 226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,227,227,227,227,227,227,227,227,227,227,227, | ||
788 | 227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,228,228,228,228,228,228,228,228,228,228, | ||
789 | 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,229,229,229,229,229,229,229,229,229, | ||
790 | 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,230,230,230,230,230,230,230,230,230, | ||
791 | 230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,231,231,231,231,231,231,231,231, | ||
792 | 231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,232,232,232,232,232,232,232, | ||
793 | 232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233,233, | ||
794 | 233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,234,234,234,234,234,234, | ||
795 | 234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235, | ||
796 | 235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,236,236,236,236, | ||
797 | 236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,237,237,237, | ||
798 | 237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,238,238, | ||
799 | 238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,239, | ||
800 | 239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239, | ||
801 | 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, | ||
802 | 240,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, | ||
803 | 241,241,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, | ||
804 | 242,242,242,242,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243, | ||
805 | 243,243,243,243,243,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, | ||
806 | 244,244,244,244,244,244,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, | ||
807 | 245,245,245,245,245,245,245,245,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246, | ||
808 | 246,246,246,246,246,246,246,246,246,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247,247, | ||
809 | 247,247,247,247,247,247,247,247,247,247,247,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, | ||
810 | 248,248,248,248,248,248,248,248,248,248,248,248,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, | ||
811 | 249,249,249,249,249,249,249,249,249,249,249,249,249,249,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250, | ||
812 | 250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251, | ||
813 | 251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, | ||
814 | 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253,253,253,253,253,253,253,253, | ||
815 | 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,254,254,254,254,254,254,254,254,254,254,254,254, | ||
816 | 254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255, | ||
817 | 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,256,256,256,256,256,256,256,256, | ||
818 | 256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,257, | ||
819 | 257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,257,258,258,258,258, | ||
820 | 258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,259,259, | ||
821 | 259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259,259, | ||
822 | 260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260, | ||
823 | 260,260,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261,261, | ||
824 | 261,261,261,261,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262, | ||
825 | 262,262,262,262,262,262,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263, | ||
826 | 263,263,263,263,263,263,263,263,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264, | ||
827 | 264,264,264,264,264,264,264,264,264,264,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265, | ||
828 | 265,265,265,265,265,265,265,265,265,265,265,265,265,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266, | ||
829 | 266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267, | ||
830 | 267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268, | ||
831 | 268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,269,269,269,269,269,269,269,269,269,269,269,269, | ||
832 | 269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,270,270,270,270,270,270,270,270,270,270, | ||
833 | 270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,270,271,271,271,271,271,271,271, | ||
834 | 271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,271,272,272,272,272,272, | ||
835 | 272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,273,273, | ||
836 | 273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273, | ||
837 | 274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274, | ||
838 | 274,274,274,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275, | ||
839 | 275,275,275,275,275,275,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276,276, | ||
840 | 276,276,276,276,276,276,276,276,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277, | ||
841 | 277,277,277,277,277,277,277,277,277,277,277,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278, | ||
842 | 278,278,278,278,278,278,278,278,278,278,278,278,278,278,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279, | ||
843 | 279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280, | ||
844 | 280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,281,281,281,281,281,281,281,281,281,281,281,281, | ||
845 | 281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,282,282,282,282,282,282,282,282,282, | ||
846 | 282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,283,283,283,283,283,283, | ||
847 | 283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,284,284,284, | ||
848 | 284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284, | ||
849 | 285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285, | ||
850 | 285,285,285,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286,286, | ||
851 | 286,286,286,286,286,286,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287, | ||
852 | 287,287,287,287,287,287,287,287,287,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288, | ||
853 | 288,288,288,288,288,288,288,288,288,288,288,288,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289, | ||
854 | 289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290, | ||
855 | 290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,290,291,291,291,291,291,291,291,291,291,291,291,291,291, | ||
856 | 291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,291,292,292,292,292,292,292,292,292,292,292, | ||
857 | 292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,293,293,293,293,293,293, | ||
858 | 293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,293,294,294,294, | ||
859 | 294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294,294, | ||
860 | 295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295, | ||
861 | 295,295,295,295,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296,296, | ||
862 | 296,296,296,296,296,296,296,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297, | ||
863 | 297,297,297,297,297,297,297,297,297,297,297,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298, | ||
864 | 298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299, | ||
865 | 299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,300,300,300,300,300,300,300,300,300,300,300,300,300,300, | ||
866 | 300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,301,301,301,301,301,301,301,301,301,301, | ||
867 | 301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,302,302,302,302,302,302, | ||
868 | 302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,303,303, | ||
869 | 303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303, | ||
870 | 303,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304, | ||
871 | 304,304,304,304,304,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, | ||
872 | 305,305,305,305,305,305,305,305,305,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, | ||
873 | 306,306,306,306,306,306,306,306,306,306,306,306,306,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307, | ||
874 | 307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308, | ||
875 | 308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,309,309,309,309,309,309,309,309,309,309,309, | ||
876 | 309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,310,310,310,310,310,310,310, | ||
877 | 310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,310,311,311,311, | ||
878 | 311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311,311, | ||
879 | 311,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312,312, | ||
880 | 312,312,312,312,312,312,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313, | ||
881 | 313,313,313,313,313,313,313,313,313,313,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314,314, | ||
882 | 314,314,314,314,314,314,314,314,314,314,314,314,314,314,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315, | ||
883 | 315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,316,316,316,316,316,316,316,316,316,316,316,316,316,316, | ||
884 | 316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,316,317,317,317,317,317,317,317,317,317, | ||
885 | 317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,318,318,318,318,318, | ||
886 | 318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,318,319, | ||
887 | 319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319, | ||
888 | 319,319,319,319,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, | ||
889 | 320,320,320,320,320,320,320,320,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321, | ||
890 | 321,321,321,321,321,321,321,321,321,321,321,321,321,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322, | ||
891 | 322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,323,323,323,323,323,323,323,323,323,323,323,323,323,323,323, | ||
892 | 323,323,323,323,323,323,323,323,323,323,323,323,323,323,323,323,323,323,323,323,323,323,324,324,324,324,324,324,324,324,324,324, | ||
893 | 324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,324,325,325,325,325,325, | ||
894 | 325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,325,326, | ||
895 | 326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326,326, | ||
896 | 326,326,326,326,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327,327, | ||
897 | 327,327,327,327,327,327,327,327,327,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328, | ||
898 | 328,328,328,328,328,328,328,328,328,328,328,328,328,328,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329, | ||
899 | 329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,330,330,330,330,330,330,330,330,330,330,330,330,330,330, | ||
900 | 330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,331,331,331,331,331,331,331,331,331, | ||
901 | 331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,332,332,332,332, | ||
902 | 332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332,332, | ||
903 | 332,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333,333, | ||
904 | 333,333,333,333,333,333,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334,334, | ||
905 | 334,334,334,334,334,334,334,334,334,334,334,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335, | ||
906 | 335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,335,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336, | ||
907 | 336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,337,337,337,337,337,337,337,337,337,337,337, | ||
908 | 337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,337,338,338,338,338,338,338, | ||
909 | 338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338,338, | ||
910 | 339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339, | ||
911 | 339,339,339,339,339,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340,340, | ||
912 | 340,340,340,340,340,340,340,340,340,340,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,341, | ||
913 | 341,341,341,341,341,341,341,341,341,341,341,341,341,341,341,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342, | ||
914 | 342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,342,343,343,343,343,343,343,343,343,343,343,343,343, | ||
915 | 343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,343,344,344,344,344,344,344, | ||
916 | 344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,345, | ||
917 | 345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345,345, | ||
918 | 345,345,345,345,345,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346,346, | ||
919 | 346,346,346,346,346,346,346,346,346,346,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347, | ||
920 | 347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,347,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348, | ||
921 | 348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,349,349,349,349,349,349,349,349,349,349,349, | ||
922 | 349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,350,350,350,350,350, | ||
923 | 350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350,350, | ||
924 | 351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351, | ||
925 | 351,351,351,351,351,351,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352,352, | ||
926 | 352,352,352,352,352,352,352,352,352,352,352,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353, | ||
927 | 353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,353,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354, | ||
928 | 354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,355,355,355,355,355,355,355,355,355, | ||
929 | 355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,355,356,356,356, | ||
930 | 356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356,356, | ||
931 | 356,356,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357,357, | ||
932 | 357,357,357,357,357,357,357,357,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358,358, | ||
933 | 358,358,358,358,358,358,358,358,358,358,358,358,358,358,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359, | ||
934 | 359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,359,360,360,360,360,360,360,360,360,360,360,360,360, | ||
935 | 360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,360,361,361,361,361,361,361, | ||
936 | 361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361,361, | ||
937 | 362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362,362, | ||
938 | 362,362,362,362,362,362,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363,363, | ||
939 | 363,363,363,363,363,363,363,363,363,363,363,363,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364, | ||
940 | 364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,364,365,365,365,365,365,365,365,365,365,365,365,365,365,365, | ||
941 | 365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,365,366,366,366,366,366,366,366,366, | ||
942 | 366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,366,367,367, | ||
943 | 367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367,367, | ||
944 | 367,367,367,367,367,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368,368, | ||
945 | 368,368,368,368,368,368,368,368,368,368,368,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369, | ||
946 | 369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,369,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370, | ||
947 | 370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,370,371,371,371,371,371,371,371,371,371, | ||
948 | 371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,371,372,372, | ||
949 | 372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372,372, | ||
950 | 372,372,372,372,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373,373, | ||
951 | 373,373,373,373,373,373,373,373,373,373,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374, | ||
952 | 374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,374,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375, | ||
953 | 375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,375,376,376,376,376,376,376,376,376,376, | ||
954 | 376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,376,377,377, | ||
955 | 377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377,377, | ||
956 | 377,377,377,377,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,378, | ||
957 | 378,378,378,378,378,378,378,378,378,378,378,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379, | ||
958 | 379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,379,380,380,380,380,380,380,380,380,380,380,380,380,380,380, | ||
959 | 380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,380,381,381,381,381,381,381,381,381, | ||
960 | 381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,381,382, | ||
961 | 382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382,382, | ||
962 | 382,382,382,382,382,382,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383,383, | ||
963 | 383,383,383,383,383,383,383,383,383,383,383,383,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384, | ||
964 | 384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,384,385,385,385,385,385,385,385,385,385,385,385,385,385, | ||
965 | 385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,385,386,386,386,386,386,386, | ||
966 | 386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386,386, | ||
967 | 386,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387, | ||
968 | 387,387,387,387,387,387,387,387,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388,388, | ||
969 | 388,388,388,388,388,388,388,388,388,388,388,388,388,388,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389, | ||
970 | 389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,389,390,390,390,390,390,390,390,390,390,390,390, | ||
971 | 390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,390,391,391,391,391, | ||
972 | 391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391,391, | ||
973 | 391,391,391,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392, | ||
974 | 392,392,392,392,392,392,392,392,392,392,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393, | ||
975 | 393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,393,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394, | ||
976 | 394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,395,395,395,395,395,395,395, | ||
977 | 395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395, | ||
978 | 396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396,396, | ||
979 | 396,396,396,396,396,396,396,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397,397, | ||
980 | 397,397,397,397,397,397,397,397,397,397,397,397,397,397,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398, | ||
981 | 398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,398,399,399,399,399,399,399,399,399,399,399,399, | ||
982 | 399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,400,400,400, | ||
983 | 400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400, | ||
984 | 400,400,400,400,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401, | ||
985 | 401,401,401,401,401,401,401,401,401,401,401,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402, | ||
986 | 402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,402,403,403,403,403,403,403,403,403,403,403,403,403,403, | ||
987 | 403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,403,404,404,404,404,404,404, | ||
988 | 404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404, | ||
989 | 404,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405, | ||
990 | 405,405,405,405,405,405,405,405,405,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406, | ||
991 | 406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,406,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407, | ||
992 | 407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,407,408,408,408,408,408,408,408,408, | ||
993 | 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,409, | ||
994 | 409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409,409, | ||
995 | 409,409,409,409,409,409,409,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410, | ||
996 | 410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411, | ||
997 | 411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,411,412,412,412,412,412,412,412,412,412,412, | ||
998 | 412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,412,413,413, | ||
999 | 413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413,413, | ||
1000 | 413,413,413,413,413,413,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414,414, | ||
1001 | 414,414,414,414,414,414,414,414,414,414,414,414,414,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415, | ||
1002 | 415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,415,416,416,416,416,416,416,416,416,416,416,416, | ||
1003 | 416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,417,417,417, | ||
1004 | 417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417,417, | ||
1005 | 417,417,417,417,417,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418,418, | ||
1006 | 418,418,418,418,418,418,418,418,418,418,418,418,418,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419, | ||
1007 | 419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,419,420,420,420,420,420,420,420,420,420,420,420, | ||
1008 | 420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,420,421,421,421, | ||
1009 | 421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421,421, | ||
1010 | 421,421,421,421,421,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422, | ||
1011 | 422,422,422,422,422,422,422,422,422,422,422,422,422,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423, | ||
1012 | 423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,424,424,424,424,424,424,424,424,424,424,424, | ||
1013 | 424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,425,425,425, | ||
1014 | 425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425, | ||
1015 | 425,425,425,425,425,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426,426, | ||
1016 | 426,426,426,426,426,426,426,426,426,426,426,426,426,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427, | ||
1017 | 427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,427,428,428,428,428,428,428,428,428,428,428,428, | ||
1018 | 428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,428,429,429,429, | ||
1019 | 429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429,429, | ||
1020 | 429,429,429,429,429,429,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430, | ||
1021 | 430,430,430,430,430,430,430,430,430,430,430,430,430,430,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431, | ||
1022 | 431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,431,432,432,432,432,432,432,432,432,432,432, | ||
1023 | 432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,432,433,433, | ||
1024 | 433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433,433, | ||
1025 | 433,433,433,433,433,433,433,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,434, | ||
1026 | 434,434,434,434,434,434,434,434,434,434,434,434,434,434,434,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435, | ||
1027 | 435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,435,436,436,436,436,436,436,436,436, | ||
1028 | 436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436,436, | ||
1029 | 437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437,437, | ||
1030 | 437,437,437,437,437,437,437,437,437,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438, | ||
1031 | 438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,438,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439, | ||
1032 | 439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,439,440,440,440,440,440,440, | ||
1033 | 440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440, | ||
1034 | 440,440,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441,441, | ||
1035 | 441,441,441,441,441,441,441,441,441,441,441,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442, | ||
1036 | 442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,442,443,443,443,443,443,443,443,443,443,443,443,443,443, | ||
1037 | 443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,443,444,444,444,444, | ||
1038 | 444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444,444, | ||
1039 | 444,444,444,444,444,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445,445, | ||
1040 | 445,445,445,445,445,445,445,445,445,445,445,445,445,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446, | ||
1041 | 446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,446,447,447,447,447,447,447,447,447,447,447, | ||
1042 | 447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,447,448, | ||
1043 | 448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448, | ||
1044 | 448,448,448,448,448,448,448,448,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449, | ||
1045 | 449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,449,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450, | ||
1046 | 450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,451,451,451,451,451,451,451, | ||
1047 | 451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451,451, | ||
1048 | 451,451,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452,452, | ||
1049 | 452,452,452,452,452,452,452,452,452,452,452,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453, | ||
1050 | 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,454,454,454,454,454,454,454,454,454,454,454,454, | ||
1051 | 454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,455,455,455, | ||
1052 | 455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455,455, | ||
1053 | 455,455,455,455,455,455,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456, | ||
1054 | 456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457, | ||
1055 | 457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,457,458,458,458,458,458,458,458,458, | ||
1056 | 458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458,458, | ||
1057 | 458,458,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459,459, | ||
1058 | 459,459,459,459,459,459,459,459,459,459,459,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460, | ||
1059 | 460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,461,461,461,461,461,461,461,461,461,461,461,461, | ||
1060 | 461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,461,462,462,462, | ||
1061 | 462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462,462, | ||
1062 | 462,462,462,462,462,462,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463, | ||
1063 | 463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464, | ||
1064 | 464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,465,465,465,465,465,465,465, | ||
1065 | 465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465, | ||
1066 | 465,465,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466,466, | ||
1067 | 466,466,466,466,466,466,466,466,466,466,466,466,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467, | ||
1068 | 467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,468,468,468,468,468,468,468,468,468,468,468, | ||
1069 | 468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,469,469, | ||
1070 | 469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469, | ||
1071 | 469,469,469,469,469,469,469,469,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470, | ||
1072 | 470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,470,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471, | ||
1073 | 471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,471,472,472,472,472,472, | ||
1074 | 472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472, | ||
1075 | 472,472,472,472,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473, | ||
1076 | 473,473,473,473,473,473,473,473,473,473,473,473,473,473,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474, | ||
1077 | 474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,475,475,475,475,475,475,475,475,475, | ||
1078 | 475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475,475, | ||
1079 | 475,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476,476, | ||
1080 | 476,476,476,476,476,476,476,476,476,476,476,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477, | ||
1081 | 477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,477,478,478,478,478,478,478,478,478,478,478,478,478, | ||
1082 | 478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,478,479,479, | ||
1083 | 479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479,479, | ||
1084 | 479,479,479,479,479,479,479,479,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480, | ||
1085 | 480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,481,481,481,481,481,481,481,481,481,481,481,481,481,481, | ||
1086 | 481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,481,482,482,482,482,482, | ||
1087 | 482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482, | ||
1088 | 482,482,482,482,482,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483, | ||
1089 | 483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484, | ||
1090 | 484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,484,485,485,485,485,485,485,485, | ||
1091 | 485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485, | ||
1092 | 485,485,485,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486,486, | ||
1093 | 486,486,486,486,486,486,486,486,486,486,486,486,486,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487, | ||
1094 | 487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,487,488,488,488,488,488,488,488,488,488, | ||
1095 | 488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488,488, | ||
1096 | 488,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489, | ||
1097 | 489,489,489,489,489,489,489,489,489,489,489,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490, | ||
1098 | 490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,490,491,491,491,491,491,491,491,491,491,491,491, | ||
1099 | 491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,492, | ||
1100 | 492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492, | ||
1101 | 492,492,492,492,492,492,492,492,492,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493, | ||
1102 | 493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,494,494,494,494,494,494,494,494,494,494,494,494,494, | ||
1103 | 494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,494,495,495,495, | ||
1104 | 495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495, | ||
1105 | 495,495,495,495,495,495,495,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496, | ||
1106 | 496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,497,497,497,497,497,497,497,497,497,497,497,497,497,497, | ||
1107 | 497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,497,498,498,498,498, | ||
1108 | 498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498,498, | ||
1109 | 498,498,498,498,498,498,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499, | ||
1110 | 499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,499,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500, | ||
1111 | 500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,500,501,501,501,501,501, | ||
1112 | 501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501,501, | ||
1113 | 501,501,501,501,501,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502, | ||
1114 | 502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,502,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503, | ||
1115 | 503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,503,504,504,504,504,504,504, | ||
1116 | 504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504, | ||
1117 | 504,504,504,504,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,505, | ||
1118 | 505,505,505,505,505,505,505,505,505,505,505,505,505,505,505,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506, | ||
1119 | 506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,506,507,507,507,507,507,507,507, | ||
1120 | 507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507,507, | ||
1121 | 507,507,507,507,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508,508, | ||
1122 | 508,508,508,508,508,508,508,508,508,508,508,508,508,508,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509, | ||
1123 | 509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,510,510,510,510,510,510,510, | ||
1124 | 510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510, | ||
1125 | 510,510,510,510,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511, | ||
1126 | 511,511,511,511,511,511,511,511,511,511,511,511,511,511,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512, | ||
1127 | 512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,513,513,513,513,513,513,513, | ||
1128 | 513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513, | ||
1129 | 513,513,513,513,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514, | ||
1130 | 514,514,514,514,514,514,514,514,514,514,514,514,514,514,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515, | ||
1131 | 515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,516,516,516,516,516,516,516, | ||
1132 | 516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516,516, | ||
1133 | 516,516,516,516,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517, | ||
1134 | 517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518, | ||
1135 | 518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,519,519,519,519,519,519, | ||
1136 | 519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519,519, | ||
1137 | 519,519,519,519,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520, | ||
1138 | 520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521, | ||
1139 | 521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,522,522,522,522,522,522, | ||
1140 | 522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522,522, | ||
1141 | 522,522,522,522,522,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523, | ||
1142 | 523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,523,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524, | ||
1143 | 524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,524,525,525,525,525,525, | ||
1144 | 525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525,525, | ||
1145 | 525,525,525,525,525,525,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526, | ||
1146 | 526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,526,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527, | ||
1147 | 527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,528,528,528,528, | ||
1148 | 528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528, | ||
1149 | 528,528,528,528,528,528,528,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529, | ||
1150 | 529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,530,530,530,530,530,530,530,530,530,530,530,530,530, | ||
1151 | 530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,530,531,531, | ||
1152 | 531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531,531, | ||
1153 | 531,531,531,531,531,531,531,531,531,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532, | ||
1154 | 532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,532,533,533,533,533,533,533,533,533,533,533,533,533, | ||
1155 | 533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,533,534, | ||
1156 | 534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534,534, | ||
1157 | 534,534,534,534,534,534,534,534,534,534,534,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535, | ||
1158 | 535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,535,536,536,536,536,536,536,536,536,536,536, | ||
1159 | 536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536, | ||
1160 | 536,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537,537, | ||
1161 | 537,537,537,537,537,537,537,537,537,537,537,537,537,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538, | ||
1162 | 538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,539,539,539,539,539,539,539,539, | ||
1163 | 539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539, | ||
1164 | 539,539,539,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,540, | ||
1165 | 540,540,540,540,540,540,540,540,540,540,540,540,540,540,540,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541, | ||
1166 | 541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,542,542,542,542,542,542, | ||
1167 | 542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542,542, | ||
1168 | 542,542,542,542,542,542,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543, | ||
1169 | 543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,543,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544, | ||
1170 | 544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,544,545,545,545, | ||
1171 | 545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545,545, | ||
1172 | 545,545,545,545,545,545,545,545,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546, | ||
1173 | 546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,547,547,547,547,547,547,547,547,547,547,547,547, | ||
1174 | 547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547,547, | ||
1175 | 548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548,548, | ||
1176 | 548,548,548,548,548,548,548,548,548,548,548,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549, | ||
1177 | 549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,549,550,550,550,550,550,550,550,550,550, | ||
1178 | 550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550, | ||
1179 | 550,550,550,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551,551, | ||
1180 | 551,551,551,551,551,551,551,551,551,551,551,551,551,551,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552, | ||
1181 | 552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,553,553,553,553,553,553, | ||
1182 | 553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553,553, | ||
1183 | 553,553,553,553,553,553,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554, | ||
1184 | 554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,554,555,555,555,555,555,555,555,555,555,555,555,555,555,555, | ||
1185 | 555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,555,556,556, | ||
1186 | 556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556,556, | ||
1187 | 556,556,556,556,556,556,556,556,556,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557, | ||
1188 | 557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,557,558,558,558,558,558,558,558,558,558,558,558, | ||
1189 | 558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558,558, | ||
1190 | 558,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559,559, | ||
1191 | 559,559,559,559,559,559,559,559,559,559,559,559,559,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560, | ||
1192 | 560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,560,561,561,561,561,561,561,561, | ||
1193 | 561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561,561, | ||
1194 | 561,561,561,561,561,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562, | ||
1195 | 562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,562,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563, | ||
1196 | 563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,564,564,564, | ||
1197 | 564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564,564, | ||
1198 | 564,564,564,564,564,564,564,564,564,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565, | ||
1199 | 565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,565,566,566,566,566,566,566,566,566,566,566,566, | ||
1200 | 566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566,566, | ||
1201 | 566,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567,567, | ||
1202 | 567,567,567,567,567,567,567,567,567,567,567,567,567,567,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568, | ||
1203 | 568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,568,569,569,569,569,569,569, | ||
1204 | 569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569,569, | ||
1205 | 569,569,569,569,569,569,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570, | ||
1206 | 570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,570,571,571,571,571,571,571,571,571,571,571,571,571,571,571, | ||
1207 | 571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,571,572,572, | ||
1208 | 572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572,572, | ||
1209 | 572,572,572,572,572,572,572,572,572,572,572,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573, | ||
1210 | 573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,573,574,574,574,574,574,574,574,574,574, | ||
1211 | 574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574,574, | ||
1212 | 574,574,574,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575, | ||
1213 | 575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,575,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576, | ||
1214 | 576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,576,577,577,577,577, | ||
1215 | 577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577,577, | ||
1216 | 577,577,577,577,577,577,577,577,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578, | ||
1217 | 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,579,579,579,579,579,579,579,579,579,579,579, | ||
1218 | 579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579,579, | ||
1219 | 579,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580,580, | ||
1220 | 580,580,580,580,580,580,580,580,580,580,580,580,580,580,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581, | ||
1221 | 581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,581,582,582,582,582,582,582, | ||
1222 | 582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582,582, | ||
1223 | 582,582,582,582,582,582,582,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583, | ||
1224 | 583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,583,584,584,584,584,584,584,584,584,584,584,584,584,584, | ||
1225 | 584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584, | ||
1226 | 585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585,585, | ||
1227 | 585,585,585,585,585,585,585,585,585,585,585,585,585,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586, | ||
1228 | 586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,586,587,587,587,587,587,587,587, | ||
1229 | 587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587, | ||
1230 | 587,587,587,587,587,587,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588, | ||
1231 | 588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,588,589,589,589,589,589,589,589,589,589,589,589,589,589, | ||
1232 | 589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,589,590, | ||
1233 | 590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590,590, | ||
1234 | 590,590,590,590,590,590,590,590,590,590,590,590,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591, | ||
1235 | 591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,591,592,592,592,592,592,592,592, | ||
1236 | 592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592,592, | ||
1237 | 592,592,592,592,592,592,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593, | ||
1238 | 593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,593,594,594,594,594,594,594,594,594,594,594,594,594,594,594, | ||
1239 | 594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,594,595, | ||
1240 | 595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595,595, | ||
1241 | 595,595,595,595,595,595,595,595,595,595,595,595,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596, | ||
1242 | 596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,596,597,597,597,597,597,597,597, | ||
1243 | 597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597,597, | ||
1244 | 597,597,597,597,597,597,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598, | ||
1245 | 598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,599,599,599,599,599,599,599,599,599,599,599,599,599, | ||
1246 | 599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599,599, | ||
1247 | 600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600, | ||
1248 | 600,600,600,600,600,600,600,600,600,600,600,600,600,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601, | ||
1249 | 601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,601,602,602,602,602,602,602, | ||
1250 | 602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602,602, | ||
1251 | 602,602,602,602,602,602,602,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603, | ||
1252 | 603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,603,604,604,604,604,604,604,604,604,604,604,604,604, | ||
1253 | 604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604,604, | ||
1254 | 604,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605,605, | ||
1255 | 605,605,605,605,605,605,605,605,605,605,605,605,605,605,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606, | ||
1256 | 606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,607,607,607,607,607, | ||
1257 | 607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607, | ||
1258 | 607,607,607,607,607,607,607,607,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608, | ||
1259 | 608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,608,609,609,609,609,609,609,609,609,609,609,609, | ||
1260 | 609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609,609, | ||
1261 | 609,609,609,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610, | ||
1262 | 610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,610,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611, | ||
1263 | 611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,612,612,612, | ||
1264 | 612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612,612, | ||
1265 | 612,612,612,612,612,612,612,612,612,612,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613, | ||
1266 | 613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,613,614,614,614,614,614,614,614,614, | ||
1267 | 614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614,614, | ||
1268 | 614,614,614,614,614,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615, | ||
1269 | 615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,615,616,616,616,616,616,616,616,616,616,616,616,616,616,616, | ||
1270 | 616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616,616, | ||
1271 | 617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617,617, | ||
1272 | 617,617,617,617,617,617,617,617,617,617,617,617,617,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618, | ||
1273 | 618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,619,619,619,619,619, | ||
1274 | 619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619,619, | ||
1275 | 619,619,619,619,619,619,619,619,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620, | ||
1276 | 620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,620,621,621,621,621,621,621,621,621,621,621, | ||
1277 | 621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621, | ||
1278 | 621,621,621,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622, | ||
1279 | 622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623, | ||
1280 | 623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,624,624, | ||
1281 | 624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624,624, | ||
1282 | 624,624,624,624,624,624,624,624,624,624,624,624,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625, | ||
1283 | 625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,625,626,626,626,626,626,626,626, | ||
1284 | 626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626,626, | ||
1285 | 626,626,626,626,626,626,626,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627, | ||
1286 | 627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,627,628,628,628,628,628,628,628,628,628,628,628, | ||
1287 | 628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628,628, | ||
1288 | 628,628,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629, | ||
1289 | 629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,629,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630, | ||
1290 | 630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,630,631,631, | ||
1291 | 631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631,631, | ||
1292 | 631,631,631,631,631,631,631,631,631,631,631,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632, | ||
1293 | 632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,632,633,633,633,633,633,633,633, | ||
1294 | 633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633,633, | ||
1295 | 633,633,633,633,633,633,633,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634, | ||
1296 | 634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,635,635,635,635,635,635,635,635,635,635,635, | ||
1297 | 635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635,635, | ||
1298 | 635,635,635,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636, | ||
1299 | 636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,636,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637, | ||
1300 | 637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,637,638,638, | ||
1301 | 638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638,638, | ||
1302 | 638,638,638,638,638,638,638,638,638,638,638,638,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639, | ||
1303 | 639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,639,640,640,640,640,640,640, | ||
1304 | 640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640, | ||
1305 | 640,640,640,640,640,640,640,640,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641, | ||
1306 | 641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,642,642,642,642,642,642,642,642,642,642, | ||
1307 | 642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642, | ||
1308 | 642,642,642,642,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643, | ||
1309 | 643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,643,644,644,644,644,644,644,644,644,644,644,644,644,644,644, | ||
1310 | 644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644,644, | ||
1311 | 645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645,645, | ||
1312 | 645,645,645,645,645,645,645,645,645,645,645,645,645,645,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646, | ||
1313 | 646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,646,647,647,647, | ||
1314 | 647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647,647, | ||
1315 | 647,647,647,647,647,647,647,647,647,647,647,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648, | ||
1316 | 648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,648,649,649,649,649,649,649,649, | ||
1317 | 649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649,649, | ||
1318 | 649,649,649,649,649,649,649,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650, | ||
1319 | 650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,650,651,651,651,651,651,651,651,651,651,651,651, | ||
1320 | 651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651,651, | ||
1321 | 651,651,651,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652, | ||
1322 | 652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,652,653,653,653,653,653,653,653,653,653,653,653,653,653,653, | ||
1323 | 653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653,653, | ||
1324 | 654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654,654, | ||
1325 | 654,654,654,654,654,654,654,654,654,654,654,654,654,654,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655, | ||
1326 | 655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,655,656,656,656, | ||
1327 | 656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656, | ||
1328 | 656,656,656,656,656,656,656,656,656,656,656,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657, | ||
1329 | 657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,657,658,658,658,658,658,658,658, | ||
1330 | 658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658,658, | ||
1331 | 658,658,658,658,658,658,658,658,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659, | ||
1332 | 659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,659,660,660,660,660,660,660,660,660,660,660, | ||
1333 | 660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660,660, | ||
1334 | 660,660,660,660,660,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661, | ||
1335 | 661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,661,662,662,662,662,662,662,662,662,662,662,662,662,662, | ||
1336 | 662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662,662, | ||
1337 | 662,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663, | ||
1338 | 663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,663,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664, | ||
1339 | 664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,665, | ||
1340 | 665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665,665, | ||
1341 | 665,665,665,665,665,665,665,665,665,665,665,665,665,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666, | ||
1342 | 666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,666,667,667,667,667, | ||
1343 | 667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667,667, | ||
1344 | 667,667,667,667,667,667,667,667,667,667,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668, | ||
1345 | 668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,668,669,669,669,669,669,669,669, | ||
1346 | 669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669,669, | ||
1347 | 669,669,669,669,669,669,669,669,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670, | ||
1348 | 670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,671,671,671,671,671,671,671,671,671,671, | ||
1349 | 671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671,671, | ||
1350 | 671,671,671,671,671,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672, | ||
1351 | 672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,672,673,673,673,673,673,673,673,673,673,673,673,673, | ||
1352 | 673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673,673, | ||
1353 | 673,673,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674, | ||
1354 | 674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,674,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675, | ||
1355 | 675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675,675, | ||
1356 | 676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,676, | ||
1357 | 676,676,676,676,676,676,676,676,676,676,676,676,676,676,676,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677, | ||
1358 | 677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,678,678, | ||
1359 | 678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678,678, | ||
1360 | 678,678,678,678,678,678,678,678,678,678,678,678,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679, | ||
1361 | 679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,680,680,680,680,680, | ||
1362 | 680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680,680, | ||
1363 | 680,680,680,680,680,680,680,680,680,680,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681, | ||
1364 | 681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,681,682,682,682,682,682,682,682, | ||
1365 | 682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682,682, | ||
1366 | 682,682,682,682,682,682,682,682,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683, | ||
1367 | 683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,683,684,684,684,684,684,684,684,684,684, | ||
1368 | 684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684,684, | ||
1369 | 684,684,684,684,684,684,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685, | ||
1370 | 685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,685,686,686,686,686,686,686,686,686,686,686,686, | ||
1371 | 686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686,686, | ||
1372 | 686,686,686,686,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687, | ||
1373 | 687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,687,688,688,688,688,688,688,688,688,688,688,688,688,688, | ||
1374 | 688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688,688, | ||
1375 | 688,688,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689, | ||
1376 | 689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,689,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690, | ||
1377 | 690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690,690, | ||
1378 | 691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691, | ||
1379 | 691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,691,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692, | ||
1380 | 692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,692,693, | ||
1381 | 693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693,693, | ||
1382 | 693,693,693,693,693,693,693,693,693,693,693,693,693,693,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694, | ||
1383 | 694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,694,695,695,695, | ||
1384 | 695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695,695, | ||
1385 | 695,695,695,695,695,695,695,695,695,695,695,695,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696, | ||
1386 | 696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696,697,697,697,697, | ||
1387 | 697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697,697, | ||
1388 | 697,697,697,697,697,697,697,697,697,697,697,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698, | ||
1389 | 698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,698,699,699,699,699,699,699, | ||
1390 | 699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699, | ||
1391 | 699,699,699,699,699,699,699,699,699,699,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700, | ||
1392 | 700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,700,701,701,701,701,701,701,701, | ||
1393 | 701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701,701, | ||
1394 | 701,701,701,701,701,701,701,701,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702, | ||
1395 | 702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,702,703,703,703,703,703,703,703,703, | ||
1396 | 703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703,703, | ||
1397 | 703,703,703,703,703,703,703,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704, | ||
1398 | 704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,704,705,705,705,705,705,705,705,705,705, | ||
1399 | 705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705, | ||
1400 | 705,705,705,705,705,705,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706, | ||
1401 | 706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,706,707,707,707,707,707,707,707,707,707,707, | ||
1402 | 707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707, | ||
1403 | 707,707,707,707,707,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708, | ||
1404 | 708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,709,709,709,709,709,709,709,709,709,709,709, | ||
1405 | 709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709,709, | ||
1406 | 709,709,709,709,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710, | ||
1407 | 710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,711,711,711,711,711,711,711,711,711,711,711,711, | ||
1408 | 711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711,711, | ||
1409 | 711,711,711,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712, | ||
1410 | 712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,712,713,713,713,713,713,713,713,713,713,713,713,713,713, | ||
1411 | 713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713,713, | ||
1412 | 713,713,713,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714, | ||
1413 | 714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,714,715,715,715,715,715,715,715,715,715,715,715,715,715,715, | ||
1414 | 715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715,715, | ||
1415 | 715,715,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716, | ||
1416 | 716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,717,717,717,717,717,717,717,717,717,717,717,717,717,717, | ||
1417 | 717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717,717, | ||
1418 | 717,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718, | ||
1419 | 718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,718,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719, | ||
1420 | 719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719,719, | ||
1421 | 719,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720, | ||
1422 | 720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721, | ||
1423 | 721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721,721, | ||
1424 | 721,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722, | ||
1425 | 722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,722,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723, | ||
1426 | 723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723,723, | ||
1427 | 724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724, | ||
1428 | 724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,724,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725, | ||
1429 | 725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725,725, | ||
1430 | 726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726, | ||
1431 | 726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,726,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727, | ||
1432 | 727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727,727, | ||
1433 | 728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728, | ||
1434 | 728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,728,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729, | ||
1435 | 729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729,729, | ||
1436 | 730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730, | ||
1437 | 730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,730,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731, | ||
1438 | 731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731,731, | ||
1439 | 732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732, | ||
1440 | 732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,732,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733, | ||
1441 | 733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733,733, | ||
1442 | 734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734, | ||
1443 | 734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,734,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735, | ||
1444 | 735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735,735, | ||
1445 | 735,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, | ||
1446 | 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737, | ||
1447 | 737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737,737, | ||
1448 | 737,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738, | ||
1449 | 738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739, | ||
1450 | 739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739,739, | ||
1451 | 739,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740, | ||
1452 | 740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,740,741,741,741,741,741,741,741,741,741,741,741,741,741,741, | ||
1453 | 741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741,741, | ||
1454 | 741,741,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742, | ||
1455 | 742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,742,743,743,743,743,743,743,743,743,743,743,743,743,743,743, | ||
1456 | 743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743,743, | ||
1457 | 743,743,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744, | ||
1458 | 744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,744,745,745,745,745,745,745,745,745,745,745,745,745,745, | ||
1459 | 745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745,745, | ||
1460 | 745,745,745,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746, | ||
1461 | 746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,746,747,747,747,747,747,747,747,747,747,747,747,747,747, | ||
1462 | 747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747,747, | ||
1463 | 747,747,747,747,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748, | ||
1464 | 748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,748,749,749,749,749,749,749,749,749,749,749,749,749, | ||
1465 | 749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749,749, | ||
1466 | 749,749,749,749,749,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750, | ||
1467 | 750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,750,751,751,751,751,751,751,751,751,751,751,751, | ||
1468 | 751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751,751, | ||
1469 | 751,751,751,751,751,751,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752, | ||
1470 | 752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,752,753,753,753,753,753,753,753,753,753,753, | ||
1471 | 753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753,753, | ||
1472 | 753,753,753,753,753,753,753,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754, | ||
1473 | 754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,754,755,755,755,755,755,755,755,755,755, | ||
1474 | 755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755,755, | ||
1475 | 755,755,755,755,755,755,755,755,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756, | ||
1476 | 756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,756,757,757,757,757,757,757,757,757, | ||
1477 | 757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757,757, | ||
1478 | 757,757,757,757,757,757,757,757,757,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758, | ||
1479 | 758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,758,759,759,759,759,759,759, | ||
1480 | 759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759,759, | ||
1481 | 759,759,759,759,759,759,759,759,759,759,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760, | ||
1482 | 760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,760,761,761,761,761,761, | ||
1483 | 761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761,761, | ||
1484 | 761,761,761,761,761,761,761,761,761,761,761,761,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762, | ||
1485 | 762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,762,763,763,763,763, | ||
1486 | 763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763,763, | ||
1487 | 763,763,763,763,763,763,763,763,763,763,763,763,763,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764, | ||
1488 | 764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,764,765,765, | ||
1489 | 765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,765, | ||
1490 | 765,765,765,765,765,765,765,765,765,765,765,765,765,765,765,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766, | ||
1491 | 766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,766,767, | ||
1492 | 767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767, | ||
1493 | 767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,767,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768, | ||
1494 | 768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768,768, | ||
1495 | 768,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769, | ||
1496 | 769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,769,770,770,770,770,770,770,770,770,770,770,770,770,770,770, | ||
1497 | 770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770,770, | ||
1498 | 770,770,770,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771, | ||
1499 | 771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,771,772,772,772,772,772,772,772,772,772,772,772,772, | ||
1500 | 772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772,772, | ||
1501 | 772,772,772,772,772,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773, | ||
1502 | 773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,773,774,774,774,774,774,774,774,774,774,774, | ||
1503 | 774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774,774, | ||
1504 | 774,774,774,774,774,774,774,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775, | ||
1505 | 775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,775,776,776,776,776,776,776,776,776, | ||
1506 | 776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776,776, | ||
1507 | 776,776,776,776,776,776,776,776,776,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777, | ||
1508 | 777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,777,778,778,778,778,778,778, | ||
1509 | 778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778,778, | ||
1510 | 778,778,778,778,778,778,778,778,778,778,778,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779, | ||
1511 | 779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,779,780,780,780,780, | ||
1512 | 780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780,780, | ||
1513 | 780,780,780,780,780,780,780,780,780,780,780,780,780,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781, | ||
1514 | 781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,781,782,782, | ||
1515 | 782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,782, | ||
1516 | 782,782,782,782,782,782,782,782,782,782,782,782,782,782,782,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783, | ||
1517 | 783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783,783, | ||
1518 | 784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784, | ||
1519 | 784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785, | ||
1520 | 785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785,785, | ||
1521 | 785,785,785,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786, | ||
1522 | 786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,786,787,787,787,787,787,787,787,787,787,787,787,787, | ||
1523 | 787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787,787, | ||
1524 | 787,787,787,787,787,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788, | ||
1525 | 788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,788,789,789,789,789,789,789,789,789,789,789, | ||
1526 | 789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789,789, | ||
1527 | 789,789,789,789,789,789,789,789,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790, | ||
1528 | 790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,790,791,791,791,791,791,791,791, | ||
1529 | 791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791,791, | ||
1530 | 791,791,791,791,791,791,791,791,791,791,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792, | ||
1531 | 792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,792,793,793,793,793, | ||
1532 | 793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793,793, | ||
1533 | 793,793,793,793,793,793,793,793,793,793,793,793,793,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794, | ||
1534 | 794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,794,795,795, | ||
1535 | 795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795, | ||
1536 | 795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,795,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796, | ||
1537 | 796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796,796, | ||
1538 | 796,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797, | ||
1539 | 797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,797,798,798,798,798,798,798,798,798,798,798,798,798,798, | ||
1540 | 798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798,798, | ||
1541 | 798,798,798,798,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799, | ||
1542 | 799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,799,800,800,800,800,800,800,800,800,800,800, | ||
1543 | 800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800,800, | ||
1544 | 800,800,800,800,800,800,800,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801, | ||
1545 | 801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,801,802,802,802,802,802,802,802, | ||
1546 | 802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802,802, | ||
1547 | 802,802,802,802,802,802,802,802,802,802,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803, | ||
1548 | 803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,803,804,804,804,804, | ||
1549 | 804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804,804, | ||
1550 | 804,804,804,804,804,804,804,804,804,804,804,804,804,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805, | ||
1551 | 805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,805,806, | ||
1552 | 806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806, | ||
1553 | 806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,806,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807, | ||
1554 | 807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807,807, | ||
1555 | 807,807,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808, | ||
1556 | 808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,808,809,809,809,809,809,809,809,809,809,809,809,809, | ||
1557 | 809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809,809, | ||
1558 | 809,809,809,809,809,809,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810, | ||
1559 | 810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,810,811,811,811,811,811,811,811,811,811, | ||
1560 | 811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811,811, | ||
1561 | 811,811,811,811,811,811,811,811,811,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812, | ||
1562 | 812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,812,813,813,813,813,813, | ||
1563 | 813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813,813, | ||
1564 | 813,813,813,813,813,813,813,813,813,813,813,813,813,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814, | ||
1565 | 814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,814,815,815, | ||
1566 | 815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815, | ||
1567 | 815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,815,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816, | ||
1568 | 816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816,816, | ||
1569 | 816,816,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817, | ||
1570 | 817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,817,818,818,818,818,818,818,818,818,818,818,818,818, | ||
1571 | 818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818,818, | ||
1572 | 818,818,818,818,818,818,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819, | ||
1573 | 819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,819,820,820,820,820,820,820,820,820, | ||
1574 | 820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820,820, | ||
1575 | 820,820,820,820,820,820,820,820,820,820,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821, | ||
1576 | 821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,821,822,822,822,822, | ||
1577 | 822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822,822, | ||
1578 | 822,822,822,822,822,822,822,822,822,822,822,822,822,822,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823, | ||
1579 | 823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823,823, | ||
1580 | 824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824, | ||
1581 | 824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,825,825,825,825,825,825,825,825,825,825,825,825,825,825, | ||
1582 | 825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825,825, | ||
1583 | 825,825,825,825,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826, | ||
1584 | 826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,826,827,827,827,827,827,827,827,827,827,827, | ||
1585 | 827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827,827, | ||
1586 | 827,827,827,827,827,827,827,827,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828, | ||
1587 | 828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,828,829,829,829,829,829,829, | ||
1588 | 829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829,829, | ||
1589 | 829,829,829,829,829,829,829,829,829,829,829,829,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830, | ||
1590 | 830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,830,831,831, | ||
1591 | 831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831, | ||
1592 | 831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,831,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832, | ||
1593 | 832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832,832, | ||
1594 | 832,832,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833, | ||
1595 | 833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,833,834,834,834,834,834,834,834,834,834,834,834,834, | ||
1596 | 834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834,834, | ||
1597 | 834,834,834,834,834,834,834,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835, | ||
1598 | 835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,835,836,836,836,836,836,836,836, | ||
1599 | 836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836,836, | ||
1600 | 836,836,836,836,836,836,836,836,836,836,836,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837, | ||
1601 | 837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,837,838,838,838, | ||
1602 | 838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838, | ||
1603 | 838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,838,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839, | ||
1604 | 839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839,839, | ||
1605 | 839,839,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840, | ||
1606 | 840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,841,841,841,841,841,841,841,841,841,841,841,841, | ||
1607 | 841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841,841, | ||
1608 | 841,841,841,841,841,841,841,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842, | ||
1609 | 842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,842,843,843,843,843,843,843,843, | ||
1610 | 843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843,843, | ||
1611 | 843,843,843,843,843,843,843,843,843,843,843,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844, | ||
1612 | 844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,844,845,845, | ||
1613 | 845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845, | ||
1614 | 845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,845,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846, | ||
1615 | 846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846, | ||
1616 | 846,846,846,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847, | ||
1617 | 847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,847,848,848,848,848,848,848,848,848,848,848,848, | ||
1618 | 848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848,848, | ||
1619 | 848,848,848,848,848,848,848,848,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849, | ||
1620 | 849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,849,850,850,850,850,850,850, | ||
1621 | 850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850,850, | ||
1622 | 850,850,850,850,850,850,850,850,850,850,850,850,850,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851, | ||
1623 | 851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,852, | ||
1624 | 852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852, | ||
1625 | 852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,852,853,853,853,853,853,853,853,853,853,853,853,853,853,853, | ||
1626 | 853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853,853, | ||
1627 | 853,853,853,853,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854, | ||
1628 | 854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,854,855,855,855,855,855,855,855,855,855, | ||
1629 | 855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855,855, | ||
1630 | 855,855,855,855,855,855,855,855,855,855,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856, | ||
1631 | 856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,856,857,857,857,857, | ||
1632 | 857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,857, | ||
1633 | 857,857,857,857,857,857,857,857,857,857,857,857,857,857,857,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858, | ||
1634 | 858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858,858, | ||
1635 | 858,858,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859, | ||
1636 | 859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,859,860,860,860,860,860,860,860,860,860,860,860,860, | ||
1637 | 860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860,860, | ||
1638 | 860,860,860,860,860,860,860,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861,861 }; | ||
1639 | 838 | ||
1640 | /* forward declarations */ | 839 | /* forward declarations */ |
1641 | void encodeSideInfo( side_info_t si[2][2] ); | 840 | int HuffmanCode( short *ix, int *xr, uint32 begin, uint32 end, int table); |
1642 | void Huffmancodebits( uint16 *ix, int *xr, side_info_t *gi ); | 841 | int HuffmanCod1( short *ix, int *xr, uint32 begin, uint32 end, int table); |
1643 | int HuffmanCode(int table_select, uint16 *ix, int *xr); | ||
1644 | int HuffmanCount1(unsigned tbl, uint16 *ix, int *xr ); | ||
1645 | int new_choose_table( uint16 ix[SAMP_PER_FRAME2], uint32 begin, uint32 end ); | ||
1646 | void putbits(uint32 val, uint32 nbit); | 842 | void putbits(uint32 val, uint32 nbit); |
1647 | int count_bit(uint16 ix[SAMP_PER_FRAME2], uint32 start, uint32 end, uint32 table ); | 843 | int find_best_2( short *ix, uint32 start, uint32 end, const uint32 *table, |
1648 | int bigv_bitcount(uint16 ix[SAMP_PER_FRAME2], side_info_t *gi); | 844 | uint32 len, int *bits); |
1649 | void bigv_tab_select( uint16 ix[SAMP_PER_FRAME2], side_info_t *cod_info ); | 845 | int find_best_3( short *ix, uint32 start, uint32 end, const uint32 *table, |
1650 | void subdivide(side_info_t *cod_info); | 846 | uint32 len, int *bits); |
1651 | void mdct_sub_int(int sb_sample[2][3][18][SBLIMIT], int (*mdct_freq)[2][SAMP_PER_FRAME2]); | 847 | int count_bit1 ( short *ix, uint32 start, uint32 end, int *bits ); |
1652 | void filter_subband(int s[SBLIMIT], int off, int k); | 848 | int count_bigv ( short *ix, uint32 start, uint32 end, int table0, int table1, |
1653 | 849 | int *bits); | |
1654 | void putbits(uint32 val, uint32 nbit) | ||
1655 | { | ||
1656 | int new_bitpos = CodedData.bitpos + nbit; | ||
1657 | int ptrpos = CodedData.bitpos >> 5; | ||
1658 | |||
1659 | val = val & (0xffffffff >> (32 - nbit)); | ||
1660 | |||
1661 | /* data fit in one uint32 */ | ||
1662 | if(((new_bitpos - 1) >> 5) == ptrpos) | ||
1663 | CodedData.bbuf[ptrpos] |= val << ((32 - new_bitpos) & 31); | ||
1664 | else | ||
1665 | { | ||
1666 | CodedData.bbuf[ptrpos ] |= val >> ((new_bitpos - 32) & 31); | ||
1667 | CodedData.bbuf[ptrpos+1] = val << ((32 - new_bitpos) & 31); | ||
1668 | } | ||
1669 | |||
1670 | CodedData.bitpos = new_bitpos; | ||
1671 | } | ||
1672 | |||
1673 | /* This is called after a frame of audio has been quantized and coded. | ||
1674 | It will write the encoded audio to the bitstream. Note that from a | ||
1675 | layer3 encoder's perspective the bit stream is primarily a series | ||
1676 | of main_data() blocks, with header and side information inserted at | ||
1677 | the proper locations to maintain framing. See Figure A.7 in the IS */ | ||
1678 | void format_bitstream( uint16 enc[2][2][SAMP_PER_FRAME2], | ||
1679 | side_info_t side[2][2], int (*xr)[2][SAMP_PER_FRAME2] ) | ||
1680 | { | ||
1681 | int gr, ch; | ||
1682 | |||
1683 | encodeSideInfo( side ); | ||
1684 | 850 | ||
1685 | for(gr=0; gr<2; gr++) | ||
1686 | for(ch=0; ch<cfg.channels; ch++) | ||
1687 | Huffmancodebits( &enc[gr][ch][0], &xr[gr][ch][0], &side[gr][ch] ); | ||
1688 | } | ||
1689 | 851 | ||
1690 | void encodeSideInfo( side_info_t si[2][2] ) | 852 | void encodeSideInfo( side_info_t si[2][2] ) |
1691 | { | 853 | { |
1692 | int gr, ch, header; | 854 | int gr, ch, header; |
855 | uint32 cc=0, sz=0; | ||
1693 | 856 | ||
1694 | header = 0xfff00000; | 857 | header = 0xfff00000; |
1695 | header |= cfg.mpg.type << 19; /* mp3 type: 1 */ | 858 | header |= cfg.mpg.type << 19; /* mp3 type: 1 */ |
1696 | header |= 1 << 17; /* mp3 layer: 1 */ | 859 | header |= 1 << 17; /* mp3 layer: 1 */ |
1697 | header |= 1 << 16; /* mp3 crc: 1 */ | 860 | header |= 1 << 16; /* mp3 crc: 0 */ |
1698 | header |= cfg.mpg.bitrate_index << 12; | 861 | header |= cfg.mpg.bitr_id << 12; |
1699 | header |= cfg.mpg.smprate_index << 10; | 862 | header |= cfg.mpg.smpl_id << 10; |
1700 | header |= cfg.mpg.padding << 9; | 863 | header |= cfg.mpg.padding << 9; |
1701 | header |= cfg.mpg.mode << 6; | 864 | header |= cfg.mpg.mode << 6; |
1702 | header |= 1 << 2; /* mp3 original: 1 */ | 865 | header |= 1 << 2; /* mp3 original: 1 */ |
1703 | |||
1704 | putbits( header, 32 ); | 866 | putbits( header, 32 ); |
1705 | putbits( 0, cfg.channels == 2 ? 20 : 18 ); | ||
1706 | 867 | ||
1707 | for(gr=0; gr<2; gr++) | 868 | if(cfg.mpg.type) |
869 | { /* MPEG1 */ | ||
870 | if(cfg.channels == 2) { putlong( 0, 20); } | ||
871 | else { putlong( 0, 18); } | ||
872 | |||
873 | for(gr=0; gr<cfg.granules; gr++) | ||
874 | for(ch=0; ch<cfg.channels; ch++) | ||
875 | { | ||
876 | side_info_t *gi = &si[gr][ch]; | ||
877 | |||
878 | putlong( gi->part2_3_length, 12 ); | ||
879 | putlong( gi->address3>>1, 9 ); | ||
880 | putlong( gi->global_gain, 8 ); | ||
881 | putlong( gi->table_select[0], 10 ); | ||
882 | putlong( gi->table_select[1], 5 ); | ||
883 | putlong( gi->table_select[2], 5 ); | ||
884 | putlong( gi->region_0_1, 7 ); | ||
885 | putlong( gi->table_select[3], 3 ); | ||
886 | } | ||
887 | } | ||
888 | else | ||
889 | { /* MPEG2 */ | ||
890 | if(cfg.channels == 2) { putlong( 0, 10); } | ||
891 | else { putlong( 0, 9); } | ||
892 | |||
1708 | for(ch=0; ch<cfg.channels; ch++) | 893 | for(ch=0; ch<cfg.channels; ch++) |
1709 | { | 894 | { |
1710 | side_info_t *gi = &si[gr][ch]; | 895 | side_info_t *gi = &si[0][ch]; |
1711 | 896 | ||
1712 | putbits( gi->part2_3_length, 12 ); | 897 | putlong( gi->part2_3_length, 12); |
1713 | putbits( gi->big_values, 9 ); | 898 | putlong( gi->address3>>1, 9); |
1714 | putbits( gi->global_gain, 8 ); | 899 | putlong( gi->global_gain, 8); |
1715 | putbits( gi->table_select[0], 10 ); | 900 | putlong( gi->table_select[0], 15); |
1716 | putbits( gi->table_select[1], 5 ); | 901 | putlong( gi->table_select[1], 5); |
1717 | putbits( gi->table_select[2], 5 ); | 902 | putlong( gi->table_select[2], 5); |
1718 | putbits( gi->region0_count, 4 ); | 903 | putlong( gi->region_0_1, 7); |
1719 | putbits( gi->region1_count, 3 ); | 904 | putlong( gi->table_select[3], 2); |
1720 | putbits( gi->table_select[3], 3 ); | ||
1721 | } | 905 | } |
906 | } | ||
907 | /* flush remaining bits */ | ||
908 | putbits(cc, sz); | ||
1722 | } | 909 | } |
1723 | 910 | ||
1724 | /* Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, | 911 | /* Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, |
1725 | as well as the definitions of the side information on pages 26 and 27. */ | 912 | as well as the definitions of the side information on pages 26 and 27. */ |
1726 | void Huffmancodebits( uint16 *ix, int *xr, side_info_t *gi ) | 913 | void Huffmancodebits( short *ix, int *xr, side_info_t *gi ) |
1727 | { | 914 | { |
1728 | int region1Start; | 915 | int region1 = gi->address1; |
1729 | int region2Start; | 916 | int region2 = gi->address2; |
1730 | int i, bigvalues, count1End; | 917 | int bigvals = gi->address3; |
1731 | int stuffingBits; | 918 | int count1 = bigvals + (gi->count1 << 2); |
1732 | int bitsWritten = 0; | 919 | int stuffBits = 0; |
1733 | uint32 scalefac_index; | 920 | int bits = 0; |
1734 | 921 | ||
1735 | /* 1: Write the bigvalues */ | 922 | if(region1 > 0) |
1736 | bigvalues = gi->big_values << 1; | 923 | bits += HuffmanCode(ix, xr, 0 , region1, gi->table_select[0]); |
1737 | scalefac_index = gi->region0_count + 1; | 924 | |
1738 | region1Start = scalefac[ scalefac_index ]; | 925 | if(region2 > region1) |
1739 | scalefac_index += gi->region1_count + 1; | 926 | bits += HuffmanCode(ix, xr, region1, region2, gi->table_select[1]); |
1740 | region2Start = scalefac[ scalefac_index ]; | 927 | |
1741 | 928 | if(bigvals > region2) | |
1742 | for(i=0; i<region1Start; i+=2) | 929 | bits += HuffmanCode(ix, xr, region2, bigvals, gi->table_select[2]); |
1743 | bitsWritten += HuffmanCode(gi->table_select[0], ix+i, xr+i); | 930 | |
1744 | 931 | if(count1 > bigvals) | |
1745 | for( ; i<region2Start; i+=2) | 932 | bits += HuffmanCod1(ix, xr, bigvals, count1, gi->table_select[3]); |
1746 | bitsWritten += HuffmanCode(gi->table_select[1], ix+i, xr+i); | 933 | |
1747 | 934 | if((stuffBits = gi->part2_3_length - bits) > 0) | |
1748 | for( ; i<bigvalues; i+=2) | ||
1749 | bitsWritten += HuffmanCode(gi->table_select[2], ix+i, xr+i); | ||
1750 | |||
1751 | /* 2: Write count1 area */ | ||
1752 | count1End = bigvalues + (gi->count1 << 2); | ||
1753 | for(i=bigvalues; i<count1End; i+=4) | ||
1754 | bitsWritten += HuffmanCount1(gi->table_select[3], ix+i, xr+i); | ||
1755 | |||
1756 | if((stuffingBits = gi->part2_3_length - bitsWritten) != 0) | ||
1757 | { | 935 | { |
1758 | int stuffingWords = stuffingBits / 32; | 936 | int stuffWords = stuffBits >> 5; |
1759 | int remainingBits = stuffingBits % 32; | 937 | int remainBits = stuffBits & 31; |
1760 | 938 | ||
1761 | if( remainingBits ) | 939 | if( remainBits ) |
1762 | putbits( ~0, remainingBits ); | 940 | putbits( ~0, remainBits ); |
1763 | 941 | ||
1764 | /* Due to the nature of the Huffman code tables, we will pad with ones */ | 942 | while( stuffWords-- ) |
1765 | while( stuffingWords-- ) | 943 | putbits( ~0, 32 ); /* Huffman code tables leed to padding ones */ |
1766 | putbits( ~0, 32 ); | ||
1767 | |||
1768 | bitsWritten += stuffingBits; | ||
1769 | } | 944 | } |
1770 | } | 945 | } |
1771 | 946 | ||
1772 | int HuffmanCount1(unsigned tbl, uint16 *ix, int *xr) | 947 | int HuffmanCod1( short *ix, int *xr, uint32 begin, uint32 end, int tbl) |
1773 | { | 948 | { |
1774 | uint32 dat, p, s; | 949 | uint32 cc=0, sz=0; |
1775 | int len, v, w, x, y; | 950 | uint32 i, d, p; |
1776 | #define signv (xr[0] < 0 ? 1 : 0) | 951 | int sumbit=0, s=0, l=0, v, w, x, y; |
1777 | #define signw (xr[1] < 0 ? 1 : 0) | 952 | #define sgnv (xr[i+0] < 0 ? 1 : 0) |
1778 | #define signx (xr[2] < 0 ? 1 : 0) | 953 | #define sgnw (xr[i+1] < 0 ? 1 : 0) |
1779 | #define signy (xr[3] < 0 ? 1 : 0) | 954 | #define sgnx (xr[i+2] < 0 ? 1 : 0) |
1780 | 955 | #define sgny (xr[i+3] < 0 ? 1 : 0) | |
1781 | v = ix[0]; | 956 | |
1782 | w = ix[1]; | 957 | for(i=begin; i<end; i+=4) |
1783 | x = ix[2]; | ||
1784 | y = ix[3]; | ||
1785 | p = v + (w << 1) + (x << 2) + (y << 3); | ||
1786 | |||
1787 | switch(p) | ||
1788 | { | 958 | { |
1789 | default: len = 0; s = 0; break; | 959 | v = ix[i+0]; |
1790 | case 1: len = 1; s = signv; break; | 960 | w = ix[i+1]; |
1791 | case 2: len = 1; s = signw; break; | 961 | x = ix[i+2]; |
1792 | case 3: len = 2; s = (signv << 1) + signw; break; | 962 | y = ix[i+3]; |
1793 | case 4: len = 1; s = signx; break; | 963 | p = (v << 3) + (w << 2) + (x << 1) + y; |
1794 | case 5: len = 2; s = (signv << 1) + signx; break; | 964 | |
1795 | case 6: len = 2; s = (signw << 1) + signx; break; | 965 | switch(p) |
1796 | case 7: len = 3; s = (signv << 2) + (signw << 1) + signx; break; | 966 | { |
1797 | case 8: len = 1; s = signy; break; | 967 | case 0: l=0; s = 0; break; |
1798 | case 9: len = 2; s = (signv << 1) + signy; break; | 968 | case 1: l=1; s = sgnv; break; |
1799 | case 10: len = 2; s = (signw << 1) + signy; break; | 969 | case 2: l=1; s = sgnw; break; |
1800 | case 11: len = 3; s = (signv << 2) + (signw << 1) + signy; break; | 970 | case 3: l=2; s = (sgnv << 1) + sgnw; break; |
1801 | case 12: len = 2; s = (signx << 1) + signy; break; | 971 | case 4: l=1; s = sgnx; break; |
1802 | case 13: len = 3; s = (signv << 2) + (signx << 1) + signy; break; | 972 | case 5: l=2; s = (sgnv << 1) + sgnx; break; |
1803 | case 14: len = 3; s = (signw << 2) + (signx << 1) + signy; break; | 973 | case 6: l=2; s = (sgnw << 1) + sgnx; break; |
1804 | case 15: len = 4; s = (signv << 3) + (signw << 2) + (signx << 1) + signy; break; | 974 | case 7: l=3; s = (sgnv << 2) + (sgnw << 1) + sgnx; break; |
975 | case 8: l=1; s = sgny; break; | ||
976 | case 9: l=2; s = (sgnv << 1) + sgny; break; | ||
977 | case 10: l=2; s = (sgnw << 1) + sgny; break; | ||
978 | case 11: l=3; s = (sgnv << 2) + (sgnw << 1) + sgny; break; | ||
979 | case 12: l=2; s = (sgnx << 1) + sgny; break; | ||
980 | case 13: l=3; s = (sgnv << 2) + (sgnx << 1) + sgny; break; | ||
981 | case 14: l=3; s = (sgnw << 2) + (sgnx << 1) + sgny; break; | ||
982 | case 15: l=4; s = (sgnv << 3) + (sgnw << 2) + (sgnx << 1) + sgny; break; | ||
983 | } | ||
984 | |||
985 | d = (ht_count[tbl][0][p] << l) + s; | ||
986 | l = ht_count[tbl][1][p]; | ||
987 | putlong( d, l ); | ||
988 | sumbit += l; | ||
1805 | } | 989 | } |
1806 | 990 | ||
1807 | dat = (ht_count1[tbl][0][p] << len) + s; | 991 | /* flush remaining bits */ |
1808 | len = ht_count1[tbl][1][p]; | 992 | putbits(cc, sz); |
1809 | putbits( dat, len ); | ||
1810 | 993 | ||
1811 | return len; | 994 | return sumbit; |
1812 | } | 995 | } |
1813 | 996 | ||
1814 | /* Implements the pseudocode of page 98 of the IS */ | 997 | /* Implements the pseudocode of page 98 of the IS */ |
1815 | int HuffmanCode(int table_select, uint16 *ix, int *xr) | 998 | int HuffmanCode( short *ix, int *xr, uint32 begin, uint32 end, int table) |
1816 | { | 999 | { |
1817 | unsigned int linbitsx, linbitsy, linbits, idx; | 1000 | uint32 cc=0, sz=0, code; |
1818 | const struct huffcodetab *h; | 1001 | uint32 i, xl=0, yl=0, idx; |
1819 | int x, y, bit; | 1002 | int x, y, bit, sumbit=0; |
1820 | uint32 code; | 1003 | #define sign_x (xr[i+0] < 0 ? 1 : 0) |
1821 | #define sign_x (xr[0] < 0 ? 1 : 0) | 1004 | #define sign_y (xr[i+1] < 0 ? 1 : 0) |
1822 | #define sign_y (xr[1] < 0 ? 1 : 0) | ||
1823 | |||
1824 | if(table_select == 0) | ||
1825 | return 0; | ||
1826 | 1005 | ||
1827 | x = ix[0]; | 1006 | if(table == 0) |
1828 | y = ix[1]; | 1007 | return 0; |
1829 | h = &ht[table_select]; | ||
1830 | linbits = h->linbits; | ||
1831 | linbitsx = linbitsy = 0; | ||
1832 | 1008 | ||
1833 | if( table_select > 15 ) | 1009 | if( table > 15 ) |
1834 | { /* ESC-table is used */ | 1010 | { /* ESC-table is used */ |
1835 | if(x > 14) { linbitsx = x - 15; x = 15; } | 1011 | uint32 linbits = ht_big[table-16].linbits; |
1836 | if(y > 14) { linbitsy = y - 15; y = 15; } | 1012 | uint16 *hffcode = table < 24 ? t16HB : t24HB; |
1837 | 1013 | uint8 *hlen = table < 24 ? t16l : t24l; | |
1838 | idx = (x * h->ylen) + y; | ||
1839 | code = h->table[idx]; | ||
1840 | bit = h->hlen [idx]; | ||
1841 | 1014 | ||
1842 | if(x) | 1015 | for(i=begin; i<end; i+=2) |
1843 | { | 1016 | { |
1844 | if(x > 14) | 1017 | x = ix[ i ]; |
1018 | y = ix[i+1]; | ||
1019 | |||
1020 | if(x > 14) { xl = x - 15; x = 15; } | ||
1021 | if(y > 14) { yl = y - 15; y = 15; } | ||
1022 | |||
1023 | idx = x * 16 + y; | ||
1024 | code = hffcode[idx]; | ||
1025 | bit = hlen [idx]; | ||
1026 | |||
1027 | if(x) | ||
1845 | { | 1028 | { |
1846 | code = (code << linbits) | linbitsx; | 1029 | if(x > 14) |
1847 | bit += linbits; | 1030 | { |
1848 | } | 1031 | code = (code << linbits) | xl; |
1032 | bit += linbits; | ||
1033 | } | ||
1849 | 1034 | ||
1850 | code = (code << 1) | sign_x; | 1035 | code = (code << 1) | sign_x; |
1851 | bit += 1; | 1036 | bit += 1; |
1852 | } | 1037 | } |
1853 | 1038 | ||
1854 | if(y) | 1039 | if(y) |
1855 | { | ||
1856 | if(y > 14) | ||
1857 | { | 1040 | { |
1858 | code = (code << linbits) | linbitsy; | 1041 | if(y > 14) |
1859 | bit += linbits; | 1042 | { |
1043 | code = (code << linbits) | yl; | ||
1044 | bit += linbits; | ||
1045 | } | ||
1046 | |||
1047 | code = (code << 1) | sign_y; | ||
1048 | bit += 1; | ||
1860 | } | 1049 | } |
1861 | 1050 | ||
1862 | code = (code << 1) | sign_y; | 1051 | putlong( code, bit ); |
1863 | bit += 1; | 1052 | sumbit += bit; |
1864 | } | 1053 | } |
1865 | } | 1054 | } |
1866 | else | 1055 | else |
1867 | { /* No ESC-words */ | 1056 | { /* No ESC-words */ |
1868 | idx = (x * h->ylen) + y; | 1057 | const struct huffcodetab *h = &ht[table]; |
1869 | code = h->table[idx]; | ||
1870 | bit = h->hlen [idx]; | ||
1871 | 1058 | ||
1872 | if(x) | 1059 | for(i=begin; i<end; i+=2) |
1873 | { | 1060 | { |
1874 | code = (code << 1) | sign_x; | 1061 | x = ix[i]; |
1875 | bit += 1; | 1062 | y = ix[i+1]; |
1876 | } | ||
1877 | 1063 | ||
1878 | if(y) | 1064 | idx = x * h->len + y; |
1879 | { | 1065 | code = h->table[idx]; |
1880 | code = (code << 1) | sign_y; | 1066 | bit = h->hlen [idx]; |
1881 | bit += 1; | 1067 | |
1068 | if(x) | ||
1069 | { | ||
1070 | code = (code << 1) | sign_x; | ||
1071 | bit += 1; | ||
1072 | } | ||
1073 | |||
1074 | if(y) | ||
1075 | { | ||
1076 | code = (code << 1) | sign_y; | ||
1077 | bit += 1; | ||
1078 | } | ||
1079 | |||
1080 | putlong( code, bit ); | ||
1081 | sumbit += bit; | ||
1882 | } | 1082 | } |
1883 | } | 1083 | } |
1884 | 1084 | ||
1885 | putbits( code, bit ); | 1085 | /* flush remaining bits */ |
1886 | 1086 | putbits(cc, sz); | |
1887 | return bit; | 1087 | |
1088 | return sumbit; | ||
1089 | } | ||
1090 | |||
1091 | void putbits(uint32 val, uint32 nbit) | ||
1092 | { | ||
1093 | int new_bitpos = CodedData.bitpos + nbit; | ||
1094 | int ptrpos = CodedData.bitpos >> 5; | ||
1095 | |||
1096 | val = val & (0xffffffff >> (32 - nbit)); | ||
1097 | |||
1098 | /* data fit in one uint32 */ | ||
1099 | if(((new_bitpos - 1) >> 5) == ptrpos) | ||
1100 | CodedData.bbuf[ptrpos] |= val << ((32 - new_bitpos) & 31); | ||
1101 | else | ||
1102 | { | ||
1103 | CodedData.bbuf[ptrpos ] |= val >> ((new_bitpos - 32) & 31); | ||
1104 | CodedData.bbuf[ptrpos+1] |= val << ((32 - new_bitpos) & 31); | ||
1105 | } | ||
1106 | |||
1107 | CodedData.bitpos = new_bitpos; | ||
1888 | } | 1108 | } |
1889 | 1109 | ||
1890 | /***************************************************************************/ | 1110 | /***************************************************************************/ |
@@ -1894,173 +1114,160 @@ int HuffmanCode(int table_select, uint16 *ix, int *xr) | |||
1894 | /* of the Huffman tables as defined in the IS (Table B.7), and will not */ | 1114 | /* of the Huffman tables as defined in the IS (Table B.7), and will not */ |
1895 | /* work with any arbitrary tables. */ | 1115 | /* work with any arbitrary tables. */ |
1896 | /***************************************************************************/ | 1116 | /***************************************************************************/ |
1897 | int new_choose_table( uint16 ix[SAMP_PER_FRAME2], uint32 begin, uint32 end ) | 1117 | int choose_table( short *ix, uint32 begin, uint32 end, int *bits ) |
1898 | { | 1118 | { |
1899 | uint32 i; | 1119 | uint32 i; |
1900 | int max, sum0, sum1, table0, table1; | 1120 | int max, table0, table1; |
1901 | 1121 | ||
1902 | for(i=begin,max=0; i<end; i++) | 1122 | for(i=begin,max=0; i<end; i++) |
1903 | if(ix[i] > max) | 1123 | if(ix[i] > max) |
1904 | max = ix[i]; | 1124 | max = ix[i]; |
1905 | 1125 | ||
1906 | if(!max) | 1126 | if(max < 16) |
1907 | return 0; | ||
1908 | |||
1909 | table0 = 0; | ||
1910 | table1 = 0; | ||
1911 | |||
1912 | if(max <= 15) | ||
1913 | { | 1127 | { |
1914 | /* try tables with no linbits */ | 1128 | /* tables without linbits */ |
1915 | /* indx: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ | 1129 | /* indx: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ |
1916 | /* xlen: 0, 2, 3, 3, 0, 4, 4, 6, 6, 6, 8, 8, 8, 16, 0, 16 */ | 1130 | /* len: 0, 2, 3, 3, 0, 4, 4, 6, 6, 6, 8, 8, 8, 16, 0, 16 */ |
1917 | for(table0=0; table0<14; table0++) | 1131 | switch(max) |
1918 | if(ht[table0].xlen > max) | ||
1919 | break; | ||
1920 | |||
1921 | sum0 = count_bit(ix, begin, end, table0); | ||
1922 | |||
1923 | switch( table0 ) | ||
1924 | { | 1132 | { |
1925 | case 2: sum1 = count_bit( ix, begin, end, 3 ); | 1133 | case 0: return 0; |
1926 | if(sum1 <= sum0) table0 = 3; break; | 1134 | case 1: return count_bit1(ix, begin, end, bits); |
1927 | 1135 | case 2: return 2 + find_best_2(ix, begin, end, tab23, 3, bits); | |
1928 | case 5: sum1 = count_bit( ix, begin, end, 6 ); | 1136 | case 3: return 5 + find_best_2(ix, begin, end, tab56, 4, bits); |
1929 | if(sum1 <= sum0) table0 = 6; break; | 1137 | case 4: |
1930 | 1138 | case 5: return 7 + find_best_3(ix, begin, end, tab789, 6, bits); | |
1931 | case 7: sum1 = count_bit( ix, begin, end, 8 ); | 1139 | case 6: |
1932 | if(sum1 <= sum0) { table0 = 8; sum0 = sum1; } | 1140 | case 7: return 10 + find_best_3(ix, begin, end, tabABC, 8, bits); |
1933 | sum1 = count_bit( ix, begin, end, 9 ); | 1141 | default: return 13 + find_best_2(ix, begin, end, tab1315, 16, bits) * 2; |
1934 | if(sum1 <= sum0) table0 = 9; break; | ||
1935 | |||
1936 | case 10: sum1 = count_bit( ix, begin, end, 11 ); | ||
1937 | if(sum1 <= sum0) { table0 =11; sum0 = sum1; } | ||
1938 | sum1 = count_bit( ix, begin, end, 12); | ||
1939 | if(sum1 <= sum0) table0 = 12; break; | ||
1940 | |||
1941 | case 13: sum1 = count_bit( ix, begin, end, 15 ); | ||
1942 | if(sum1 <= sum0) table0 = 15; break; | ||
1943 | } | 1142 | } |
1944 | } | 1143 | } |
1945 | else | 1144 | else |
1946 | { | 1145 | { |
1947 | /* try tables with linbits */ | 1146 | /* tables with linbits */ |
1948 | max -= 15; | 1147 | max -= 15; |
1949 | 1148 | ||
1950 | /* index : 15 16 17 18 19 20 21 22 23 */ | 1149 | for(table0=0; table0<8; table0++) |
1951 | /* linmax: 0 1 3 7 15 63 255 1023 8191 */ | 1150 | if(ht_big[table0].linmax >= max) |
1952 | for(table0=15; table0<24; table0++) | ||
1953 | if(ht[table0].linmax >= max) | ||
1954 | break; | 1151 | break; |
1955 | 1152 | ||
1956 | /* index : 24 25 26 27 28 29 30 31 */ | 1153 | for(table1=8; table1<16; table1++) |
1957 | /* linmax: 15 31 63 127 255 511 2047 8191 */ | 1154 | if(ht_big[table1].linmax >= max) |
1958 | for(table1=24; table1<32; table1++) | ||
1959 | if(ht[table1].linmax >= max) | ||
1960 | break; | 1155 | break; |
1961 | 1156 | ||
1962 | sum0 = count_bit(ix, begin, end, table0); | 1157 | return 16 + count_bigv(ix, begin, end, table0, table1, bits); |
1963 | sum1 = count_bit(ix, begin, end, table1); | ||
1964 | |||
1965 | if(sum1 < sum0) | ||
1966 | table0 = table1; | ||
1967 | } | 1158 | } |
1968 | return table0; | ||
1969 | } | 1159 | } |
1970 | 1160 | ||
1971 | /*************************************************************************/ | 1161 | int find_best_2(short *ix, uint32 start, uint32 end, const uint32 *table, |
1972 | /* Function: Count the number of bits necessary to code the subregion. */ | 1162 | uint32 len, int *bits) |
1973 | /*************************************************************************/ | ||
1974 | int count_bit(uint16 ix[SAMP_PER_FRAME2], uint32 start, uint32 end, uint32 table) | ||
1975 | { | 1163 | { |
1976 | uint32 i; | 1164 | uint32 i, sum = 0; |
1977 | int sum; | ||
1978 | int x, y; | ||
1979 | unsigned linbits, ylen; | ||
1980 | const struct huffcodetab *h; | ||
1981 | |||
1982 | h = &ht[table]; | ||
1983 | sum = 0; | ||
1984 | ylen = h->ylen; | ||
1985 | |||
1986 | if(table > 15) | ||
1987 | { // ESC-table is used | ||
1988 | linbits = h->linbits; | ||
1989 | for(i=start; i<end; i+=2) | ||
1990 | { | ||
1991 | x = ix[i]; | ||
1992 | y = ix[i+1]; | ||
1993 | 1165 | ||
1994 | if(x) | 1166 | for(i=start; i<end; i+=2) |
1995 | { | 1167 | sum += table[ix[i] * len + ix[i+1]]; |
1996 | if(x > 14) { x = 15; sum += linbits; } | ||
1997 | sum++; | ||
1998 | } | ||
1999 | 1168 | ||
2000 | if(y) | 1169 | if((sum & 0xffff) <= (sum >> 16)) |
2001 | { | 1170 | { |
2002 | if(y > 14) { y = 15; sum += linbits; } | 1171 | *bits = (sum & 0xffff); |
2003 | sum++; | 1172 | return 1; |
2004 | } | ||
2005 | |||
2006 | sum += h->hlen[(x * ylen) + y]; | ||
2007 | } | ||
2008 | } | 1173 | } |
2009 | else | 1174 | else |
2010 | { /* No ESC-words */ | 1175 | { |
2011 | for(i=start; i<end; i+=2) | 1176 | *bits = sum >> 16; |
2012 | { | 1177 | return 0; |
2013 | x = ix[i]; | 1178 | } |
2014 | y = ix[i+1]; | 1179 | } |
2015 | 1180 | ||
2016 | sum += h->hlen[(x * ylen) + y]; | 1181 | int find_best_3(short *ix, uint32 start, uint32 end, const uint32 *table, |
1182 | uint32 len, int *bits) | ||
1183 | { | ||
1184 | uint32 i, j, sum = 0; | ||
1185 | int sum1 = 0; | ||
1186 | int sum2 = 0; | ||
1187 | int sum3 = 0; | ||
2017 | 1188 | ||
2018 | if(x) sum++; | 1189 | /* avoid overflow in packed additions: 78*13 < 1024 */ |
2019 | if(y) sum++; | 1190 | for(i=start; i<end; ) |
2020 | } | 1191 | { |
1192 | j = i + 2*78 > end ? end : i + 2*78; | ||
1193 | |||
1194 | for(sum=0; i<j; i+=2) | ||
1195 | sum += table[ix[i] * len + ix[i+1]]; | ||
1196 | |||
1197 | sum1 += (sum >> 20); | ||
1198 | sum2 += (sum >> 10) & 0x3ff; | ||
1199 | sum3 += (sum >> 0) & 0x3ff; | ||
2021 | } | 1200 | } |
2022 | 1201 | ||
2023 | return sum; | 1202 | i = 0; |
1203 | if(sum1 > sum2) { sum1 = sum2; i = 1; } | ||
1204 | if(sum1 > sum3) { sum1 = sum3; i = 2; } | ||
1205 | |||
1206 | *bits = sum1; | ||
1207 | |||
1208 | return i; | ||
2024 | } | 1209 | } |
2025 | 1210 | ||
2026 | /*************************************************************************/ | 1211 | /*************************************************************************/ |
2027 | /* Function: Quantization of the vector xr ( -> ix) */ | 1212 | /* Function: Count the number of bits necessary to code the subregion. */ |
2028 | /*************************************************************************/ | 1213 | /*************************************************************************/ |
2029 | int quantize_int(int xr[SAMP_PER_FRAME2], uint16 ix[SAMP_PER_FRAME2], side_info_t *cod_info) | 1214 | int count_bit1(short *ix, uint32 start, uint32 end, int *bits ) |
2030 | { | 1215 | { |
2031 | uint32 i, ind, step, frac_pow[] = { 0x80000, 0x6ba28, 0x5a828, 0x4c1c0 }; | 1216 | uint32 i, sum = 0; |
1217 | |||
1218 | for(i=start; i<end; i+=2) | ||
1219 | sum += t1l[4 + ix[i] * 2 + ix[i+1]]; | ||
2032 | 1220 | ||
2033 | step = frac_pow[cod_info->quantizerStepSize & 3] >> cod_info->quantizerStepSize / 4; | 1221 | *bits = sum; |
1222 | |||
1223 | return 1; /* this is table1 */ | ||
1224 | } | ||
2034 | 1225 | ||
2035 | for(i=SAMP_PER_FRAME2; i--; ) | 1226 | int count_bigv(short *ix, uint32 start, uint32 end, int table0, |
1227 | int table1, int *bits ) | ||
1228 | { | ||
1229 | uint32 i, sum0, sum1, sum=0, bigv=0, x, y; | ||
1230 | |||
1231 | /* ESC-table is used */ | ||
1232 | for(i=start; i<end; i+=2) | ||
2036 | { | 1233 | { |
2037 | ind = (abs(xr[i]) * step + 32768) >> 16; | 1234 | x = ix[i]; |
1235 | y = ix[i+1]; | ||
2038 | 1236 | ||
2039 | if(ind < 5000) | 1237 | if(x > 14) { x = 15; bigv++; } |
2040 | ix[i] = int2idx[ind]; | 1238 | if(y > 14) { y = 15; bigv++; } |
2041 | else | 1239 | |
2042 | if(ind < 32768) | 1240 | sum += tab1624[x * 16 + y]; |
2043 | ix[i] = int3idx[ind]; | ||
2044 | else | ||
2045 | return 0; | ||
2046 | } | 1241 | } |
2047 | 1242 | ||
2048 | return 1; | 1243 | sum0 = (sum >> 16) + bigv * ht_big[table0].linbits; |
1244 | sum1 = (sum & 0xffff) + bigv * ht_big[table1].linbits; | ||
1245 | |||
1246 | if(sum0 <= sum1) | ||
1247 | { | ||
1248 | *bits = sum0; | ||
1249 | return table0; | ||
1250 | } | ||
1251 | else | ||
1252 | { | ||
1253 | *bits = sum1; | ||
1254 | return table1; | ||
1255 | } | ||
2049 | } | 1256 | } |
2050 | 1257 | ||
2051 | /*************************************************************************/ | 1258 | /*************************************************************************/ |
2052 | /* Function: Calculation of rzero, count1, big_values */ | 1259 | /* Function: Calculation of rzero, count1, address3 */ |
2053 | /* (Partitions ix into big values, quadruples and zeros). */ | 1260 | /* (Partitions ix into big values, quadruples and zeros). */ |
2054 | /*************************************************************************/ | 1261 | /*************************************************************************/ |
2055 | int calc_runlen( uint16 ix[SAMP_PER_FRAME2], side_info_t *cod_info ) | 1262 | int calc_runlen( short *ix, side_info_t *si ) |
2056 | { | 1263 | { |
2057 | int p, i, sum0 = 0, sum1 = 0; | 1264 | int p, i, sum = 0; |
2058 | 1265 | ||
2059 | for(i=SAMP_PER_FRAME2; i-=2; ) | 1266 | for(i=SAMPL2; i-=2; ) |
2060 | if(ix[i-1] | ix[i-2]) | 1267 | if(*(uint32*)&ix[i-2]) /* !!!! short *ix; !!!!! */ |
2061 | break; | 1268 | break; |
2062 | 1269 | ||
2063 | cod_info->count1 = 0; | 1270 | si->count1 = 0; |
2064 | 1271 | ||
2065 | for( ; i>3; i-=4) | 1272 | for( ; i>3; i-=4) |
2066 | { | 1273 | { |
@@ -2071,668 +1278,766 @@ int calc_runlen( uint16 ix[SAMP_PER_FRAME2], side_info_t *cod_info ) | |||
2071 | 1278 | ||
2072 | if((v | w | x | y) <= 1) | 1279 | if((v | w | x | y) <= 1) |
2073 | { | 1280 | { |
2074 | p = (y) + (x<<1) + (w<<2) + (v<<3); | 1281 | p = (y<<3) + (x<<2) + (w<<1) + (v); |
2075 | 1282 | ||
2076 | sum0 += ht_count1[0][1][p]; /* add table0 hlength */ | 1283 | sum += tab01[p]; |
2077 | sum1 += ht_count1[1][1][p]; /* add table1 hlength */ | ||
2078 | 1284 | ||
2079 | cod_info->count1++; | 1285 | si->count1++; |
2080 | } | 1286 | } |
2081 | else break; | 1287 | else break; |
2082 | } | 1288 | } |
2083 | 1289 | ||
2084 | cod_info->big_values = i >> 1; | 1290 | si->address3 = i; |
2085 | 1291 | ||
2086 | if(sum0 < sum1) | 1292 | if((sum >> 16) < (sum & 0xffff)) |
2087 | { | 1293 | { |
2088 | cod_info->table_select[3] = 0; | 1294 | si->table_select[3] = 0; |
2089 | return sum0; | 1295 | return sum >> 16; |
2090 | } | 1296 | } |
2091 | else | 1297 | else |
2092 | { | 1298 | { |
2093 | cod_info->table_select[3] = 1; | 1299 | si->table_select[3] = 1; |
2094 | return sum1; | 1300 | return sum & 0xffff; |
2095 | } | 1301 | } |
2096 | } | 1302 | } |
2097 | 1303 | ||
1304 | |||
2098 | /*************************************************************************/ | 1305 | /*************************************************************************/ |
2099 | /* presumable subdivides the bigvalue region which will use separate Huffman tables */ | 1306 | /* Function: Quantization of the vector xr ( -> ix) */ |
2100 | /*************************************************************************/ | 1307 | /*************************************************************************/ |
2101 | void subdivide(side_info_t *cod_info) | 1308 | int quantize_int(int *xr, short *ix, side_info_t *si) |
2102 | { | 1309 | { |
2103 | int scfb_anz = 0; | 1310 | int i, s, frac_pow[] = { 0x10000, 0xd745, 0xb505, 0x9838 }; |
2104 | int bigvalues_region; | 1311 | |
2105 | int thiscount, index; | 1312 | s = frac_pow[si->quantStep & 3] >> si->quantStep / 4; |
2106 | 1313 | ||
2107 | if( !cod_info->big_values ) | 1314 | /* check for integer overflow */ |
2108 | { /* no big_values region */ | 1315 | if(((si->max_val + 256) >> 8) * s >= (1622 << 8)) |
2109 | cod_info->region0_count = 0; | 1316 | return 0; |
2110 | cod_info->region1_count = 0; | 1317 | |
2111 | } | 1318 | for(i=SAMPL2; i--; ) |
2112 | else | 1319 | ix[i] = int2idx[(abs(xr[i]) * s + 0x8000) >> 16]; |
2113 | { | 1320 | |
2114 | bigvalues_region = 2 * cod_info->big_values; | 1321 | return 1; |
2115 | |||
2116 | /* Calculate scfb_anz */ | ||
2117 | while( scalefac[scfb_anz] < bigvalues_region ) | ||
2118 | scfb_anz++; | ||
2119 | |||
2120 | cod_info->region0_count = subdv_table[scfb_anz].region0_count; | ||
2121 | thiscount = cod_info->region0_count; | ||
2122 | index = thiscount + 1; | ||
2123 | while(thiscount && (scalefac[index] > bigvalues_region)) | ||
2124 | { | ||
2125 | thiscount--; | ||
2126 | index--; | ||
2127 | } | ||
2128 | cod_info->region0_count = thiscount; | ||
2129 | cod_info->region1_count = subdv_table[scfb_anz].region1_count; | ||
2130 | index = cod_info->region0_count + cod_info->region1_count + 2; | ||
2131 | thiscount = cod_info->region1_count; | ||
2132 | while(thiscount && (scalefac[index] > bigvalues_region)) | ||
2133 | { | ||
2134 | thiscount--; | ||
2135 | index--; | ||
2136 | } | ||
2137 | cod_info->region1_count = thiscount; | ||
2138 | cod_info->address1 = scalefac[cod_info->region0_count+1]; | ||
2139 | cod_info->address2 = scalefac[cod_info->region0_count+cod_info->region1_count+2]; | ||
2140 | cod_info->address3 = bigvalues_region; | ||
2141 | } | ||
2142 | } | 1322 | } |
2143 | 1323 | ||
2144 | /*************************************************************************/ | 1324 | /*************************************************************************/ |
2145 | /* Function: Select huffman code tables for bigvalues regions */ | 1325 | /* subdivides the bigvalue region which will use separate Huffman tables */ |
2146 | /*************************************************************************/ | 1326 | /*************************************************************************/ |
2147 | void bigv_tab_select( uint16 ix[SAMP_PER_FRAME2], side_info_t *cod_info ) | 1327 | void subdivide(side_info_t *si) |
2148 | { | 1328 | { |
2149 | cod_info->table_select[0] = 0; | 1329 | int scfb, count0, count1; |
2150 | cod_info->table_select[1] = 0; | ||
2151 | cod_info->table_select[2] = 0; | ||
2152 | 1330 | ||
2153 | if( cod_info->address1 > 0 ) | 1331 | if( !si->address3 ) |
2154 | cod_info->table_select[0] = new_choose_table(ix, 0 , cod_info->address1); | 1332 | { /* no bigvalue region */ |
2155 | 1333 | si->region_0_1 = 0; | |
2156 | if( cod_info->address2 > cod_info->address1 ) | 1334 | si->address1 = 0; |
2157 | cod_info->table_select[1] = new_choose_table(ix, cod_info->address1, cod_info->address2); | 1335 | si->address2 = 0; |
2158 | 1336 | } | |
2159 | if( cod_info->big_values<<1 > cod_info->address2 ) | 1337 | else |
2160 | cod_info->table_select[2] = new_choose_table(ix, cod_info->address2, cod_info->big_values<<1); | 1338 | { |
1339 | /* Calculate scale factor band index */ | ||
1340 | for(scfb=0; scalefac[scfb] < si->address3; ) | ||
1341 | scfb++; | ||
1342 | |||
1343 | count0 = subdv_table[scfb].region0_cnt; | ||
1344 | count1 = subdv_table[scfb].region1_cnt; | ||
1345 | |||
1346 | si->region_0_1 = (count0 << 3) | count1; | ||
1347 | si->address1 = scalefac[count0 + 1]; | ||
1348 | si->address2 = scalefac[count0 + 1 + count1 + 1]; | ||
1349 | } | ||
2161 | } | 1350 | } |
2162 | 1351 | ||
2163 | /*************************************************************************/ | 1352 | /*******************************************************************/ |
2164 | /* Function: Count the number of bits necessary to code the bigvalues region */ | 1353 | /* Count the number of bits necessary to code the bigvalues region */ |
2165 | /*************************************************************************/ | 1354 | /*******************************************************************/ |
2166 | int bigv_bitcount(uint16 ix[SAMP_PER_FRAME2], side_info_t *gi) | 1355 | int bigv_bitcount(short *ix, side_info_t *gi) |
2167 | { | 1356 | { |
2168 | int bits = 0; | 1357 | int b1=0, b2=0, b3=0; |
2169 | uint32 table; | ||
2170 | 1358 | ||
2171 | if((table=gi->table_select[0])) /* region0 */ | 1359 | /* Select huffman code tables for bigvalues regions */ |
2172 | bits += count_bit(ix, 0 , gi->address1, table); | 1360 | gi->table_select[0] = 0; |
1361 | gi->table_select[1] = 0; | ||
1362 | gi->table_select[2] = 0; | ||
2173 | 1363 | ||
2174 | if((table=gi->table_select[1])) /* region1 */ | 1364 | if( gi->address1 > 0 ) /* region0 */ |
2175 | bits += count_bit(ix, gi->address1, gi->address2, table); | 1365 | gi->table_select[0] = choose_table(ix, 0 , gi->address1, &b1); |
2176 | 1366 | ||
2177 | if((table=gi->table_select[2])) /* region2 */ | 1367 | if( gi->address2 > gi->address1 ) /* region1 */ |
2178 | bits += count_bit(ix, gi->address2, gi->address3, table); | 1368 | gi->table_select[1] = choose_table(ix, gi->address1, gi->address2, &b2); |
2179 | 1369 | ||
2180 | return bits; | 1370 | if( gi->address3 > gi->address2 ) /* region2 */ |
2181 | } | 1371 | gi->table_select[2] = choose_table(ix, gi->address2, gi->address3, &b3); |
2182 | 1372 | ||
2183 | int quantcnt; | 1373 | return b1+b2+b3; |
1374 | } | ||
2184 | 1375 | ||
2185 | /* Speed up the outer_loop code which is called by iteration_loop. | 1376 | int quantize_and_count_bits(int *xr, short *ix, side_info_t *si) |
2186 | The outer_loop function precedes the call to the function inner_loop | ||
2187 | with a call to bin_search gain defined below, | ||
2188 | which returns a good starting quantizerStepSize. */ | ||
2189 | int quantize_and_count_bits(int xr[SAMP_PER_FRAME2], uint16 ix[SAMP_PER_FRAME2], side_info_t *cod_info) | ||
2190 | { | 1377 | { |
2191 | int bits = 10000; | 1378 | int bits = 10000; |
2192 | 1379 | ||
2193 | quantcnt++; | 1380 | if(quantize_int(xr, ix, si)) |
2194 | |||
2195 | if(quantize_int(xr, ix, cod_info)) | ||
2196 | { | 1381 | { |
2197 | bits = calc_runlen(ix, cod_info); /* rzero,count1,big_values*/ | 1382 | bits = calc_runlen(ix, si); /* rzero,count1,address3 */ |
2198 | subdivide(cod_info); /* bigvalues sfb division */ | 1383 | subdivide(si); /* bigvalues sfb division */ |
2199 | bigv_tab_select(ix,cod_info); /* codebook selection*/ | 1384 | bits += bigv_bitcount(ix,si); /* bit count */ |
2200 | bits += bigv_bitcount(ix,cod_info); /* bit count */ | ||
2201 | } | 1385 | } |
2202 | 1386 | ||
2203 | return bits; | 1387 | return bits; |
2204 | } | 1388 | } |
2205 | 1389 | ||
2206 | /******************************************************************************/ | 1390 | /***********************************************************************/ |
2207 | /* The code selects the best quantizerStepSize for a particular set of scalefacs */ | 1391 | /* The code selects the best quantStep for a particular set of scalefacs */ |
2208 | /******************************************************************************/ | 1392 | /***********************************************************************/ |
2209 | int inner_loop_int(int xr[2][2][SAMP_PER_FRAME2], int max_bits, side_info_t *cod_info, int gr, int ch ) | 1393 | int inner_loop(int *xr, int max_bits, side_info_t *si) |
2210 | { | 1394 | { |
2211 | int *xrs; /* int[SAMP_PER_FRAME2] *xr; */ | 1395 | int bits; |
2212 | uint16 *ix; /* int[SAMP_PER_FRAME2] *ix; */ | ||
2213 | int bits; | ||
2214 | 1396 | ||
2215 | xrs = &xr[gr][ch][0]; | 1397 | while((bits=quantize_and_count_bits(xr, enc_data, si)) < max_bits-64) |
2216 | ix = enc_data[gr][ch]; | ||
2217 | |||
2218 | while((bits=quantize_and_count_bits(xrs, ix, cod_info)) < max_bits-64) | ||
2219 | { | 1398 | { |
2220 | if(cod_info->quantizerStepSize == 0) | 1399 | if(si->quantStep == 0) |
2221 | break; | 1400 | break; |
2222 | 1401 | ||
2223 | if(cod_info->quantizerStepSize <= 2) | 1402 | if(si->quantStep <= 2) |
2224 | cod_info->quantizerStepSize = 0; | 1403 | si->quantStep = 0; |
2225 | else | 1404 | else |
2226 | cod_info->quantizerStepSize -= 2; | 1405 | si->quantStep -= 2; |
2227 | } | 1406 | } |
2228 | 1407 | ||
2229 | while(bits > max_bits) | 1408 | while(bits > max_bits) |
2230 | { | 1409 | { |
2231 | cod_info->quantizerStepSize++; | 1410 | si->quantStep++; |
2232 | bits = quantize_and_count_bits(xrs, ix, cod_info); | 1411 | bits = quantize_and_count_bits(xr, enc_data, si); |
2233 | } | 1412 | } |
2234 | 1413 | ||
2235 | return bits; | 1414 | return bits; |
2236 | } | 1415 | } |
2237 | 1416 | ||
2238 | /************************************************************************/ | 1417 | void iteration_loop(int *xr, side_info_t *si, int gr_cnt) |
2239 | /* iteration_loop() */ | ||
2240 | /************************************************************************/ | ||
2241 | void iteration_loop(int mdct_freq_org[2][2][SAMP_PER_FRAME2], side_info_t cod_info[2][2], int mean_bits) | ||
2242 | { | 1418 | { |
2243 | int max_bits; | 1419 | int remain, tar_bits, max_bits = cfg.mean_bits; |
2244 | int ch, gr; | 1420 | |
2245 | int ResvSize = 0; /* Layer3 bit reservoir: Described in C.1.5.4.2.2 of the IS */ | 1421 | /* distribute reserved bits to remaining granules */ |
2246 | 1422 | tar_bits = max_bits + (cfg.ResvSize / gr_cnt & ~7); | |
2247 | for(gr=2; gr--; ) | 1423 | if(tar_bits > max_bits + max_bits/2) |
1424 | tar_bits = max_bits + max_bits/2; | ||
1425 | |||
1426 | si->part2_3_length = inner_loop(xr, tar_bits, si); | ||
1427 | si->global_gain = si->quantStep + 142 - si->additStep; | ||
1428 | |||
1429 | /* unused bits of the reservoir can be used for remaining granules */ | ||
1430 | cfg.ResvSize += max_bits - si->part2_3_length; | ||
1431 | |||
1432 | /* end: distribute the reserved bits to one or two granules */ | ||
1433 | if(gr_cnt == 1) | ||
2248 | { | 1434 | { |
2249 | for(ch=cfg.channels; ch--; ) | 1435 | si->part2_3_length += cfg.ResvSize; |
1436 | /* mp3 format allows max 12bits for granule length */ | ||
1437 | if(si->part2_3_length > 4092) | ||
2250 | { | 1438 | { |
2251 | /* calculation of number of available bit( per granule ) */ | 1439 | remain = (si->part2_3_length - 4092 + 31) >> 5; |
2252 | max_bits = mean_bits / cfg.channels; | 1440 | si->part2_3_length -= remain << 5; |
2253 | 1441 | si[-1].part2_3_length += remain << 5; | |
2254 | cod_info[gr][ch].big_values = 0; | 1442 | |
2255 | cod_info[gr][ch].count1 = 0; | 1443 | while(remain--) |
2256 | cod_info[gr][ch].table_select[0] = 0; | 1444 | putbits(~0, 32); |
2257 | cod_info[gr][ch].table_select[1] = 0; | ||
2258 | cod_info[gr][ch].table_select[2] = 0; | ||
2259 | cod_info[gr][ch].region0_count = 0; | ||
2260 | cod_info[gr][ch].region1_count = 0; | ||
2261 | cod_info[gr][ch].table_select[3] = 0; | ||
2262 | cod_info[gr][ch].part2_3_length = inner_loop_int(mdct_freq_org, max_bits, &cod_info[gr][ch], gr, ch); | ||
2263 | cod_info[gr][ch].global_gain = cod_info[gr][ch].quantizerStepSize + 210 - 0x40; | ||
2264 | |||
2265 | /* Readjusts the size of the reservoir to reflect the granule's usage */ | ||
2266 | ResvSize += max_bits - cod_info[gr][ch].part2_3_length; | ||
2267 | } | 1445 | } |
2268 | } | 1446 | } |
2269 | |||
2270 | /* Makes sure that the reservoir size is within limits, possibly by adding | ||
2271 | stuffing bits. Note that stuffing bits are added by increasing a granule's | ||
2272 | part2_3_length */ | ||
2273 | cod_info[0][0].part2_3_length += ResvSize; | ||
2274 | } | 1447 | } |
2275 | 1448 | ||
2276 | /*-------------------------------------------------------------------*/ | ||
2277 | /* Function: Calculation of the MDCT */ | ||
2278 | /* In the case of long blocks ( block_type 0,1,3 ) there are */ | ||
2279 | /* 36 coefficents in the time domain and 18 in the frequency */ | ||
2280 | /* domain. */ | ||
2281 | /*-------------------------------------------------------------------*/ | ||
2282 | 1449 | ||
2283 | /* TODO: This MDCT implementation is very crude, and should be replaced by | 1450 | /* returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32 */ |
2284 | a completely different algorithm. */ | 1451 | void window_subband1(short *wk, int sb0[SBLIMIT], int sb1[SBLIMIT]) ICODE_ATTR; |
2285 | void mdct_int( int *in, int *out ) | 1452 | void window_subband1(short *wk, int sb0[SBLIMIT], int sb1[SBLIMIT]) |
2286 | { | 1453 | { |
2287 | int m, tmp=0; | 1454 | int k, i, u, v; |
2288 | 1455 | short *wp, *x1, *x2; | |
2289 | for(m=18; m--; ) | 1456 | |
2290 | { | ||
2291 | #ifdef CPU_COLDFIRE | 1457 | #ifdef CPU_COLDFIRE |
2292 | { int *wint = win_int[m]; | 1458 | int s0, s1, t0, t1; |
2293 | int *indat = in; | 1459 | |
1460 | for(k=0; k<18; k++, wk+=64, sb0+=SBLIMIT, sb1+=SBLIMIT) | ||
1461 | { | ||
1462 | wp = enwindow; | ||
1463 | x1 = wk; | ||
1464 | x2 = x1 - 124; | ||
2294 | 1465 | ||
1466 | for(i=-15; i<0; i++) | ||
1467 | { | ||
2295 | asm volatile( | 1468 | asm volatile( |
2296 | "movem.l (%[indat]), %%d0-%%d7\n" | 1469 | "move.l (-224*4,%[x2]), %%d4\n" /* d4 = x2[-224] */ |
2297 | "move.l (%[wint])+, %%a5\n" | 1470 | "movem.l (%[wp]), %%d0-%%d3\n" /* load 8 values */ |
2298 | "mac.l %%d0, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1471 | "mac.w %%d0u, %%d4u, %%acc0\n" |
2299 | "mac.l %%d1, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1472 | "mac.w %%d0u, %%d4l, (-160*4,%[x2]), %%d4, %%acc1\n" |
2300 | "mac.l %%d2, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1473 | "mac.w %%d0l, %%d4u, %%acc0\n" |
2301 | "mac.l %%d3, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1474 | "mac.w %%d0l, %%d4l, ( -96*4,%[x2]), %%d4, %%acc1\n" |
2302 | "mac.l %%d4, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1475 | "mac.w %%d1u, %%d4u, %%acc0\n" |
2303 | "mac.l %%d5, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1476 | "mac.w %%d1u, %%d4l, ( -32*4,%[x2]), %%d4, %%acc1\n" |
2304 | "mac.l %%d6, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1477 | "mac.w %%d1l, %%d4u, %%acc0\n" |
2305 | "mac.l %%d7, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1478 | "mac.w %%d1l, %%d4l, ( 32*4,%[x2]), %%d4, %%acc1\n" |
2306 | "movem.l (32,%[indat]), %%d0-%%d7\n" | 1479 | "mac.w %%d2u, %%d4u, %%acc0\n" |
2307 | "mac.l %%d0, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1480 | "mac.w %%d2u, %%d4l, ( 96*4,%[x2]), %%d4, %%acc1\n" |
2308 | "mac.l %%d1, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1481 | "mac.w %%d2l, %%d4u, %%acc0\n" |
2309 | "mac.l %%d2, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1482 | "mac.w %%d2l, %%d4l, ( 160*4,%[x2]), %%d4, %%acc1\n" |
2310 | "mac.l %%d3, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1483 | "mac.w %%d3u, %%d4u, %%acc0\n" |
2311 | "mac.l %%d4, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1484 | "mac.w %%d3u, %%d4l, ( 224*4,%[x2]), %%d4, %%acc1\n" |
2312 | "mac.l %%d5, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1485 | "mac.w %%d3l, %%d4u, %%acc0\n" |
2313 | "mac.l %%d6, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1486 | "mac.w %%d3l, %%d4l, (-256*4,%[x1]), %%d4, %%acc1\n" |
2314 | "mac.l %%d7, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1487 | "movem.l (16,%[wp]), %%d0-%%d3\n" /* load 8 values */ |
2315 | "movem.l (64,%[indat]), %%d0-%%d7\n" | 1488 | "mac.w %%d0u, %%d4u, %%acc0\n" |
2316 | "mac.l %%d0, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1489 | "mac.w %%d0u, %%d4l, (-192*4,%[x1]), %%d4, %%acc1\n" |
2317 | "mac.l %%d1, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1490 | "mac.w %%d0l, %%d4u, %%acc0\n" |
2318 | "mac.l %%d2, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1491 | "mac.w %%d0l, %%d4l, (-128*4,%[x1]), %%d4, %%acc1\n" |
2319 | "mac.l %%d3, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1492 | "mac.w %%d1u, %%d4u, %%acc0\n" |
2320 | "mac.l %%d4, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1493 | "mac.w %%d1u, %%d4l, ( -64*4,%[x1]), %%d4, %%acc1\n" |
2321 | "mac.l %%d5, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1494 | "mac.w %%d1l, %%d4u, %%acc0\n" |
2322 | "mac.l %%d6, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1495 | "mac.w %%d1l, %%d4l, ( 0*4,%[x1]), %%d4, %%acc1\n" |
2323 | "mac.l %%d7, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1496 | "mac.w %%d2u, %%d4u, %%acc0\n" |
2324 | "movem.l (96,%[indat]), %%d0-%%d7\n" | 1497 | "mac.w %%d2u, %%d4l, ( 64*4,%[x1]), %%d4, %%acc1\n" |
2325 | "mac.l %%d0, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1498 | "mac.w %%d2l, %%d4u, %%acc0\n" |
2326 | "mac.l %%d1, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1499 | "mac.w %%d2l, %%d4l, ( 128*4,%[x1]), %%d4, %%acc1\n" |
2327 | "mac.l %%d2, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1500 | "mac.w %%d3u, %%d4u, %%acc0\n" |
2328 | "mac.l %%d3, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1501 | "mac.w %%d3u, %%d4l, ( 192*4,%[x1]), %%d4, %%acc1\n" |
2329 | "mac.l %%d4, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1502 | "mac.w %%d3l, %%d4u, %%acc0\n" |
2330 | "mac.l %%d5, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1503 | "mac.w %%d3l, %%d4l, ( 224*4,%[x1]), %%d4, %%acc1\n" |
2331 | "mac.l %%d6, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1504 | "movclr.l %%acc0, %%d0\n" |
2332 | "mac.l %%d7, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1505 | "move.l %%d0, %[s0]\n" |
2333 | "movem.l (128,%[indat]), %%d0-%%d3\n" | 1506 | "movclr.l %%acc1, %%d0\n" |
2334 | "mac.l %%d0, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1507 | "move.l %%d0, %[s1]\n" |
2335 | "mac.l %%d1, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1508 | |
2336 | "mac.l %%d2, %%a5, (%[wint])+, %%a5, %%acc0\n" | 1509 | "movem.l (%[wp]), %%d0-%%d3\n" /* load 8 values */ |
2337 | "mac.l %%d3, %%a5, %%acc0\n" | 1510 | "mac.w %%d0u, %%d4u, %%acc0\n" |
2338 | "movclr.l %%acc0, %[tmp]" | 1511 | "mac.w %%d0u, %%d4l, ( 160*4,%[x1]), %%d4, %%acc1\n" |
2339 | : [wint] "+a" (wint), [tmp] "+r" (tmp) : [indat] "a" (indat) | 1512 | "mac.w %%d0l, %%d4u, %%acc0\n" |
2340 | : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a5"); | 1513 | "mac.w %%d0l, %%d4l, ( 96*4,%[x1]), %%d4, %%acc1\n" |
1514 | "mac.w %%d1u, %%d4u, %%acc0\n" | ||
1515 | "mac.w %%d1u, %%d4l, ( 32*4,%[x1]), %%d4, %%acc1\n" | ||
1516 | "mac.w %%d1l, %%d4u, %%acc0\n" | ||
1517 | "mac.w %%d1l, %%d4l, ( -32*4,%[x1]), %%d4, %%acc1\n" | ||
1518 | "mac.w %%d2u, %%d4u, %%acc0\n" | ||
1519 | "mac.w %%d2u, %%d4l, ( -96*4,%[x1]), %%d4, %%acc1\n" | ||
1520 | "mac.w %%d2l, %%d4u, %%acc0\n" | ||
1521 | "mac.w %%d2l, %%d4l, (-160*4,%[x1]), %%d4, %%acc1\n" | ||
1522 | "mac.w %%d3u, %%d4u, %%acc0\n" | ||
1523 | "mac.w %%d3u, %%d4l, (-224*4,%[x1]), %%d4, %%acc1\n" | ||
1524 | "mac.w %%d3l, %%d4u, %%acc0\n" | ||
1525 | "mac.w %%d3l, %%d4l, ( 256*4,%[x2]), %%d4, %%acc1\n" | ||
1526 | "movem.l (32,%[wp]), %%d0-%%d3\n" /* load 8 values */ | ||
1527 | "mac.w %%d0u, %%d4u, %%acc0\n" | ||
1528 | "mac.w %%d0u, %%d4l, ( 192*4,%[x2]), %%d4, %%acc1\n" | ||
1529 | "mac.w %%d0l, %%d4u, %%acc0\n" | ||
1530 | "mac.w %%d0l, %%d4l, ( 128*4,%[x2]), %%d4, %%acc1\n" | ||
1531 | "mac.w %%d1u, %%d4u, %%acc0\n" | ||
1532 | "mac.w %%d1u, %%d4l, ( 64*4,%[x2]), %%d4, %%acc1\n" | ||
1533 | "mac.w %%d1l, %%d4u, %%acc0\n" | ||
1534 | "mac.w %%d1l, %%d4l, ( 0*4,%[x2]), %%d4, %%acc1\n" | ||
1535 | "mac.w %%d2u, %%d4u, %%acc0\n" | ||
1536 | "mac.w %%d2u, %%d4l, ( -64*4,%[x2]), %%d4, %%acc1\n" | ||
1537 | "mac.w %%d2l, %%d4u, %%acc0\n" | ||
1538 | "mac.w %%d2l, %%d4l, (-128*4,%[x2]), %%d4, %%acc1\n" | ||
1539 | "mac.w %%d3u, %%d4u, %%acc0\n" | ||
1540 | "mac.w %%d3u, %%d4l, (-192*4,%[x2]), %%d4, %%acc1\n" | ||
1541 | "mac.w %%d3l, %%d4u, %%acc0\n" | ||
1542 | "mac.w %%d3l, %%d4l, %%acc1\n" | ||
1543 | "movclr.l %%acc0, %%d0\n" | ||
1544 | "move.l %%d0, %[t0]\n" | ||
1545 | "movclr.l %%acc1, %%d0\n" | ||
1546 | "move.l %%d0, %[t1]\n" | ||
1547 | |||
1548 | : [x1] "+a" (x1), [x2] "+a" (x2), [s0] "+m" (s0), [t0] "+m" (t0), | ||
1549 | [s1] "+m" (s1), [t1] "+m" (t1) | ||
1550 | : [wp] "a" (wp) : "d0", "d1", "d2", "d3", "d4"); | ||
1551 | |||
1552 | sb0[30+i*2] = shft4(t0) + shft13(s0) * wp[24]; | ||
1553 | sb0[31+i*2] = shft13(t0) * wp[25] - shft13(s0) * wp[26]; | ||
1554 | sb1[30+i*2] = shft4(t1) + shft13(s1) * wp[24]; | ||
1555 | sb1[31+i*2] = shft13(t1) * wp[25] - shft13(s1) * wp[26]; | ||
1556 | wp += 27; | ||
1557 | x1 -= 2; | ||
1558 | x2 += 2; | ||
2341 | } | 1559 | } |
2342 | #else | ||
2343 | int k; | ||
2344 | for(k=36,tmp=0; k--; ) | ||
2345 | tmp += in[k] * win_int[m][k]; | ||
2346 | #endif | ||
2347 | out[m] = (tmp + 16384) >> 15; | ||
2348 | } | ||
2349 | } | ||
2350 | 1560 | ||
1561 | asm volatile( | ||
1562 | "move.l ( -32*4,%[x1]), %%d4\n" /* d4 = x1[-32] */ | ||
1563 | "movem.l (%[wp]), %%d0-%%d3\n" /* load 8 values */ | ||
1564 | |||
1565 | "mac.w %%d0u, %%d4u, %%acc0\n" | ||
1566 | "mac.w %%d0u, %%d4l, ( -96*4,%[x1]), %%d4, %%acc1\n" | ||
1567 | "mac.w %%d0l, %%d4u, %%acc0\n" | ||
1568 | "mac.w %%d0l, %%d4l, (-160*4,%[x1]), %%d4, %%acc1\n" | ||
1569 | "mac.w %%d1u, %%d4u, %%acc0\n" | ||
1570 | "mac.w %%d1u, %%d4l, (-224*4,%[x1]), %%d4, %%acc1\n" | ||
1571 | "mac.w %%d1l, %%d4u, %%acc0\n" | ||
1572 | "mac.w %%d1l, %%d4l, ( 32*4,%[x1]), %%d4, %%acc1\n" | ||
1573 | "mac.w %%d2u, %%d4u, %%acc0\n" | ||
1574 | "mac.w %%d2u, %%d4l, ( 96*4,%[x1]), %%d4, %%acc1\n" | ||
1575 | "mac.w %%d2l, %%d4u, %%acc0\n" | ||
1576 | "mac.w %%d2l, %%d4l, ( 160*4,%[x1]), %%d4, %%acc1\n" | ||
1577 | "mac.w %%d3u, %%d4u, %%acc0\n" | ||
1578 | "mac.w %%d3u, %%d4l, ( 224*4,%[x1]), %%d4, %%acc1\n" | ||
1579 | "mac.w %%d3l, %%d4u, %%acc0\n" | ||
1580 | "mac.w %%d3l, %%d4l, ( -16*4,%[x1]), %%d4, %%acc1\n" | ||
1581 | "movclr.l %%acc0, %%d0\n" | ||
1582 | "move.l %%d0, %[s0]\n" | ||
1583 | "movclr.l %%acc1, %%d0\n" | ||
1584 | "move.l %%d0, %[s1]\n" | ||
1585 | |||
1586 | "movem.l (16,%[wp]), %%d0-%%d3\n" /* load 8 values */ | ||
1587 | "mac.w %%d0u, %%d4u, %%acc0\n" | ||
1588 | "mac.w %%d0u, %%d4l, ( -48*4,%[x1]), %%d4, %%acc1\n" | ||
1589 | "mac.w %%d1u, %%d4u, %%acc0\n" | ||
1590 | "mac.w %%d1u, %%d4l, ( 16*4,%[x1]), %%d4, %%acc1\n" | ||
1591 | "mac.w %%d1l, %%d4u, %%acc0\n" | ||
1592 | "mac.w %%d1l, %%d4l, ( -80*4,%[x1]), %%d4, %%acc1\n" | ||
1593 | "mac.w %%d2u, %%d4u, %%acc0\n" | ||
1594 | "mac.w %%d2u, %%d4l, ( 48*4,%[x1]), %%d4, %%acc1\n" | ||
1595 | "mac.w %%d2u, %%d4u, %%acc0\n" | ||
1596 | "mac.w %%d2u, %%d4l, (-112*4,%[x1]), %%d4, %%acc1\n" | ||
1597 | "mac.w %%d3u, %%d4u, %%acc0\n" | ||
1598 | "mac.w %%d3u, %%d4l, ( 80*4,%[x1]), %%d4, %%acc1\n" | ||
1599 | "mac.w %%d3l, %%d4u, %%acc0\n" | ||
1600 | "mac.w %%d3l, %%d4l, (-144*4,%[x1]), %%d4, %%acc1\n" | ||
1601 | "movem.l (32,%[wp]), %%d0-%%d3\n" /* load 8 values */ | ||
1602 | "mac.w %%d0u, %%d4u, %%acc0\n" | ||
1603 | "mac.w %%d0u, %%d4l, ( 112*4,%[x1]), %%d4, %%acc1\n" | ||
1604 | "mac.w %%d0u, %%d4u, %%acc0\n" | ||
1605 | "mac.w %%d0u, %%d4l, (-176*4,%[x1]), %%d4, %%acc1\n" | ||
1606 | "mac.w %%d1u, %%d4u, %%acc0\n" | ||
1607 | "mac.w %%d1u, %%d4l, ( 144*4,%[x1]), %%d4, %%acc1\n" | ||
1608 | "mac.w %%d1l, %%d4u, %%acc0\n" | ||
1609 | "mac.w %%d1l, %%d4l, (-208*4,%[x1]), %%d4, %%acc1\n" | ||
1610 | "mac.w %%d2u, %%d4u, %%acc0\n" | ||
1611 | "mac.w %%d2u, %%d4l, ( 176*4,%[x1]), %%d4, %%acc1\n" | ||
1612 | "mac.w %%d2u, %%d4u, %%acc0\n" | ||
1613 | "mac.w %%d2u, %%d4l, (-240*4,%[x1]), %%d4, %%acc1\n" | ||
1614 | "mac.w %%d3u, %%d4u, %%acc0\n" | ||
1615 | "mac.w %%d3u, %%d4l, ( 208*4,%[x1]), %%d4, %%acc1\n" | ||
1616 | "mac.w %%d3l, %%d4u, %%acc0\n" | ||
1617 | "mac.w %%d3l, %%d4l, %%acc1\n" | ||
1618 | "movclr.l %%acc0, %%d0\n" | ||
1619 | "move.l %%d0, %[t0]\n" | ||
1620 | "movclr.l %%acc1, %%d0\n" | ||
1621 | "move.l %%d0, %[t1]\n" | ||
1622 | |||
1623 | : [x1] "+a" (x1), [s0] "+m" (s0), [t0] "+m" (t0), | ||
1624 | [s1] "+m" (s1), [t1] "+m" (t1) | ||
1625 | : [wp] "a" (wp) : "d0", "d1", "d2", "d3", "d4"); | ||
1626 | |||
1627 | u = shft4(s0 - t0); | ||
1628 | v = shft4(s0 + t0); | ||
1629 | t0 = sb0[14]; | ||
1630 | s0 = sb0[15] - t0; | ||
1631 | |||
1632 | sb0[31] = v + t0; /* A0 */ | ||
1633 | sb0[30] = u + s0; /* A1 */ | ||
1634 | sb0[15] = u - s0; /* A2 */ | ||
1635 | sb0[14] = v - t0; /* A3 */ | ||
1636 | |||
1637 | u = shft4(s1 - t1); | ||
1638 | v = shft4(s1 + t1); | ||
1639 | t1 = sb1[14]; | ||
1640 | s1 = sb1[15] - t1; | ||
1641 | |||
1642 | sb1[31] = v + t1; /* A0 */ | ||
1643 | sb1[30] = u + s1; /* A1 */ | ||
1644 | sb1[15] = u - s1; /* A2 */ | ||
1645 | sb1[14] = v - t1; /* A3 */ | ||
1646 | } | ||
1647 | #else | ||
1648 | int ch, s, t, *a; | ||
2351 | 1649 | ||
2352 | void mdct_sub_int(int sb_sample[2][3][18][SBLIMIT], int (*mdct_freq)[2][SAMP_PER_FRAME2]) | 1650 | for(ch=0; ch<cfg.channels; ch++) |
2353 | { | 1651 | { |
2354 | int (*mdct_enc)[2][32][18] = (int (*)[2][32][18]) mdct_freq; | 1652 | a = ch ? sb1 : sb0; |
2355 | int ch, gr, band, k, bu, bd; | 1653 | for(k=0; k<18; k++, wk+=64, a+=SBLIMIT) |
2356 | |||
2357 | for(gr=0; gr<2; gr++) | ||
2358 | for(ch=cfg.channels; ch--; ) | ||
2359 | { | 1654 | { |
2360 | /* 576=4*16*9: Compensate for inversion in the analysis filter */ | 1655 | wp = enwindow; |
2361 | for(band=33; (band-=2)>0; ) | 1656 | x1 = wk; |
2362 | for(k=19; (k-=2)>0; ) | 1657 | x2 = x1 - 124; |
2363 | sb_sample[ch][gr+1][k][band] = -sb_sample[ch][gr+1][k][band]; | ||
2364 | 1658 | ||
2365 | /* 82944=4*32*648: Perform imdct of 18 previous subband samples + 18 current subband samples */ | 1659 | /* x1[-572] .... x1[448] = 1022 */ |
2366 | for(band=32; band--; ) | 1660 | /* 18*4*16*32 */ |
1661 | for(i=-15; i<0; i++) | ||
2367 | { | 1662 | { |
2368 | for(k=18; k--; ) | 1663 | s = (int)x2[-224*2] * wp[ 0]; t = (int)x1[ 224*2] * wp[ 0]; |
2369 | { | 1664 | s += (int)x2[-160*2] * wp[ 1]; t += (int)x1[ 160*2] * wp[ 1]; |
2370 | mdct_in[k] = sb_sample[ch][ gr ][k][band]; | 1665 | s += (int)x2[- 96*2] * wp[ 2]; t += (int)x1[ 96*2] * wp[ 2]; |
2371 | mdct_in[k+18] = sb_sample[ch][gr+1][k][band]; | 1666 | s += (int)x2[- 32*2] * wp[ 3]; t += (int)x1[ 32*2] * wp[ 3]; |
2372 | } | 1667 | s += (int)x2[ 32*2] * wp[ 4]; t += (int)x1[- 32*2] * wp[ 4]; |
2373 | 1668 | s += (int)x2[ 96*2] * wp[ 5]; t += (int)x1[- 96*2] * wp[ 5]; | |
2374 | mdct_int(mdct_in, &mdct_enc[gr][ch][band][0]); | 1669 | s += (int)x2[ 160*2] * wp[ 6]; t += (int)x1[-160*2] * wp[ 6]; |
1670 | s += (int)x2[ 224*2] * wp[ 7]; t += (int)x1[-224*2] * wp[ 7]; | ||
1671 | s += (int)x1[-256*2] * wp[ 8]; t += (int)x2[ 256*2] * wp[16]; | ||
1672 | s += (int)x1[-192*2] * wp[ 9]; t += (int)x2[ 192*2] * wp[17]; | ||
1673 | s += (int)x1[-128*2] * wp[10]; t += (int)x2[ 128*2] * wp[18]; | ||
1674 | s += (int)x1[- 64*2] * wp[11]; t += (int)x2[ 64*2] * wp[19]; | ||
1675 | s += (int)x1[ 0*2] * wp[12]; t += (int)x2[ 0*2] * wp[20]; | ||
1676 | s += (int)x1[ 64*2] * wp[13]; t += (int)x2[- 64*2] * wp[21]; | ||
1677 | s += (int)x1[ 128*2] * wp[14]; t += (int)x2[-128*2] * wp[22]; | ||
1678 | s += (int)x1[ 192*2] * wp[15]; t += (int)x2[-192*2] * wp[23]; | ||
1679 | |||
1680 | a[30+i*2] = shft4(t) + shft13(s) * wp[24]; | ||
1681 | a[31+i*2] = shft13(t) * wp[25] - shft13(s) * wp[26]; | ||
1682 | wp += 27; | ||
1683 | x1 -= 2; | ||
1684 | x2 += 2; | ||
2375 | } | 1685 | } |
2376 | 1686 | ||
2377 | /* 1024=4*256: Perform aliasing reduction butterfly*/ | 1687 | t = (int)x1[- 16*2] * wp[ 8]; s = (int)x1[ -32*2] * wp[0]; |
2378 | for(band=31; band--; ) | 1688 | t += ((int)x1[- 48*2]-x1[ 16*2]) * wp[10]; s += (int)x1[ -96*2] * wp[1]; |
2379 | for(k=8; k--; ) | 1689 | t += ((int)x1[- 80*2]+x1[ 48*2]) * wp[12]; s += (int)x1[-160*2] * wp[2]; |
2380 | { | 1690 | t += ((int)x1[-112*2]-x1[ 80*2]) * wp[14]; s += (int)x1[-224*2] * wp[3]; |
2381 | bu = mdct_enc[gr][ch][band][17-k] * cs_int[k] + mdct_enc[gr][ch][band+1][k] * ca_int[k]; | 1691 | t += ((int)x1[-144*2]+x1[112*2]) * wp[16]; s += (int)x1[ 32*2] * wp[4]; |
2382 | bd = mdct_enc[gr][ch][band+1][k] * cs_int[k] - mdct_enc[gr][ch][band][17-k] * ca_int[k]; | 1692 | t += ((int)x1[-176*2]-x1[144*2]) * wp[18]; s += (int)x1[ 96*2] * wp[5]; |
2383 | mdct_enc[gr][ch][band][17-k] = (bu + 16384) >> 15; | 1693 | t += ((int)x1[-208*2]+x1[176*2]) * wp[20]; s += (int)x1[ 160*2] * wp[6]; |
2384 | mdct_enc[gr][ch][band+1][k] = (bd + 16384) >> 15; | 1694 | t += ((int)x1[-240*2]-x1[208*2]) * wp[22]; s += (int)x1[ 224*2] * wp[7]; |
2385 | } | 1695 | |
1696 | u = shft4(s - t); | ||
1697 | v = shft4(s + t); | ||
1698 | t = a[14]; | ||
1699 | s = a[15] - t; | ||
1700 | |||
1701 | a[31] = v + t; /* A0 */ | ||
1702 | a[30] = u + s; /* A1 */ | ||
1703 | a[15] = u - s; /* A2 */ | ||
1704 | a[14] = v - t; /* A3 */ | ||
2386 | } | 1705 | } |
2387 | 1706 | wk -= 18 * 64 - 1; /* rewind wk (to next channel start) */ | |
2388 | /* Save latest granule's subband samples to be used in the next mdct call */ | 1707 | } |
2389 | for(ch=cfg.channels ;ch--; ) | 1708 | #endif |
2390 | memcpy(sb_sample[ch][0], sb_sample[ch][2], 18 * 32 * sizeof(int)); | ||
2391 | } | 1709 | } |
2392 | 1710 | ||
2393 | void fill_subband(long *buffer, int off) | 1711 | void window_subband2(short *x1, int a[SBLIMIT]) ICODE_ATTR; |
1712 | void window_subband2(short *x1, int a[SBLIMIT]) | ||
2394 | { | 1713 | { |
2395 | long i, t; | 1714 | int xr; |
2396 | 1715 | short *wp = enwindow; | |
2397 | /* replace 32 oldest left/right samples with 32 new samples */ | 1716 | short *x2 = x1 - 124; |
2398 | if(enc_channels == 2) | 1717 | |
2399 | { | 1718 | wp += 27 * 15; |
2400 | for(i=32; i--; ) | 1719 | x1 -= 2 * 15; |
2401 | { | 1720 | x2 += 2 * 15; |
2402 | t = *buffer++; | 1721 | |
2403 | x_int0[i+off] = (short)(t >> 16); | 1722 | xr = a[28] - a[0]; a[0] += a[28]; a[28] = shft9(xr) * wp[-2*27+25]; |
2404 | x_int1[i+off] = (short)t; | 1723 | xr = a[29] - a[1]; a[1] += a[29]; a[29] = shft9(xr) * wp[-2*27+25]; |
2405 | } | 1724 | xr = a[26] - a[2]; a[2] += a[26]; a[26] = shft9(xr) * wp[-4*27+25]; |
2406 | } | 1725 | xr = a[27] - a[3]; a[3] += a[27]; a[27] = shft9(xr) * wp[-4*27+25]; |
2407 | else | 1726 | xr = a[24] - a[4]; a[4] += a[24]; a[24] = shft9(xr) * wp[-6*27+25]; |
2408 | { | 1727 | xr = a[25] - a[5]; a[5] += a[25]; a[25] = shft9(xr) * wp[-6*27+25]; |
2409 | for(i=32; i--; ) | 1728 | xr = a[22] - a[6]; a[6] += a[22]; a[22] = shft9(xr) * SQRT ; |
2410 | { | 1729 | xr = a[23] - a[7]; a[7] += a[23]; a[23] = shft9(xr) * SQRT - a[7]; |
2411 | t = *buffer++; | 1730 | a[ 7] -= a[ 6]; |
2412 | x_int0[i+off] = (short)((((t<<16)>>16) + (t>>16)) >> 1); | 1731 | a[22] -= a[ 7]; |
2413 | } | 1732 | a[23] -= a[22]; |
2414 | } | 1733 | |
1734 | xr = a[ 6]; a[ 6] = a[31] - xr; a[31] = a[31] + xr; | ||
1735 | xr = a[ 7]; a[ 7] = a[30] - xr; a[30] = a[30] + xr; | ||
1736 | xr = a[22]; a[22] = a[15] - xr; a[15] = a[15] + xr; | ||
1737 | xr = a[23]; a[23] = a[14] - xr; a[14] = a[14] + xr; | ||
1738 | |||
1739 | xr = a[20] - a[ 8]; a[ 8] += a[20]; a[20] = shft9(xr) * wp[-10*27+25]; | ||
1740 | xr = a[21] - a[ 9]; a[ 9] += a[21]; a[21] = shft9(xr) * wp[-10*27+25]; | ||
1741 | xr = a[18] - a[10]; a[10] += a[18]; a[18] = shft9(xr) * wp[-12*27+25]; | ||
1742 | xr = a[19] - a[11]; a[11] += a[19]; a[19] = shft9(xr) * wp[-12*27+25]; | ||
1743 | xr = a[16] - a[12]; a[12] += a[16]; a[16] = shft9(xr) * wp[-14*27+25]; | ||
1744 | xr = a[17] - a[13]; a[13] += a[17]; a[17] = shft9(xr) * wp[-14*27+25]; | ||
1745 | xr =-a[20] + a[24]; a[20] += a[24]; a[24] = shft9(xr) * wp[-12*27+25]; | ||
1746 | xr =-a[21] + a[25]; a[21] += a[25]; a[25] = shft9(xr) * wp[-12*27+25]; | ||
1747 | xr = a[ 4] - a[ 8]; a[ 4] += a[ 8]; a[ 8] = shft9(xr) * wp[-12*27+25]; | ||
1748 | xr = a[ 5] - a[ 9]; a[ 5] += a[ 9]; a[ 9] = shft9(xr) * wp[-12*27+25]; | ||
1749 | xr = a[ 0] - a[12]; a[ 0] += a[12]; a[12] = shft9(xr) * wp[ -4*27+25]; | ||
1750 | xr = a[ 1] - a[13]; a[ 1] += a[13]; a[13] = shft9(xr) * wp[ -4*27+25]; | ||
1751 | xr = a[16] - a[28]; a[16] += a[28]; a[28] = shft9(xr) * wp[ -4*27+25]; | ||
1752 | xr =-a[17] + a[29]; a[17] += a[29]; a[29] = shft9(xr) * wp[ -4*27+25]; | ||
1753 | |||
1754 | xr = SQRT * shft9(a[ 2] - a[10]); a[ 2] += a[10]; a[10] = xr; | ||
1755 | xr = SQRT * shft9(a[ 3] - a[11]); a[ 3] += a[11]; a[11] = xr; | ||
1756 | xr = SQRT * shft9(a[26] - a[18]); a[18] += a[26]; a[26] = xr - a[18]; | ||
1757 | xr = SQRT * shft9(a[27] - a[19]); a[19] += a[27]; a[27] = xr - a[19]; | ||
1758 | |||
1759 | xr = a[ 2]; a[19] -= a[ 3]; a[ 3] -= xr; a[ 2] = a[31] - xr; a[31] += xr; | ||
1760 | xr = a[ 3]; a[11] -= a[19]; a[18] -= xr; a[ 3] = a[30] - xr; a[30] += xr; | ||
1761 | xr = a[18]; a[27] -= a[11]; a[19] -= xr; a[18] = a[15] - xr; a[15] += xr; | ||
1762 | |||
1763 | xr = a[19]; a[10] -= xr; a[19] = a[14] - xr; a[14] += xr; | ||
1764 | xr = a[10]; a[11] -= xr; a[10] = a[23] - xr; a[23] += xr; | ||
1765 | xr = a[11]; a[26] -= xr; a[11] = a[22] - xr; a[22] += xr; | ||
1766 | xr = a[26]; a[27] -= xr; a[26] = a[ 7] - xr; a[ 7] += xr; | ||
1767 | |||
1768 | xr = a[27]; a[27] = a[6] - xr; a[6] += xr; | ||
1769 | |||
1770 | xr = SQRT * shft9(a[ 0] - a[ 4]); a[ 0] += a[ 4]; a[ 4] = xr; | ||
1771 | xr = SQRT * shft9(a[ 1] - a[ 5]); a[ 1] += a[ 5]; a[ 5] = xr; | ||
1772 | xr = SQRT * shft9(a[16] - a[20]); a[16] += a[20]; a[20] = xr; | ||
1773 | xr = SQRT * shft9(a[17] - a[21]); a[17] += a[21]; a[21] = xr; | ||
1774 | xr =-SQRT * shft9(a[ 8] - a[12]); a[ 8] += a[12]; a[12] = xr - a[ 8]; | ||
1775 | xr =-SQRT * shft9(a[ 9] - a[13]); a[ 9] += a[13]; a[13] = xr - a[ 9]; | ||
1776 | xr =-SQRT * shft9(a[25] - a[29]); a[25] += a[29]; a[29] = xr - a[25]; | ||
1777 | xr =-SQRT * shft9(a[24] + a[28]); a[24] -= a[28]; a[28] = xr - a[24]; | ||
1778 | |||
1779 | xr = a[24] - a[16]; a[24] = xr; | ||
1780 | xr = a[20] - xr; a[20] = xr; | ||
1781 | xr = a[28] - xr; a[28] = xr; | ||
1782 | |||
1783 | xr = a[25] - a[17]; a[25] = xr; | ||
1784 | xr = a[21] - xr; a[21] = xr; | ||
1785 | xr = a[29] - xr; a[29] = xr; | ||
1786 | |||
1787 | xr = a[17] - a[1]; a[17] = xr; | ||
1788 | xr = a[ 9] - xr; a[ 9] = xr; | ||
1789 | xr = a[25] - xr; a[25] = xr; | ||
1790 | xr = a[ 5] - xr; a[ 5] = xr; | ||
1791 | xr = a[21] - xr; a[21] = xr; | ||
1792 | xr = a[13] - xr; a[13] = xr; | ||
1793 | xr = a[29] - xr; a[29] = xr; | ||
1794 | |||
1795 | xr = a[ 1] - a[0]; a[ 1] = xr; | ||
1796 | xr = a[16] - xr; a[16] = xr; | ||
1797 | xr = a[17] - xr; a[17] = xr; | ||
1798 | xr = a[ 8] - xr; a[ 8] = xr; | ||
1799 | xr = a[ 9] - xr; a[ 9] = xr; | ||
1800 | xr = a[24] - xr; a[24] = xr; | ||
1801 | xr = a[25] - xr; a[25] = xr; | ||
1802 | xr = a[ 4] - xr; a[ 4] = xr; | ||
1803 | xr = a[ 5] - xr; a[ 5] = xr; | ||
1804 | xr = a[20] - xr; a[20] = xr; | ||
1805 | xr = a[21] - xr; a[21] = xr; | ||
1806 | xr = a[12] - xr; a[12] = xr; | ||
1807 | xr = a[13] - xr; a[13] = xr; | ||
1808 | xr = a[28] - xr; a[28] = xr; | ||
1809 | xr = a[29] - xr; a[29] = xr; | ||
1810 | |||
1811 | xr = a[ 0]; a[ 0] += a[31]; a[31] -= xr; | ||
1812 | xr = a[ 1]; a[ 1] += a[30]; a[30] -= xr; | ||
1813 | xr = a[16]; a[16] += a[15]; a[15] -= xr; | ||
1814 | xr = a[17]; a[17] += a[14]; a[14] -= xr; | ||
1815 | xr = a[ 8]; a[ 8] += a[23]; a[23] -= xr; | ||
1816 | xr = a[ 9]; a[ 9] += a[22]; a[22] -= xr; | ||
1817 | xr = a[24]; a[24] += a[ 7]; a[ 7] -= xr; | ||
1818 | xr = a[25]; a[25] += a[ 6]; a[ 6] -= xr; | ||
1819 | xr = a[ 4]; a[ 4] += a[27]; a[27] -= xr; | ||
1820 | xr = a[ 5]; a[ 5] += a[26]; a[26] -= xr; | ||
1821 | xr = a[20]; a[20] += a[11]; a[11] -= xr; | ||
1822 | xr = a[21]; a[21] += a[10]; a[10] -= xr; | ||
1823 | xr = a[12]; a[12] += a[19]; a[19] -= xr; | ||
1824 | xr = a[13]; a[13] += a[18]; a[18] -= xr; | ||
1825 | xr = a[28]; a[28] += a[ 3]; a[ 3] -= xr; | ||
1826 | xr = a[29]; a[29] += a[ 2]; a[ 2] -= xr; | ||
2415 | } | 1827 | } |
2416 | 1828 | ||
2417 | void filter_subband(int s[SBLIMIT], int off, int k) | 1829 | void mdct_long(int *out, int *in) ICODE_ATTR; |
1830 | void mdct_long(int *out, int *in) | ||
2418 | { | 1831 | { |
2419 | short *enwindow = enwindow_int; | 1832 | int ct,st; |
2420 | int i, tmp = 0; | 1833 | int tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8; |
2421 | #ifdef CPU_COLDFIRE | 1834 | int ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8; |
2422 | short *yint = y_int; | 1835 | |
2423 | #endif | 1836 | /* 1,2, 5,6, 9,10, 13,14, 17 */ |
2424 | 1837 | tc1 = in[17] - in[ 9]; | |
2425 | 1838 | tc3 = in[15] - in[11]; | |
2426 | /* 36864=72*512: shift samples into proper window positions */ | 1839 | tc4 = in[14] - in[12]; |
2427 | #ifdef CPU_COLDFIRE | 1840 | ts5 = in[ 0] + in[ 8]; |
2428 | { short *xint = &x_int[k][off]; | 1841 | ts6 = in[ 1] + in[ 7]; |
2429 | 1842 | ts7 = in[ 2] + in[ 6]; | |
2430 | asm volatile( | 1843 | ts8 = in[ 3] + in[ 5]; |
2431 | "moveq.l #32, %%d0\n" | 1844 | |
2432 | "move.l %%d0, %[i]\n" /* set loop counter */ | 1845 | out[17] = (ts5 + ts7 - ts8) * cx[8] - (ts6 - in[4]) * cx[8]; |
2433 | "move.l %[xint], %%d0\n" /* d0 = x_int[k] */ | 1846 | st = (ts5 + ts7 - ts8) * cx[7] + (ts6 - in[4]) * cx[8]; |
2434 | "or.l #0x3ff, %%d0\n" | 1847 | ct = (tc1 - tc3 - tc4) * cx[6]; |
2435 | "move.l %%d0, %%mask\n" /* set address mask */ | 1848 | out[5] = ct + st; |
2436 | "move.l (%[xint]), %%d4\n" /* d4 = x_int[k][off] */ | 1849 | out[6] = ct - st; |
2437 | |||
2438 | "loop_start:\n" | ||
2439 | "movem.l (%[enwindow]), %%d0-%%d3\n" /* load 4 values */ | ||
2440 | "mac.w %%d0u, %%d4u, (0x080,%[xint])&, %%d5, %%acc0\n" | ||
2441 | "mac.w %%d0l, %%d5u, (0x100,%[xint])&, %%d6, %%acc0\n" | ||
2442 | "mac.w %%d1u, %%d6u, (0x180,%[xint])&, %%d7, %%acc0\n" | ||
2443 | "mac.w %%d1l, %%d7u, (0x200,%[xint])&, %%a2, %%acc0\n" | ||
2444 | "mac.w %%d2u, %%a2u, (0x280,%[xint])&, %%a3, %%acc0\n" | ||
2445 | "mac.w %%d2l, %%a3u, (0x300,%[xint])&, %%a4, %%acc0\n" | ||
2446 | "mac.w %%d3u, %%a4u, (0x380,%[xint])&, %%a5, %%acc0\n" | ||
2447 | "mac.w %%d3l, %%a5u, %%acc0\n" | ||
2448 | |||
2449 | "movem.l (16,%[enwindow]), %%d0-%%d3\n" /* load 8 values */ | ||
2450 | "mac.w %%d0u, %%d4l, %%acc1\n" | ||
2451 | "mac.w %%d0l, %%d5l, %%acc1\n" | ||
2452 | "mac.w %%d1u, %%d6l, %%acc1\n" | ||
2453 | "mac.w %%d1l, %%d7l, %%acc1\n" | ||
2454 | "mac.w %%d2u, %%a2l, %%acc1\n" | ||
2455 | "mac.w %%d2l, %%a3l, %%acc1\n" | ||
2456 | "mac.w %%d3u, %%a4l, %%acc1\n" | ||
2457 | "addq.l #4, %[xint]\n" /* xint += 2 */ | ||
2458 | "mac.w %%d3l, %%a5l, (%[xint])&, %%d4, %%acc1\n" | ||
2459 | |||
2460 | "movclr.l %%acc0, %%d5\n" | ||
2461 | "movclr.l %%acc1, %%d6\n" | ||
2462 | "move.l #262144, %%d7\n" | ||
2463 | "add.l %%d7, %%d5\n" | ||
2464 | "add.l %%d7, %%d6\n" | ||
2465 | "moveq.l #19, %%d7\n" | ||
2466 | "asr.l %%d7, %%d5\n" | ||
2467 | "asr.l %%d7, %%d6\n" | ||
2468 | "move.w %%d5, (%[yint])+\n" | ||
2469 | "move.w %%d6, (%[yint])+\n" | ||
2470 | |||
2471 | "add.l #32, %[enwindow]\n" /* enwindow += 16 */ | ||
2472 | |||
2473 | "sub.l #1, %[i]\n" | ||
2474 | "jbne loop_start\n" | ||
2475 | |||
2476 | : [xint] "+a" (xint), [yint] "+a" (yint), [i] "+m" (i), [enwindow] "+a" (enwindow) | ||
2477 | : | ||
2478 | : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a2", "a3", "a4", "a5"); | ||
2479 | } | ||
2480 | #else | ||
2481 | for(i=0; i<64; i++) | ||
2482 | { | ||
2483 | for(j=0, tmp=0; j<512; j+=64) | ||
2484 | tmp += (int)x_int[k][(i+j+off)&(HAN_SIZE-1)] * (int)*(enwindow++); | ||
2485 | y_int[i] = (short)((tmp + (1<<18)) >> 19); | ||
2486 | } | ||
2487 | #endif | ||
2488 | |||
2489 | #ifdef CPU_COLDFIRE | ||
2490 | yint = y_int; | ||
2491 | #endif | ||
2492 | 1850 | ||
2493 | /* 147456=72*2048 */ | 1851 | tc2 = (in[16] - in[10]) * cx[6]; |
2494 | for(i=SBLIMIT; i--; ) // SBLIMIT: 32 | 1852 | ts6 = ts6 * cx[7] + in[4] * cx[8]; |
2495 | { | ||
2496 | short *filt = filter_int[i]; | ||
2497 | 1853 | ||
2498 | #ifdef CPU_COLDFIRE | 1854 | ct = tc1 * cx[0] + tc2 + tc3 * cx[1] + tc4 * cx[2]; |
2499 | { | 1855 | st = -ts5 * cx[4] + ts6 - ts7 * cx[5] + ts8 * cx[3]; |
2500 | asm volatile( | 1856 | out[1] = ct + st; |
2501 | "move.l (%[yint])+, %%a5\n" | 1857 | out[2] = ct - st; |
2502 | "movem.l (%[filt]), %%d0-%%d7\n" | 1858 | |
2503 | "mac.w %%d0u, %%a5u, %%acc0\n" | 1859 | ct = tc1 * cx[1] - tc2 - tc3 * cx[2] + tc4 * cx[0]; |
2504 | "mac.w %%d0l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1860 | st = -ts5 * cx[5] + ts6 - ts7 * cx[3] + ts8 * cx[4]; |
2505 | "mac.w %%d1u, %%a5u, %%acc0\n" | 1861 | out[ 9] = ct + st; |
2506 | "mac.w %%d1l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1862 | out[10] = ct - st; |
2507 | "mac.w %%d2u, %%a5u, %%acc0\n" | 1863 | |
2508 | "mac.w %%d2l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1864 | ct = tc1 * cx[2] - tc2 + tc3 * cx[0] - tc4 * cx[1]; |
2509 | "mac.w %%d3u, %%a5u, %%acc0\n" | 1865 | st = ts5 * cx[3] - ts6 + ts7 * cx[4] - ts8 * cx[5]; |
2510 | "mac.w %%d3l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1866 | out[13] = ct + st; |
2511 | "mac.w %%d4u, %%a5u, %%acc0\n" | 1867 | out[14] = ct - st; |
2512 | "mac.w %%d4l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1868 | |
2513 | "mac.w %%d5u, %%a5u, %%acc0\n" | 1869 | ts1 = in[ 8] - in[ 0]; |
2514 | "mac.w %%d5l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1870 | ts3 = in[ 6] - in[ 2]; |
2515 | "mac.w %%d6u, %%a5u, %%acc0\n" | 1871 | ts4 = in[ 5] - in[ 3]; |
2516 | "mac.w %%d6l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1872 | tc5 = in[17] + in[ 9]; |
2517 | "mac.w %%d7u, %%a5u, %%acc0\n" | 1873 | tc6 = in[16] + in[10]; |
2518 | "mac.w %%d7l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1874 | tc7 = in[15] + in[11]; |
2519 | "movem.l (32,%[filt]), %%d0-%%d7\n" | 1875 | tc8 = in[14] + in[12]; |
2520 | "mac.w %%d0u, %%a5u, %%acc0\n" | 1876 | |
2521 | "mac.w %%d0l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1877 | out[0] = (tc5 + tc7 + tc8) * cx[8] + (tc6 + in[13]) * cx[8]; |
2522 | "mac.w %%d1u, %%a5u, %%acc0\n" | 1878 | ct = (tc5 + tc7 + tc8) * cx[7] - (tc6 + in[13]) * cx[8]; |
2523 | "mac.w %%d1l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1879 | st = (ts1 - ts3 + ts4) * cx[6]; |
2524 | "mac.w %%d2u, %%a5u, %%acc0\n" | 1880 | out[11] = ct + st; |
2525 | "mac.w %%d2l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1881 | out[12] = ct - st; |
2526 | "mac.w %%d3u, %%a5u, %%acc0\n" | 1882 | |
2527 | "mac.w %%d3l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1883 | ts2 = (in[7] - in[1]) * cx[6]; |
2528 | "mac.w %%d4u, %%a5u, %%acc0\n" | 1884 | tc6 = in[13] * cx[8] - tc6 * cx[7]; |
2529 | "mac.w %%d4l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1885 | |
2530 | "mac.w %%d5u, %%a5u, %%acc0\n" | 1886 | ct = tc5 * cx[3] - tc6 + tc7 * cx[4] + tc8 * cx[5]; |
2531 | "mac.w %%d5l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1887 | st = ts1 * cx[2] + ts2 + ts3 * cx[0] + ts4 * cx[1]; |
2532 | "mac.w %%d6u, %%a5u, %%acc0\n" | 1888 | out[3] = ct + st; |
2533 | "mac.w %%d6l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1889 | out[4] = ct - st; |
2534 | "mac.w %%d7u, %%a5u, %%acc0\n" | 1890 | |
2535 | "mac.w %%d7l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1891 | ct =-tc5 * cx[5] + tc6 - tc7 * cx[3] - tc8 * cx[4]; |
2536 | "movem.l (64,%[filt]), %%d0-%%d7\n" | 1892 | st = ts1 * cx[1] + ts2 - ts3 * cx[2] - ts4 * cx[0]; |
2537 | "mac.w %%d0u, %%a5u, %%acc0\n" | 1893 | out[7] = ct + st; |
2538 | "mac.w %%d0l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1894 | out[8] = ct - st; |
2539 | "mac.w %%d1u, %%a5u, %%acc0\n" | 1895 | |
2540 | "mac.w %%d1l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1896 | ct =-tc5 * cx[4] + tc6 - tc7 * cx[5] - tc8 * cx[3]; |
2541 | "mac.w %%d2u, %%a5u, %%acc0\n" | 1897 | st = ts1 * cx[0] - ts2 + ts3 * cx[1] - ts4 * cx[2]; |
2542 | "mac.w %%d2l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | 1898 | out[15] = ct + st; |
2543 | "mac.w %%d3u, %%a5u, %%acc0\n" | 1899 | out[16] = ct - st; |
2544 | "mac.w %%d3l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2545 | "mac.w %%d4u, %%a5u, %%acc0\n" | ||
2546 | "mac.w %%d4l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2547 | "mac.w %%d5u, %%a5u, %%acc0\n" | ||
2548 | "mac.w %%d5l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2549 | "mac.w %%d6u, %%a5u, %%acc0\n" | ||
2550 | "mac.w %%d6l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2551 | "mac.w %%d7u, %%a5u, %%acc0\n" | ||
2552 | "mac.w %%d7l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2553 | "movem.l (96,%[filt]), %%d0-%%d7\n" | ||
2554 | "mac.w %%d0u, %%a5u, %%acc0\n" | ||
2555 | "mac.w %%d0l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2556 | "mac.w %%d1u, %%a5u, %%acc0\n" | ||
2557 | "mac.w %%d1l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2558 | "mac.w %%d2u, %%a5u, %%acc0\n" | ||
2559 | "mac.w %%d2l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2560 | "mac.w %%d3u, %%a5u, %%acc0\n" | ||
2561 | "mac.w %%d3l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2562 | "mac.w %%d4u, %%a5u, %%acc0\n" | ||
2563 | "mac.w %%d4l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2564 | "mac.w %%d5u, %%a5u, %%acc0\n" | ||
2565 | "mac.w %%d5l, %%a5l, (%[yint])+, %%a5, %%acc0\n" | ||
2566 | "mac.w %%d6u, %%a5u, %%acc0\n" | ||
2567 | "mac.w %%d6l, %%a5l, (%[yint]) , %%a5, %%acc0\n" | ||
2568 | "mac.w %%d7u, %%a5u, %%acc0\n" | ||
2569 | "mac.w %%d7l, %%a5l, %%acc0\n" | ||
2570 | "lea.l (-31*4, %[yint]), %[yint]\n" /* wrap yint back to start */ | ||
2571 | "movclr.l %%acc0, %[tmp]" | ||
2572 | : [tmp] "=r" (tmp), [yint] "+a" (yint) | ||
2573 | : [filt] "a" (filt) | ||
2574 | : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "a5" ); | ||
2575 | } | ||
2576 | #else | ||
2577 | for(j=64, tmp=0; j--; ) | ||
2578 | tmp += (long)filt[j] * (long)y_int[j]; | ||
2579 | #endif | ||
2580 | s[i] = (tmp + 16384) >> 15; | ||
2581 | } | ||
2582 | } | 1900 | } |
2583 | 1901 | ||
2584 | static int find_bitrate_index(int bitrate) | 1902 | static int find_bitrate_index(int type, int bitrate) |
2585 | { | 1903 | { |
2586 | static long mpeg1[15] = {0,32,40,48,56,64,80,96,112,128,160,192,224,256,320}; | 1904 | int i; |
2587 | int i; | ||
2588 | 1905 | ||
2589 | for(i=0; i<15; i++) | 1906 | for(i=0;i<14;i++) |
2590 | if(bitrate == mpeg1[i]) | 1907 | if(bitrate == bitr_index[type][i]) |
2591 | return i; | 1908 | break; |
2592 | 1909 | ||
2593 | return -1; | 1910 | return i; |
2594 | } | 1911 | } |
2595 | 1912 | ||
2596 | static int find_samplerate_index(long freq) | 1913 | static int find_samplerate_index(long freq, int *mp3_type) |
2597 | { | 1914 | { /* MPEG 2 */ /* MPEG 1 */ |
2598 | static long mpeg1[3] = {44100, 48000, 32000}; | 1915 | static long mpeg[2][3] = { {22050, 24000, 16000}, {44100, 48000, 32000} }; |
2599 | int i; | 1916 | int mpg, rate; |
2600 | 1917 | ||
2601 | for(i=0; i<3; i++) | 1918 | /* set default values: MPEG1 at 44100/s */ |
2602 | if(freq == mpeg1[i]) | 1919 | *mp3_type = 1; |
2603 | return i; | ||
2604 | 1920 | ||
2605 | return -1; | 1921 | for(mpg=0; mpg<2; mpg++) |
1922 | for(rate=0; rate<3; rate++) | ||
1923 | if(freq == mpeg[mpg][rate]) | ||
1924 | { *mp3_type = mpg; return rate; } | ||
1925 | |||
1926 | return 0; | ||
2606 | } | 1927 | } |
2607 | 1928 | ||
2608 | void init_mp3_encoder_engine(bool stereo, int quality) | 1929 | void init_mp3_encoder_engine(bool stereo, int quality, int sample_rate) |
2609 | { | 1930 | { |
2610 | /* keep in sync with rec_quality_info_afmt in id3.h/.c */ | 1931 | /* keep in sync with rec_quality_info_afmt in id3.h/.c */ |
2611 | static int bitr_s[9] = { 64, 96, 128, 160, 192, 224, 320, 64, 64 }; | 1932 | static int bitr_s[9] = { 64, 96, 128, 160, 192, 224, 320, 64, 64 }; |
2612 | static int bitr_m[9] = { 64, 96, 128, 160, 160, 160, 160, 64, 64 }; | 1933 | static int bitr_m[9] = { 64, 96, 128, 160, 160, 160, 160, 64, 64 }; |
2613 | uint32 avg_byte_per_frame; | 1934 | uint32 avg_byte_per_frame; |
2614 | 1935 | ||
2615 | cfg.byte_order = order_bigEndian; | 1936 | if(quality == 0 && stereo && sample_rate >= 32000) |
2616 | cfg.mpg.type = 1; | 1937 | { /* use MPEG2 format */ |
2617 | cfg.samplerate = 44100; | 1938 | sample_rate >>= 1; |
2618 | cfg.channels = stereo ? 2 : 1; | 1939 | cfg.resample = 1; |
2619 | cfg.mpg.mode = stereo ? 0 : 3; /* 0=stereo, 3=mono */ | 1940 | cfg.granules = 1; |
2620 | cfg.mpg.bitrate = stereo ? bitr_s[quality] : bitr_m[quality]; | 1941 | } |
2621 | cfg.mpg.bitrate_index = find_bitrate_index(cfg.mpg.bitrate); | 1942 | else |
2622 | cfg.mpg.smprate_index = find_samplerate_index(cfg.samplerate); | 1943 | { /* use MPEG1 format */ |
2623 | 1944 | cfg.resample = 0; | |
2624 | memset(x_int0 , 0 , sizeof(x_int0 )); | 1945 | cfg.granules = 2; |
2625 | memset(x_int1 , 0 , sizeof(x_int1 )); | 1946 | } |
2626 | memset(y_int , 0 , sizeof(y_int )); | 1947 | |
2627 | memset(mdct_freq , 0 , sizeof(mdct_freq )); | 1948 | cfg.byte_order = order_bigEndian; |
2628 | memset(enc_data , 0 , sizeof(enc_data )); | 1949 | cfg.samplerate = sample_rate; |
2629 | memset(mdct_in , 0 , sizeof(mdct_in )); | 1950 | cfg.channels = stereo ? 2 : 1; |
2630 | memset(sb_sample , 0 , sizeof(sb_sample )); | 1951 | cfg.mpg.mode = stereo ? 0 : 3; /* 0=stereo, 3=mono */ |
2631 | memset(&CodedData , 0 , sizeof(CodedData )); | 1952 | cfg.mpg.bitrate = stereo ? bitr_s[quality] : bitr_m[quality]; |
2632 | memcpy(scalefac, sfBand[cfg.mpg.smprate_index + 3*cfg.mpg.type], sizeof(scalefac)); | 1953 | cfg.mpg.smpl_id = find_samplerate_index(cfg.samplerate, &cfg.mpg.type); |
2633 | memcpy(ca_int , ca_int_const , sizeof(ca_int )); | 1954 | cfg.mpg.bitr_id = find_bitrate_index(cfg.mpg.type, cfg.mpg.bitrate); |
2634 | memcpy(cs_int , cs_int_const , sizeof(cs_int )); | 1955 | cfg.mpg.num_bands = num_bands[stereo ? cfg.mpg.type : 2][cfg.mpg.bitr_id]; |
2635 | memcpy(win_int , win_int_const , sizeof(win_int )); | 1956 | |
2636 | memcpy(filter_int , filter_int_const , sizeof(filter_int )); | 1957 | memcpy(scalefac, sfBand[cfg.mpg.smpl_id + 3*cfg.mpg.type], sizeof(scalefac)); |
2637 | memcpy(enwindow_int, enwindow_int_const, sizeof(enwindow_int)); | 1958 | memset(mfbuf , 0 , sizeof(mfbuf )); |
2638 | memcpy(int2idx , int2idx_const , sizeof(int2idx )); | 1959 | memset(mdct_freq , 0 , sizeof(mdct_freq )); |
2639 | memcpy(ht_count1 , ht_count1_const , sizeof(ht_count1 )); | 1960 | memset(enc_data , 0 , sizeof(enc_data )); |
2640 | memcpy( t1HB , t1HB_const , sizeof(t1HB )); | 1961 | memset(sb_data , 0 , sizeof(sb_data )); |
2641 | memcpy( t2HB , t2HB_const , sizeof(t2HB )); | 1962 | memset(&CodedData, 0 , sizeof(CodedData )); |
2642 | memcpy( t3HB , t3HB_const , sizeof(t3HB )); | 1963 | memcpy(ca , ca_const , sizeof(ca )); |
2643 | memcpy( t5HB , t5HB_const , sizeof(t5HB )); | 1964 | memcpy(cs , cs_const , sizeof(cs )); |
2644 | memcpy( t6HB , t6HB_const , sizeof(t6HB )); | 1965 | memcpy(cx , cx_const , sizeof(cx )); |
2645 | memcpy( t7HB , t7HB_const , sizeof(t7HB )); | 1966 | memcpy(win , win_const , sizeof(win )); |
2646 | memcpy( t8HB , t8HB_const , sizeof(t8HB )); | 1967 | memcpy(enwindow , enwindow_const , sizeof(enwindow )); |
2647 | memcpy( t9HB , t9HB_const , sizeof(t9HB )); | 1968 | memcpy(int2idx , int2idx_const , sizeof(int2idx )); |
2648 | memcpy(t10HB , t10HB_const , sizeof(t10HB )); | 1969 | memcpy(ht_count , ht_count_const , sizeof(ht_count )); |
2649 | memcpy(t11HB , t11HB_const , sizeof(t11HB )); | 1970 | memcpy( tab01 , tab01_const , sizeof(tab01 )); |
2650 | memcpy(t12HB , t12HB_const , sizeof(t12HB )); | 1971 | memcpy( tab23 , tab23_const , sizeof(tab23 )); |
2651 | memcpy(t13HB , t13HB_const , sizeof(t13HB )); | 1972 | memcpy( tab56 , tab56_const , sizeof(tab56 )); |
2652 | memcpy(t15HB , t15HB_const , sizeof(t15HB )); | 1973 | memcpy( tab1315 , tab1315_const , sizeof(tab1315 )); |
2653 | memcpy(t16HB , t16HB_const , sizeof(t16HB )); | 1974 | memcpy( tab1624 , tab1624_const , sizeof(tab1624 )); |
2654 | memcpy(t24HB , t24HB_const , sizeof(t24HB )); | 1975 | memcpy( tab789 , tab789_const , sizeof(tab789 )); |
2655 | memcpy( t1l , t1l_const , sizeof(t1l )); | 1976 | memcpy( tabABC , tabABC_const , sizeof(tabABC )); |
2656 | memcpy( t2l , t2l_const , sizeof(t2l )); | 1977 | memcpy( t1HB , t1HB_const , sizeof(t1HB )); |
2657 | memcpy( t3l , t3l_const , sizeof(t3l )); | 1978 | memcpy( t2HB , t2HB_const , sizeof(t2HB )); |
2658 | memcpy( t5l , t5l_const , sizeof(t5l )); | 1979 | memcpy( t3HB , t3HB_const , sizeof(t3HB )); |
2659 | memcpy( t6l , t6l_const , sizeof(t6l )); | 1980 | memcpy( t5HB , t5HB_const , sizeof(t5HB )); |
2660 | memcpy( t7l , t7l_const , sizeof(t7l )); | 1981 | memcpy( t6HB , t6HB_const , sizeof(t6HB )); |
2661 | memcpy( t8l , t8l_const , sizeof(t8l )); | 1982 | memcpy( t7HB , t7HB_const , sizeof(t7HB )); |
2662 | memcpy( t9l , t9l_const , sizeof(t9l )); | 1983 | memcpy( t8HB , t8HB_const , sizeof(t8HB )); |
2663 | memcpy(t10l , t10l_const , sizeof(t10l )); | 1984 | memcpy( t9HB , t9HB_const , sizeof(t9HB )); |
2664 | memcpy(t11l , t11l_const , sizeof(t11l )); | 1985 | memcpy(t10HB , t10HB_const , sizeof(t10HB )); |
2665 | memcpy(t12l , t12l_const , sizeof(t12l )); | 1986 | memcpy(t11HB , t11HB_const , sizeof(t11HB )); |
2666 | memcpy(t13l , t13l_const , sizeof(t13l )); | 1987 | memcpy(t12HB , t12HB_const , sizeof(t12HB )); |
2667 | memcpy(t15l , t15l_const , sizeof(t15l )); | 1988 | memcpy(t13HB , t13HB_const , sizeof(t13HB )); |
2668 | memcpy(t16l , t16l_const , sizeof(t16l )); | 1989 | memcpy(t15HB , t15HB_const , sizeof(t15HB )); |
2669 | memcpy(t24l , t24l_const , sizeof(t24l )); | 1990 | memcpy(t16HB , t16HB_const , sizeof(t16HB )); |
2670 | memcpy(ht , ht_const , sizeof(ht )); | 1991 | memcpy(t24HB , t24HB_const , sizeof(t24HB )); |
2671 | 1992 | memcpy( t1l , t1l_const , sizeof(t1l )); | |
2672 | /* I don't know, wether this is really necessary */ | 1993 | memcpy( t2l , t2l_const , sizeof(t2l )); |
2673 | ht[ 0].table = NULL; ht[ 0].hlen = NULL;// Apparently not used | 1994 | memcpy( t3l , t3l_const , sizeof(t3l )); |
2674 | ht[ 1].table = t1HB; ht[ 1].hlen = t1l; | 1995 | memcpy( t5l , t5l_const , sizeof(t5l )); |
2675 | ht[ 2].table = t2HB; ht[ 2].hlen = t2l; | 1996 | memcpy( t6l , t6l_const , sizeof(t6l )); |
2676 | ht[ 3].table = t3HB; ht[ 3].hlen = t3l; | 1997 | memcpy( t7l , t7l_const , sizeof(t7l )); |
2677 | ht[ 4].table = NULL; ht[ 4].hlen = NULL;// Apparently not used | 1998 | memcpy( t8l , t8l_const , sizeof(t8l )); |
2678 | ht[ 5].table = t5HB; ht[ 5].hlen = t5l; | 1999 | memcpy( t9l , t9l_const , sizeof(t9l )); |
2679 | ht[ 6].table = t6HB; ht[ 6].hlen = t6l; | 2000 | memcpy(t10l , t10l_const , sizeof(t10l )); |
2680 | ht[ 7].table = t7HB; ht[ 7].hlen = t7l; | 2001 | memcpy(t11l , t11l_const , sizeof(t11l )); |
2681 | ht[ 8].table = t8HB; ht[ 8].hlen = t8l; | 2002 | memcpy(t12l , t12l_const , sizeof(t12l )); |
2682 | ht[ 9].table = t9HB; ht[ 9].hlen = t9l; | 2003 | memcpy(t13l , t13l_const , sizeof(t13l )); |
2683 | ht[10].table = t10HB; ht[10].hlen = t10l; | 2004 | memcpy(t15l , t15l_const , sizeof(t15l )); |
2684 | ht[11].table = t11HB; ht[11].hlen = t11l; | 2005 | memcpy(t16l , t16l_const , sizeof(t16l )); |
2685 | ht[12].table = t12HB; ht[12].hlen = t12l; | 2006 | memcpy(t24l , t24l_const , sizeof(t24l )); |
2686 | ht[13].table = t13HB; ht[13].hlen = t13l; | 2007 | memcpy(ht , ht_const , sizeof(ht )); |
2687 | ht[14].table = NULL; ht[14].hlen = NULL;// Apparently not used | 2008 | |
2688 | ht[15].table = t15HB; ht[15].hlen = t15l; | 2009 | ht[ 0].table = NULL; ht[ 0].hlen = NULL; /* Apparently not used */ |
2689 | ht[16].table = t16HB; ht[16].hlen = t16l; | 2010 | ht[ 1].table = t1HB; ht[ 1].hlen = t1l; |
2690 | ht[17].table = t16HB; ht[17].hlen = t16l; | 2011 | ht[ 2].table = t2HB; ht[ 2].hlen = t2l; |
2691 | ht[18].table = t16HB; ht[18].hlen = t16l; | 2012 | ht[ 3].table = t3HB; ht[ 3].hlen = t3l; |
2692 | ht[19].table = t16HB; ht[19].hlen = t16l; | 2013 | ht[ 4].table = NULL; ht[ 4].hlen = NULL; /* Apparently not used */ |
2693 | ht[20].table = t16HB; ht[20].hlen = t16l; | 2014 | ht[ 5].table = t5HB; ht[ 5].hlen = t5l; |
2694 | ht[21].table = t16HB; ht[21].hlen = t16l; | 2015 | ht[ 6].table = t6HB; ht[ 6].hlen = t6l; |
2695 | ht[22].table = t16HB; ht[22].hlen = t16l; | 2016 | ht[ 7].table = t7HB; ht[ 7].hlen = t7l; |
2696 | ht[23].table = t16HB; ht[23].hlen = t16l; | 2017 | ht[ 8].table = t8HB; ht[ 8].hlen = t8l; |
2697 | ht[24].table = t24HB; ht[24].hlen = t24l; | 2018 | ht[ 9].table = t9HB; ht[ 9].hlen = t9l; |
2698 | ht[25].table = t24HB; ht[25].hlen = t24l; | 2019 | ht[10].table = t10HB; ht[10].hlen = t10l; |
2699 | ht[26].table = t24HB; ht[26].hlen = t24l; | 2020 | ht[11].table = t11HB; ht[11].hlen = t11l; |
2700 | ht[27].table = t24HB; ht[27].hlen = t24l; | 2021 | ht[12].table = t12HB; ht[12].hlen = t12l; |
2701 | ht[28].table = t24HB; ht[28].hlen = t24l; | 2022 | ht[13].table = t13HB; ht[13].hlen = t13l; |
2702 | ht[29].table = t24HB; ht[29].hlen = t24l; | 2023 | ht[14].table = NULL; ht[14].hlen = NULL; /* Apparently not used */ |
2703 | ht[30].table = t24HB; ht[30].hlen = t24l; | 2024 | ht[15].table = t15HB; ht[15].hlen = t15l; |
2704 | ht[31].table = t24HB; ht[31].hlen = t24l; | 2025 | |
2705 | 2026 | /* Figure average number of 'bytes' per frame */ | |
2706 | x_int[0] = x_int0; | 2027 | avg_byte_per_frame = SAMPL2 * 16000 * cfg.mpg.bitrate / (2 - cfg.mpg.type); |
2707 | x_int[1] = x_int1; | 2028 | avg_byte_per_frame = avg_byte_per_frame / cfg.samplerate; |
2708 | 2029 | cfg.byte_per_frame = avg_byte_per_frame / 64; | |
2709 | #ifndef SIMULATOR | 2030 | cfg.frac_per_frame = avg_byte_per_frame & 63; |
2710 | if(((long)x_int0 | (long)x_int1) & 0x7ff) | 2031 | cfg.slot_lag = 0; |
2711 | return; /* both arrays must be aligned to 0x800 boundary */ | 2032 | cfg.sideinfo_len = 32 + (cfg.mpg.type ? (cfg.channels == 1 ? 136 : 256) |
2712 | #endif | 2033 | : (cfg.channels == 1 ? 72 : 136)); |
2713 | |||
2714 | if(cfg.channels == 1) | ||
2715 | cfg.sideinfo_len = 32 + 136; | ||
2716 | else | ||
2717 | cfg.sideinfo_len = 32 + 256; | ||
2718 | |||
2719 | /* Set initial step size */ | ||
2720 | cfg.cod_info[0][0].quantizerStepSize = 0x10; | ||
2721 | cfg.cod_info[0][1].quantizerStepSize = 0x10; | ||
2722 | cfg.cod_info[1][0].quantizerStepSize = 0x10; | ||
2723 | cfg.cod_info[1][1].quantizerStepSize = 0x10; | ||
2724 | |||
2725 | /* Figure average number of 'byte' per frame. */ | ||
2726 | avg_byte_per_frame = (uint32)(SAMP_PER_FRAME * 8000 * cfg.mpg.bitrate) / cfg.samplerate; | ||
2727 | cfg.byte_per_frame = avg_byte_per_frame / 64; | ||
2728 | cfg.frac_per_frame = avg_byte_per_frame % 64; | ||
2729 | cfg.slot_lag = 0; | ||
2730 | } | 2034 | } |
2731 | 2035 | ||
2732 | /* this is the codec entry point */ | 2036 | |
2733 | enum codec_status codec_start(struct codec_api* api) | 2037 | enum codec_status codec_start(struct codec_api* api) |
2734 | { | 2038 | { |
2735 | int i, off=0, gr, channel; | 2039 | int i, ii, gr, k, ch, shift, gr_cnt; |
2040 | int max, min; | ||
2736 | long *buffer; | 2041 | long *buffer; |
2737 | int chunk_size, num_chunks; | 2042 | int chunk_size, num_chunks; |
2738 | int enc_buffer_size; | 2043 | int enc_buffer_size; |
@@ -2743,6 +2048,11 @@ enum codec_status codec_start(struct codec_api* api) | |||
2743 | /* Generic codec initialisation */ | 2048 | /* Generic codec initialisation */ |
2744 | ci = api; | 2049 | ci = api; |
2745 | 2050 | ||
2051 | #ifdef USE_IRAM | ||
2052 | memcpy(iramstart, iramcopy, iramend - iramstart); | ||
2053 | memset(iedata, 0, iend - iedata); | ||
2054 | #endif | ||
2055 | |||
2746 | if(ci->enc_get_inputs == NULL || | 2056 | if(ci->enc_get_inputs == NULL || |
2747 | ci->enc_set_parameters == NULL || | 2057 | ci->enc_set_parameters == NULL || |
2748 | ci->enc_alloc_chunk == NULL || | 2058 | ci->enc_alloc_chunk == NULL || |
@@ -2757,7 +2067,7 @@ enum codec_status codec_start(struct codec_api* api) | |||
2757 | *ci->enc_set_header_callback = NULL; | 2067 | *ci->enc_set_header_callback = NULL; |
2758 | ci->enc_get_inputs(&enc_buffer_size, &enc_channels, &enc_quality); | 2068 | ci->enc_get_inputs(&enc_buffer_size, &enc_channels, &enc_quality); |
2759 | 2069 | ||
2760 | init_mp3_encoder_engine(enc_channels == 2, enc_quality); | 2070 | init_mp3_encoder_engine(enc_channels == 2, enc_quality, 44100); |
2761 | 2071 | ||
2762 | /* must be 4byte aligned */ | 2072 | /* must be 4byte aligned */ |
2763 | chunk_size = (sizeof(long) + cfg.byte_per_frame + 1 + 3) & ~3; | 2073 | chunk_size = (sizeof(long) + cfg.byte_per_frame + 1 + 3) & ~3; |
@@ -2792,9 +2102,9 @@ enum codec_status codec_start(struct codec_api* api) | |||
2792 | } | 2102 | } |
2793 | 2103 | ||
2794 | /* encode one mp3 frame in this loop */ | 2104 | /* encode one mp3 frame in this loop */ |
2795 | CodedData.bitpos = 0; | 2105 | CodedData.bitpos = 0; |
2796 | memset(CodedData.bbuf, 0, sizeof(CodedData.bbuf)); | 2106 | memset(CodedData.bbuf, 0, sizeof(CodedData.bbuf)); |
2797 | 2107 | ||
2798 | if((cfg.slot_lag += cfg.frac_per_frame) >= 64) | 2108 | if((cfg.slot_lag += cfg.frac_per_frame) >= 64) |
2799 | { /* Padding for this frame */ | 2109 | { /* Padding for this frame */ |
2800 | cfg.slot_lag -= 64; | 2110 | cfg.slot_lag -= 64; |
@@ -2803,37 +2113,136 @@ enum codec_status codec_start(struct codec_api* api) | |||
2803 | else | 2113 | else |
2804 | cfg.mpg.padding = 0; | 2114 | cfg.mpg.padding = 0; |
2805 | 2115 | ||
2806 | cfg.mpg.bits_per_frame = 8 * (cfg.byte_per_frame + cfg.mpg.padding); | 2116 | cfg.mean_bits = (8 * cfg.byte_per_frame + 8 * cfg.mpg.padding |
2807 | cfg.mean_bits = (cfg.mpg.bits_per_frame - cfg.sideinfo_len) >> 1; | 2117 | - cfg.sideinfo_len) / cfg.granules / cfg.channels; |
2808 | 2118 | ||
2809 | /* polyphase filtering */ | 2119 | /* shift out old samples */ |
2810 | for(gr=0; gr<2; gr++) | 2120 | memcpy(mfbuf, mfbuf + 2*cfg.granules*576, 4*512); |
2121 | /* read new samples to iram for further processing */ | ||
2122 | memcpy((uint32*)(mfbuf + 2*512), buffer, 4*SAMP_PER_FRAME); | ||
2123 | |||
2124 | if(cfg.resample) /* downsample to half of original */ | ||
2125 | for(i=2*512; i<2*512+2*SAMP_PER_FRAME; i+=4) | ||
2126 | { | ||
2127 | mfbuf[i/2+512] = (short)(((int)mfbuf[i+0] + mfbuf[i+2]) >> 1); | ||
2128 | mfbuf[i/2+513] = (short)(((int)mfbuf[i+1] + mfbuf[i+3]) >> 1); | ||
2129 | } | ||
2130 | |||
2131 | if(cfg.channels == 1) /* mix left and right channels to mono */ | ||
2132 | for(i=2*512; i<2*512+2*SAMP_PER_FRAME; i+=2) | ||
2133 | mfbuf[i] = mfbuf[i+1] = (short)(((int)mfbuf[i] + mfbuf[i+1]) >> 1); | ||
2134 | |||
2135 | cfg.ResvSize = 0; | ||
2136 | gr_cnt = cfg.granules * cfg.channels; | ||
2137 | CodedData.bitpos = cfg.sideinfo_len; /* leave space for mp3 header */ | ||
2138 | |||
2139 | for(gr=0; gr<cfg.granules; gr++) | ||
2811 | { | 2140 | { |
2812 | for(i=0; i<18; i++) | 2141 | short *wk = mfbuf + 2*286 + gr*1152; |
2813 | { | ||
2814 | fill_subband(buffer, off); | ||
2815 | 2142 | ||
2816 | for(channel=cfg.channels; channel--; ) | 2143 | /* 16bit packed wav data can be windowed efficiently on coldfire */ |
2817 | filter_subband(&sb_sample[channel][gr+1][i][0], off, channel); | 2144 | window_subband1(wk, sb_data[0][1-gr][0], sb_data[1][1-gr][0]); |
2818 | 2145 | ||
2819 | buffer += 32; | 2146 | for(ch=0; ch<cfg.channels; ch++) |
2820 | off = (off + 480) & (HAN_SIZE-1); /* offset is modulo HAN_SIZE */ | 2147 | { |
2148 | int band; | ||
2149 | int *mdct; | ||
2150 | |||
2151 | wk = mfbuf + 2*286 + gr*1152 + ch; | ||
2152 | |||
2153 | /* 36864=4*18*16*32 */ | ||
2154 | for(k=0; k<18; k++, wk+=64) | ||
2155 | { | ||
2156 | window_subband2(wk, sb_data[ch][1-gr][k]); | ||
2157 | /* Compensate for inversion in the analysis filter */ | ||
2158 | if(k & 1) | ||
2159 | for(band=1; band<32; band+=2) | ||
2160 | sb_data[ch][1-gr][k][band] *= -1; | ||
2821 | } | 2161 | } |
2822 | } | ||
2823 | 2162 | ||
2824 | mdct_sub_int(sb_sample, mdct_freq); | 2163 | /* Perform imdct of 18 previous + 18 current subband samples */ |
2164 | /* for integer precision do this loop twice (if neccessary) */ | ||
2165 | shift = k = 14; | ||
2166 | for(ii=0; ii<2 && k; ii++) | ||
2167 | { | ||
2168 | mdct = mdct_freq; | ||
2169 | cfg.cod_info[gr][ch].additStep = 4 * (14 - shift); | ||
2170 | for(band=0; band<cfg.mpg.num_bands; band++, mdct+=18) | ||
2171 | { | ||
2172 | int *band0 = sb_data[ch][ gr][0] + order[band]; | ||
2173 | int *band1 = sb_data[ch][1-gr][0] + order[band]; | ||
2174 | int work[18]; | ||
2175 | |||
2176 | /* 9216=4*32*9*8 */ | ||
2177 | for(k=-9; k<0; k++) | ||
2178 | { | ||
2179 | int a = shft_n(band1[(k+9)*32], shift); | ||
2180 | int b = shft_n(band1[(8-k)*32], shift); | ||
2181 | int c = shft_n(band0[(k+9)*32], shift); | ||
2182 | int d = shft_n(band0[(8-k)*32], shift); | ||
2183 | |||
2184 | work[k+ 9] = shft16(a * win[k+ 9][0] + b * win[k+ 9][1] | ||
2185 | + c * win[k+ 9][2] + d * win[k+ 9][3]); | ||
2186 | |||
2187 | work[k+18] = shft16(c * win[k+18][0] + d * win[k+18][1] | ||
2188 | + a * win[k+18][2] + b * win[k+18][3]); | ||
2189 | } | ||
2190 | |||
2191 | /* 7200=4*18*100 */ | ||
2192 | mdct_long(mdct, work); | ||
2193 | |||
2194 | /* Perform aliasing reduction butterfly */ | ||
2195 | if(band != 0) | ||
2196 | for(k=7; k>=0; --k) | ||
2197 | { | ||
2198 | int bu, bd; | ||
2199 | bu = shft15(mdct[k]) * ca[k] + shft15(mdct[-1-k]) * cs[k]; | ||
2200 | bd = shft15(mdct[k]) * cs[k] - shft15(mdct[-1-k]) * ca[k]; | ||
2201 | mdct[-1-k] = bu; | ||
2202 | mdct[ k ] = bd; | ||
2203 | } | ||
2204 | } | ||
2205 | |||
2206 | max = min = 0; | ||
2207 | for(k=0; k<576; k++) | ||
2208 | { | ||
2209 | mdct_freq[k] = shft13(mdct_freq[k]); | ||
2210 | if(max < mdct_freq[k]) max = mdct_freq[k]; | ||
2211 | if(min > mdct_freq[k]) min = mdct_freq[k]; | ||
2212 | } | ||
2213 | |||
2214 | max = (max > -min) ? max : -min; | ||
2215 | cfg.cod_info[gr][ch].max_val = (long)max; | ||
2216 | |||
2217 | /* calc new shift for higher integer precision */ | ||
2218 | for(k=0; max<(0x3c00>>k); k++); | ||
2219 | shift = 12 - k; | ||
2220 | } | ||
2825 | 2221 | ||
2826 | /* bit and noise allocation */ | 2222 | cfg.cod_info[gr][ch].quantStep += cfg.cod_info[gr][ch].additStep; |
2827 | iteration_loop(mdct_freq, cfg.cod_info, cfg.mean_bits); | ||
2828 | 2223 | ||
2829 | /* write the frame to the bitstream */ | 2224 | /* bit and noise allocation */ |
2830 | format_bitstream(enc_data, cfg.cod_info, mdct_freq); | 2225 | iteration_loop(mdct_freq, &cfg.cod_info[gr][ch], gr_cnt--); |
2226 | /* write the frame to the bitstream */ | ||
2227 | Huffmancodebits(enc_data, mdct_freq, &cfg.cod_info[gr][ch]); | ||
2228 | |||
2229 | cfg.cod_info[gr][ch].quantStep -= cfg.cod_info[gr][ch].additStep; | ||
2230 | |||
2231 | if(cfg.granules == 1) | ||
2232 | memcpy(sb_data[ch][0], sb_data[ch][1], sizeof(sb_data[ch][0])); | ||
2233 | } | ||
2234 | } | ||
2831 | 2235 | ||
2832 | /* allocate mp3 chunk, set chunk size, copy chunk to enc_buffer */ | ||
2833 | mp3_chunk_ptr = (uint32*)ci->enc_alloc_chunk(); | 2236 | mp3_chunk_ptr = (uint32*)ci->enc_alloc_chunk(); |
2834 | mp3_chunk_ptr[0] = (CodedData.bitpos + 7) >> 3; | 2237 | mp3_chunk_ptr[0] = cfg.byte_per_frame + cfg.mpg.padding; //(CodedData.bitpos + 7) >> 3; |
2238 | /* finish this chunk by adding sideinfo header data */ | ||
2239 | CodedData.bitpos = 0; | ||
2240 | encodeSideInfo( cfg.cod_info ); | ||
2241 | |||
2242 | /* allocate mp3 chunk, set chunk size, copy chunk to enc_buffer */ | ||
2835 | memcpy(&mp3_chunk_ptr[1], CodedData.bbuf, mp3_chunk_ptr[0]); | 2243 | memcpy(&mp3_chunk_ptr[1], CodedData.bbuf, mp3_chunk_ptr[0]); |
2836 | ci->enc_free_chunk(); | 2244 | ci->enc_free_chunk(); |
2245 | |||
2837 | ci->yield(); | 2246 | ci->yield(); |
2838 | } | 2247 | } |
2839 | 2248 | ||
@@ -2859,4 +2268,5 @@ enum codec_status codec_start(struct codec_api* api) | |||
2859 | 2268 | ||
2860 | return CODEC_OK; | 2269 | return CODEC_OK; |
2861 | } | 2270 | } |
2271 | |||
2862 | #endif | 2272 | #endif |