aboutsummaryrefslogtreecommitdiff
path: root/decoder/ixheaacd_aac_rom.c
blob: 4a3cc1929f2f75a78dd0c7f0cf0646f8c2267fe0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
/******************************************************************************
 *                                                                            *
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *****************************************************************************
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
*/
#include "ixheaacd_sbr_common.h"
#include "ixheaacd_type_def.h"
#include "ixheaacd_defines.h"
#include "ixheaacd_aac_rom.h"
#include "ixheaacd_intrinsics.h"

// -1 is appended at the end of each table to identify
//   number of scf bands at run time
//
const ia_aac_dec_huffman_tables_struct ixheaacd_aac_huffmann_tables = {

    // static const WORD8 ixheaacd_sfb_96_1024[42] =
    {4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
     8,  8,  8,  8,  8,  12, 12, 12, 12, 12, 16, 16, 24, 28,
     36, 44, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, -1},

    // 12 scfbands
    // static const WORD8 ixheaacd_sfb_96_128[13] =
    {4, 4, 4, 4, 4, 4, 8, 8, 8, 16, 28, 36, -1},

    // 47 scfbands
    // static const WORD8 ixheaacd_sfb_64_1024[48] =
    {4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,
     8,  8,  12, 12, 12, 16, 16, 16, 20, 24, 24, 28, 36, 40, 40, 40,
     40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -1},

    // 12 scfbands */
    // static const WORD8 ixheaacd_sfb_64_128[13] =
    // same as ixheaacd_sfb_96_128

    // 49 scfbands
    // static const WORD8 ixheaacd_sfb_48_1024[50] =
    {4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,  8,  8,  8,  8,
     12, 12, 12, 12, 16, 16, 20, 20, 24, 24, 28, 28, 32, 32, 32, 32, 32,
     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 96, -1},

    // 14 scfbands
    // static const WORD8 ixheaacd_sfb_48_128[15] =
    {4, 4, 4, 4, 4, 8, 8, 8, 12, 12, 12, 16, 16, 16, -1},

    // 51 scfbands
    // static const WORD8 ixheaacd_sfb_32_1024[52] =
    {4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,  8,  8,  8,  8,  12,
     12, 12, 12, 16, 16, 20, 20, 24, 24, 28, 28, 32, 32, 32, 32, 32, 32, 32,
     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -1},

    // 47 scfbands
    // static const WORD8 ixheaacd_sfb_24_1024[48] =
    {4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,  8,  8,
     8,  8,  8,  8,  8,  12, 12, 12, 12, 16, 16, 16, 20, 20, 24, 24,
     28, 28, 32, 36, 36, 40, 44, 48, 52, 52, 64, 64, 64, 64, 64, -1},

    // 15 scfbands
    // static const WORD8 ixheaacd_sfb_24_128[16] =
    {4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 12, 12, 16, 16, 20, -1},

    // 43 scfbands
    // static const WORD8 ixheaacd_sfb_16_1024[44] =
    {8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  12, 12, 12, 12,
     12, 12, 12, 12, 12, 16, 16, 16, 16, 20, 20, 20, 24, 24, 28,
     28, 32, 36, 40, 40, 44, 48, 52, 56, 60, 64, 64, 64, -1},

    // 15 scfbands
    // static const WORD8 ixheaacd_sfb_16_128[16] =
    {4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 12, 12, 16, 20, 20, -1},

    // 40 scfbands
    // static const WORD8 ixheaacd_sfb_8_1024[41] =
    {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16,
     16, 16, 16, 16, 16, 16, 20, 20, 20, 20, 24, 24, 24, 28,
     28, 32, 36, 36, 40, 44, 48, 52, 56, 60, 64, 80, -1},

    // 15 scfbands
    // static const WORD8 ixheaacd_sfb_8_128[16] =
    {4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 12, 16, 20, 20, -1},

    // const ia_sampling_rate_info_struct str_sample_rate_info[16] =
    {{96000},
     {88200},
     {64000},
     {48000},
     {44100},
     {32000},
     {24000},
     {22050},
     {16000},
     {12000},
     {11025},
     {8000},
     {7350}},

    //        15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
    //       +------------------------------------------------+
    //       | 1|  Len     |    Symbol                        |
    //       +------------------------------------------------+
    //       | 0|          |    Offset                        |
    //       +------------------------------------------------+
    // LSB (00) is set 1 when the codeword is decoded
    //
    // HuffmanCodeBook_1
    // idx_hf11
    {
        0x20100001, 0x41e00045, 0x659000c6, 0x890001c4, 0x0e6003df, 0xaef003e8,
        0x10d007ef, 0x115007f7, 0x119007fb, 0xd1a007fc, 0x11e00ffd, 0x11f00ffe,
        0x12000fff, 0xc0700009, 0x052000bf, 0x08b001bf, 0x0c6003bf, 0x0fd007df,
        0x11c00ffb, 0x20e0001a, 0x0180003f,
    },

    // idx_hf10
    {0x10200002, 0x21800029, 0x32900064, 0x442000e2, 0x561001e4,
     0x087003ef, 0x68a003f2, 0x09c007f7, 0x0a0007fb, 0x0a400ffb,
     0x0a600ffd, 0x0a700ffe, 0x0a800fff, 0x60a0000d, 0x0240005f,
     0x03f000df, 0x05c001df, 0x077003df, 0x094007ef, 0x00e0001f},

    // idx_hf9
    {0x00000000, 0x00200005, 0x1030000c, 0x20a00072, 0x31d001e6, 0x431003e1,
     0x550007e2, 0x67600feb, 0x08e01fef, 0x09601ff7, 0x09e03ff7, 0x0a203ffb,
     0x0a403ffd, 0x0a607ffd, 0x0a707ffe, 0x0a807fff, 0x00700037, 0x512000ed,
     0x02f003df, 0x04d007df, 0x06a00fdf, 0x07e01fdf, 0x016001df},
    // idx_hf8
    {0x10000000, 0x20c00014, 0x31600033, 0x42400075, 0x030000f7, 0x533000fa,
     0x039001fb, 0x03b001fd, 0x03d003fd, 0x03e003fe, 0x03f003ff, 0x50500006,
     0x0120002f, 0x01e0006f, 0x028000ef, 0x035001f7, 0x0070000f},

    // idx_hf7
    {0x00000000, 0x00200005, 0x1030000c, 0x20c00074, 0x316000f3, 0x424001f5,
     0x030003f7, 0x533003fa, 0x039007fb, 0x03b007fd, 0x03d00ffd, 0x03e00ffe,
     0x03f00fff, 0x00700037, 0x012000ef, 0x01e001ef, 0x028003ef, 0x035007f7},

    // idx_hf6
    {0x00700007, 0x10800008, 0x21800033, 0x32500074, 0x42d000f1, 0x041001f7,
     0x544001fa, 0x04a003fb, 0x04c003fd, 0x04e007fd, 0x04f007fe, 0x050007ff,
     0x0140002f, 0x0200006f, 0x02b000ef, 0x039001ef, 0x046003f7},

    // idx_hf5
    {0x00000000, 0x0040000b, 0x0080001b, 0x10c00073, 0x218000f3, 0x324001f3,
     0x430003f3, 0x040007f7, 0x542007f9, 0x04a00ffb, 0x04c00ffd, 0x04e01ffd,
     0x04f01ffe, 0x05001fff, 0x014000ef, 0x020001ef, 0x02c003ef, 0x038007ef,
     0x04600ff7},

    // idx_hf4
    {0x00700007, 0x10900009, 0x20f00019, 0x31800070, 0x42d000f6, 0x535001f5,
     0x041003f7, 0x643003f9, 0x04b007fb, 0x04d007fd, 0x04e007fe, 0x04f00ffe,
     0x05000fff, 0x00d00017, 0x0170006f, 0x026000ef, 0x02f001ef, 0x039003ef,
     0x047007f7},

    // idx_hf3
    {0x00000000, 0x0040000b, 0x10600019, 0x20c00039, 0x314000f2, 0x423001f4,
     0x031003f7, 0x532003f8, 0x63a007f9, 0x04200ffb, 0x74300ffc, 0x84601ffc,
     0x94903ffc, 0x04d07ffd, 0x04e07ffe, 0x04f0fffe, 0x0500ffff, 0x00a00037,
     0x80f00076, 0x01e001ef, 0x029003ef, 0x038007f7, 0x03e00ff7, 0x04501ffb,
     0x04803ffb, 0x04b07ffb, 0x011000ef},

    // idx_hf2
    {0x10000000, 0x01e0002f, 0x22000031, 0x32f00072, 0x041000f7, 0x442000f8,
     0x04c001fb, 0x04e001fd, 0x04f001fe, 0x050001ff, 0x40100002, 0x02c0006f,
     0x039000ef, 0x048001f7, 0x1080000c, 0x00e0001f},

    // idx_hf1
    {0x00000000, 0x00800017, 0x0180006f, 0x02000077, 0x030001ef, 0x038001f7,
     0x040003f7, 0x048007f7, 0x04c007fb, 0x04e007fd, 0x04f007fe, 0x050007ff},

    // inp_hf11
    {0x000c, 0x0004, 0x0244, 0x2405, 0x0225, 0x0025, 0x0465, 0x0265, 0x0485,
     0x0286, 0x0686, 0x06a6, 0x0446, 0x04a6, 0x0046, 0x06c6, 0x08a7, 0x02a7,
     0x08c7, 0x04c7, 0x08e7, 0x06e7, 0x0667, 0x0067, 0x0ac7, 0x0ae7, 0x04e7,
     0x0907, 0x02c7, 0x0b07, 0x0707, 0x0b27, 0x0928, 0x0d08, 0x0508, 0x0ce8,
     0x0d28, 0x0728, 0x02e8, 0x0a88, 0x0868, 0x22a8, 0x2268, 0x2288, 0x0d48,
     0x22c8, 0x0888, 0x0948, 0x0088, 0x0648, 0x0b48, 0x0ca8, 0x22e8, 0x2248,
     0x2308, 0x0528, 0x0f28, 0x0748, 0x0d68, 0x0b68, 0x0ec8, 0x2348, 0x0f48,
     0x0f08, 0x2328, 0x10e8, 0x0428, 0x0308, 0x0968, 0x2368, 0x0f68, 0x2388,
     0x1308, 0x2228, 0x0d88, 0x1528, 0x0548, 0x0b88, 0x1748, 0x23a8, 0x1168,
     0x1148, 0x0768, 0x0aa8, 0x23c8, 0x1968, 0x0f88, 0x0988, 0x0da8, 0x0fa8,
     0x00a8, 0x1189, 0x23e9, 0x1b89, 0x0329, 0x1129, 0x1fc9, 0x0ba9, 0x1da9,
     0x0789, 0x11a9, 0x0fc9, 0x0569, 0x11c9, 0x1369, 0x1389, 0x21e9, 0x09a9,
     0x0dc9, 0x0cc9, 0x13a9, 0x0bc9, 0x11e9, 0x0fe9, 0x0349, 0x15a9, 0x00c9,
     0x1589, 0x1349, 0x13c9, 0x09c9, 0x0589, 0x13e9, 0x07a9, 0x0de9, 0x15c9,
     0x1209, 0x15e9, 0x1409, 0x17c9, 0x0369, 0x0ee9, 0x1609, 0x1009, 0x07c9,
     0x0be9, 0x1569, 0x09e9, 0x17a9, 0x1be9, 0x0e09, 0x1c09, 0x05a9, 0x2209,
     0x0c09, 0x1809, 0x17ea, 0x142a, 0x102a, 0x122a, 0x020a, 0x0a2a, 0x00ea,
     0x080a, 0x182a, 0x1bca, 0x1c2a, 0x19ea, 0x05ea, 0x1c4a, 0x124a, 0x0e2a,
     0x164a, 0x162a, 0x1e0a, 0x1a0a, 0x038a, 0x0a0a, 0x178a, 0x07ea, 0x03ca,
     0x19ca, 0x104a, 0x082a, 0x0c2a, 0x0c4a, 0x1e4a, 0x0a4a, 0x184a, 0x1e2a,
     0x1a2a, 0x1c6a, 0x1a4a, 0x110a, 0x186a, 0x05ca, 0x144a, 0x1e6a, 0x0e6a,
     0x168a, 0x202a, 0x126a, 0x146a, 0x1e8a, 0x166a, 0x0c6a, 0x188a, 0x1dea,
     0x060a, 0x0e4a, 0x03aa, 0x1caa, 0x010a, 0x1c8a, 0x106a, 0x1a6a, 0x108a,
     0x204a, 0x19aa, 0x0e8a, 0x062a, 0x208a, 0x206a, 0x03ea, 0x148a, 0x0a6a,
     0x1eaa, 0x12aa, 0x1cca, 0x128a, 0x0c8a, 0x084a, 0x16aa, 0x18aa, 0x1a8a,
     0x20aa, 0x20ca, 0x12ca, 0x200a, 0x10aa, 0x132a, 0x012a, 0x14ca, 0x14aa,
     0x1aaa, 0x1eca, 0x16ea, 0x1eea, 0x1aca, 0x0eaa, 0x10ca, 0x14eb, 0x20eb,
     0x18cb, 0x192b, 0x040b, 0x16cb, 0x170b, 0x1d0b, 0x1ceb, 0x190b, 0x18eb,
     0x12eb, 0x1f2b, 0x1d2b, 0x1b2b, 0x210b, 0x1f0b, 0x154b, 0x1aeb, 0x150b,
     0x014b, 0x1b0b, 0x176b, 0x1b4b, 0x172b, 0x1d4b, 0x01ab, 0x1f4b, 0x212b,
     0x214b, 0x194b, 0x1f6b, 0x1bab, 0x016b, 0x1d6b, 0x216b, 0x218b, 0x1b6b,
     0x1dcb, 0x1f8b, 0x1d8b, 0x198b, 0x1fab, 0x01cc, 0x018c, 0x21ac, 0x1fec,
     0x01ec, 0x21cc},
    // inp_hf10
    {0x000c, 0x01c4, 0x01e4, 0x0364, 0x0385, 0x01a5, 0x0025, 0x0205, 0x0525,
     0x0505, 0x03a5, 0x0545, 0x0346, 0x0046, 0x03c6, 0x06c6, 0x0226, 0x06a6,
     0x0006, 0x06e6, 0x0566, 0x04e6, 0x0066, 0x0706, 0x03e6, 0x0866, 0x0247,
     0x0847, 0x0887, 0x0587, 0x08a7, 0x0727, 0x0a07, 0x0407, 0x0a27, 0x0687,
     0x09e7, 0x0087, 0x0267, 0x05a7, 0x08c7, 0x0a47, 0x0747, 0x0a68, 0x0ba8,
     0x05c8, 0x0428, 0x08e8, 0x0d48, 0x0bc8, 0x0828, 0x0b88, 0x00a8, 0x0d28,
     0x0288, 0x0d68, 0x0be8, 0x0768, 0x0448, 0x0a88, 0x0c08, 0x02a8, 0x05e8,
     0x0d88, 0x0788, 0x0908, 0x0da8, 0x0928, 0x0c29, 0x0aa9, 0x0ee9, 0x09c9,
     0x0ac9, 0x0f09, 0x0609, 0x0ec9, 0x0469, 0x00c9, 0x0dc9, 0x0f29, 0x07a9,
     0x1089, 0x02c9, 0x0c49, 0x0de9, 0x0f49, 0x0c69, 0x10a9, 0x0949, 0x10c9,
     0x0489, 0x1069, 0x0629, 0x0f69, 0x0ae9, 0x0d09, 0x07c9, 0x0b69, 0x1229,
     0x0c8a, 0x124a, 0x110a, 0x02ea, 0x120a, 0x0f8a, 0x00ea, 0x0e0a, 0x10ea,
     0x064a, 0x096a, 0x0e2a, 0x128a, 0x010a, 0x126a, 0x04aa, 0x0caa, 0x0b0a,
     0x112a, 0x07ea, 0x030a, 0x13ca, 0x0faa, 0x13ea, 0x12aa, 0x098a, 0x140a,
     0x12ca, 0x142a, 0x066a, 0x0b2a, 0x0eaa, 0x114a, 0x104a, 0x13aa, 0x012a,
     0x080a, 0x0fca, 0x144a, 0x04ca, 0x0e4a, 0x0feb, 0x032b, 0x12eb, 0x146b,
     0x0ccb, 0x09ab, 0x0b4b, 0x116b, 0x0e6b, 0x148b, 0x014b, 0x0ceb, 0x11eb,
     0x118b, 0x130b, 0x132b, 0x016b, 0x134b, 0x100b, 0x11ab, 0x138b, 0x0e8b,
     0x14ac, 0x11cc, 0x102c, 0x136c, 0x14ec, 0x018c, 0x14cc, 0x150c},
    // inp_hf9
    {0x000f, 0x0001, 0x01a3, 0x0023, 0x01c4, 0x0366, 0x01e6, 0x0346, 0x0046,
     0x0507, 0x0387, 0x0207, 0x04e8, 0x0068, 0x03a8, 0x0528, 0x0228, 0x06a8,
     0x03c8, 0x0248, 0x06c9, 0x0549, 0x0089, 0x0689, 0x0849, 0x03e9, 0x0269,
     0x0569, 0x0869, 0x09e9, 0x06e9, 0x00aa, 0x040a, 0x082a, 0x028a, 0x058a,
     0x02aa, 0x0d2a, 0x070a, 0x088a, 0x0a0a, 0x0b8a, 0x00ca, 0x0d4a, 0x044a,
     0x05aa, 0x042a, 0x072a, 0x0eca, 0x02ca, 0x0baa, 0x09cb, 0x08ab, 0x0a2b,
     0x0d6b, 0x00eb, 0x0eeb, 0x05eb, 0x074b, 0x05cb, 0x010b, 0x106b, 0x0a4b,
     0x046b, 0x08cb, 0x0d0b, 0x0b6b, 0x0bcb, 0x108b, 0x0f0b, 0x0d8b, 0x02eb,
     0x0beb, 0x0a6b, 0x08eb, 0x078b, 0x076b, 0x060b, 0x120b, 0x092b, 0x0eab,
     0x0dab, 0x10ac, 0x048c, 0x012c, 0x122c, 0x0f2c, 0x0a8c, 0x13ac, 0x07ac,
     0x0dcc, 0x030c, 0x0f4c, 0x10cc, 0x090c, 0x0c0c, 0x04ac, 0x032c, 0x13cc,
     0x124c, 0x062c, 0x094c, 0x0aac, 0x0dec, 0x126c, 0x014c, 0x0c2c, 0x13ec,
     0x104c, 0x10ec, 0x07cc, 0x0acc, 0x04cc, 0x0f6c, 0x0f8c, 0x07ec, 0x11ec,
     0x0aec, 0x064c, 0x096c, 0x0e0d, 0x0c6d, 0x142d, 0x066d, 0x128d, 0x0c4d,
     0x140d, 0x12ad, 0x110d, 0x080d, 0x0c8d, 0x098d, 0x016d, 0x144d, 0x0b0d,
     0x138d, 0x112d, 0x09ad, 0x0cad, 0x0fad, 0x018d, 0x12cd, 0x0e2d, 0x0fcd,
     0x114d, 0x0ccd, 0x146d, 0x0b2d, 0x0e6d, 0x12ed, 0x0ced, 0x0b4d, 0x0e4e,
     0x116e, 0x0e8e, 0x0fee, 0x100e, 0x102e, 0x11ae, 0x14ae, 0x118e, 0x130e,
     0x148e, 0x132e, 0x14ce, 0x14ee, 0x11cf, 0x134f, 0x136f, 0x150f},

    // inp_hf8
    {0x000a, 0x0123, 0x0224, 0x0104, 0x0144, 0x0024, 0x0244, 0x0005, 0x0205,
     0x0045, 0x0325, 0x0165, 0x0345, 0x0265, 0x0366, 0x0426, 0x0186, 0x0446,
     0x0286, 0x0306, 0x0066, 0x0466, 0x0386, 0x0546, 0x0527, 0x02a7, 0x01a7,
     0x0567, 0x03a7, 0x0487, 0x0587, 0x0087, 0x04a7, 0x0407, 0x02c7, 0x0647,
     0x0627, 0x01c7, 0x03c8, 0x0668, 0x05a8, 0x0508, 0x0688, 0x00a8, 0x04c8,
     0x0728, 0x0748, 0x02e8, 0x06a8, 0x0768, 0x01e8, 0x05c8, 0x03e8, 0x06c9,
     0x0789, 0x0609, 0x04e9, 0x00c9, 0x07a9, 0x07c9, 0x06e9, 0x05ea, 0x070a,
     0x00ea, 0x07ea},

    // inp_hf7
    {0x000c, 0x0001, 0x0103, 0x0023, 0x0124, 0x0226, 0x0146, 0x0206, 0x0046,
     0x0327, 0x0167, 0x0247, 0x0307, 0x0067, 0x0268, 0x0348, 0x0188, 0x0428,
     0x01a8, 0x0528, 0x0368, 0x0288, 0x0088, 0x0408, 0x0449, 0x02a9, 0x0549,
     0x00a9, 0x0629, 0x0509, 0x01c9, 0x0469, 0x03a9, 0x0389, 0x0569, 0x02c9,
     0x0649, 0x01e9, 0x03ca, 0x00ca, 0x060a, 0x048a, 0x072a, 0x04aa, 0x074a,
     0x058a, 0x066a, 0x02ea, 0x076a, 0x068a, 0x05aa, 0x04ca, 0x03ea, 0x070b,
     0x00eb, 0x06ab, 0x05cb, 0x078b, 0x04eb, 0x05eb, 0x07ab, 0x07cc, 0x06cc,
     0x06ec, 0x07ec},

    // inp_hf6
    {0x000b, 0x0504, 0x0624, 0x04e4, 0x0524, 0x03e4, 0x0644, 0x0404, 0x0604,
     0x03c4, 0x0726, 0x0766, 0x02e6, 0x02a6, 0x02c6, 0x0426, 0x0746, 0x05e6,
     0x0666, 0x04c6, 0x03a6, 0x0546, 0x0706, 0x0306, 0x0286, 0x0786, 0x01c7,
     0x0887, 0x0847, 0x0447, 0x0187, 0x0687, 0x05c7, 0x0387, 0x0867, 0x01a7,
     0x04a7, 0x0567, 0x08a7, 0x0168, 0x0328, 0x07a8, 0x0828, 0x06e8, 0x0268,
     0x01e8, 0x08c8, 0x0809, 0x0149, 0x0209, 0x05a9, 0x0369, 0x09a9, 0x00a9,
     0x0069, 0x06a9, 0x0969, 0x0469, 0x0489, 0x00c9, 0x0049, 0x07c9, 0x0249,
     0x0089, 0x09c9, 0x0949, 0x0349, 0x0989, 0x06c9, 0x0589, 0x012a, 0x022a,
     0x07ea, 0x092a, 0x08ea, 0x09ea, 0x00ea, 0x002a, 0x0a0b, 0x010b, 0x000b,
     0x090b},

    // inp_hf5
    {0x000d, 0x0501, 0x03e4, 0x0624, 0x0524, 0x04e4, 0x0605, 0x0405, 0x03c5,
     0x0645, 0x02c7, 0x0547, 0x0747, 0x04c7, 0x02a8, 0x0768, 0x03a8, 0x0668,
     0x02e8, 0x0728, 0x0428, 0x05e8, 0x01a8, 0x0868, 0x04a8, 0x0568, 0x0189,
     0x0689, 0x0889, 0x0389, 0x01c9, 0x0849, 0x05c9, 0x0449, 0x0309, 0x0789,
     0x0289, 0x0709, 0x016a, 0x082a, 0x032a, 0x06ea, 0x08aa, 0x07aa, 0x01ea,
     0x026a, 0x048a, 0x008a, 0x09aa, 0x098a, 0x006b, 0x058b, 0x096b, 0x036b,
     0x06ab, 0x046b, 0x00ab, 0x05ab, 0x080b, 0x014b, 0x020b, 0x034b, 0x004b,
     0x09cb, 0x06cb, 0x07cb, 0x08cb, 0x00cb, 0x024c, 0x094c, 0x07ec, 0x002c,
     0x00ec, 0x08ec, 0x022c, 0x09ec, 0x092c, 0x012c, 0x090d, 0x010d, 0x0a0d,
     0x000d},

    // inp_hf4
    {0x000c, 0x0504, 0x01a4, 0x04a4, 0x04e4, 0x03e4, 0x0364, 0x0484, 0x0004,
     0x0084, 0x03c4, 0x0385, 0x0185, 0x0025, 0x0145, 0x0065, 0x0125, 0x0867,
     0x0567, 0x0627, 0x0527, 0x0847, 0x0807, 0x0607, 0x0747, 0x0207, 0x01c8,
     0x0548, 0x02c8, 0x0408, 0x05c8, 0x04c8, 0x0448, 0x07e8, 0x0728, 0x05a8,
     0x06e8, 0x0168, 0x02a8, 0x00a8, 0x01e8, 0x0268, 0x03a8, 0x00e8, 0x0428,
     0x06c8, 0x0048, 0x0249, 0x00c9, 0x0689, 0x0989, 0x08c9, 0x0589, 0x0649,
     0x0889, 0x066a, 0x096a, 0x08aa, 0x032a, 0x022a, 0x092a, 0x02ea, 0x07aa,
     0x046a, 0x09ea, 0x05ea, 0x076a, 0x082a, 0x06aa, 0x08eb, 0x09ab, 0x030b,
     0x090b, 0x010b, 0x078b, 0x028b, 0x070b, 0x0a0b, 0x034b, 0x09cb, 0x094c,
     0x07cc},

    // inp_hf3
    {0x0010, 0x0001, 0x0364, 0x0024, 0x0124, 0x0064, 0x0485, 0x0085, 0x0186,
     0x0146, 0x03c6, 0x01a6, 0x0386, 0x04e6, 0x0507, 0x03e7, 0x04a7, 0x06c8,
     0x0048, 0x00a8, 0x07e8, 0x0608, 0x00e9, 0x0209, 0x05a9, 0x01c9, 0x0849,
     0x00c9, 0x02a9, 0x01e9, 0x0249, 0x0169, 0x0729, 0x0629, 0x02c9, 0x0549,
     0x0569, 0x05ca, 0x042a, 0x044a, 0x026a, 0x086a, 0x052a, 0x080a, 0x040a,
     0x010a, 0x022a, 0x096a, 0x066a, 0x03aa, 0x06ea, 0x032a, 0x090b, 0x068b,
     0x04cb, 0x074b, 0x058b, 0x098b, 0x030b, 0x02eb, 0x046c, 0x092c, 0x08ac,
     0x09cc, 0x034c, 0x09ec, 0x08cc, 0x064c, 0x06ac, 0x028d, 0x078d, 0x05ed,
     0x07ae, 0x088e, 0x082e, 0x0a0f, 0x09af, 0x08ef, 0x076f, 0x070f, 0x0950,
     0x07d0},
    // inp_hf2
    {0x0009, 0x0503, 0x0864, 0x01a5, 0x0525, 0x04a5, 0x04e5, 0x03e5, 0x0565,
     0x0625, 0x0446, 0x02c6, 0x05c6, 0x0546, 0x0606, 0x04c6, 0x0186, 0x0746,
     0x0806, 0x0086, 0x0486, 0x08c6, 0x0886, 0x0406, 0x0206, 0x0646, 0x0386,
     0x01c6, 0x03c6, 0x0146, 0x0986, 0x0686, 0x0586, 0x0846, 0x05e7, 0x0827,
     0x0267, 0x0427, 0x07a7, 0x0967, 0x08e7, 0x0327, 0x03a7, 0x09e7, 0x01e7,
     0x0027, 0x0167, 0x06e7, 0x0927, 0x0768, 0x02a8, 0x00e8, 0x0228, 0x00a8,
     0x0068, 0x0368, 0x08a8, 0x07e8, 0x05a8, 0x06a8, 0x02e8, 0x0128, 0x0668,
     0x0728, 0x0468, 0x09a8, 0x0788, 0x0288, 0x0709, 0x0009, 0x0309, 0x0349,
     0x0a09, 0x00c9, 0x07c9, 0x0249, 0x0109, 0x0909, 0x06c9, 0x0049, 0x0949,
     0x09c9},

    // inp_hf1
    {0x000b, 0x0501, 0x0865, 0x01a5, 0x04e5, 0x0625, 0x0525, 0x04a5, 0x0565,
     0x03e5, 0x0747, 0x02c7, 0x04c7, 0x05c7, 0x0447, 0x0547, 0x0987, 0x0487,
     0x0087, 0x0387, 0x0807, 0x0607, 0x0207, 0x0587, 0x08c7, 0x0407, 0x0687,
     0x0647, 0x0147, 0x0887, 0x0187, 0x0847, 0x01c7, 0x03c7, 0x0929, 0x0269,
     0x07a9, 0x0669, 0x05e9, 0x0469, 0x0429, 0x06e9, 0x0829, 0x05a9, 0x0329,
     0x01e9, 0x00e9, 0x03a9, 0x0769, 0x0729, 0x02a9, 0x0029, 0x0369, 0x06a9,
     0x08a9, 0x09a9, 0x02e9, 0x09e9, 0x00aa, 0x012a, 0x096a, 0x07ea, 0x016a,
     0x006a, 0x022a, 0x08ea, 0x078b, 0x028b, 0x030b, 0x070b, 0x0a0b, 0x010b,
     0x090b, 0x00cb, 0x000b, 0x094b, 0x07cb, 0x034b, 0x024b, 0x004b, 0x06cb,
     0x09cb},

    // UWORD16 huffman_code_book_scl[122];
    {0x0013, 0x0781, 0x0763, 0x07a4, 0x0744, 0x07c4, 0x0725, 0x07e5, 0x0706,
     0x0806, 0x06e6, 0x0826, 0x0847, 0x06c7, 0x0867, 0x06a8, 0x0888, 0x0688,
     0x08a8, 0x0668, 0x08c9, 0x0649, 0x0629, 0x08e9, 0x090a, 0x060a, 0x092a,
     0x05ea, 0x094a, 0x05ca, 0x098b, 0x096b, 0x09ab, 0x09cb, 0x05ab, 0x056b,
     0x058c, 0x09ec, 0x054c, 0x052c, 0x0a0c, 0x050c, 0x0a2d, 0x04ed, 0x0a4d,
     0x04cd, 0x0a6d, 0x04ae, 0x046e, 0x0aae, 0x042e, 0x048e, 0x044e, 0x0a8e,
     0x040e, 0x0aef, 0x0b2f, 0x03cf, 0x03ef, 0x0ad0, 0x03b0, 0x0350, 0x0370,
     0x0390, 0x0310, 0x0b10, 0x0331, 0x02d1, 0x02f1, 0x0b52, 0x02b2, 0x0272,
     0x0072, 0x0032, 0x0052, 0x0012, 0x0c53, 0x0c73, 0x0c93, 0x0cb3, 0x0cd3,
     0x0eb3, 0x0c33, 0x0b73, 0x0b93, 0x0bb3, 0x0bd3, 0x0bf3, 0x0c13, 0x0d13,
     0x0df3, 0x0e13, 0x0e33, 0x0e53, 0x0e73, 0x0e93, 0x0dd3, 0x0d33, 0x0d53,
     0x0d73, 0x0d93, 0x0db3, 0x0ed3, 0x00d3, 0x0113, 0x0133, 0x0153, 0x00b3,
     0x0cf3, 0x0f13, 0x0ef3, 0x0093, 0x00f3, 0x01f3, 0x0213, 0x0253, 0x0293,
     0x0233, 0x0173, 0x0193, 0x01d3, 0x01b3},

    // UWORD32 huffman_code_book_scl_index[33];
    {0x00000000, 0x10100004, 0x2040000c, 0x00a0003b, 0x30d0007a, 0x412000fa,
     0x516001f9, 0x61c003f9, 0x722007f9, 0x82800ff9, 0x92d01ff8, 0xa3503ff9,
     0xb400fff6, 0xc431fff0, 0x0687ffef, 0x0707fff7, 0x0747fffb, 0x0767fffd,
     0x0777fffe, 0x0787ffff, 0x0030000b, 0x0060001b, 0x00f000f7, 0x014001f7,
     0x01a003f7, 0x020007f7, 0x02600ff7, 0x02c01ff7, 0x03303ff7, 0x03907ff7,
     0x0421ffef, 0x14a3ffe8, 0x0587ffdf},

    // const WORD16 ixheaacd_sfb_48_512[37] =
    {4, 4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8, 8,
     8, 12, 12, 12, 12, 16, 20, 24, 28, 32, 32, 32, 32, 32, 32, 32, 52, -1},
    // const WORD16 ixheaacd_sfb_32_512[38] =
    {4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
     4,  8,  8,  8,  8,  8,  12, 12, 12, 12, 16, 16, 16,
     20, 24, 24, 28, 32, 32, 32, 32, 32, 32, 32, -1},
    // const WORD16 ixheaacd_sfb_24_512[32] =
    {4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,  12, 12,
     12, 16, 20, 24, 28, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -1},
    // const WORD16 ixheaacd_sfb_48_480[36] =
    {
        4, 4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,  8,
        8, 12, 12, 12, 12, 12, 16, 16, 24, 28, 32, 32, 32, 32, 32, 32, 48, -1,
    },
    // const WORD16 ixheaacd_sfb_32_480[38] =
    {
        4, 4, 4, 4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,
        8, 8, 8, 12, 12, 12, 16, 16, 20, 24, 32, 32, 32, 32, 32, 32, 32, 32, -1,
    },
    // const WORD16 ixheaacd_sfb_24_480[31] =
    {
        4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,  12, 12,
        12, 16, 20, 24, 28, 32, 32, 32, 32, 32, 32, 32, 32, 32, -1,
    },

    // static const WORD16 sfb_96_960[41] =
    {
        4,    4,    4,    4,    4,    4,
        4,    4,    4,    4,    4,    4,
        4,    4,    8,    8,    8,    8,
        8,   12,   12,   12,   12,   12,
        16,   16,   24,   28,   36,   44,
        64,   64,   64,   64,   64,   64,
        64,   64,   64,   64,  -1
    },

    /* 13 scfbands */
    // static const WORD16 sfb_96_120[13] =
    {
        4,    4,    4,    4,     4,   4,
        8,    8,    8,   16,    28,  28,
        -1
    },

    /* 47 scfbands*/
    // static const WORD16 sfb_64_960[47] =
    {
        4,   4,   4,   4,   4,   4,   4,
        4,   4,   4,   4,   4,   4,   4,
        8,   8,   8,   8,  12,  12,  12,
        16,  16,  16,  20,  24,  24,  28,
        36,  40,  40,  40,  40,  40,  40,
        40,  40,  40,  40,  40,  40,  40,
        40,  40,  40,  16,  -1
    },

    /* 49 scfbands */
    // static const WORD16 sfb_48_960[50] =
    {
        4,      4,      4,      4,      4,      4,
        4,      4,      4,      4,      8,      8,
        8,      8,      8,      8,      8,      12,
        12,     12,     12,     16,     16,     20,
        20,     24,     24,     28,     28,     32,
        32,     32,     32,     32,     32,     32,
        32,     32,     32,     32,     32,     32,
        32,     32,     32,     32,     32,     32,
        32,     -1
    },

    /* 14 scfbands */
    // static const WORD16 sfb_48_120[15] =
    {
        4,      4,      4,      4,      4,      8,
        8,      8,      12,     12,     12,     16,
        16,     8,      -1
    },


    /* 47 scfbands */
    // static const WORD16 sfb_24_960[47] =
    {
        4,      4,      4,      4,      4,      4,
        4,      4,      4,      4,      4,      8,
        8,      8,      8,      8,      8,      8,
        8,      8,      8,      12,     12,     12,
        12,     16,     16,     16,     20,     20,
        24,     24,     28,     28,     32,     36,
        36,     40,     44,     48,     52,     52,
        64,     64,     64,     64,     -1
    },

    /* 15 scfbands */
    // static const WORD16 sfb_24_120[16] =
    {
        4,      4,      4,      4,      4,      4,
        4,      8,      8,      8,      12,     12,
        16,     16,     12,     -1
    },

    /* 43 scfbands */
    // static const WORD16 sfb_16_960[43] =
    {
        8,      8,      8,      8,      8,      8,
        8,      8,      8,      8,      8,      12,
        12,     12,     12,     12,     12,     12,
        12,     12,     16,     16,     16,     16,
        20,     20,     20,     24,     24,     28,
        28,     32,     36,     40,     40,     44,
        48,     52,     56,     60,     64,     64,
        -1
    },

    /* 15 scfbands */
    // static const WORD16 sfb_16_120[16] =
    {
        4,      4,      4,      4,      4,      4,
        4,      4,      8,      8,      12,     12,
        16,     20,     12,     -1
    },

    /* 40 scfbands */
    // static const WORD16 sfb_8_960[41] =
    {
        12,     12,     12,     12,     12,     12,
        12,     12,     12,     12,     12,     12,
        12,     16,     16,     16,     16,     16,
        16,     16,     20,     20,     20,     20,
        24,     24,     24,     28,     28,     32,
        36,     36,     40,     44,     48,     52,
        56,     60,     64,     16,     -1
    },

    /* 15 scfbands */
    // static const WORD16 sfb_8_120[16] =
    {
        4,      4,      4,      4,      4,      4,
        4,      8,      8,      8,      8,      12,
        16,     20,     12,     -1
    },
};  // end of ia_aac_dec_huffman_tables_struct

const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables = {

    // const WORD32 ixheaacd_pow_table_Q13[129] =
    {0 >> 4,        131072 >> 4,   330281 >> 4,   567116 >> 4,   832256 >> 4,
     1120650 >> 4,  1429042 >> 4,  1755122 >> 4,  2097152 >> 4,  2453767 >> 4,
     2823861 >> 4,  3206517 >> 4,  3600960 >> 4,  4006524 >> 4,  4422631 >> 4,
     4848770 >> 4,  5284492 >> 4,  5729392 >> 4,  6183105 >> 4,  6645302 >> 4,
     7115683 >> 4,  7593972 >> 4,  8079916 >> 4,  8573281 >> 4,  9073850 >> 4,
     9581422 >> 4,  10095808 >> 4, 10616832 >> 4, 11144330 >> 4, 11678147 >> 4,
     12218136 >> 4, 12764159 >> 4, 13316085 >> 4, 13873792 >> 4, 14437162 >> 4,
     15006082 >> 4, 15580448 >> 4, 16160157 >> 4, 16745112 >> 4, 17335222 >> 4,
     17930398 >> 4, 18530554 >> 4, 19135610 >> 4, 19745488 >> 4, 20360112 >> 4,
     20979411 >> 4, 21603314 >> 4, 22231755 >> 4, 22864669 >> 4, 23501994 >> 4,
     24143669 >> 4, 24789637 >> 4, 25439841 >> 4, 26094226 >> 4, 26752740 >> 4,
     27415332 >> 4, 28081952 >> 4, 28752552 >> 4, 29427086 >> 4, 30105507 >> 4,
     30787772 >> 4, 31473838 >> 4, 32163664 >> 4, 32857208 >> 4, 33554432 >> 4,
     34255297 >> 4, 34959765 >> 4, 35667801 >> 4, 36379368 >> 4, 37094431 >> 4,
     37812958 >> 4, 38534914 >> 4, 39260268 >> 4, 39988988 >> 4, 40721043 >> 4,
     41456403 >> 4, 42195038 >> 4, 42936921 >> 4, 43682022 >> 4, 44430314 >> 4,
     45181770 >> 4, 45936364 >> 4, 46694070 >> 4, 47454862 >> 4, 48218716 >> 4,
     48985607 >> 4, 49755512 >> 4, 50528406 >> 4, 51304267 >> 4, 52083073 >> 4,
     52864802 >> 4, 53649431 >> 4, 54436939 >> 4, 55227306 >> 4, 56020511 >> 4,
     56816534 >> 4, 57615355 >> 4, 58416954 >> 4, 59221313 >> 4, 60028412 >> 4,
     60838233 >> 4, 61650759 >> 4, 62465970 >> 4, 63283850 >> 4, 64104381 >> 4,
     64927547 >> 4, 65753329 >> 4, 66581713 >> 4, 67412681 >> 4, 68246218 >> 4,
     69082308 >> 4, 69920936 >> 4, 70762086 >> 4, 71605743 >> 4, 72451892 >> 4,
     73300519 >> 4, 74151609 >> 4, 75005149 >> 4, 75861124 >> 4, 76719520 >> 4,
     77580324 >> 4, 78443523 >> 4, 79309103 >> 4, 80177051 >> 4, 81047354 >> 4,
     81920000 >> 4, 82794977 >> 4, 83672271 >> 4, 84551871 >> 4},

    // const WORD16 scale_table[4] =
    {

        16384, 19484, 23171, 27555},

    // const WORD8 tns_max_bands_tbl[12][2] =
    {
        // Long //Short
        {31, 9},   // 96000
        {31, 9},   // 88200
        {34, 10},  // 64000
        {40, 14},  // 48000
        {42, 14},  // 44100
        {51, 14},  // 32000
        {46, 14},  // 24000
        {46, 14},  // 22050
        {42, 14},  // 16000
        {42, 14},  // 12000
        {42, 14},  // 11025
        {39, 14}   //  8000
    },

    // const WORD16 tns_coeff3_16[8] =
    {(WORD16)-0x7e0e, (WORD16)-0x6eda, (WORD16)-0x5247, (WORD16)-0x2bc7,
     (WORD16)0x0000, (WORD16)0x378a, (WORD16)0x6413, (WORD16)0x7cca},

    // const WORD16 tns_coeff4_16[16] =
    {(WORD16)-0x7f74, (WORD16)-0x7b1d, (WORD16)-0x7295, (WORD16)-0x6625,
     (WORD16)-0x563c, (WORD16)-0x4362, (WORD16)-0x2e3d, (WORD16)-0x1785,
     (WORD16)0x0000, (WORD16)0x1a9d, (WORD16)0x3410, (WORD16)0x4b3d,
     (WORD16)0x5f1f, (WORD16)0x6eda, (WORD16)0x79bc, (WORD16)0x7f4c},

    // const WORD32 scale_mant_tab[PNS_SCALE_MANT_TAB_SIZE] =
    {0x08000000, 0x09837f05, 0x0b504f33, 0x0d744fcc},
    // const WORD32 tns_coeff3[8] =
    {
        -2114858540, -1859775364, -1380375817, -734482679, 0, 931758215,
        1678970362, 2093641723,
    },

    // const WORD32 tns_coeff4[16] =
    {
        -2138322869, -2065504899, -1922348549, -1713729017, -1446750457,
        -1130504584, -775760644, -394599111, 0, 446486976, 873460283,
        1262259191, 1595891328, 1859775364, 2042378368, 2135719561,
    },

    // const WORD32 tns_coeff3_32[8] =
    {(WORD32)-0x7e0e2e31, (WORD32)-0x6ed9eba0, (WORD32)-0x5246dd48,
     (WORD32)-0x2bc750e8, (WORD32)0x00000000, (WORD32)0x3789809a,
     (WORD32)0x64130dd3, (WORD32)0x7cca7014},

    // const WORD32 tns_coeff4_32[16] =
    {(WORD32)-0x7f7437ac, (WORD32)-0x7b1d1a47, (WORD32)-0x7294b5f1,
     (WORD32)-0x66256db1, (WORD32)-0x563ba8a9, (WORD32)-0x4362210d,
     (WORD32)-0x2e3d2aba, (WORD32)-0x17851aac, (WORD32)0x00000000,
     (WORD32)0x1a9cd9ac, (WORD32)0x340ff241, (WORD32)0x4b3c8c11,
     (WORD32)0x5f1f5ea0, (WORD32)0x6ed9eba0, (WORD32)0x79bc384c,
     (WORD32)0x7f4c7e52},

    // const WORD32 tns_max_bands_tbl_usac[(1<<LEN_SAMP_IDX)][2] =
    {

        {
            31, 9,
        },  // 96000
        {
            31, 9,
        },  // 88200
        {
            34, 10,
        },  // 64000
        {
            40, 14,
        },  // 48000
        {
            42, 14,
        },  // 44100
        {
            51, 14,
        },  // 32000
        {
            47, 15,
        },  // 24000
        {
            47, 15,
        },  // 22050
        {
            43, 15,
        },  // 16000
        {
            43, 15,
        },  // 12000
        {
            43, 15,
        },  // 11025
        {
            40, 15,
        },  // 8000
        {
            40, 15,
        },  // 7350
        {
            0, 0,
        },
        {
            0, 0,
        },
        {
            0, 0,
        }},

    // const WORD8 tns_max_bands_tbl_ld[12][4] =
    {
        /*{*/ 31, /* 96000 */
        /*{*/ 31, /* 88200 */
        /*{*/ 31, /* 64000 */
        /*{*/ 31, /* 48000 */
        /*{*/ 32, /* 44100 */
        /*{*/ 37, /* 32000 */
        /*{*/ 31, /* 24000 */
        /*{*/ 31, /* 22050 */
        /*{*/ 31, /* 16000 */
        /*{*/ 31, /* 12000 */
        /*{*/ 31, /* 11025 */
        /*{*/ 31, /*  8000 */
    },
    // const WORD8 tns_max_bands_tbl_480[12][4] =
    {
        /*{*/ 31, /* 96000 */
        /*{*/ 31, /* 88200 */
        /*{*/ 31, /* 64000 */
        /*{*/ 31, /* 48000 */
        /*{*/ 32, /* 44100 */
        /*{*/ 37, /* 32000 */
        /*{*/ 30, /* 24000 */
        /*{*/ 30, /* 22050 */
        /*{*/ 30, /* 16000 */
        /*{*/ 30, /* 12000 */
        /*{*/ 30, /* 11025 */
        /*{*/ 30, /*  8000 */
    },
    // const WORD16 scale_table_960[4] =
    {
        /* Q14 format */
        /* table of 2^(r/4) for r=0, 1, 2, 3 */
        16385, 19486, 23172, 27557
    },
};  // end of ia_aac_dec_block_tables_struct */

const ia_aac_dec_imdct_tables_struct ixheaacd_imdct_tables = {
    // const WORD16 cos_array_2048[512] and const WORD16 sine_array_2048[512] =

    {
        -32767, 0,      -32767, -101,   -32767, -201,   -32767, -302,   -32766,
        -402,   -32764, -503,   -32762, -603,   -32760, -704,   -32758, -804,
        -32756, -905,   -32753, -1005,  -32749, -1106,  -32746, -1206,  -32742,
        -1307,  -32738, -1407,  -32733, -1507,  -32729, -1608,  -32723, -1708,
        -32718, -1809,  -32712, -1909,  -32706, -2009,  -32700, -2110,  -32693,
        -2210,  -32686, -2310,  -32679, -2411,  -32672, -2511,  -32664, -2611,
        -32656, -2711,  -32647, -2811,  -32638, -2912,  -32629, -3012,  -32620,
        -3112,  -32610, -3212,  -32600, -3312,  -32590, -3412,  -32579, -3512,
        -32568, -3612,  -32557, -3712,  -32546, -3812,  -32534, -3911,  -32522,
        -4011,  -32509, -4111,  -32496, -4211,  -32483, -4310,  -32470, -4410,
        -32456, -4510,  -32442, -4609,  -32428, -4709,  -32413, -4808,  -32398,
        -4908,  -32383, -5007,  -32368, -5106,  -32352, -5206,  -32336, -5305,
        -32319, -5404,  -32303, -5503,  -32286, -5602,  -32268, -5701,  -32251,
        -5800,  -32233, -5899,  -32214, -5998,  -32196, -6097,  -32177, -6195,
        -32158, -6294,  -32138, -6393,  -32119, -6491,  -32099, -6590,  -32078,
        -6688,  -32058, -6787,  -32037, -6885,  -32015, -6983,  -31994, -7081,
        -31972, -7180,  -31950, -7278,  -31927, -7376,  -31904, -7474,  -31881,
        -7571,  -31858, -7669,  -31834, -7767,  -31810, -7864,  -31786, -7962,
        -31761, -8059,  -31737, -8157,  -31711, -8254,  -31686, -8351,  -31660,
        -8449,  -31634, -8546,  -31608, -8643,  -31581, -8740,  -31554, -8837,
        -31527, -8933,  -31499, -9030,  -31471, -9127,  -31443, -9223,  -31415,
        -9320,  -31386, -9416,  -31357, -9512,  -31328, -9608,  -31298, -9704,
        -31268, -9800,  -31238, -9896,  -31207, -9992,  -31177, -10088, -31146,
        -10183, -31114, -10279, -31082, -10374, -31050, -10469, -31018, -10565,
        -30986, -10660, -30953, -10755, -30920, -10850, -30886, -10945, -30853,
        -11039, -30819, -11134, -30784, -11228, -30750, -11323, -30715, -11417,
        -30680, -11511, -30644, -11605, -30608, -11699, -30572, -11793, -30536,
        -11887, -30499, -11980, -30462, -12074, -30425, -12167, -30388, -12261,
        -30350, -12354, -30312, -12447, -30274, -12540, -30235, -12633, -30196,
        -12725, -30157, -12818, -30118, -12910, -30078, -13003, -30038, -13095,
        -29997, -13187, -29957, -13279, -29916, -13371, -29875, -13463, -29833,
        -13554, -29792, -13646, -29750, -13737, -29707, -13828, -29665, -13919,
        -29622, -14010, -29579, -14101, -29535, -14192, -29492, -14282, -29448,
        -14373, -29404, -14463, -29359, -14553, -29314, -14643, -29269, -14733,
        -29224, -14823, -29178, -14912, -29132, -15002, -29086, -15091, -29040,
        -15180, -28993, -15269, -28946, -15358, -28899, -15447, -28851, -15535,
        -28803, -15624, -28755, -15712, -28707, -15800, -28658, -15888, -28610,
        -15976, -28560, -16064, -28511, -16151, -28461, -16239, -28411, -16326,
        -28361, -16413, -28311, -16500, -28260, -16587, -28209, -16673, -28158,
        -16760, -28106, -16846, -28054, -16932, -28002, -17018, -27950, -17104,
        -27897, -17190, -27844, -17275, -27791, -17361, -27738, -17446, -27684,
        -17531, -27630, -17616, -27576, -17700, -27522, -17785, -27467, -17869,
        -27412, -17953, -27357, -18037, -27301, -18121, -27246, -18205, -27190,
        -18288, -27133, -18372, -27077, -18455, -27020, -18538, -26963, -18621,
        -26906, -18703, -26848, -18786, -26791, -18868, -26733, -18950, -26674,
        -19032, -26616, -19114, -26557, -19195, -26498, -19277, -26439, -19358,
        -26379, -19439, -26320, -19520, -26260, -19601, -26199, -19681, -26139,
        -19761, -26078, -19841, -26017, -19921, -25956, -20001, -25894, -20081,
        -25833, -20160, -25771, -20239, -25708, -20318, -25646, -20397, -25583,
        -20475, -25520, -20554, -25457, -20632, -25394, -20710, -25330, -20788,
        -25266, -20865, -25202, -20943, -25138, -21020, -25073, -21097, -25008,
        -21174, -24943, -21251, -24878, -21327, -24812, -21403, -24746, -21479,
        -24680, -21555, -24614, -21631, -24548, -21706, -24481, -21781, -24414,
        -21856, -24347, -21931, -24280, -22006, -24212, -22080, -24144, -22154,
        -24076, -22228, -24008, -22302, -23939, -22375, -23870, -22449, -23801,
        -22522, -23732, -22595, -23663, -22668, -23593, -22740, -23523, -22812,
        -23453, -22884, -23383, -22956, -23312, -23028, -23241, -23099, -23170,
        -23170,
    },

    // const WORD8 dig_rev_table8_long[64]
    {0, 8,  16, 24, 32, 40, 48, 56, 1, 9,  17, 25, 33, 41, 49, 57,
     2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59,
     4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61,
     6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63},

    // const WORD8 dig_rev_table8_short
    {0, 1, 2, 3, 4, 5, 6, 7},

    // const WORD32 fft_twiddle[64 * 7] =
    {0x00007fff, 0xfe6e7ffe, 0xfcdc7ff6, 0xfb4a7fea, 0xf9b87fd9, 0xf8277fc2,
     0xf6957fa7, 0xf5057f87, 0xf3747f62, 0xf1e47f38, 0xf0557f0a, 0xeec67ed6,
     0xed387e9d, 0xebab7e60, 0xea1e7e1e, 0xe8927dd6, 0xe7077d8a, 0xe57d7d3a,
     0xe3f47ce4, 0xe26d7c89, 0xe0e67c2a, 0xdf617bc6, 0xdddc7b5d, 0xdc597aef,
     0xdad87a7d, 0xd9587a06, 0xd7d9798a, 0xd65c790a, 0xd4e17885, 0xd36777fb,
     0xd1ef776c, 0xd07976d9, 0xcf047642, 0xcd9275a6, 0xcc217505, 0xcab27460,
     0xc94673b6, 0xc7db7308, 0xc6737255, 0xc50d719e, 0xc3a970e3, 0xc2487023,
     0xc0e96f5f, 0xbf8c6e97, 0xbe326dca, 0xbcda6cf9, 0xbb856c24, 0xba336b4b,
     0xb8e36a6e, 0xb796698c, 0xb64c68a7, 0xb50567bd, 0xb3c066d0, 0xb27f65de,
     0xb14064e9, 0xb00563ef, 0xaecc62f2, 0xad9761f1, 0xac6560ec, 0xab365fe4,
     0xaa0a5ed7, 0xa8e25dc8, 0xa7bd5cb4, 0xa69c5b9d, 0xa57e5a82, 0xa4635964,
     0xa34c5843, 0xa238571e, 0xa12955f6, 0xa01c54ca, 0x9f14539b, 0x9e0f5269,
     0x9d0e5134, 0x9c114ffb, 0x9b174ec0, 0x9a224d81, 0x99304c40, 0x98434afb,
     0x975949b4, 0x9674486a, 0x9592471d, 0x94b545cd, 0x93dc447b, 0x93074326,
     0x923641ce, 0x91694074, 0x90a13f17, 0x8fdd3db8, 0x8f1d3c57, 0x8e623af3,
     0x8dab398d, 0x8cf83825, 0x8c4a36ba, 0x8ba0354e, 0x8afb33df, 0x8a5a326e,
     0x89be30fc, 0x89272f87, 0x88942e11, 0x88052c99, 0x877b2b1f, 0x86f629a4,
     0x86762827, 0x85fa26a8, 0x85832528, 0x851123a7, 0x84a32224, 0x843a209f,
     0x83d61f1a, 0x83771d93, 0x831c1c0c, 0x82c61a83, 0x827618f9, 0x822a176e,
     0x81e215e2, 0x81a01455, 0x816312c8, 0x812a113a, 0x80f60fab, 0x80c80e1c,
     0x809e0c8c, 0x80790afb, 0x8059096b, 0x803e07d9, 0x80270648, 0x801604b6,
     0x800a0324, 0x80020192, 0x80000000, 0x8002fe6e, 0x800afcdc, 0x8016fb4a,
     0x8027f9b8, 0x803ef827, 0x8059f695, 0x8079f505, 0x809ef374, 0x80c8f1e4,
     0x80f6f055, 0x812aeec6, 0x8163ed38, 0x81a0ebab, 0x81e2ea1e, 0x822ae892,
     0x8276e707, 0x82c6e57d, 0x831ce3f4, 0x8377e26d, 0x83d6e0e6, 0x843adf61,
     0x84a3dddc, 0x8511dc59, 0x8583dad8, 0x85fad958, 0x8676d7d9, 0x86f6d65c,
     0x877bd4e1, 0x8805d367, 0x8894d1ef, 0x8927d079, 0x89becf04, 0x8a5acd92,
     0x8afbcc21, 0x8ba0cab2, 0x8c4ac946, 0x8cf8c7db, 0x8dabc673, 0x8e62c50d,
     0x8f1dc3a9, 0x8fddc248, 0x90a1c0e9, 0x9169bf8c, 0x9236be32, 0x9307bcda,
     0x93dcbb85, 0x94b5ba33, 0x9592b8e3, 0x9674b796, 0x9759b64c, 0x9843b505,
     0x9930b3c0, 0x9a22b27f, 0x9b17b140, 0x9c11b005, 0x9d0eaecc, 0x9e0fad97,
     0x9f14ac65, 0xa01cab36, 0xa129aa0a, 0xa238a8e2, 0xa34ca7bd, 0xa463a69c,
     0xa57ea57e, 0xa69ca463, 0xa7bda34c, 0xa8e2a238, 0xaa0aa129, 0xab36a01c,
     0xac659f14, 0xad979e0f, 0xaecc9d0e, 0xb0059c11, 0xb1409b17, 0xb27f9a22,
     0xb3c09930, 0xb5059843, 0xb64c9759, 0xb7969674, 0xb8e39592, 0xba3394b5,
     0xbb8593dc, 0xbcda9307, 0xbe329236, 0xbf8c9169, 0xc0e990a1, 0xc2488fdd,
     0xc3a98f1d, 0xc50d8e62, 0xc6738dab, 0xc7db8cf8, 0xc9468c4a, 0xcab28ba0,
     0xcc218afb, 0xcd928a5a, 0xcf0489be, 0xd0798927, 0xd1ef8894, 0xd3678805,
     0xd4e1877b, 0xd65c86f6, 0xd7d98676, 0xd95885fa, 0xdad88583, 0xdc598511,
     0xdddc84a3, 0xdf61843a, 0xe0e683d6, 0xe26d8377, 0xe3f4831c, 0xe57d82c6,
     0xe7078276, 0xe892822a, 0xea1e81e2, 0xebab81a0, 0xed388163, 0xeec6812a,
     0xf05580f6, 0xf1e480c8, 0xf374809e, 0xf5058079, 0xf6958059, 0xf827803e,
     0xf9b88027, 0xfb4a8016, 0xfcdc800a, 0xfe6e8002, 0x00008000, 0x01928002,
     0x0324800a, 0x04b68016, 0x06488027, 0x07d9803e, 0x096b8059, 0x0afb8079,
     0x0c8c809e, 0x0e1c80c8, 0x0fab80f6, 0x113a812a, 0x12c88163, 0x145581a0,
     0x15e281e2, 0x176e822a, 0x18f98276, 0x1a8382c6, 0x1c0c831c, 0x1d938377,
     0x1f1a83d6, 0x209f843a, 0x222484a3, 0x23a78511, 0x25288583, 0x26a885fa,
     0x28278676, 0x29a486f6, 0x2b1f877b, 0x2c998805, 0x2e118894, 0x2f878927,
     0x30fc89be, 0x326e8a5a, 0x33df8afb, 0x354e8ba0, 0x36ba8c4a, 0x38258cf8,
     0x398d8dab, 0x3af38e62, 0x3c578f1d, 0x3db88fdd, 0x3f1790a1, 0x40749169,
     0x41ce9236, 0x43269307, 0x447b93dc, 0x45cd94b5, 0x471d9592, 0x486a9674,
     0x49b49759, 0x4afb9843, 0x4c409930, 0x4d819a22, 0x4ec09b17, 0x4ffb9c11,
     0x51349d0e, 0x52699e0f, 0x539b9f14, 0x54caa01c, 0x55f6a129, 0x571ea238,
     0x5843a34c, 0x5964a463, 0x5a82a57e, 0x5b9da69c, 0x5cb4a7bd, 0x5dc8a8e2,
     0x5ed7aa0a, 0x5fe4ab36, 0x60ecac65, 0x61f1ad97, 0x62f2aecc, 0x63efb005,
     0x64e9b140, 0x65deb27f, 0x66d0b3c0, 0x67bdb505, 0x68a7b64c, 0x698cb796,
     0x6a6eb8e3, 0x6b4bba33, 0x6c24bb85, 0x6cf9bcda, 0x6dcabe32, 0x6e97bf8c,
     0x6f5fc0e9, 0x7023c248, 0x70e3c3a9, 0x719ec50d, 0x7255c673, 0x7308c7db,
     0x73b6c946, 0x7460cab2, 0x7505cc21, 0x75a6cd92, 0x7642cf04, 0x76d9d079,
     0x776cd1ef, 0x77fbd367, 0x7885d4e1, 0x790ad65c, 0x798ad7d9, 0x7a06d958,
     0x7a7ddad8, 0x7aefdc59, 0x7b5ddddc, 0x7bc6df61, 0x7c2ae0e6, 0x7c89e26d,
     0x7ce4e3f4, 0x7d3ae57d, 0x7d8ae707, 0x7dd6e892, 0x7e1eea1e, 0x7e60ebab,
     0x7e9ded38, 0x7ed6eec6, 0x7f0af055, 0x7f38f1e4, 0x7f62f374, 0x7f87f505,
     0x7fa7f695, 0x7fc2f827, 0x7fd9f9b8, 0x7feafb4a, 0x7ff6fcdc, 0x7ffefe6e,
     0x7fff0000, 0x7ffe0192, 0x7ff60324, 0x7fea04b6, 0x7fd90648, 0x7fc207d9,
     0x7fa7096b, 0x7f870afb, 0x7f620c8c, 0x7f380e1c, 0x7f0a0fab, 0x7ed6113a,
     0x7e9d12c8, 0x7e601455, 0x7e1e15e2, 0x7dd6176e, 0x7d8a18f9, 0x7d3a1a83,
     0x7ce41c0c, 0x7c891d93, 0x7c2a1f1a, 0x7bc6209f, 0x7b5d2224, 0x7aef23a7,
     0x7a7d2528, 0x7a0626a8, 0x798a2827, 0x790a29a4, 0x78852b1f, 0x77fb2c99,
     0x776c2e11, 0x76d92f87, 0x764230fc, 0x75a6326e, 0x750533df, 0x7460354e,
     0x73b636ba, 0x73083825, 0x7255398d, 0x719e3af3, 0x70e33c57, 0x70233db8,
     0x6f5f3f17, 0x6e974074, 0x6dca41ce, 0x6cf94326, 0x6c24447b, 0x6b4b45cd,
     0x6a6e471d, 0x698c486a, 0x68a749b4, 0x67bd4afb, 0x66d04c40, 0x65de4d81,
     0x64e94ec0, 0x63ef4ffb, 0x62f25134, 0x61f15269},

    // const WORD16 only_long_window_sine[1024] =
    {0x0019, 0x7fff, 0x004b, 0x7fff, 0x007e, 0x7fff, 0x00b0, 0x7fff, 0x00e2,
     0x7fff, 0x0114, 0x7fff, 0x0147, 0x7ffe, 0x0179, 0x7ffe, 0x01ab, 0x7ffd,
     0x01dd, 0x7ffd, 0x0210, 0x7ffc, 0x0242, 0x7ffb, 0x0274, 0x7ffa, 0x02a7,
     0x7ff9, 0x02d9, 0x7ff8, 0x030b, 0x7ff7, 0x033d, 0x7ff6, 0x0370, 0x7ff4,
     0x03a2, 0x7ff3, 0x03d4, 0x7ff1, 0x0406, 0x7ff0, 0x0439, 0x7fee, 0x046b,
     0x7fec, 0x049d, 0x7feb, 0x04cf, 0x7fe9, 0x0501, 0x7fe7, 0x0534, 0x7fe5,
     0x0566, 0x7fe3, 0x0598, 0x7fe1, 0x05ca, 0x7fde, 0x05fd, 0x7fdc, 0x062f,
     0x7fda, 0x0661, 0x7fd7, 0x0693, 0x7fd5, 0x06c5, 0x7fd2, 0x06f8, 0x7fcf,
     0x072a, 0x7fcd, 0x075c, 0x7fca, 0x078e, 0x7fc7, 0x07c0, 0x7fc4, 0x07f2,
     0x7fc1, 0x0825, 0x7fbe, 0x0857, 0x7fba, 0x0889, 0x7fb7, 0x08bb, 0x7fb4,
     0x08ed, 0x7fb0, 0x091f, 0x7fad, 0x0952, 0x7fa9, 0x0984, 0x7fa5, 0x09b6,
     0x7fa2, 0x09e8, 0x7f9e, 0x0a1a, 0x7f9a, 0x0a4c, 0x7f96, 0x0a7e, 0x7f92,
     0x0ab0, 0x7f8e, 0x0ae2, 0x7f89, 0x0b14, 0x7f85, 0x0b47, 0x7f81, 0x0b79,
     0x7f7c, 0x0bab, 0x7f78, 0x0bdd, 0x7f73, 0x0c0f, 0x7f6e, 0x0c41, 0x7f6a,
     0x0c73, 0x7f65, 0x0ca5, 0x7f60, 0x0cd7, 0x7f5b, 0x0d09, 0x7f56, 0x0d3b,
     0x7f50, 0x0d6d, 0x7f4b, 0x0d9f, 0x7f46, 0x0dd1, 0x7f41, 0x0e03, 0x7f3b,
     0x0e35, 0x7f36, 0x0e67, 0x7f30, 0x0e99, 0x7f2a, 0x0ecb, 0x7f24, 0x0efc,
     0x7f1f, 0x0f2e, 0x7f19, 0x0f60, 0x7f13, 0x0f92, 0x7f0d, 0x0fc4, 0x7f06,
     0x0ff6, 0x7f00, 0x1028, 0x7efa, 0x105a, 0x7ef4, 0x108c, 0x7eed, 0x10bd,
     0x7ee7, 0x10ef, 0x7ee0, 0x1121, 0x7ed9, 0x1153, 0x7ed3, 0x1185, 0x7ecc,
     0x11b6, 0x7ec5, 0x11e8, 0x7ebe, 0x121a, 0x7eb7, 0x124c, 0x7eb0, 0x127d,
     0x7ea8, 0x12af, 0x7ea1, 0x12e1, 0x7e9a, 0x1313, 0x7e92, 0x1344, 0x7e8b,
     0x1376, 0x7e83, 0x13a8, 0x7e7b, 0x13d9, 0x7e74, 0x140b, 0x7e6c, 0x143d,
     0x7e64, 0x146e, 0x7e5c, 0x14a0, 0x7e54, 0x14d1, 0x7e4c, 0x1503, 0x7e43,
     0x1535, 0x7e3b, 0x1566, 0x7e33, 0x1598, 0x7e2a, 0x15c9, 0x7e22, 0x15fb,
     0x7e19, 0x162c, 0x7e11, 0x165e, 0x7e08, 0x168f, 0x7dff, 0x16c1, 0x7df6,
     0x16f2, 0x7ded, 0x1724, 0x7de4, 0x1755, 0x7ddb, 0x1787, 0x7dd2, 0x17b8,
     0x7dc9, 0x17e9, 0x7dbf, 0x181b, 0x7db6, 0x184c, 0x7dac, 0x187d, 0x7da3,
     0x18af, 0x7d99, 0x18e0, 0x7d8f, 0x1911, 0x7d85, 0x1943, 0x7d7c, 0x1974,
     0x7d72, 0x19a5, 0x7d68, 0x19d6, 0x7d5d, 0x1a08, 0x7d53, 0x1a39, 0x7d49,
     0x1a6a, 0x7d3f, 0x1a9b, 0x7d34, 0x1acc, 0x7d2a, 0x1afe, 0x7d1f, 0x1b2f,
     0x7d15, 0x1b60, 0x7d0a, 0x1b91, 0x7cff, 0x1bc2, 0x7cf4, 0x1bf3, 0x7ce9,
     0x1c24, 0x7cde, 0x1c55, 0x7cd3, 0x1c86, 0x7cc8, 0x1cb7, 0x7cbd, 0x1ce8,
     0x7cb1, 0x1d19, 0x7ca6, 0x1d4a, 0x7c9b, 0x1d7b, 0x7c8f, 0x1dac, 0x7c83,
     0x1ddd, 0x7c78, 0x1e0e, 0x7c6c, 0x1e3e, 0x7c60, 0x1e6f, 0x7c54, 0x1ea0,
     0x7c48, 0x1ed1, 0x7c3c, 0x1f02, 0x7c30, 0x1f32, 0x7c24, 0x1f63, 0x7c18,
     0x1f94, 0x7c0b, 0x1fc5, 0x7bff, 0x1ff5, 0x7bf2, 0x2026, 0x7be6, 0x2057,
     0x7bd9, 0x2087, 0x7bcc, 0x20b8, 0x7bbf, 0x20e8, 0x7bb3, 0x2119, 0x7ba6,
     0x2149, 0x7b99, 0x217a, 0x7b8b, 0x21aa, 0x7b7e, 0x21db, 0x7b71, 0x220b,
     0x7b64, 0x223c, 0x7b56, 0x226c, 0x7b49, 0x229d, 0x7b3b, 0x22cd, 0x7b2e,
     0x22fd, 0x7b20, 0x232e, 0x7b12, 0x235e, 0x7b04, 0x238e, 0x7af6, 0x23bf,
     0x7ae8, 0x23ef, 0x7ada, 0x241f, 0x7acc, 0x244f, 0x7abe, 0x2480, 0x7ab0,
     0x24b0, 0x7aa1, 0x24e0, 0x7a93, 0x2510, 0x7a84, 0x2540, 0x7a76, 0x2570,
     0x7a67, 0x25a0, 0x7a58, 0x25d0, 0x7a49, 0x2600, 0x7a3b, 0x2630, 0x7a2c,
     0x2660, 0x7a1d, 0x2690, 0x7a0e, 0x26c0, 0x79fe, 0x26f0, 0x79ef, 0x2720,
     0x79e0, 0x2750, 0x79d0, 0x2780, 0x79c1, 0x27af, 0x79b1, 0x27df, 0x79a2,
     0x280f, 0x7992, 0x283f, 0x7982, 0x286e, 0x7972, 0x289e, 0x7962, 0x28ce,
     0x7952, 0x28fd, 0x7942, 0x292d, 0x7932, 0x295c, 0x7922, 0x298c, 0x7912,
     0x29bc, 0x7901, 0x29eb, 0x78f1, 0x2a1b, 0x78e1, 0x2a4a, 0x78d0, 0x2a79,
     0x78bf, 0x2aa9, 0x78af, 0x2ad8, 0x789e, 0x2b08, 0x788d, 0x2b37, 0x787c,
     0x2b66, 0x786b, 0x2b95, 0x785a, 0x2bc5, 0x7849, 0x2bf4, 0x7838, 0x2c23,
     0x7826, 0x2c52, 0x7815, 0x2c81, 0x7803, 0x2cb1, 0x77f2, 0x2ce0, 0x77e0,
     0x2d0f, 0x77cf, 0x2d3e, 0x77bd, 0x2d6d, 0x77ab, 0x2d9c, 0x7799, 0x2dcb,
     0x7787, 0x2dfa, 0x7775, 0x2e29, 0x7763, 0x2e57, 0x7751, 0x2e86, 0x773f,
     0x2eb5, 0x772d, 0x2ee4, 0x771a, 0x2f13, 0x7708, 0x2f41, 0x76f5, 0x2f70,
     0x76e3, 0x2f9f, 0x76d0, 0x2fcd, 0x76bd, 0x2ffc, 0x76aa, 0x302b, 0x7698,
     0x3059, 0x7685, 0x3088, 0x7672, 0x30b6, 0x765e, 0x30e5, 0x764b, 0x3113,
     0x7638, 0x3141, 0x7625, 0x3170, 0x7611, 0x319e, 0x75fe, 0x31cc, 0x75ea,
     0x31fb, 0x75d7, 0x3229, 0x75c3, 0x3257, 0x75af, 0x3285, 0x759c, 0x32b4,
     0x7588, 0x32e2, 0x7574, 0x3310, 0x7560, 0x333e, 0x754c, 0x336c, 0x7538,
     0x339a, 0x7523, 0x33c8, 0x750f, 0x33f6, 0x74fb, 0x3424, 0x74e6, 0x3452,
     0x74d2, 0x3480, 0x74bd, 0x34ad, 0x74a8, 0x34db, 0x7494, 0x3509, 0x747f,
     0x3537, 0x746a, 0x3564, 0x7455, 0x3592, 0x7440, 0x35c0, 0x742b, 0x35ed,
     0x7416, 0x361b, 0x7401, 0x3648, 0x73eb, 0x3676, 0x73d6, 0x36a3, 0x73c1,
     0x36d1, 0x73ab, 0x36fe, 0x7396, 0x372c, 0x7380, 0x3759, 0x736a, 0x3786,
     0x7354, 0x37b4, 0x733f, 0x37e1, 0x7329, 0x380e, 0x7313, 0x383b, 0x72fd,
     0x3868, 0x72e7, 0x3895, 0x72d0, 0x38c2, 0x72ba, 0x38f0, 0x72a4, 0x391d,
     0x728d, 0x3949, 0x7277, 0x3976, 0x7260, 0x39a3, 0x724a, 0x39d0, 0x7233,
     0x39fd, 0x721c, 0x3a2a, 0x7206, 0x3a57, 0x71ef, 0x3a83, 0x71d8, 0x3ab0,
     0x71c1, 0x3add, 0x71aa, 0x3b09, 0x7193, 0x3b36, 0x717b, 0x3b62, 0x7164,
     0x3b8f, 0x714d, 0x3bbb, 0x7135, 0x3be8, 0x711e, 0x3c14, 0x7106, 0x3c41,
     0x70ef, 0x3c6d, 0x70d7, 0x3c99, 0x70bf, 0x3cc5, 0x70a7, 0x3cf2, 0x708f,
     0x3d1e, 0x7077, 0x3d4a, 0x705f, 0x3d76, 0x7047, 0x3da2, 0x702f, 0x3dce,
     0x7017, 0x3dfa, 0x6fff, 0x3e26, 0x6fe6, 0x3e52, 0x6fce, 0x3e7e, 0x6fb5,
     0x3eaa, 0x6f9d, 0x3ed6, 0x6f84, 0x3f01, 0x6f6b, 0x3f2d, 0x6f53, 0x3f59,
     0x6f3a, 0x3f84, 0x6f21, 0x3fb0, 0x6f08, 0x3fdc, 0x6eef, 0x4007, 0x6ed6,
     0x4033, 0x6ebd, 0x405e, 0x6ea3, 0x408a, 0x6e8a, 0x40b5, 0x6e71, 0x40e0,
     0x6e57, 0x410c, 0x6e3e, 0x4137, 0x6e24, 0x4162, 0x6e0a, 0x418d, 0x6df1,
     0x41b9, 0x6dd7, 0x41e4, 0x6dbd, 0x420f, 0x6da3, 0x423a, 0x6d89, 0x4265,
     0x6d6f, 0x4290, 0x6d55, 0x42bb, 0x6d3b, 0x42e6, 0x6d21, 0x4310, 0x6d06,
     0x433b, 0x6cec, 0x4366, 0x6cd2, 0x4391, 0x6cb7, 0x43bb, 0x6c9c, 0x43e6,
     0x6c82, 0x4411, 0x6c67, 0x443b, 0x6c4c, 0x4466, 0x6c32, 0x4490, 0x6c17,
     0x44ba, 0x6bfc, 0x44e5, 0x6be1, 0x450f, 0x6bc6, 0x4539, 0x6baa, 0x4564,
     0x6b8f, 0x458e, 0x6b74, 0x45b8, 0x6b59, 0x45e2, 0x6b3d, 0x460c, 0x6b22,
     0x4636, 0x6b06, 0x4660, 0x6aeb, 0x468a, 0x6acf, 0x46b4, 0x6ab3, 0x46de,
     0x6a97, 0x4708, 0x6a7c, 0x4732, 0x6a60, 0x475c, 0x6a44, 0x4785, 0x6a28,
     0x47af, 0x6a0b, 0x47d9, 0x69ef, 0x4802, 0x69d3, 0x482c, 0x69b7, 0x4855,
     0x699a, 0x487f, 0x697e, 0x48a8, 0x6961, 0x48d1, 0x6945, 0x48fb, 0x6928,
     0x4924, 0x690c, 0x494d, 0x68ef, 0x4976, 0x68d2, 0x49a0, 0x68b5, 0x49c9,
     0x6898, 0x49f2, 0x687b, 0x4a1b, 0x685e, 0x4a44, 0x6841, 0x4a6d, 0x6824,
     0x4a95, 0x6806, 0x4abe, 0x67e9, 0x4ae7, 0x67cc, 0x4b10, 0x67ae, 0x4b38,
     0x6791, 0x4b61, 0x6773, 0x4b8a, 0x6756, 0x4bb2, 0x6738, 0x4bdb, 0x671a,
     0x4c03, 0x66fc, 0x4c2c, 0x66de, 0x4c54, 0x66c1, 0x4c7c, 0x66a3, 0x4ca5,
     0x6684, 0x4ccd, 0x6666, 0x4cf5, 0x6648, 0x4d1d, 0x662a, 0x4d45, 0x660c,
     0x4d6d, 0x65ed, 0x4d95, 0x65cf, 0x4dbd, 0x65b0, 0x4de5, 0x6592, 0x4e0d,
     0x6573, 0x4e35, 0x6554, 0x4e5d, 0x6536, 0x4e84, 0x6517, 0x4eac, 0x64f8,
     0x4ed4, 0x64d9, 0x4efb, 0x64ba, 0x4f23, 0x649b, 0x4f4a, 0x647c, 0x4f72,
     0x645d, 0x4f99, 0x643e, 0x4fc0, 0x641e, 0x4fe8, 0x63ff, 0x500f, 0x63df,
     0x5036, 0x63c0, 0x505d, 0x63a0, 0x5084, 0x6381, 0x50ac, 0x6361, 0x50d3,
     0x6342, 0x50f9, 0x6322, 0x5120, 0x6302, 0x5147, 0x62e2, 0x516e, 0x62c2,
     0x5195, 0x62a2, 0x51bb, 0x6282, 0x51e2, 0x6262, 0x5209, 0x6242, 0x522f,
     0x6221, 0x5256, 0x6201, 0x527c, 0x61e1, 0x52a3, 0x61c0, 0x52c9, 0x61a0,
     0x52ef, 0x617f, 0x5316, 0x615f, 0x533c, 0x613e, 0x5362, 0x611d, 0x5388,
     0x60fd, 0x53ae, 0x60dc, 0x53d4, 0x60bb, 0x53fa, 0x609a, 0x5420, 0x6079,
     0x5446, 0x6058, 0x546c, 0x6037, 0x5491, 0x6016, 0x54b7, 0x5ff4, 0x54dd,
     0x5fd3, 0x5502, 0x5fb2, 0x5528, 0x5f90, 0x554e, 0x5f6f, 0x5573, 0x5f4d,
     0x5598, 0x5f2c, 0x55be, 0x5f0a, 0x55e3, 0x5ee8, 0x5608, 0x5ec7, 0x562d,
     0x5ea5, 0x5653, 0x5e83, 0x5678, 0x5e61, 0x569d, 0x5e3f, 0x56c2, 0x5e1d,
     0x56e7, 0x5dfb, 0x570c, 0x5dd9, 0x5730, 0x5db7, 0x5755, 0x5d94, 0x577a,
     0x5d72, 0x579f, 0x5d50, 0x57c3, 0x5d2d, 0x57e8, 0x5d0b, 0x580c, 0x5ce8,
     0x5831, 0x5cc5, 0x5855, 0x5ca3, 0x5879, 0x5c80, 0x589e, 0x5c5d, 0x58c2,
     0x5c3a, 0x58e6, 0x5c18, 0x590a, 0x5bf5, 0x592e, 0x5bd2, 0x5952, 0x5baf,
     0x5976, 0x5b8c, 0x599a, 0x5b68, 0x59be, 0x5b45, 0x59e2, 0x5b22, 0x5a06,
     0x5aff, 0x5a29, 0x5adb, 0x5a4d, 0x5ab8, 0x5a71, 0x5a94},

    // const WORD16 only_long_window_kbd[1024] =
    {0x000a, 0x7fff, 0x000e, 0x7fff, 0x0012, 0x7fff, 0x0015, 0x7fff, 0x0019,
     0x7fff, 0x001c, 0x7fff, 0x0020, 0x7fff, 0x0023, 0x7fff, 0x0026, 0x7fff,
     0x002a, 0x7fff, 0x002d, 0x7fff, 0x0030, 0x7fff, 0x0034, 0x7fff, 0x0038,
     0x7fff, 0x003b, 0x7fff, 0x003f, 0x7fff, 0x0043, 0x7fff, 0x0047, 0x7fff,
     0x004b, 0x7fff, 0x004f, 0x7fff, 0x0053, 0x7fff, 0x0057, 0x7fff, 0x005b,
     0x7fff, 0x0060, 0x7fff, 0x0064, 0x7fff, 0x0069, 0x7fff, 0x006d, 0x7fff,
     0x0072, 0x7fff, 0x0077, 0x7fff, 0x007c, 0x7fff, 0x0081, 0x7fff, 0x0086,
     0x7fff, 0x008b, 0x7fff, 0x0091, 0x7fff, 0x0096, 0x7fff, 0x009c, 0x7fff,
     0x00a1, 0x7fff, 0x00a7, 0x7fff, 0x00ad, 0x7fff, 0x00b3, 0x7fff, 0x00b9,
     0x7fff, 0x00bf, 0x7fff, 0x00c6, 0x7fff, 0x00cc, 0x7fff, 0x00d3, 0x7fff,
     0x00da, 0x7fff, 0x00e0, 0x7fff, 0x00e7, 0x7fff, 0x00ee, 0x7fff, 0x00f5,
     0x7fff, 0x00fd, 0x7fff, 0x0104, 0x7fff, 0x010c, 0x7fff, 0x0113, 0x7fff,
     0x011b, 0x7fff, 0x0123, 0x7fff, 0x012b, 0x7fff, 0x0133, 0x7fff, 0x013c,
     0x7ffe, 0x0144, 0x7ffe, 0x014d, 0x7ffe, 0x0156, 0x7ffe, 0x015f, 0x7ffe,
     0x0168, 0x7ffe, 0x0171, 0x7ffe, 0x017a, 0x7ffe, 0x0183, 0x7ffe, 0x018d,
     0x7ffe, 0x0197, 0x7ffd, 0x01a1, 0x7ffd, 0x01ab, 0x7ffd, 0x01b5, 0x7ffd,
     0x01bf, 0x7ffd, 0x01ca, 0x7ffd, 0x01d4, 0x7ffd, 0x01df, 0x7ffc, 0x01ea,
     0x7ffc, 0x01f5, 0x7ffc, 0x0200, 0x7ffc, 0x020c, 0x7ffc, 0x0217, 0x7ffc,
     0x0223, 0x7ffb, 0x022f, 0x7ffb, 0x023b, 0x7ffb, 0x0247, 0x7ffb, 0x0253,
     0x7ffb, 0x0260, 0x7ffa, 0x026d, 0x7ffa, 0x027a, 0x7ffa, 0x0287, 0x7ffa,
     0x0294, 0x7ff9, 0x02a1, 0x7ff9, 0x02af, 0x7ff9, 0x02bc, 0x7ff9, 0x02ca,
     0x7ff8, 0x02d8, 0x7ff8, 0x02e7, 0x7ff8, 0x02f5, 0x7ff7, 0x0304, 0x7ff7,
     0x0312, 0x7ff7, 0x0321, 0x7ff6, 0x0331, 0x7ff6, 0x0340, 0x7ff5, 0x034f,
     0x7ff5, 0x035f, 0x7ff5, 0x036f, 0x7ff4, 0x037f, 0x7ff4, 0x038f, 0x7ff3,
     0x03a0, 0x7ff3, 0x03b0, 0x7ff2, 0x03c1, 0x7ff2, 0x03d2, 0x7ff1, 0x03e3,
     0x7ff1, 0x03f5, 0x7ff0, 0x0406, 0x7ff0, 0x0418, 0x7fef, 0x042a, 0x7fef,
     0x043c, 0x7fee, 0x044f, 0x7fed, 0x0461, 0x7fed, 0x0474, 0x7fec, 0x0487,
     0x7feb, 0x049a, 0x7feb, 0x04ae, 0x7fea, 0x04c1, 0x7fe9, 0x04d5, 0x7fe9,
     0x04e9, 0x7fe8, 0x04fd, 0x7fe7, 0x0512, 0x7fe6, 0x0527, 0x7fe5, 0x053b,
     0x7fe5, 0x0550, 0x7fe4, 0x0566, 0x7fe3, 0x057b, 0x7fe2, 0x0591, 0x7fe1,
     0x05a7, 0x7fe0, 0x05bd, 0x7fdf, 0x05d3, 0x7fde, 0x05ea, 0x7fdd, 0x0601,
     0x7fdc, 0x0618, 0x7fdb, 0x062f, 0x7fda, 0x0646, 0x7fd9, 0x065e, 0x7fd7,
     0x0676, 0x7fd6, 0x068e, 0x7fd5, 0x06a6, 0x7fd4, 0x06bf, 0x7fd2, 0x06d8,
     0x7fd1, 0x06f1, 0x7fd0, 0x070a, 0x7fce, 0x0723, 0x7fcd, 0x073d, 0x7fcc,
     0x0757, 0x7fca, 0x0771, 0x7fc9, 0x078c, 0x7fc7, 0x07a6, 0x7fc5, 0x07c1,
     0x7fc4, 0x07dc, 0x7fc2, 0x07f7, 0x7fc0, 0x0813, 0x7fbf, 0x082f, 0x7fbd,
     0x084b, 0x7fbb, 0x0867, 0x7fb9, 0x0884, 0x7fb7, 0x08a0, 0x7fb6, 0x08bd,
     0x7fb4, 0x08da, 0x7fb2, 0x08f8, 0x7faf, 0x0916, 0x7fad, 0x0934, 0x7fab,
     0x0952, 0x7fa9, 0x0970, 0x7fa7, 0x098f, 0x7fa5, 0x09ae, 0x7fa2, 0x09cd,
     0x7fa0, 0x09ec, 0x7f9d, 0x0a0c, 0x7f9b, 0x0a2c, 0x7f98, 0x0a4c, 0x7f96,
     0x0a6c, 0x7f93, 0x0a8d, 0x7f91, 0x0aae, 0x7f8e, 0x0acf, 0x7f8b, 0x0af0,
     0x7f88, 0x0b12, 0x7f85, 0x0b33, 0x7f82, 0x0b55, 0x7f7f, 0x0b78, 0x7f7c,
     0x0b9a, 0x7f79, 0x0bbd, 0x7f76, 0x0be0, 0x7f73, 0x0c04, 0x7f6f, 0x0c27,
     0x7f6c, 0x0c4b, 0x7f69, 0x0c6f, 0x7f65, 0x0c93, 0x7f61, 0x0cb8, 0x7f5e,
     0x0cdd, 0x7f5a, 0x0d02, 0x7f56, 0x0d27, 0x7f53, 0x0d4d, 0x7f4f, 0x0d73,
     0x7f4b, 0x0d99, 0x7f47, 0x0dbf, 0x7f43, 0x0de6, 0x7f3e, 0x0e0c, 0x7f3a,
     0x0e34, 0x7f36, 0x0e5b, 0x7f31, 0x0e83, 0x7f2d, 0x0eaa, 0x7f28, 0x0ed3,
     0x7f24, 0x0efb, 0x7f1f, 0x0f23, 0x7f1a, 0x0f4c, 0x7f15, 0x0f75, 0x7f10,
     0x0f9f, 0x7f0b, 0x0fc8, 0x7f06, 0x0ff2, 0x7f01, 0x101c, 0x7efb, 0x1047,
     0x7ef6, 0x1071, 0x7ef0, 0x109c, 0x7eeb, 0x10c8, 0x7ee5, 0x10f3, 0x7edf,
     0x111f, 0x7eda, 0x114a, 0x7ed4, 0x1177, 0x7ece, 0x11a3, 0x7ec7, 0x11d0,
     0x7ec1, 0x11fd, 0x7ebb, 0x122a, 0x7eb4, 0x1257, 0x7eae, 0x1285, 0x7ea7,
     0x12b3, 0x7ea0, 0x12e1, 0x7e9a, 0x130f, 0x7e93, 0x133e, 0x7e8c, 0x136d,
     0x7e84, 0x139c, 0x7e7d, 0x13cc, 0x7e76, 0x13fb, 0x7e6e, 0x142b, 0x7e67,
     0x145b, 0x7e5f, 0x148c, 0x7e57, 0x14bc, 0x7e4f, 0x14ed, 0x7e47, 0x151e,
     0x7e3f, 0x1550, 0x7e37, 0x1581, 0x7e2e, 0x15b3, 0x7e26, 0x15e5, 0x7e1d,
     0x1618, 0x7e14, 0x164a, 0x7e0b, 0x167d, 0x7e02, 0x16b0, 0x7df9, 0x16e4,
     0x7df0, 0x1717, 0x7de6, 0x174b, 0x7ddd, 0x177f, 0x7dd3, 0x17b3, 0x7dc9,
     0x17e8, 0x7dbf, 0x181d, 0x7db5, 0x1852, 0x7dab, 0x1887, 0x7da1, 0x18bc,
     0x7d96, 0x18f2, 0x7d8c, 0x1928, 0x7d81, 0x195e, 0x7d76, 0x1995, 0x7d6b,
     0x19cb, 0x7d60, 0x1a02, 0x7d54, 0x1a39, 0x7d49, 0x1a71, 0x7d3d, 0x1aa8,
     0x7d31, 0x1ae0, 0x7d26, 0x1b18, 0x7d19, 0x1b50, 0x7d0d, 0x1b89, 0x7d01,
     0x1bc2, 0x7cf4, 0x1bfb, 0x7ce8, 0x1c34, 0x7cdb, 0x1c6d, 0x7cce, 0x1ca7,
     0x7cc1, 0x1ce1, 0x7cb3, 0x1d1b, 0x7ca6, 0x1d55, 0x7c98, 0x1d8f, 0x7c8a,
     0x1dca, 0x7c7c, 0x1e05, 0x7c6e, 0x1e40, 0x7c60, 0x1e7b, 0x7c51, 0x1eb7,
     0x7c43, 0x1ef3, 0x7c34, 0x1f2f, 0x7c25, 0x1f6b, 0x7c16, 0x1fa7, 0x7c06,
     0x1fe4, 0x7bf7, 0x2021, 0x7be7, 0x205e, 0x7bd7, 0x209b, 0x7bc7, 0x20d8,
     0x7bb7, 0x2116, 0x7ba6, 0x2154, 0x7b96, 0x2192, 0x7b85, 0x21d0, 0x7b74,
     0x220e, 0x7b63, 0x224d, 0x7b52, 0x228c, 0x7b40, 0x22cb, 0x7b2e, 0x230a,
     0x7b1c, 0x2349, 0x7b0a, 0x2389, 0x7af8, 0x23c8, 0x7ae6, 0x2408, 0x7ad3,
     0x2448, 0x7ac0, 0x2489, 0x7aad, 0x24c9, 0x7a9a, 0x250a, 0x7a86, 0x254b,
     0x7a73, 0x258c, 0x7a5f, 0x25cd, 0x7a4b, 0x260e, 0x7a36, 0x2650, 0x7a22,
     0x2691, 0x7a0d, 0x26d3, 0x79f8, 0x2715, 0x79e3, 0x2757, 0x79ce, 0x279a,
     0x79b8, 0x27dc, 0x79a3, 0x281f, 0x798d, 0x2862, 0x7977, 0x28a5, 0x7960,
     0x28e8, 0x794a, 0x292b, 0x7933, 0x296f, 0x791c, 0x29b2, 0x7905, 0x29f6,
     0x78ed, 0x2a3a, 0x78d6, 0x2a7e, 0x78be, 0x2ac2, 0x78a6, 0x2b07, 0x788d,
     0x2b4b, 0x7875, 0x2b90, 0x785c, 0x2bd4, 0x7843, 0x2c19, 0x782a, 0x2c5e,
     0x7810, 0x2ca4, 0x77f7, 0x2ce9, 0x77dd, 0x2d2e, 0x77c3, 0x2d74, 0x77a8,
     0x2dba, 0x778e, 0x2dff, 0x7773, 0x2e45, 0x7758, 0x2e8b, 0x773d, 0x2ed2,
     0x7721, 0x2f18, 0x7706, 0x2f5e, 0x76ea, 0x2fa5, 0x76cd, 0x2fec, 0x76b1,
     0x3032, 0x7694, 0x3079, 0x7677, 0x30c0, 0x765a, 0x3107, 0x763d, 0x314e,
     0x761f, 0x3196, 0x7601, 0x31dd, 0x75e3, 0x3225, 0x75c5, 0x326c, 0x75a6,
     0x32b4, 0x7588, 0x32fc, 0x7569, 0x3344, 0x7549, 0x338c, 0x752a, 0x33d4,
     0x750a, 0x341c, 0x74ea, 0x3464, 0x74ca, 0x34ac, 0x74a9, 0x34f5, 0x7488,
     0x353d, 0x7467, 0x3585, 0x7446, 0x35ce, 0x7424, 0x3617, 0x7403, 0x365f,
     0x73e1, 0x36a8, 0x73be, 0x36f1, 0x739c, 0x373a, 0x7379, 0x3783, 0x7356,
     0x37cc, 0x7333, 0x3815, 0x730f, 0x385e, 0x72ec, 0x38a7, 0x72c8, 0x38f1,
     0x72a3, 0x393a, 0x727f, 0x3983, 0x725a, 0x39cd, 0x7235, 0x3a16, 0x7210,
     0x3a60, 0x71ea, 0x3aa9, 0x71c4, 0x3af3, 0x719e, 0x3b3c, 0x7178, 0x3b86,
     0x7151, 0x3bd0, 0x712b, 0x3c19, 0x7104, 0x3c63, 0x70dc, 0x3cad, 0x70b5,
     0x3cf7, 0x708d, 0x3d40, 0x7065, 0x3d8a, 0x703c, 0x3dd4, 0x7014, 0x3e1e,
     0x6feb, 0x3e68, 0x6fc2, 0x3eb1, 0x6f98, 0x3efb, 0x6f6f, 0x3f45, 0x6f45,
     0x3f8f, 0x6f1b, 0x3fd9, 0x6ef0, 0x4023, 0x6ec6, 0x406d, 0x6e9b, 0x40b6,
     0x6e70, 0x4100, 0x6e44, 0x414a, 0x6e19, 0x4194, 0x6ded, 0x41de, 0x6dc1,
     0x4228, 0x6d94, 0x4271, 0x6d68, 0x42bb, 0x6d3b, 0x4305, 0x6d0d, 0x434f,
     0x6ce0, 0x4398, 0x6cb2, 0x43e2, 0x6c84, 0x442c, 0x6c56, 0x4475, 0x6c28,
     0x44bf, 0x6bf9, 0x4508, 0x6bca, 0x4552, 0x6b9b, 0x459b, 0x6b6b, 0x45e5,
     0x6b3c, 0x462e, 0x6b0c, 0x4678, 0x6adb, 0x46c1, 0x6aab, 0x470a, 0x6a7a,
     0x4753, 0x6a49, 0x479c, 0x6a18, 0x47e5, 0x69e7, 0x482e, 0x69b5, 0x4877,
     0x6983, 0x48c0, 0x6951, 0x4909, 0x691e, 0x4952, 0x68ec, 0x499b, 0x68b9,
     0x49e3, 0x6885, 0x4a2c, 0x6852, 0x4a74, 0x681e, 0x4abd, 0x67ea, 0x4b05,
     0x67b6, 0x4b4d, 0x6782, 0x4b95, 0x674d, 0x4bde, 0x6718, 0x4c26, 0x66e3,
     0x4c6d, 0x66ae, 0x4cb5, 0x6678, 0x4cfd, 0x6642, 0x4d45, 0x660c, 0x4d8c,
     0x65d6, 0x4dd4, 0x659f, 0x4e1b, 0x6568, 0x4e62, 0x6531, 0x4ea9, 0x64fa,
     0x4ef0, 0x64c3, 0x4f37, 0x648b, 0x4f7e, 0x6453, 0x4fc5, 0x641b, 0x500b,
     0x63e2, 0x5052, 0x63aa, 0x5098, 0x6371, 0x50df, 0x6338, 0x5125, 0x62fe,
     0x516b, 0x62c5, 0x51b1, 0x628b, 0x51f6, 0x6251, 0x523c, 0x6217, 0x5281,
     0x61dc, 0x52c7, 0x61a2, 0x530c, 0x6167, 0x5351, 0x612c, 0x5396, 0x60f1,
     0x53db, 0x60b5, 0x5420, 0x6079, 0x5464, 0x603d, 0x54a9, 0x6001, 0x54ed,
     0x5fc5, 0x5531, 0x5f88, 0x5575, 0x5f4b, 0x55b9, 0x5f0e, 0x55fc, 0x5ed1,
     0x5640, 0x5e94, 0x5683, 0x5e56, 0x56c7, 0x5e18, 0x570a, 0x5dda, 0x574d,
     0x5d9c, 0x578f, 0x5d5e, 0x57d2, 0x5d1f, 0x5814, 0x5ce0, 0x5856, 0x5ca1,
     0x5899, 0x5c62, 0x58da, 0x5c23, 0x591c, 0x5be3, 0x595e, 0x5ba4, 0x599f,
     0x5b64, 0x59e0, 0x5b24, 0x5a21, 0x5ae3, 0x5a62, 0x5aa3},

    // const WORD16 only_short_window_sine[128] =
    {0x00c9, 0x7fff, 0x025b, 0x7ffa, 0x03ed, 0x7ff1, 0x057f, 0x7fe2, 0x0711,
     0x7fce, 0x08a2, 0x7fb5, 0x0a33, 0x7f98, 0x0bc4, 0x7f75, 0x0d54, 0x7f4e,
     0x0ee4, 0x7f22, 0x1073, 0x7ef0, 0x1201, 0x7eba, 0x138f, 0x7e7f, 0x151c,
     0x7e3f, 0x16a8, 0x7dfb, 0x1833, 0x7db1, 0x19be, 0x7d63, 0x1b47, 0x7d0f,
     0x1cd0, 0x7cb7, 0x1e57, 0x7c5a, 0x1fdd, 0x7bf9, 0x2162, 0x7b92, 0x22e5,
     0x7b27, 0x2467, 0x7ab7, 0x25e8, 0x7a42, 0x2768, 0x79c9, 0x28e5, 0x794a,
     0x2a62, 0x78c8, 0x2bdc, 0x7840, 0x2d55, 0x77b4, 0x2ecc, 0x7723, 0x3042,
     0x768e, 0x31b5, 0x75f4, 0x3327, 0x7556, 0x3497, 0x74b3, 0x3604, 0x740b,
     0x3770, 0x735f, 0x38d9, 0x72af, 0x3a40, 0x71fa, 0x3ba5, 0x7141, 0x3d08,
     0x7083, 0x3e68, 0x6fc2, 0x3fc6, 0x6efb, 0x4121, 0x6e31, 0x427a, 0x6d62,
     0x43d1, 0x6c8f, 0x4524, 0x6bb8, 0x4675, 0x6add, 0x47c4, 0x69fd, 0x490f,
     0x691a, 0x4a58, 0x6832, 0x4b9e, 0x6747, 0x4ce1, 0x6657, 0x4e21, 0x6564,
     0x4f5e, 0x646c, 0x5098, 0x6371, 0x51cf, 0x6272, 0x5303, 0x616f, 0x5433,
     0x6068, 0x5560, 0x5f5e, 0x568a, 0x5e50, 0x57b1, 0x5d3e, 0x58d4, 0x5c29,
     0x59f4, 0x5b10},

    // const WORD16 only_short_window_kbd[128] =
    {0x0001, 0x7fff, 0x0004, 0x7fff, 0x0008, 0x7fff, 0x000d, 0x7fff, 0x0014,
     0x7fff, 0x001d, 0x7fff, 0x0029, 0x7fff, 0x0039, 0x7fff, 0x004c, 0x7fff,
     0x0063, 0x7fff, 0x0080, 0x7fff, 0x00a2, 0x7fff, 0x00cb, 0x7fff, 0x00fb,
     0x7fff, 0x0133, 0x7fff, 0x0174, 0x7ffe, 0x01be, 0x7ffd, 0x0214, 0x7ffc,
     0x0275, 0x7ffa, 0x02e3, 0x7ff8, 0x035e, 0x7ff5, 0x03e8, 0x7ff1, 0x0481,
     0x7fec, 0x052b, 0x7fe5, 0x05e7, 0x7fdd, 0x06b4, 0x7fd3, 0x0795, 0x7fc6,
     0x088a, 0x7fb7, 0x0993, 0x7fa4, 0x0ab2, 0x7f8d, 0x0be7, 0x7f72, 0x0d32,
     0x7f51, 0x0e95, 0x7f2b, 0x100e, 0x7efd, 0x119f, 0x7ec8, 0x1347, 0x7e8a,
     0x1507, 0x7e43, 0x16de, 0x7df1, 0x18cc, 0x7d93, 0x1ad0, 0x7d29, 0x1ceb,
     0x7cb1, 0x1f1b, 0x7c2a, 0x215f, 0x7b93, 0x23b7, 0x7aeb, 0x2621, 0x7a30,
     0x289c, 0x7963, 0x2b27, 0x7882, 0x2dc0, 0x778b, 0x3066, 0x767f, 0x3318,
     0x755c, 0x35d2, 0x7422, 0x3895, 0x72d1, 0x3b5d, 0x7167, 0x3e29, 0x6fe5,
     0x40f6, 0x6e4a, 0x43c4, 0x6c97, 0x4690, 0x6acc, 0x4957, 0x68e8, 0x4c18,
     0x66ed, 0x4ed2, 0x64da, 0x5182, 0x62b2, 0x5426, 0x6074, 0x56bd, 0x5e22,
     0x5945, 0x5bbc},

    // const WORD16 cos_array_2048p[512] and const WORD16 sine_array_2048p[512]
    // =
    {
        32767, 0,     32767, 101,   32767, 201,   32767, 302,   32766, 402,
        32764, 503,   32762, 603,   32760, 704,   32758, 804,   32756, 905,
        32753, 1005,  32749, 1106,  32746, 1206,  32742, 1307,  32738, 1407,
        32733, 1507,  32729, 1608,  32723, 1708,  32718, 1809,  32712, 1909,
        32706, 2009,  32700, 2110,  32693, 2210,  32686, 2310,  32679, 2411,
        32672, 2511,  32664, 2611,  32656, 2711,  32647, 2811,  32638, 2912,
        32629, 3012,  32620, 3112,  32610, 3212,  32600, 3312,  32590, 3412,
        32579, 3512,  32568, 3612,  32557, 3712,  32546, 3812,  32534, 3911,
        32522, 4011,  32509, 4111,  32496, 4211,  32483, 4310,  32470, 4410,
        32456, 4510,  32442, 4609,  32428, 4709,  32413, 4808,  32398, 4908,
        32383, 5007,  32368, 5106,  32352, 5206,  32336, 5305,  32319, 5404,
        32303, 5503,  32286, 5602,  32268, 5701,  32251, 5800,  32233, 5899,
        32214, 5998,  32196, 6097,  32177, 6195,  32158, 6294,  32138, 6393,
        32119, 6491,  32099, 6590,  32078, 6688,  32058, 6787,  32037, 6885,
        32015, 6983,  31994, 7081,  31972, 7180,  31950, 7278,  31927, 7376,
        31904, 7474,  31881, 7571,  31858, 7669,  31834, 7767,  31810, 7864,
        31786, 7962,  31761, 8059,  31737, 8157,  31711, 8254,  31686, 8351,
        31660, 8449,  31634, 8546,  31608, 8643,  31581, 8740,  31554, 8837,
        31527, 8933,  31499, 9030,  31471, 9127,  31443, 9223,  31415, 9320,
        31386, 9416,  31357, 9512,  31328, 9608,  31298, 9704,  31268, 9800,
        31238, 9896,  31207, 9992,  31177, 10088, 31146, 10183, 31114, 10279,
        31082, 10374, 31050, 10469, 31018, 10565, 30986, 10660, 30953, 10755,
        30920, 10850, 30886, 10945, 30853, 11039, 30819, 11134, 30784, 11228,
        30750, 11323, 30715, 11417, 30680, 11511, 30644, 11605, 30608, 11699,
        30572, 11793, 30536, 11887, 30499, 11980, 30462, 12074, 30425, 12167,
        30388, 12261, 30350, 12354, 30312, 12447, 30274, 12540, 30235, 12633,
        30196, 12725, 30157, 12818, 30118, 12910, 30078, 13003, 30038, 13095,
        29997, 13187, 29957, 13279, 29916, 13371, 29875, 13463, 29833, 13554,
        29792, 13646, 29750, 13737, 29707, 13828, 29665, 13919, 29622, 14010,
        29579, 14101, 29535, 14192, 29492, 14282, 29448, 14373, 29404, 14463,
        29359, 14553, 29314, 14643, 29269, 14733, 29224, 14823, 29178, 14912,
        29132, 15002, 29086, 15091, 29040, 15180, 28993, 15269, 28946, 15358,
        28899, 15447, 28851, 15535, 28803, 15624, 28755, 15712, 28707, 15800,
        28658, 15888, 28610, 15976, 28560, 16064, 28511, 16151, 28461, 16239,
        28411, 16326, 28361, 16413, 28311, 16500, 28260, 16587, 28209, 16673,
        28158, 16760, 28106, 16846, 28054, 16932, 28002, 17018, 27950, 17104,
        27897, 17190, 27844, 17275, 27791, 17361, 27738, 17446, 27684, 17531,
        27630, 17616, 27576, 17700, 27522, 17785, 27467, 17869, 27412, 17953,
        27357, 18037, 27301, 18121, 27246, 18205, 27190, 18288, 27133, 18372,
        27077, 18455, 27020, 18538, 26963, 18621, 26906, 18703, 26848, 18786,
        26791, 18868, 26733, 18950, 26674, 19032, 26616, 19114, 26557, 19195,
        26498, 19277, 26439, 19358, 26379, 19439, 26320, 19520, 26260, 19601,
        26199, 19681, 26139, 19761, 26078, 19841, 26017, 19921, 25956, 20001,
        25894, 20081, 25833, 20160, 25771, 20239, 25708, 20318, 25646, 20397,
        25583, 20475, 25520, 20554, 25457, 20632, 25394, 20710, 25330, 20788,
        25266, 20865, 25202, 20943, 25138, 21020, 25073, 21097, 25008, 21174,
        24943, 21251, 24878, 21327, 24812, 21403, 24746, 21479, 24680, 21555,
        24614, 21631, 24548, 21706, 24481, 21781, 24414, 21856, 24347, 21931,
        24280, 22006, 24212, 22080, 24144, 22154, 24076, 22228, 24008, 22302,
        23939, 22375, 23870, 22449, 23801, 22522, 23732, 22595, 23663, 22668,
        23593, 22740, 23523, 22812, 23453, 22884, 23383, 22956, 23312, 23028,
        23241, 23099, 23170, 23170,
    },

    // WORD32 w1024[768]
    {

        0x00007fff, 0xff377fff, 0xfe6e7ffe, 0xfda57ffa, 0xfcdc7ff6, 0xfc137ff1,
        0xfb4a7fea, 0xfa817fe2, 0xf9b87fd9, 0xf8ef7fce, 0xf8277fc2, 0xf75e7fb5,
        0xf6957fa7, 0xf5cd7f98, 0xf5057f87, 0xf43c7f75, 0xf3747f62, 0xf2ac7f4e,
        0xf1e47f38, 0xf11c7f22, 0xf0557f0a, 0xef8d7ef0, 0xeec67ed6, 0xedff7eba,
        0xed387e9d, 0xec717e7f, 0xebab7e60, 0xeae47e3f, 0xea1e7e1e, 0xe9587dfb,
        0xe8927dd6, 0xe7cd7db1, 0xe7077d8a, 0xe6427d63, 0xe57d7d3a, 0xe4b97d0f,
        0xe3f47ce4, 0xe3307cb7, 0xe26d7c89, 0xe1a97c5a, 0xe0e67c2a, 0xe0237bf9,
        0xdf617bc6, 0xde9e7b92, 0xdddc7b5d, 0xdd1b7b27, 0xdc597aef, 0xdb997ab7,
        0xdad87a7d, 0xda187a42, 0xd9587a06, 0xd89879c9, 0xd7d9798a, 0xd71b794a,
        0xd65c790a, 0xd59e78c8, 0xd4e17885, 0xd4247840, 0xd36777fb, 0xd2ab77b4,
        0xd1ef776c, 0xd1347723, 0xd07976d9, 0xcfbe768e, 0xcf047642, 0xce4b75f4,
        0xcd9275a6, 0xccd97556, 0xcc217505, 0xcb6974b3, 0xcab27460, 0xc9fc740b,
        0xc94673b6, 0xc890735f, 0xc7db7308, 0xc72772af, 0xc6737255, 0xc5c071fa,
        0xc50d719e, 0xc45b7141, 0xc3a970e3, 0xc2f87083, 0xc2487023, 0xc1986fc2,
        0xc0e96f5f, 0xc03a6efb, 0xbf8c6e97, 0xbedf6e31, 0xbe326dca, 0xbd866d62,
        0xbcda6cf9, 0xbc2f6c8f, 0xbb856c24, 0xbadc6bb8, 0xba336b4b, 0xb98b6add,
        0xb8e36a6e, 0xb83c69fd, 0xb796698c, 0xb6f1691a, 0xb64c68a7, 0xb5a86832,
        0xb50567bd, 0xb4626747, 0xb3c066d0, 0xb31f6657, 0xb27f65de, 0xb1df6564,
        0xb14064e9, 0xb0a2646c, 0xb00563ef, 0xaf686371, 0xaecc62f2, 0xae316272,
        0xad9761f1, 0xacfd616f, 0xac6560ec, 0xabcd6068, 0xab365fe4, 0xaaa05f5e,
        0xaa0a5ed7, 0xa9765e50, 0xa8e25dc8, 0xa84f5d3e, 0xa7bd5cb4, 0xa72c5c29,
        0xa69c5b9d, 0xa60c5b10, 0xa57e5a82, 0xa4f059f4, 0xa4635964, 0xa3d758d4,
        0xa34c5843, 0xa2c257b1, 0xa238571e, 0xa1b0568a, 0xa12955f6, 0xa0a25560,
        0xa01c54ca, 0x9f985433, 0x9f14539b, 0x9e915303, 0x9e0f5269, 0x9d8e51cf,
        0x9d0e5134, 0x9c8f5098, 0x9c114ffb, 0x9b944f5e, 0x9b174ec0, 0x9a9c4e21,
        0x9a224d81, 0x99a94ce1, 0x99304c40, 0x98b94b9e, 0x98434afb, 0x97ce4a58,
        0x975949b4, 0x96e6490f, 0x9674486a, 0x960347c4, 0x9592471d, 0x95234675,
        0x94b545cd, 0x94484524, 0x93dc447b, 0x937143d1, 0x93074326, 0x929e427a,
        0x923641ce, 0x91cf4121, 0x91694074, 0x91053fc6, 0x90a13f17, 0x903e3e68,
        0x8fdd3db8, 0x8f7d3d08, 0x8f1d3c57, 0x8ebf3ba5, 0x8e623af3, 0x8e063a40,
        0x8dab398d, 0x8d5138d9, 0x8cf83825, 0x8ca13770, 0x8c4a36ba, 0x8bf53604,
        0x8ba0354e, 0x8b4d3497, 0x8afb33df, 0x8aaa3327, 0x8a5a326e, 0x8a0c31b5,
        0x89be30fc, 0x89723042, 0x89272f87, 0x88dd2ecc, 0x88942e11, 0x884c2d55,
        0x88052c99, 0x87c02bdc, 0x877b2b1f, 0x87382a62, 0x86f629a4, 0x86b628e5,
        0x86762827, 0x86372768, 0x85fa26a8, 0x85be25e8, 0x85832528, 0x85492467,
        0x851123a7, 0x84d922e5, 0x84a32224, 0x846e2162, 0x843a209f, 0x84071fdd,
        0x83d61f1a, 0x83a61e57, 0x83771d93, 0x83491cd0, 0x831c1c0c, 0x82f11b47,
        0x82c61a83, 0x829d19be, 0x827618f9, 0x824f1833, 0x822a176e, 0x820516a8,
        0x81e215e2, 0x81c1151c, 0x81a01455, 0x8181138f, 0x816312c8, 0x81461201,
        0x812a113a, 0x81101073, 0x80f60fab, 0x80de0ee4, 0x80c80e1c, 0x80b20d54,
        0x809e0c8c, 0x808b0bc4, 0x80790afb, 0x80680a33, 0x8059096b, 0x804b08a2,
        0x803e07d9, 0x80320711, 0x80270648, 0x801e057f, 0x801604b6, 0x800f03ed,
        0x800a0324, 0x8006025b, 0x80020192, 0x800100c9, 0x80000000, 0x8001ff37,
        0x8002fe6e, 0x8006fda5, 0x800afcdc, 0x800ffc13, 0x8016fb4a, 0x801efa81,
        0x8027f9b8, 0x8032f8ef, 0x803ef827, 0x804bf75e, 0x8059f695, 0x8068f5cd,
        0x8079f505, 0x808bf43c, 0x809ef374, 0x80b2f2ac, 0x80c8f1e4, 0x80def11c,
        0x80f6f055, 0x8110ef8d, 0x812aeec6, 0x8146edff, 0x8163ed38, 0x8181ec71,
        0x81a0ebab, 0x81c1eae4, 0x81e2ea1e, 0x8205e958, 0x822ae892, 0x824fe7cd,
        0x8276e707, 0x829de642, 0x82c6e57d, 0x82f1e4b9, 0x831ce3f4, 0x8349e330,
        0x8377e26d, 0x83a6e1a9, 0x83d6e0e6, 0x8407e023, 0x843adf61, 0x846ede9e,
        0x84a3dddc, 0x84d9dd1b, 0x8511dc59, 0x8549db99, 0x8583dad8, 0x85beda18,
        0x85fad958, 0x8637d898, 0x8676d7d9, 0x86b6d71b, 0x86f6d65c, 0x8738d59e,
        0x877bd4e1, 0x87c0d424, 0x8805d367, 0x884cd2ab, 0x8894d1ef, 0x88ddd134,
        0x8927d079, 0x8972cfbe, 0x89becf04, 0x8a0cce4b, 0x8a5acd92, 0x8aaaccd9,
        0x8afbcc21, 0x8b4dcb69, 0x8ba0cab2, 0x8bf5c9fc, 0x8c4ac946, 0x8ca1c890,
        0x8cf8c7db, 0x8d51c727, 0x8dabc673, 0x8e06c5c0, 0x8e62c50d, 0x8ebfc45b,
        0x8f1dc3a9, 0x8f7dc2f8, 0x8fddc248, 0x903ec198, 0x90a1c0e9, 0x9105c03a,
        0x9169bf8c, 0x91cfbedf, 0x9236be32, 0x929ebd86, 0x9307bcda, 0x9371bc2f,
        0x93dcbb85, 0x9448badc, 0x94b5ba33, 0x9523b98b, 0x9592b8e3, 0x9603b83c,
        0x9674b796, 0x96e6b6f1, 0x9759b64c, 0x97ceb5a8, 0x9843b505, 0x98b9b462,
        0x9930b3c0, 0x99a9b31f, 0x9a22b27f, 0x9a9cb1df, 0x9b17b140, 0x9b94b0a2,
        0x9c11b005, 0x9c8faf68, 0x9d0eaecc, 0x9d8eae31, 0x9e0fad97, 0x9e91acfd,
        0x9f14ac65, 0x9f98abcd, 0xa01cab36, 0xa0a2aaa0, 0xa129aa0a, 0xa1b0a976,
        0xa238a8e2, 0xa2c2a84f, 0xa34ca7bd, 0xa3d7a72c, 0xa463a69c, 0xa4f0a60c,
        0xa57ea57e, 0xa60ca4f0, 0xa69ca463, 0xa72ca3d7, 0xa7bda34c, 0xa84fa2c2,
        0xa8e2a238, 0xa976a1b0, 0xaa0aa129, 0xaaa0a0a2, 0xab36a01c, 0xabcd9f98,
        0xac659f14, 0xacfd9e91, 0xad979e0f, 0xae319d8e, 0xaecc9d0e, 0xaf689c8f,
        0xb0059c11, 0xb0a29b94, 0xb1409b17, 0xb1df9a9c, 0xb27f9a22, 0xb31f99a9,
        0xb3c09930, 0xb46298b9, 0xb5059843, 0xb5a897ce, 0xb64c9759, 0xb6f196e6,
        0xb7969674, 0xb83c9603, 0xb8e39592, 0xb98b9523, 0xba3394b5, 0xbadc9448,
        0xbb8593dc, 0xbc2f9371, 0xbcda9307, 0xbd86929e, 0xbe329236, 0xbedf91cf,
        0xbf8c9169, 0xc03a9105, 0xc0e990a1, 0xc198903e, 0xc2488fdd, 0xc2f88f7d,
        0xc3a98f1d, 0xc45b8ebf, 0xc50d8e62, 0xc5c08e06, 0xc6738dab, 0xc7278d51,
        0xc7db8cf8, 0xc8908ca1, 0xc9468c4a, 0xc9fc8bf5, 0xcab28ba0, 0xcb698b4d,
        0xcc218afb, 0xccd98aaa, 0xcd928a5a, 0xce4b8a0c, 0xcf0489be, 0xcfbe8972,
        0xd0798927, 0xd13488dd, 0xd1ef8894, 0xd2ab884c, 0xd3678805, 0xd42487c0,
        0xd4e1877b, 0xd59e8738, 0xd65c86f6, 0xd71b86b6, 0xd7d98676, 0xd8988637,
        0xd95885fa, 0xda1885be, 0xdad88583, 0xdb998549, 0xdc598511, 0xdd1b84d9,
        0xdddc84a3, 0xde9e846e, 0xdf61843a, 0xe0238407, 0xe0e683d6, 0xe1a983a6,
        0xe26d8377, 0xe3308349, 0xe3f4831c, 0xe4b982f1, 0xe57d82c6, 0xe642829d,
        0xe7078276, 0xe7cd824f, 0xe892822a, 0xe9588205, 0xea1e81e2, 0xeae481c1,
        0xebab81a0, 0xec718181, 0xed388163, 0xedff8146, 0xeec6812a, 0xef8d8110,
        0xf05580f6, 0xf11c80de, 0xf1e480c8, 0xf2ac80b2, 0xf374809e, 0xf43c808b,
        0xf5058079, 0xf5cd8068, 0xf6958059, 0xf75e804b, 0xf827803e, 0xf8ef8032,
        0xf9b88027, 0xfa81801e, 0xfb4a8016, 0xfc13800f, 0xfcdc800a, 0xfda58006,
        0xfe6e8002, 0xff378001, 0x00008000, 0x00c98001, 0x01928002, 0x025b8006,
        0x0324800a, 0x03ed800f, 0x04b68016, 0x057f801e, 0x06488027, 0x07118032,
        0x07d9803e, 0x08a2804b, 0x096b8059, 0x0a338068, 0x0afb8079, 0x0bc4808b,
        0x0c8c809e, 0x0d5480b2, 0x0e1c80c8, 0x0ee480de, 0x0fab80f6, 0x10738110,
        0x113a812a, 0x12018146, 0x12c88163, 0x138f8181, 0x145581a0, 0x151c81c1,
        0x15e281e2, 0x16a88205, 0x176e822a, 0x1833824f, 0x18f98276, 0x19be829d,
        0x1a8382c6, 0x1b4782f1, 0x1c0c831c, 0x1cd08349, 0x1d938377, 0x1e5783a6,
        0x1f1a83d6, 0x1fdd8407, 0x209f843a, 0x2162846e, 0x222484a3, 0x22e584d9,
        0x23a78511, 0x24678549, 0x25288583, 0x25e885be, 0x26a885fa, 0x27688637,
        0x28278676, 0x28e586b6, 0x29a486f6, 0x2a628738, 0x2b1f877b, 0x2bdc87c0,
        0x2c998805, 0x2d55884c, 0x2e118894, 0x2ecc88dd, 0x2f878927, 0x30428972,
        0x30fc89be, 0x31b58a0c, 0x326e8a5a, 0x33278aaa, 0x33df8afb, 0x34978b4d,
        0x354e8ba0, 0x36048bf5, 0x36ba8c4a, 0x37708ca1, 0x38258cf8, 0x38d98d51,
        0x398d8dab, 0x3a408e06, 0x3af38e62, 0x3ba58ebf, 0x3c578f1d, 0x3d088f7d,
        0x3db88fdd, 0x3e68903e, 0x3f1790a1, 0x3fc69105, 0x40749169, 0x412191cf,
        0x41ce9236, 0x427a929e, 0x43269307, 0x43d19371, 0x447b93dc, 0x45249448,
        0x45cd94b5, 0x46759523, 0x471d9592, 0x47c49603, 0x486a9674, 0x490f96e6,
        0x49b49759, 0x4a5897ce, 0x4afb9843, 0x4b9e98b9, 0x4c409930, 0x4ce199a9,
        0x4d819a22, 0x4e219a9c, 0x4ec09b17, 0x4f5e9b94, 0x4ffb9c11, 0x50989c8f,
        0x51349d0e, 0x51cf9d8e, 0x52699e0f, 0x53039e91, 0x539b9f14, 0x54339f98,
        0x54caa01c, 0x5560a0a2, 0x55f6a129, 0x568aa1b0, 0x571ea238, 0x57b1a2c2,
        0x5843a34c, 0x58d4a3d7, 0x5964a463, 0x59f4a4f0, 0x5a82a57e, 0x5b10a60c,
        0x5b9da69c, 0x5c29a72c, 0x5cb4a7bd, 0x5d3ea84f, 0x5dc8a8e2, 0x5e50a976,
        0x5ed7aa0a, 0x5f5eaaa0, 0x5fe4ab36, 0x6068abcd, 0x60ecac65, 0x616facfd,
        0x61f1ad97, 0x6272ae31, 0x62f2aecc, 0x6371af68, 0x63efb005, 0x646cb0a2,
        0x64e9b140, 0x6564b1df, 0x65deb27f, 0x6657b31f, 0x66d0b3c0, 0x6747b462,
        0x67bdb505, 0x6832b5a8, 0x68a7b64c, 0x691ab6f1, 0x698cb796, 0x69fdb83c,
        0x6a6eb8e3, 0x6addb98b, 0x6b4bba33, 0x6bb8badc, 0x6c24bb85, 0x6c8fbc2f,
        0x6cf9bcda, 0x6d62bd86, 0x6dcabe32, 0x6e31bedf, 0x6e97bf8c, 0x6efbc03a,
        0x6f5fc0e9, 0x6fc2c198, 0x7023c248, 0x7083c2f8, 0x70e3c3a9, 0x7141c45b,
        0x719ec50d, 0x71fac5c0, 0x7255c673, 0x72afc727, 0x7308c7db, 0x735fc890,
        0x73b6c946, 0x740bc9fc, 0x7460cab2, 0x74b3cb69, 0x7505cc21, 0x7556ccd9,
        0x75a6cd92, 0x75f4ce4b, 0x7642cf04, 0x768ecfbe, 0x76d9d079, 0x7723d134,
        0x776cd1ef, 0x77b4d2ab, 0x77fbd367, 0x7840d424, 0x7885d4e1, 0x78c8d59e,
        0x790ad65c, 0x794ad71b, 0x798ad7d9, 0x79c9d898, 0x7a06d958, 0x7a42da18,
        0x7a7ddad8, 0x7ab7db99, 0x7aefdc59, 0x7b27dd1b, 0x7b5ddddc, 0x7b92de9e,
        0x7bc6df61, 0x7bf9e023, 0x7c2ae0e6, 0x7c5ae1a9, 0x7c89e26d, 0x7cb7e330,
        0x7ce4e3f4, 0x7d0fe4b9, 0x7d3ae57d, 0x7d63e642, 0x7d8ae707, 0x7db1e7cd,
        0x7dd6e892, 0x7dfbe958, 0x7e1eea1e, 0x7e3feae4, 0x7e60ebab, 0x7e7fec71,
        0x7e9ded38, 0x7ebaedff, 0x7ed6eec6, 0x7ef0ef8d, 0x7f0af055, 0x7f22f11c,
        0x7f38f1e4, 0x7f4ef2ac, 0x7f62f374, 0x7f75f43c, 0x7f87f505, 0x7f98f5cd,
        0x7fa7f695, 0x7fb5f75e, 0x7fc2f827, 0x7fcef8ef, 0x7fd9f9b8, 0x7fe2fa81,
        0x7feafb4a, 0x7ff1fc13, 0x7ff6fcdc, 0x7ffafda5, 0x7ffefe6e, 0x7fffff37,

    },

    // WORD8 bit_rev_1024[256]=
    {0x00, 0x40, 0x80, 0xc0, 0x10, 0x50, 0x90, 0xd0, 0x20, 0x60, 0xa0, 0xe0,
     0x30, 0x70, 0xb0, 0xf0, 0x04, 0x44, 0x84, 0xc4, 0x14, 0x54, 0x94, 0xd4,
     0x24, 0x64, 0xa4, 0xe4, 0x34, 0x74, 0xb4, 0xf4, 0x08, 0x48, 0x88, 0xc8,
     0x18, 0x58, 0x98, 0xd8, 0x28, 0x68, 0xa8, 0xe8, 0x38, 0x78, 0xb8, 0xf8,
     0x0c, 0x4c, 0x8c, 0xcc, 0x1c, 0x5c, 0x9c, 0xdc, 0x2c, 0x6c, 0xac, 0xec,
     0x3c, 0x7c, 0xbc, 0xfc, 0x01, 0x41, 0x81, 0xc1, 0x11, 0x51, 0x91, 0xd1,
     0x21, 0x61, 0xa1, 0xe1, 0x31, 0x71, 0xb1, 0xf1, 0x05, 0x45, 0x85, 0xc5,
     0x15, 0x55, 0x95, 0xd5, 0x25, 0x65, 0xa5, 0xe5, 0x35, 0x75, 0xb5, 0xf5,
     0x09, 0x49, 0x89, 0xc9, 0x19, 0x59, 0x99, 0xd9, 0x29, 0x69, 0xa9, 0xe9,
     0x39, 0x79, 0xb9, 0xf9, 0x0d, 0x4d, 0x8d, 0xcd, 0x1d, 0x5d, 0x9d, 0xdd,
     0x2d, 0x6d, 0xad, 0xed, 0x3d, 0x7d, 0xbd, 0xfd, 0x02, 0x42, 0x82, 0xc2,
     0x12, 0x52, 0x92, 0xd2, 0x22, 0x62, 0xa2, 0xe2, 0x32, 0x72, 0xb2, 0xf2,
     0x06, 0x46, 0x86, 0xc6, 0x16, 0x56, 0x96, 0xd6, 0x26, 0x66, 0xa6, 0xe6,
     0x36, 0x76, 0xb6, 0xf6, 0x0a, 0x4a, 0x8a, 0xca, 0x1a, 0x5a, 0x9a, 0xda,
     0x2a, 0x6a, 0xaa, 0xea, 0x3a, 0x7a, 0xba, 0xfa, 0x0e, 0x4e, 0x8e, 0xce,
     0x1e, 0x5e, 0x9e, 0xde, 0x2e, 0x6e, 0xae, 0xee, 0x3e, 0x7e, 0xbe, 0xfe,
     0x03, 0x43, 0x83, 0xc3, 0x13, 0x53, 0x93, 0xd3, 0x23, 0x63, 0xa3, 0xe3,
     0x33, 0x73, 0xb3, 0xf3, 0x07, 0x47, 0x87, 0xc7, 0x17, 0x57, 0x97, 0xd7,
     0x27, 0x67, 0xa7, 0xe7, 0x37, 0x77, 0xb7, 0xf7, 0x0b, 0x4b, 0x8b, 0xcb,
     0x1b, 0x5b, 0x9b, 0xdb, 0x2b, 0x6b, 0xab, 0xeb, 0x3b, 0x7b, 0xbb, 0xfb,
     0x0f, 0x4f, 0x8f, 0xcf, 0x1f, 0x5f, 0x9f, 0xdf, 0x2f, 0x6f, 0xaf, 0xef,
     0x3f, 0x7f, 0xbf, 0xff},

    // WORD8 bit_rev_512[64]=
    {0x00, 0x10, 0x20, 0x30, 0x04, 0x14, 0x24, 0x34, 0x08, 0x18, 0x28,
     0x38, 0x0c, 0x1c, 0x2c, 0x3c, 0x01, 0x11, 0x21, 0x31, 0x05, 0x15,
     0x25, 0x35, 0x09, 0x19, 0x29, 0x39, 0x0d, 0x1d, 0x2d, 0x3d, 0x02,
     0x12, 0x22, 0x32, 0x06, 0x16, 0x26, 0x36, 0x0a, 0x1a, 0x2a, 0x3a,
     0x0e, 0x1e, 0x2e, 0x3e, 0x03, 0x13, 0x23, 0x33, 0x07, 0x17, 0x27,
     0x37, 0x0b, 0x1b, 0x2b, 0x3b, 0x0f, 0x1f, 0x2f, 0x3f},

    // WORD8 bit_rev_128[16]=
    {0x00, 0x04, 0x08, 0x0c, 0x01, 0x05, 0x09, 0x0d, 0x02, 0x06, 0x0a, 0x0e,
     0x03, 0x07, 0x0b, 0x0f},

    // WORD8 bit_rev_32[4]=
    {
        0x00, 0x01, 0x02, 0x03,
    },
    // const WORD32 w_256[504] =
    {
        0x00000000, 0x7fffffff, 0x00000000, 0x7fffffff, 0x00000000, 0x7fffffff,
        0x03242abf, 0x7ff62182, 0x0647d97c, 0x7fd8878e, 0x096a9049, 0x7fa736b4,
        0x0647d97c, 0x7fd8878e, 0x0c8bd35e, 0x7f62368f, 0x12c8106f, 0x7e9d55fc,
        0x096a9049, 0x7fa736b4, 0x12c8106f, 0x7e9d55fc, 0x1c0b826b, 0x7ce3ceb2,
        0x0c8bd35e, 0x7f62368f, 0x18f8b83c, 0x7d8a5f40, 0x25280c5e, 0x7a7d055b,
        0x0fab272b, 0x7f0991c4, 0x1f19f97b, 0x7c29fbee, 0x2e110a62, 0x776c4edb,
        0x12c8106f, 0x7e9d55fc, 0x25280c5e, 0x7a7d055b, 0x36ba2014, 0x73b5ebd1,
        0x15e21445, 0x7e1d93ea, 0x2b1f34eb, 0x78848414, 0x3f1749b8, 0x6f5f02b2,
        0x18f8b83c, 0x7d8a5f40, 0x30fbc54d, 0x7641af3d, 0x471cece7, 0x6a6d98a4,
        0x1c0b826b, 0x7ce3ceb2, 0x36ba2014, 0x73b5ebd1, 0x4ebfe8a5, 0x64e88926,
        0x1f19f97b, 0x7c29fbee, 0x3c56ba70, 0x70e2cbc6, 0x55f5a4d2, 0x5ed77c8a,
        0x2223a4c5, 0x7b5d039e, 0x41ce1e65, 0x6dca0d14, 0x5cb420e0, 0x5842dd54,
        0x25280c5e, 0x7a7d055b, 0x471cece7, 0x6a6d98a4, 0x62f201ac, 0x5133cc94,
        0x2826b928, 0x798a23b1, 0x4c3fdff4, 0x66cf8120, 0x68a69e81, 0x49b41533,
        0x2b1f34eb, 0x78848414, 0x5133cc94, 0x62f201ac, 0x6dca0d15, 0x41ce1e64,
        0x2e110a62, 0x776c4edb, 0x55f5a4d2, 0x5ed77c8a, 0x72552c85, 0x398cdd32,
        0x30fbc54d, 0x7641af3d, 0x5a82799a, 0x5a82799a, 0x7641af3d, 0x30fbc54d,
        0x33def287, 0x7504d345, 0x5ed77c8a, 0x55f5a4d2, 0x798a23b1, 0x2826b928,
        0x36ba2014, 0x73b5ebd1, 0x62f201ac, 0x5133cc94, 0x7c29fbee, 0x1f19f97b,
        0x398cdd33, 0x72552c85, 0x66cf8120, 0x4c3fdff3, 0x7e1d93ea, 0x15e21444,
        0x3c56ba70, 0x70e2cbc6, 0x6a6d98a4, 0x471cece6, 0x7f62368f, 0x0c8bd35e,
        0x3f1749b8, 0x6f5f02b2, 0x6dca0d15, 0x41ce1e64, 0x7ff62182, 0x03242abf,
        0x41ce1e65, 0x6dca0d14, 0x70e2cbc6, 0x3c56ba70, 0x7fd8878e, 0xf9b82684,
        0x447acd51, 0x6c242960, 0x73b5ebd1, 0x36ba2013, 0x7f0991c3, 0xf054d8d5,
        0x471cece7, 0x6a6d98a4, 0x7641af3d, 0x30fbc54d, 0x7d8a5f40, 0xe70747c4,
        0x49b41534, 0x68a69e81, 0x78848414, 0x2b1f34eb, 0x7b5d039d, 0xdddc5b3b,
        0x4c3fdff4, 0x66cf8120, 0x7a7d055b, 0x25280c5d, 0x78848414, 0xd4e0cb15,
        0x4ebfe8a5, 0x64e88926, 0x7c29fbee, 0x1f19f97b, 0x7504d345, 0xcc210d79,
        0x5133cc94, 0x62f201ac, 0x7d8a5f40, 0x18f8b83c, 0x70e2cbc6, 0xc3a94590,
        0x539b2af0, 0x60ec3830, 0x7e9d55fc, 0x12c8106e, 0x6c242960, 0xbb8532b0,
        0x55f5a4d2, 0x5ed77c8a, 0x7f62368f, 0x0c8bd35e, 0x66cf811f, 0xb3c0200d,
        0x5842dd55, 0x5cb420e0, 0x7fd8878e, 0x0647d97c, 0x60ec3830, 0xac64d511,
        0x5a82799a, 0x5a82799a, 0x7fffffff, 0x00000000, 0x5a82799a, 0xa57d8667,
        0x5cb420e0, 0x5842dd54, 0x7fd8878e, 0xf9b82684, 0x539b2aef, 0x9f13c7d1,
        0x5ed77c8a, 0x55f5a4d2, 0x7f62368f, 0xf3742ca2, 0x4c3fdff3, 0x99307ee1,
        0x60ec3830, 0x539b2aef, 0x7e9d55fc, 0xed37ef92, 0x447acd50, 0x93dbd6a0,
        0x62f201ac, 0x5133cc94, 0x7d8a5f40, 0xe70747c4, 0x3c56ba6f, 0x8f1d343b,
        0x64e88926, 0x4ebfe8a4, 0x7c29fbee, 0xe0e60685, 0x33def287, 0x8afb2cbb,
        0x66cf8120, 0x4c3fdff3, 0x7a7d055b, 0xdad7f3a3, 0x2b1f34eb, 0x877b7bed,
        0x68a69e81, 0x49b41533, 0x78848414, 0xd4e0cb15, 0x2223a4c5, 0x84a2fc63,
        0x6a6d98a4, 0x471cece6, 0x7641af3d, 0xcf043ab3, 0x18f8b83c, 0x8275a0c1,
        0x6c242960, 0x447acd50, 0x73b5ebd1, 0xc945dfed, 0x0fab272a, 0x80f66e3d,
        0x6dca0d15, 0x41ce1e64, 0x70e2cbc6, 0xc3a94590, 0x0647d97b, 0x80277873,
        0x6f5f02b2, 0x3f1749b8, 0x6dca0d14, 0xbe31e19c, 0xfcdbd541, 0x8009de7f,
        0x70e2cbc6, 0x3c56ba70, 0x6a6d98a4, 0xb8e3131a, 0xf3742ca2, 0x809dc972,
        0x72552c85, 0x398cdd32, 0x66cf811f, 0xb3c0200d, 0xea1debbc, 0x81e26c17,
        0x73b5ebd1, 0x36ba2013, 0x62f201ac, 0xaecc336c, 0xe0e60685, 0x83d60413,
        0x7504d345, 0x33def287, 0x5ed77c89, 0xaa0a5b2e, 0xd7d946d8, 0x8675dc50,
        0x7641af3d, 0x30fbc54d, 0x5a82799a, 0xa57d8667, 0xcf043ab3, 0x89be50c5,
        0x776c4edb, 0x2e110a62, 0x55f5a4d2, 0xa1288377, 0xc67322ce, 0x8daad37d,
        0x78848414, 0x2b1f34eb, 0x5133cc94, 0x9d0dfe54, 0xbe31e19c, 0x9235f2ed,
        0x798a23b1, 0x2826b928, 0x4c3fdff3, 0x99307ee1, 0xb64beacd, 0x97596181,
        0x7a7d055b, 0x25280c5d, 0x471cece6, 0x9592675c, 0xaecc336c, 0x9d0dfe55,
        0x7b5d039e, 0x2223a4c5, 0x41ce1e64, 0x9235f2ec, 0xa7bd22ac, 0xa34bdf22,
        0x7c29fbee, 0x1f19f97b, 0x3c56ba6f, 0x8f1d343b, 0xa1288377, 0xaa0a5b30,
        0x7ce3ceb2, 0x1c0b826a, 0x36ba2013, 0x8c4a1430, 0x9b1776da, 0xb140175d,
        0x7d8a5f40, 0x18f8b83c, 0x30fbc54d, 0x89be50c4, 0x9592675c, 0xb8e3131b,
        0x7e1d93ea, 0x15e21444, 0x2b1f34eb, 0x877b7bed, 0x90a0fd4f, 0xc0e8b64a,
        0x7e9d55fc, 0x12c8106e, 0x25280c5d, 0x8582faa6, 0x8c4a1430, 0xc945dfee,
        0x7f0991c4, 0x0fab272b, 0x1f19f97a, 0x83d60413, 0x8893b125, 0xd1eef5a0,
        0x7f62368f, 0x0c8bd35e, 0x18f8b83c, 0x8275a0c1, 0x8582faa6, 0xdad7f3a5,
        0x7fa736b4, 0x096a9049, 0x12c8106e, 0x8162aa05, 0x831c314f, 0xe3f47d98,
        0x7fd8878e, 0x0647d97c, 0x0c8bd35d, 0x809dc972, 0x8162aa05, 0xed37ef94,
        0x7ff62182, 0x03242abf, 0x0647d97b, 0x80277873, 0x8058c94d, 0xf6956fb9,
        0x00000000, 0x7fffffff, 0x00000000, 0x7fffffff, 0x00000000, 0x7fffffff,
        0x0c8bd35e, 0x7f62368f, 0x18f8b83c, 0x7d8a5f40, 0x25280c5e, 0x7a7d055b,
        0x18f8b83c, 0x7d8a5f40, 0x30fbc54d, 0x7641af3d, 0x471cece7, 0x6a6d98a4,
        0x25280c5e, 0x7a7d055b, 0x471cece7, 0x6a6d98a4, 0x62f201ac, 0x5133cc94,
        0x30fbc54d, 0x7641af3d, 0x5a82799a, 0x5a82799a, 0x7641af3d, 0x30fbc54d,
        0x3c56ba70, 0x70e2cbc6, 0x6a6d98a4, 0x471cece6, 0x7f62368f, 0x0c8bd35e,
        0x471cece7, 0x6a6d98a4, 0x7641af3d, 0x30fbc54d, 0x7d8a5f40, 0xe70747c4,
        0x5133cc94, 0x62f201ac, 0x7d8a5f40, 0x18f8b83c, 0x70e2cbc6, 0xc3a94590,
        0x5a82799a, 0x5a82799a, 0x7fffffff, 0x00000000, 0x5a82799a, 0xa57d8667,
        0x62f201ac, 0x5133cc94, 0x7d8a5f40, 0xe70747c4, 0x3c56ba6f, 0x8f1d343b,
        0x6a6d98a4, 0x471cece6, 0x7641af3d, 0xcf043ab3, 0x18f8b83c, 0x8275a0c1,
        0x70e2cbc6, 0x3c56ba70, 0x6a6d98a4, 0xb8e3131a, 0xf3742ca2, 0x809dc972,
        0x7641af3d, 0x30fbc54d, 0x5a82799a, 0xa57d8667, 0xcf043ab3, 0x89be50c5,
        0x7a7d055b, 0x25280c5d, 0x471cece6, 0x9592675c, 0xaecc336c, 0x9d0dfe55,
        0x7d8a5f40, 0x18f8b83c, 0x30fbc54d, 0x89be50c4, 0x9592675c, 0xb8e3131b,
        0x7f62368f, 0x0c8bd35e, 0x18f8b83c, 0x8275a0c1, 0x8582faa6, 0xdad7f3a5,
        0x00000000, 0x7fffffff, 0x00000000, 0x7fffffff, 0x00000000, 0x7fffffff,
        0x30fbc54d, 0x7641af3d, 0x5a82799a, 0x5a82799a, 0x7641af3d, 0x30fbc54d,
        0x5a82799a, 0x5a82799a, 0x7fffffff, 0x00000000, 0x5a82799a, 0xa57d8667,
        0x7641af3d, 0x30fbc54d, 0x5a82799a, 0xa57d8667, 0xcf043ab3, 0x89be50c5,
    },

    // WORD32 low_overlap_win[512];
    {
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        0,          0,          0,          0,          0,          0,
        6588355,    19764075,   32936819,   46104602,   59265442,   72417357,
        85558366,   98686490,   111799753,  124896178,  137973795,  151030634,
        164064728,  177074114,  190056834,  203010932,  215934457,  228825463,
        241682009,  254502159,  267283981,  280025551,  292724951,  305380267,
        317989594,  330551034,  343062693,  355522688,  367929143,  380280189,
        392573967,  404808624,  416982318,  429093217,  441139495,  453119340,
        465030947,  476872521,  488642280,  500338452,  511959274,  523502998,
        534967883,  546352205,  557654248,  568872310,  580004702,  591049747,
        602005783,  612871159,  623644238,  634323399,  644907034,  655393547,
        665781361,  676068911,  686254647,  696337035,  706314558,  716185713,
        725949012,  735602987,  745146182,  754577161,  763894503,  773096806,
        782182683,  791150766,  799999705,  808728167,  817334837,  825818420,
        834177638,  842411231,  850517961,  858496605,  866345963,  874064853,
        881652112,  889106597,  896427186,  903612776,  910662286,  917574653,
        924348836,  930983817,  937478594,  943832191,  950043650,  956112036,
        962036435,  967815955,  973449725,  978936897,  984276645,  989468165,
        994510674,  999403414,  1004145647, 1008736660, 1013175760, 1017462280,
        1021595574, 1025575020, 1029400017, 1033069991, 1036584388, 1039942680,
        1043144359, 1046188946, 1049075979, 1051805026, 1054375675, 1056787539,
        1059040255, 1061133483, 1063066908, 1064840239, 1066453209, 1067905576,
        1069197119, 1070327646, 1071296985, 1072104991, 1072751541, 1073236539,
        1073559912, 1073721611, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
        1073741823, 1073741823,
    },
    // WORD32 window_sine_512[512];
    {1647098,    4941280,    8235415,    11529473,   14823423,   18117232,
     21410872,   24704309,   27997515,   31290456,   34583103,   37875425,
     41167390,   44458968,   47750127,   51040837,   54331066,   57620784,
     60909960,   64198562,   67486560,   70773923,   74060620,   77346619,
     80631891,   83916404,   87200127,   90483029,   93765079,   97046247,
     100326501,  103605811,  106884146,  110161475,  113437767,  116712991,
     119987117,  123260113,  126531950,  129802595,  133072018,  136340189,
     139607077,  142872650,  146136879,  149399733,  152661180,  155921190,
     159179733,  162436777,  165692293,  168946249,  172198614,  175449359,
     178698453,  181945864,  185191563,  188435519,  191677702,  194918080,
     198156623,  201393302,  204628084,  207860941,  211091841,  214320755,
     217547651,  220772499,  223995270,  227215932,  230434456,  233650810,
     236864966,  240076892,  243286558,  246493934,  249698990,  252901696,
     256102022,  259299937,  262495411,  265688415,  268878918,  272066890,
     275252301,  278435122,  281615322,  284792871,  287967740,  291139898,
     294309315,  297475963,  300639811,  303800829,  306958987,  310114256,
     313266607,  316416009,  319562432,  322705848,  325846226,  328983537,
     332117752,  335248841,  338376774,  341501522,  344623056,  347741346,
     350856364,  353968078,  357076461,  360181484,  363283116,  366381328,
     369476092,  372567379,  375655158,  378739402,  381820081,  384897167,
     387970629,  391040440,  394106570,  397168990,  400227673,  403282588,
     406333707,  409381002,  412424443,  415464003,  418499652,  421531362,
     424559105,  427582851,  430602573,  433618242,  436629829,  439637307,
     442640646,  445639819,  448634798,  451625554,  454612059,  457594286,
     460572205,  463545789,  466515010,  469479840,  472440251,  475396215,
     478347705,  481294692,  484237149,  487175049,  490108362,  493037063,
     495961123,  498880515,  501795211,  504705185,  507610407,  510510852,
     513406492,  516297299,  519183247,  522064308,  524940455,  527811662,
     530677900,  533539143,  536395365,  539246537,  542092635,  544933629,
     547769495,  550600205,  553425732,  556246050,  559061133,  561870953,
     564675486,  567474703,  570268578,  573057087,  575840201,  578617895,
     581390144,  584156920,  586918197,  589673950,  592424154,  595168781,
     597907806,  600641203,  603368947,  606091011,  608807371,  611518001,
     614222874,  616921967,  619615253,  622302706,  624984303,  627660016,
     630329822,  632993695,  635651611,  638303543,  640949467,  643589358,
     646223192,  648850943,  651472587,  654088098,  656697454,  659300628,
     661897597,  664488336,  667072820,  669651025,  672222928,  674788503,
     677347727,  679900576,  682447025,  684987050,  687520628,  690047735,
     692568347,  695082441,  697589992,  700090976,  702585372,  705073154,
     707554300,  710028786,  712496590,  714957686,  717412054,  719859669,
     722300508,  724734549,  727161768,  729582143,  731995650,  734402268,
     736801974,  739194744,  741580557,  743959390,  746331220,  748696026,
     751053784,  753404474,  755748072,  758084557,  760413906,  762736098,
     765051111,  767358923,  769659512,  771952857,  774238936,  776517727,
     778789210,  781053362,  783310163,  785559591,  787801625,  790036244,
     792263427,  794483152,  796695400,  798900149,  801097378,  803287068,
     805469196,  807643743,  809810688,  811970011,  814121691,  816265708,
     818402043,  820530674,  822651582,  824764747,  826870150,  828967769,
     831057585,  833139580,  835213733,  837280024,  839338434,  841388945,
     843431535,  845466188,  847492882,  849511599,  851522321,  853525027,
     855519700,  857506321,  859484870,  861455329,  863417680,  865371905,
     867317984,  869255899,  871185633,  873107167,  875020482,  876925562,
     878822388,  880710942,  882591207,  884463164,  886326796,  888182086,
     890029016,  891867568,  893697726,  895519472,  897332790,  899137661,
     900934069,  902721997,  904501429,  906272346,  908034734,  909788575,
     911533853,  913270551,  914998653,  916718143,  918429004,  920131220,
     921824776,  923509655,  925185842,  926853321,  928512076,  930162091,
     931803351,  933435841,  935059545,  936674448,  938280534,  939877789,
     941466198,  943045745,  944616416,  946178195,  947731069,  949275023,
     950810041,  952336110,  953853216,  955361343,  956860478,  958350607,
     959831716,  961303790,  962766816,  964220780,  965665668,  967101468,
     968528164,  969945745,  971354195,  972753503,  974143656,  975524639,
     976896440,  978259046,  979612445,  980956623,  982291568,  983617267,
     984933708,  986240878,  987538766,  988827358,  990106643,  991376609,
     992637244,  993888536,  995130473,  996363043,  997586235,  998800037,
     1000004439, 1001199428, 1002384993, 1003561124, 1004727808, 1005885036,
     1007032796, 1008171077, 1009299869, 1010419161, 1011528943, 1012629204,
     1013719933, 1014801121, 1015872757, 1016934832, 1017987335, 1019030256,
     1020063585, 1021087314, 1022101431, 1023105928, 1024100795, 1025086023,
     1026061603, 1027027525, 1027983780, 1028930359, 1029867253, 1030794455,
     1031711953, 1032619741, 1033517810, 1034406151, 1035284755, 1036153615,
     1037012722, 1037862069, 1038701647, 1039531448, 1040351464, 1041161689,
     1041962114, 1042752731, 1043533533, 1044304514, 1045065665, 1045816979,
     1046558450, 1047290070, 1048011833, 1048723731, 1049425759, 1050117909,
     1050800175, 1051472550, 1052135028, 1052787603, 1053430269, 1054063020,
     1054685850, 1055298752, 1055901722, 1056494753, 1057077839, 1057650977,
     1058214159, 1058767381, 1059310637, 1059843923, 1060367233, 1060880562,
     1061383906, 1061877260, 1062360620, 1062833979, 1063297335, 1063750683,
     1064194019, 1064627337, 1065050636, 1065463909, 1065867154, 1066260366,
     1066643543, 1067016680, 1067379774, 1067732821, 1068075818, 1068408762,
     1068731650, 1069044478, 1069347245, 1069639946, 1069922579, 1070195142,
     1070457631, 1070710046, 1070952382, 1071184638, 1071406811, 1071618900,
     1071820903, 1072012817, 1072194641, 1072366373, 1072528012, 1072679556,
     1072821003, 1072952352, 1073073602, 1073184752, 1073285801, 1073376748,
     1073457591, 1073528331, 1073588967, 1073639497, 1073679922, 1073710241,
     1073730454, 1073740560},
    // WORD32 cosine_array_1024[512];
    {
        2147483008, 2147432448, 1647099,    14823777,   2147301120, 2147088896,
        27999896,   41174960,   2146795776, 2146421888, 54348476,   67519944,
        2145967232, 2145431680, 80688872,   93854760,   2144815488, 2144118400,
        107017112,  120175440,  2143340672, 2142482304, 133329240,  146478032,
        2141543168, 2140523392, 159621296,  172758544,  2139423104, 2138242176,
        185889296,  199013056,  2136980864, 2135639040, 212129312,  225237600,
        2134216832, 2132714240, 238337392,  251428208,  2131131264, 2129468160,
        264509568,  277580960,  2127724928, 2125901568, 290641920,  303691904,
        2123998080, 2122014720, 316730496,  329757120,  2119951360, 2117808256,
        342771360,  355772672,  2115585408, 2113282944, 368760608,  381734656,
        2110900864, 2108439296, 394694336,  407639136,  2105898368, 2103278208,
        420568608,  433482240,  2100578816, 2097800320, 446379552,  459260064,
        2094942848, 2092006528, 472123296,  484968736,  2088991488, 2085897728,
        497795904,  510604352,  2082725376, 2079474688, 523393568,  536163072,
        2076145792, 2072738560, 548912384,  561641024,  2069253376, 2065690368,
        574348544,  587034432,  2062049536, 2058331008, 599698240,  612339456,
        2054535040, 2050661632, 624957632,  637552256,  2046711040, 2042683520,
        650122880,  662668992,  2038578944, 2034397696, 675190208,  687685952,
        2030139904, 2025805568, 700155840,  712599360,  2021394944, 2016908288,
        725016064,  737405504,  2012345728, 2007707392, 749767104,  762100544,
        2002993408, 1998204032, 774405248,  786680768,  1993339392, 1988399744,
        798926720,  811142592,  1983385216, 1978296064, 823327936,  835482240,
        1973132416, 1967894528, 847605120,  859696064,  1962582400, 1957196544,
        871754688,  883780416,  1951736832, 1946203776, 895772928,  907731712,
        1940597376, 1934918016, 919656256,  931546240,  1929165696, 1923340800,
        943401152,  955220544,  1917443456, 1911473920, 967003968,  978750976,
        1905432448, 1899319168, 990461120,  1002134016, 1893134464, 1886878464,
        1013769152, 1025366080, 1880551424, 1874153600, 1036924480, 1048443776,
        1867685120, 1861146496, 1059923648, 1071363584, 1854537600, 1847859072,
        1082763264, 1094122112, 1841110784, 1834293376, 1105439744, 1116715776,
        1827406720, 1820451328, 1127949696, 1139141248, 1813427456, 1806335232,
        1150289920, 1161395200, 1799175040, 1791947136, 1172456832, 1183474304,
        1784651776, 1777289216, 1194447232, 1205375104, 1769859712, 1762363520,
        1216257664, 1227094400, 1754801024, 1747172480, 1237884928, 1248628992,
        1739478144, 1731718400, 1259325824, 1269975424, 1723893376, 1716003456,
        1280577152, 1291130624, 1708048896, 1700030080, 1301635584, 1312091392,
        1691947136, 1683800704, 1322497920, 1332854656, 1675590656, 1667317632,
        1343161088, 1353417088, 1658981888, 1650583680, 1363622016, 1373775744,
        1642123264, 1633601024, 1383877632, 1393927424, 1625017216, 1616372352,
        1403924864, 1413869312, 1607666560, 1598900352, 1423760512, 1433598208,
        1590073856, 1581187456, 1443381888, 1453111296, 1572241536, 1563236480,
        1462785920, 1472405376, 1554172544, 1545050112, 1481969536, 1491477888,
        1535869440, 1526631040, 1500930048, 1510325760, 1517335040, 1507982080,
        1519664512, 1528946048, 1498572160, 1489105920, 1538170112, 1547336192,
        1479583616, 1470005632, 1556444032, 1565493376, 1460372352, 1450683904,
        1574483712, 1583414656, 1440941056, 1431143808, 1592286080, 1601097600,
        1421292672, 1411388032, 1609848832, 1618539392, 1401430400, 1391419904,
        1627169024, 1635737344, 1381356928, 1371242112, 1644244224, 1652689152,
        1361075584, 1350857728, 1661071744, 1669391872, 1340589184, 1330270080,
        1677649152, 1685843328, 1319900928, 1309481984, 1693973888, 1702040832,
        1299013760, 1288496768, 1710043648, 1717981952, 1277931136, 1267317376,
        1725855744, 1733664512, 1256656000, 1245947264, 1741408000, 1749085824,
        1235191680, 1224389504, 1756697984, 1764243840, 1213541248, 1202647296,
        1771723392, 1779136128, 1191708032, 1180723968, 1786481920, 1793760512,
        1169695488, 1158622848, 1800971520, 1808114816, 1147506688, 1136347264,
        1815189888, 1822196736, 1125145088, 1113900544, 1829134848, 1836004224,
        1102614144, 1091286144, 1842804480, 1849535232, 1079917056, 1068507264,
        1856196480, 1862787712, 1057057344, 1045567552, 1869308928, 1875759744,
        1034038400, 1022470400, 1882139904, 1888449152, 1010863808, 999219200,
        1894687360, 1900854272, 987536960,  975817536,  1906949632, 1912973056,
        964061376,  952268928,  1918924544, 1924803840, 940440640,  928576960,
        1930610688, 1936344704, 916678272,  904745088,  1942005888, 1947593984,
        892777856,  880777024,  1953108736, 1958549888, 868742976,  856676288,
        1963917440, 1969211008, 844577280,  832446528,  1974430336, 1979575424,
        820284416,  808091392,  1984645888, 1989641728, 795867968,  783614592,
        1994562688, 1999408512, 771331712,  759019776,  2004178944, 2008874112,
        746679232,  734310592,  2013493504, 2018037120, 721914368,  709490880,
        2022504832, 2026896256, 697040768,  684564352,  2031211520, 2035450240,
        672062144,  659534720,  2039612288, 2043697664, 646982400,  634405696,
        2047705984, 2051637248, 621805184,  609181184,  2055491328, 2059267840,
        596534336,  583864960,  2062967040, 2066588416, 571173632,  558460736,
        2070132096, 2073597696, 545726912,  532972480,  2076985344, 2080294784,
        520197984,  507403936,  2083525888, 2086678528, 494590752,  481758976,
        2089752576, 2092748032, 468909024,  456041440,  2095664640, 2098502400,
        443156704,  430255264,  2101261056, 2103940736, 417337632,  404404288,
        2106541056, 2109062144, 391455712,  378492384,  2111503872, 2113865984,
        365514816,  352523488,  2116148608, 2118351488, 339518912,  326501504,
        2120474752, 2122518016, 313471840,  300430368,  2124481408, 2126364928,
        287377600,  274313984,  2128168320, 2129891456, 261240048,  248156272,
        2131534592, 2133097344, 235063168,  221961200,  2134579840, 2135982080,
        208850896,  195732704,  2137303808, 2138545024, 182607152,  169474736,
        2139705728, 2140785920, 156335920,  143191232,  2141785472, 2142704384,
        130041152,  116886168,  2143542656, 2144300288, 103726792,  90563504,
        2144977152, 2145573120, 77396808,   64227204,   2146088448, 2146523008,
        51055176,   37881228,   2146876672, 2147149568, 24705852,   11529547,
        2147341568, 2147452672,
    },
    // const WORD32 low_overlap_win_480[480]
    {0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     0,          0,          0,          0,          0,          0,
     7027573,    21081516,   35131847,   49176158,   63212044,   77237098,
     91248918,   105245103,  119223254,  133180978,  147115881,  161025577,
     174907682,  188759818,  202579610,  216364692,  230112700,  243821280,
     257488083,  271110766,  284686996,  298214446,  311690798,  325113744,
     338480984,  351790226,  365039191,  378225608,  391347219,  404401774,
     417387037,  430300783,  443140798,  455904885,  468590854,  481196532,
     493719760,  506158392,  518510295,  530773355,  542945470,  555024554,
     567008537,  578895366,  590683004,  602369432,  613952647,  625430664,
     636801517,  648063257,  659213956,  670251701,  681174602,  691980787,
     702668405,  713235624,  723680634,  734001645,  744196888,  754264618,
     764203108,  774010655,  783685580,  793226225,  802630954,  811898156,
     821026244,  830013654,  838858844,  847560301,  856116533,  864526073,
     872787481,  880899342,  888860265,  896668886,  904323868,  911823899,
     919167693,  926353993,  933381566,  940249210,  946955747,  953500027,
     959880930,  966097363,  972148260,  978032584,  983749328,  989297511,
     994676183,  999884422,  1004921336, 1009786063, 1014477767, 1018995646,
     1023338926, 1027506861, 1031498739, 1035313874, 1038951614, 1042411335,
     1045692444, 1048794379, 1051716608, 1054458631, 1057019978, 1059400211,
     1061598920, 1063615730, 1065450295, 1067102300, 1068571463, 1069857532,
     1070960286, 1071879537, 1072615126, 1073166929, 1073534850, 1073718826,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
     1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823},
    //   WORD32 window_sine_480[480];
    {1756905,    5270696,    8784431,    12298072,   15811582,   19324922,
     22838055,   26350943,   29863549,   33375836,   36887765,   40399299,
     43910400,   47421031,   50931154,   54440732,   57949727,   61458101,
     64965817,   68472837,   71979124,   75484640,   78989348,   82493210,
     85996188,   89498246,   92999345,   96499448,   99998518,   103496516,
     106993407,  110489151,  113983713,  117477053,  120969136,  124459923,
     127949377,  131437461,  134924138,  138409369,  141893118,  145375348,
     148856021,  152335099,  155812547,  159288325,  162762398,  166234728,
     169705277,  173174009,  176640887,  180105873,  183568930,  187030021,
     190489109,  193946157,  197401129,  200853986,  204304692,  207753211,
     211199504,  214643536,  218085269,  221524666,  224961691,  228396307,
     231828477,  235258165,  238685333,  242109944,  245531963,  248951353,
     252368076,  255782097,  259193379,  262601885,  266007578,  269410423,
     272810383,  276207421,  279601501,  282992587,  286380642,  289765631,
     293147516,  296526261,  299901832,  303274190,  306643301,  310009128,
     313371635,  316730785,  320086544,  323438875,  326787743,  330133110,
     333474943,  336813204,  340147858,  343478869,  346806202,  350129821,
     353449690,  356765774,  360078037,  363386445,  366690960,  369991549,
     373288175,  376580804,  379869400,  383153928,  386434352,  389710639,
     392982751,  396250655,  399514316,  402773698,  406028767,  409279487,
     412525825,  415767744,  419005212,  422238191,  425466650,  428690551,
     431909862,  435124547,  438334573,  441539904,  444740507,  447936347,
     451127389,  454313601,  457494947,  460671394,  463842908,  467009454,
     470170999,  473327508,  476478949,  479625287,  482766489,  485902520,
     489033348,  492158939,  495279259,  498394275,  501503954,  504608262,
     507707166,  510800633,  513888630,  516971123,  520048080,  523119468,
     526185253,  529245403,  532299886,  535348668,  538391717,  541429001,
     544460486,  547486140,  550505931,  553519827,  556527795,  559529802,
     562525818,  565515810,  568499745,  571477593,  574449320,  577414895,
     580374287,  583327463,  586274392,  589215043,  592149384,  595077383,
     597999010,  600914232,  603823019,  606725340,  609621163,  612510457,
     615393193,  618269337,  621138861,  624001732,  626857921,  629707397,
     632550130,  635386088,  638215242,  641037560,  643853014,  646661573,
     649463207,  652257885,  655045578,  657826256,  660599890,  663366449,
     666125903,  668878224,  671623382,  674361348,  677092091,  679815584,
     682531796,  685240699,  687942263,  690636460,  693323261,  696002637,
     698674559,  701338999,  703995929,  706645319,  709287141,  711921368,
     714547970,  717166920,  719778190,  722381752,  724977578,  727565639,
     730145909,  732718360,  735282964,  737839694,  740388522,  742929421,
     745462364,  747987323,  750504272,  753013184,  755514032,  758006789,
     760491428,  762967923,  765436247,  767896374,  770348277,  772791930,
     775227308,  777654383,  780073131,  782483524,  784885538,  787279146,
     789664323,  792041044,  794409282,  796769013,  799120211,  801462851,
     803796908,  806122357,  808439173,  810747332,  813046807,  815337576,
     817619614,  819892895,  822157396,  824413092,  826659959,  828897974,
     831127111,  833347348,  835558661,  837761025,  839954418,  842138815,
     844314194,  846480531,  848637802,  850785986,  852925058,  855054996,
     857175777,  859287379,  861389778,  863482952,  865566879,  867641537,
     869706903,  871762955,  873809671,  875847029,  877875008,  879893585,
     881902740,  883902450,  885892694,  887873451,  889844699,  891806418,
     893758587,  895701184,  897634188,  899557580,  901471339,  903375443,
     905269873,  907154608,  909029628,  910894913,  912750443,  914596199,
     916432160,  918258306,  920074619,  921881079,  923677666,  925464361,
     927241145,  929007999,  930764904,  932511841,  934248792,  935975738,
     937692661,  939399541,  941096361,  942783103,  944459749,  946126280,
     947782678,  949428927,  951065008,  952690904,  954306597,  955912071,
     957507308,  959092290,  960667001,  962231424,  963785543,  965329340,
     966862800,  968385905,  969898639,  971400986,  972892931,  974374457,
     975845548,  977306188,  978756362,  980196055,  981625250,  983043933,
     984452089,  985849701,  987236756,  988613239,  989979134,  991334427,
     992679104,  994013151,  995336552,  996649294,  997951362,  999242743,
     1000523424, 1001793389, 1003052626, 1004301121, 1005538861, 1006765832,
     1007982022, 1009187417, 1010382005, 1011565772, 1012738706, 1013900794,
     1015052024, 1016192384, 1017321862, 1018440444, 1019548120, 1020644877,
     1021730705, 1022805590, 1023869522, 1024922488, 1025964479, 1026995483,
     1028015488, 1029024484, 1030022460, 1031009406, 1031985310, 1032950162,
     1033903952, 1034846670, 1035778306, 1036698849, 1037608290, 1038506619,
     1039393827, 1040269903, 1041134839, 1041988625, 1042831253, 1043662712,
     1044482995, 1045292092, 1046089995, 1046876695, 1047652184, 1048416454,
     1049169495, 1049911301, 1050641864, 1051361174, 1052069226, 1052766010,
     1053451521, 1054125750, 1054788690, 1055440334, 1056080675, 1056709706,
     1057327421, 1057933812, 1058528874, 1059112600, 1059684984, 1060246020,
     1060795701, 1061334021, 1061860976, 1062376559, 1062880765, 1063373588,
     1063855024, 1064325066, 1064783710, 1065230952, 1065666785, 1066091206,
     1066504210, 1066905793, 1067295950, 1067674677, 1068041971, 1068397826,
     1068742240, 1069075208, 1069396727, 1069706794, 1070005405, 1070292558,
     1070568248, 1070832474, 1071085231, 1071326518, 1071556333, 1071774671,
     1071981532, 1072176913, 1072360812, 1072533226, 1072694155, 1072843595,
     1072981547, 1073108008, 1073222976, 1073326452, 1073418433, 1073498918,
     1073567907, 1073625399, 1073671393, 1073705890, 1073728887, 1073740386},
    // UWORD8 re_arr_tab_16[240];
    {

        0,   15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210,
        225, 16, 31, 46, 61, 76, 91, 106, 121, 136, 151, 166, 181, 196, 211,
        226, 1,  32, 47, 62, 77, 92, 107, 122, 137, 152, 167, 182, 197, 212,
        227, 2,  17, 48, 63, 78, 93, 108, 123, 138, 153, 168, 183, 198, 213,
        228, 3,  18, 33, 64, 79, 94, 109, 124, 139, 154, 169, 184, 199, 214,
        229, 4,  19, 34, 49, 80, 95, 110, 125, 140, 155, 170, 185, 200, 215,
        230, 5,  20, 35, 50, 65, 96, 111, 126, 141, 156, 171, 186, 201, 216,
        231, 6,  21, 36, 51, 66, 81, 112, 127, 142, 157, 172, 187, 202, 217,
        232, 7,  22, 37, 52, 67, 82, 97,  128, 143, 158, 173, 188, 203, 218,
        233, 8,  23, 38, 53, 68, 83, 98,  113, 144, 159, 174, 189, 204, 219,
        234, 9,  24, 39, 54, 69, 84, 99,  114, 129, 160, 175, 190, 205, 220,
        235, 10, 25, 40, 55, 70, 85, 100, 115, 130, 145, 176, 191, 206, 221,
        236, 11, 26, 41, 56, 71, 86, 101, 116, 131, 146, 161, 192, 207, 222,
        237, 12, 27, 42, 57, 72, 87, 102, 117, 132, 147, 162, 177, 208, 223,
        238, 13, 28, 43, 58, 73, 88, 103, 118, 133, 148, 163, 178, 193, 224,
        239, 14, 29, 44, 59, 74, 89, 104, 119, 134, 149, 164, 179, 194, 209},
    // UWORD8 re_arr_tab_sml_240[MDCT_LEN >> 1] =
    {0,   160, 80,  96,  16,  176, 192, 112, 32,  48,  208, 128, 144, 64,  224,
     225, 145, 65,  81,  1,   161, 177, 97,  17,  33,  193, 113, 129, 49,  209,
     210, 130, 50,  66,  226, 146, 162, 82,  2,   18,  178, 98,  114, 34,  194,
     195, 115, 35,  51,  211, 131, 147, 67,  227, 3,   163, 83,  99,  19,  179,
     180, 100, 20,  36,  196, 116, 132, 52,  212, 228, 148, 68,  84,  4,   164,
     165, 85,  5,   21,  181, 101, 117, 37,  197, 213, 133, 53,  69,  229, 149,
     150, 70,  230, 6,   166, 86,  102, 22,  182, 198, 118, 38,  54,  214, 134,
     135, 55,  215, 231, 151, 71,  87,  7,   167, 183, 103, 23,  39,  199, 119,
     120, 40,  200, 216, 136, 56,  72,  232, 152, 168, 88,  8,   24,  184, 104,
     105, 25,  185, 201, 121, 41,  57,  217, 137, 153, 73,  233, 9,   169, 89,
     90,  10,  170, 186, 106, 26,  42,  202, 122, 138, 58,  218, 234, 154, 74,
     75,  235, 155, 171, 91,  11,  27,  187, 107, 123, 43,  203, 219, 139, 59,
     60,  220, 140, 156, 76,  236, 12,  172, 92,  108, 28,  188, 204, 124, 44,
     45,  205, 125, 141, 61,  221, 237, 157, 77,  93,  13,  173, 189, 109, 29,
     30,  190, 110, 126, 46,  206, 222, 142, 62,  78,  238, 158, 174, 94,  14,
     15,  175, 95,  111, 31,  191, 207, 127, 47,  63,  223, 143, 159, 79,  239},

    // WORD32 cosine_array_960[480] =
    {
        2147482880, 2147425408, 1756906,    15812012,   2147275904, 2147034496,
        29866440,   43919588,   2146701056, 2146275712, 57970856,   72019640,
        2145758336, 2145149056, 86065336,   100107352,  2144447872, 2143654912,
        114145072,  128177912,  2142770048, 2141793536, 142205248,  156226512,
        2140725120, 2139565056, 170241056,  184248336,  2138313344, 2136969984,
        198247712,  212238592,  2135535104, 2134008832, 226220384,  240192480,
        2132391040, 2130681984, 254154288,  268105216,  2128881536, 2126990080,
        282044640,  295972000,  2125007360, 2122933632, 309886688,  323788096,
        2120769024, 2118513536, 337675616,  351548704,  2116167296, 2113730432,
        365406720,  379249056,  2111202944, 2108585088, 393075168,  406884448,
        2105876864, 2103078528, 420676288,  434450112,  2100189952, 2097211520,
        448205344,  461941344,  2094143232, 2090985216, 475657568,  489353408,
        2087737600, 2084400640, 503028320,  516681664,  2080974336, 2077458944,
        530312864,  543921344,  2073854464, 2070161280, 557506560,  571067840,
        2066379264, 2062508800, 584604672,  598116480,  2058550016, 2054503040,
        611602688,  625062656,  2050368000, 2046145152, 638495872,  651901696,
        2041834752, 2037436800, 665279680,  678629120,  2032951552, 2028379264,
        691949440,  705240192,  2023720064, 2018974208, 718500672,  731730432,
        2014141824, 2009223168, 744928832,  758095296,  2004218368, 1999127808,
        771229312,  784330240,  1993951616, 1988690048, 797397632,  810430848,
        1983343232, 1977911424, 823429312,  836392576,  1972394880, 1966793856,
        849319936,  862210944,  1961108608, 1955339392, 875065024,  887881600,
        1949486464, 1943549824, 900660160,  913400192,  1937530112, 1931427328,
        926100992,  938762176,  1925241856, 1918973824, 951383168,  963963392,
        1912623616, 1906191616, 976502272,  988999360,  1899677824, 1893082624,
        1001454080, 1013865920, 1886406400, 1879649408, 1026234304, 1038558720,
        1872811776, 1865894016, 1050838720, 1063073600, 1858896256, 1851819008,
        1075262976, 1087406336, 1844662272, 1837426560, 1099503104, 1111552768,
        1830112256, 1822719360, 1123554816, 1135508736, 1815248512, 1807699840,
        1147414016, 1159270016, 1800073856, 1792370688, 1171076480, 1182832768,
        1784590720, 1776734336, 1194538496, 1206192896, 1768801792, 1760793472,
        1217795712, 1229346304, 1752709760, 1744551040, 1240844288, 1252289024,
        1736317440, 1728009600, 1263680256, 1275017216, 1719627648, 1711172096,
        1286299648, 1297526912, 1702643200, 1694041344, 1308698624, 1319814272,
        1685367040, 1676620416, 1330873472, 1341875584, 1667801984, 1658912128,
        1352820224, 1363706880, 1649951232, 1640919680, 1374535168, 1385304576,
        1631817728, 1622646016, 1396014592, 1406664832, 1613404672, 1604094336,
        1417254784, 1427784064, 1594715136, 1585267712, 1438252160, 1448658688,
        1575752448, 1566169600, 1459003136, 1469285120, 1556519680, 1546803072,
        1479504128, 1489659776, 1537020160, 1527171456, 1499751552, 1509779200,
        1517257344, 1507278336, 1519742080, 1529639936, 1497234560, 1487126784,
        1539472128, 1549238528, 1476955264, 1466720512, 1558938496, 1568571648,
        1456422784, 1446062848, 1578137728, 1587636096, 1435640832, 1425157376,
        1597066496, 1606428416, 1414612992, 1404007808, 1615721600, 1624945536,
        1393342592, 1382617728, 1634099840, 1643184256, 1371833472, 1360990592,
        1652198144, 1661141376, 1350089344, 1339130368, 1670013440, 1678813824,
        1328113920, 1317040640, 1687542400, 1696198656, 1305910912, 1294725248,
        1704782336, 1713292928, 1283484032, 1272188032, 1721730176, 1730093568,
        1260837376, 1249432832, 1738382848, 1746597760, 1237974656, 1226463488,
        1754737792, 1762802688, 1214899712, 1203283968, 1770792064, 1778705536,
        1191616768, 1179898368, 1786542976, 1794303744, 1168129536, 1156310656,
        1801987584, 1809594368, 1144442112, 1132524672, 1817123584, 1824574976,
        1120558720, 1108544640, 1831948160, 1839243008, 1096483200, 1084374784,
        1846458880, 1853595776, 1072219904, 1060019072, 1860653312, 1867630976,
        1047772800, 1035481728, 1874528768, 1881346176, 1023146240, 1010766912,
        1888083072, 1894739072, 998344320,  985878976,  1901313920, 1907807232,
        973371392,  960822080,  1914219008, 1920548608, 948231616,  935600576,
        1926796032, 1932960896, 922929408,  910218752,  1939042944, 1945041920,
        897469056,  884680960,  1950957568, 1956789632, 871854912,  858991552,
        1962537856, 1968202112, 846091392,  833155008,  1973782016, 1979277312,
        820182912,  807175680,  1984687872, 1990013440, 794133888,  781058048,
        1995253760, 2000408576, 767948800,  754806592,  2005477632, 2010460928,
        741632064,  728425792,  2015357952, 2020168832, 715188352,  701920192,
        2024893056, 2029530496, 688622016,  675294336,  2034081024, 2038544512,
        661937728,  648552768,  2042920576, 2047209216, 635140032,  621700032,
        2051410048, 2055523072, 608233472,  594740864,  2059548032, 2063484800,
        581222720,  567679680,  2067333120, 2071092864, 554112384,  540521280,
        2074763904, 2078346112, 526907072,  513270272,  2081839360, 2085243264,
        499611488,  485931296,  2088557952, 2091783168, 472230304,  458509088,
        2094918784, 2097964544, 444768224,  431008288,  2100920576, 2103786496,
        417229920,  403433664,  2106562432, 2109248000, 389620128,  375789888,
        2111843328, 2114348160, 361943552,  348081728,  2116762368, 2119085952,
        334204992,  320313920,  2121318656, 2123460608, 306409152,  292491232,
        2125511552, 2127471488, 278560800,  264618448,  2129340288, 2131117824,
        250664736,  236700304,  2132804096, 2134398976, 222725728,  208741600,
        2135902464, 2137314432, 194748544,  180747136,  2138634880, 2139863680,
        166737984,  152721696,  2141000832, 2142046208, 138698864,  124670096,
        2142999936, 2143861760, 110635984,  96597136,   2144631808, 2145309952,
        82554144,   68507616,   2145896320, 2146390656, 54458156,   40406360,
        2146793088, 2147103488, 26352836,   12298181,   2147321984, 2147448448,
    },

    // WORD32 w_16[24] =
    {
        0x00000000, 0x7fffffff, 0x00000000, 0x7fffffff, 0x00000000, 0x7fffffff,
        0x30fbc54d, 0x7641af3d, 0x5a82799a, 0x5a82799a, 0x7641af3d, 0x30fbc54d,
        0x5a82799a, 0x5a82799a, 0x7fffffff, 0x00000000, 0x5a82799a, 0xa57d8667,
        0x7641af3d, 0x30fbc54d, 0x5a82799a, 0xa57d8667, 0xcf043ab3, 0x89be50c5,
    },

    // WORD32 window_sine_480_eld[1920];
    {0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     17,    72,    118,   176,   239,   307,   378,   451,   524,   597,
     669,   741,   812,   883,   954,   1024,  1095,  1165,  1235,  1305,
     1375,  1444,  1514,  1583,  1652,  1722,  1792,  1863,  1933,  2005,
     2077,  2150,  2224,  2299,  2374,  2451,  2529,  2607,  2686,  2766,
     2847,  2928,  3009,  3091,  3174,  3256,  3339,  3423,  3507,  3591,
     3676,  3760,  3846,  3932,  4018,  4104,  4191,  4278,  4366,  4454,
     4542,  4631,  4720,  4809,  4899,  4988,  5078,  5168,  5257,  5347,
     5436,  5524,  5613,  5702,  5790,  5878,  5967,  6056,  6144,  6233,
     6321,  6410,  6498,  6586,  6673,  6761,  6848,  6934,  7020,  7106,
     7192,  7276,  7361,  7445,  7529,  7614,  7698,  7781,  7865,  7947,
     8030,  8112,  8193,  8274,  8354,  8434,  8514,  8594,  8673,  8751,
     8830,  8908,  8985,  9063,  9139,  9216,  9292,  9367,  9442,  9517,
     9621,  9695,  9769,  9842,  9915,  9988,  10060, 10132, 10203, 10274,
     10345, 10415, 10485, 10554, 10623, 10691, 10760, 10827, 10895, 10962,
     11029, 11095, 11161, 11226, 11291, 11356, 11420, 11484, 11548, 11611,
     11674, 11736, 11798, 11859, 11921, 11981, 12042, 12102, 12161, 12220,
     12279, 12337, 12395, 12452, 12509, 12565, 12621, 12677, 12732, 12787,
     12841, 12895, 12948, 13000, 13053, 13104, 13156, 13206, 13257, 13306,
     13356, 13404, 13452, 13500, 13547, 13594, 13639, 13685, 13730, 13774,
     13818, 13861, 13904, 13946, 13988, 14029, 14069, 14109, 14148, 14187,
     14225, 14263, 14300, 14336, 14372, 14408, 14443, 14477, 14511, 14544,
     14577, 14609, 14641, 14673, 14704, 14734, 14764, 14794, 14823, 14852,
     14881, 14909, 14938, 14966, 14994, 15021, 15049, 15076, 15104, 15131,
     15159, 15186, 15213, 15239, 15265, 15289, 15312, 15333, 15351, 15372,
     15382, 15386, 15392, 15398, 15404, 15411, 15418, 15425, 15431, 15438,
     15444, 15451, 15458, 15464, 15471, 15478, 15485, 15492, 15499, 15505,
     15512, 15519, 15526, 15534, 15541, 15548, 15555, 15562, 15569, 15577,
     15584, 15592, 15599, 15606, 15614, 15621, 15629, 15637, 15644, 15652,
     15660, 15668, 15675, 15683, 15691, 15699, 15707, 15715, 15723, 15731,
     15740, 15748, 15756, 15764, 15773, 15781, 15789, 15798, 15806, 15815,
     15824, 15832, 15841, 15849, 15858, 15867, 15876, 15884, 15893, 15902,
     15911, 15920, 15929, 15938, 15947, 15956, 15965, 15974, 15983, 15993,
     16002, 16011, 16020, 16030, 16039, 16048, 16057, 16067, 16076, 16086,
     16095, 16104, 16114, 16123, 16133, 16142, 16152, 16161, 16171, 16181,
     16190, 16200, 16209, 16219, 16229, 16238, 16248, 16258, 16267, 16277,
     16287, 16296, 16306, 16316, 16326, 16335, 16345, 16355, 16365, 16374,
     16394, 16403, 16413, 16423, 16433, 16443, 16452, 16462, 16472, 16482,
     16492, 16502, 16511, 16521, 16531, 16541, 16551, 16561, 16570, 16580,
     16590, 16600, 16610, 16619, 16629, 16639, 16649, 16659, 16668, 16678,
     16688, 16698, 16707, 16717, 16727, 16737, 16746, 16756, 16766, 16775,
     16785, 16795, 16804, 16814, 16823, 16833, 16842, 16852, 16861, 16871,
     16880, 16890, 16899, 16909, 16918, 16927, 16937, 16946, 16955, 16964,
     16974, 16983, 16992, 17001, 17010, 17019, 17028, 17037, 17046, 17055,
     17064, 17072, 17081, 17090, 17099, 17107, 17116, 17125, 17133, 17142,
     17150, 17159, 17167, 17175, 17184, 17192, 17200, 17209, 17217, 17225,
     17233, 17241, 17249, 17257, 17265, 17273, 17281, 17289, 17297, 17305,
     17312, 17320, 17328, 17335, 17343, 17351, 17358, 17366, 17373, 17381,
     17388, 17396, 17403, 17411, 17418, 17426, 17433, 17440, 17446, 17452,
     17454, 17449, 17444, 17437, 17428, 17418, 17407, 17396, 17385, 17374,
     17363, 17352, 17340, 17329, 17316, 17304, 17291, 17278, 17264, 17250,
     17236, 17221, 17207, 17193, 17179, 17165, 17150, 17136, 17121, 17107,
     17091, 17076, 17059, 17042, 17024, 17005, 16986, 16966, 16945, 16923,
     16901, 16878, 16855, 16831, 16807, 16783, 16759, 16734, 16709, 16684,
     16658, 16633, 16607, 16581, 16554, 16527, 16500, 16471, 16443, 16414,
     16384, 16353, 16322, 16290, 16257, 16224, 16190, 16155, 16120, 16085,
     16050, 16016, 15981, 15947, 15912, 15878, 15843, 15807, 15771, 15735,
     15697, 15659, 15621, 15581, 15542, 15502, 15461, 15421, 15380, 15339,
     15299, 15259, 15219, 15180, 15140, 15099, 15058, 15016, 14974, 14931,
     14887, 14844, 14800, 14757, 14714, 14671, 14628, 14584, 14541, 14497,
     14453, 14408, 14364, 14319, 14274, 14229, 14184, 14139, 14094, 14049,
     14004, 13958, 13912, 13865, 13819, 13772, 13725, 13678, 13631, 13584,
     13537, 13491, 13444, 13396, 13349, 13301, 13253, 13205, 13156, 13106,
     13057, 13008, 12960, 12912, 12864, 12817, 12770, 12723, 12675, 12626,
     12576, 12526, 12475, 12424, 12373, 12321, 12270, 12220, 12170, 12120,
     12071, 12022, 11974, 11926, 11878, 11829, 11780, 11730, 11679, 11627,
     11575, 11521, 11467, 11414, 11360, 11307, 11255, 11203, 11152, 11101,
     11051, 11001, 10952, 10903, 10853, 10804, 10755, 10705, 10656, 10605,
     10554, 10503, 10450, 10397, 10343, 10289, 10234, 10179, 10124, 10069,
     10014, 9960,  9907,  9854,  9803,  9752,  9703,  9654,  9606,  9559,
     9513,  9466,  9419,  9371,  9322,  9271,  9219,  9165,  9109,  9053,
     8996,  8939,  8883,  8828,  8775,  8723,  8674,  8625,  8578,  8532,
     8486,  8440,  8392,  8344,  8295,  8244,  8192,  8140,  8088,  8036,
     7983,  7931,  7879,  7829,  7779,  7731,  7682,  7634,  7586,  7537,
     7488,  7439,  7390,  7340,  7290,  7241,  7192,  7144,  7096,  7049,
     7001,  6953,  6904,  6856,  6807,  6757,  6708,  6659,  6610,  6561,
     6513,  6465,  6418,  6370,  6323,  6277,  6230,  6183,  6137,  6090,
     6044,  5997,  5951,  5905,  5858,  5812,  5766,  5720,  5674,  5628,
     5583,  5537,  5491,  5446,  5401,  5355,  5310,  5265,  5221,  5175,
     5130,  5084,  5037,  4991,  4945,  4899,  4853,  4807,  4761,  4716,
     4671,  4626,  4581,  4536,  4491,  4447,  4403,  4359,  4315,  4271,
     4228,  4185,  4142,  4099,  4056,  4014,  3972,  3929,  3887,  3846,
     3804,  3762,  3721,  3680,  3639,  3598,  3558,  3517,  3477,  3437,
     3397,  3357,  3318,  3278,  3239,  3199,  3160,  3122,  3083,  3044,
     3006,  2967,  2929,  2891,  2853,  2815,  2778,  2741,  2704,  2668,
     2620,  2585,  2550,  2515,  2481,  2447,  2413,  2380,  2347,  2314,
     2281,  2248,  2215,  2183,  2151,  2119,  2087,  2055,  2024,  1993,
     1962,  1931,  1901,  1870,  1840,  1810,  1781,  1751,  1722,  1693,
     1664,  1636,  1608,  1579,  1552,  1524,  1497,  1470,  1443,  1416,
     1390,  1364,  1338,  1312,  1287,  1261,  1236,  1212,  1187,  1163,
     1139,  1115,  1092,  1068,  1045,  1022,  1000,  977,   955,   934,
     912,   891,   869,   848,   828,   807,   787,   767,   747,   728,
     709,   690,   671,   652,   634,   616,   598,   581,   563,   546,
     529,   513,   496,   480,   464,   448,   433,   417,   402,   387,
     372,   358,   344,   329,   316,   302,   289,   276,   263,   251,
     238,   226,   214,   203,   191,   180,   169,   158,   147,   137,
     127,   117,   107,   97,    88,    78,    70,    61,    52,    44,
     36,    28,    21,    13,    6,     -2,    -9,    -16,   -23,   -30,
     -37,   -43,   -49,   -55,   -60,   -65,   -69,   -73,   -78,   -81,
     -85,   -89,   -93,   -97,   -101,  -105,  -109,  -113,  -116,  -120,
     -123,  -126,  -129,  -131,  -133,  -135,  -137,  -138,  -139,  -140,
     -141,  -142,  -143,  -143,  -144,  -144,  -145,  -145,  -146,  -146,
     -147,  -147,  -147,  -147,  -147,  -147,  -147,  -146,  -146,  -145,
     -144,  -143,  -141,  -140,  -139,  -137,  -135,  -134,  -132,  -130,
     -129,  -127,  -125,  -123,  -122,  -120,  -118,  -116,  -114,  -111,
     -109,  -107,  -104,  -102,  -99,   -96,   -94,   -91,   -88,   -86,
     -83,   -81,   -78,   -75,   -72,   -70,   -67,   -64,   -61,   -58,
     -55,   -52,   -49,   -46,   -44,   -41,   -38,   -35,   -32,   -29,
     -26,   -23,   -20,   -17,   -14,   -11,   -9,    -6,    -3,    0,
     0,     3,     6,     8,     11,    14,    17,    19,    22,    24,
     27,    29,    32,    34,    37,    39,    42,    44,    46,    48,
     50,    53,    55,    57,    59,    61,    62,    64,    66,    67,
     69,    71,    72,    74,    75,    76,    78,    79,    80,    81,
     82,    83,    84,    85,    86,    86,    87,    87,    88,    88,
     88,    89,    89,    89,    90,    90,    90,    90,    90,    90,
     90,    89,    89,    88,    88,    87,    86,    85,    85,    84,
     83,    82,    81,    80,    78,    77,    76,    75,    74,    73,
     72,    70,    69,    68,    66,    65,    63,    61,    59,    57,
     55,    53,    51,    49,    47,    44,    42,    40,    38,    36,
     34,    32,    30,    28,    26,    23,    21,    19,    16,    14,
     11,    8,     6,     3,     1,     -2,    -4,    -7,    -9,    -12,
     -14,   -17,   -20,   -22,   -25,   -27,   -30,   -32,   -35,   -38,
     -40,   -43,   -45,   -48,   -50,   -53,   -55,   -58,   -60,   -63,
     -65,   -68,   -70,   -73,   -75,   -78,   -80,   -82,   -85,   -87,
     -90,   -92,   -94,   -97,   -99,   -102,  -104,  -106,  -109,  -111,
     -113,  -116,  -118,  -121,  -123,  -125,  -128,  -130,  -133,  -135,
     -138,  -140,  -143,  -145,  -148,  -151,  -153,  -156,  -159,  -162,
     -165,  -168,  -170,  -173,  -176,  -178,  -181,  -183,  -185,  -188,
     -190,  -192,  -194,  -196,  -197,  -199,  -201,  -202,  -204,  -205,
     -206,  -208,  -209,  -210,  -211,  -212,  -213,  -214,  -214,  -215,
     -216,  -216,  -217,  -218,  -218,  -218,  -219,  -219,  -219,  -219,
     -219,  -219,  -220,  -219,  -219,  -219,  -219,  -219,  -218,  -218,
     -218,  -217,  -217,  -216,  -216,  -215,  -214,  -214,  -213,  -212,
     -214,  -214,  -213,  -212,  -211,  -211,  -210,  -209,  -208,  -207,
     -206,  -204,  -203,  -202,  -201,  -199,  -198,  -196,  -195,  -193,
     -192,  -190,  -189,  -187,  -185,  -184,  -182,  -180,  -178,  -176,
     -175,  -173,  -171,  -169,  -167,  -165,  -163,  -162,  -160,  -158,
     -156,  -154,  -152,  -150,  -149,  -147,  -145,  -143,  -142,  -140,
     -139,  -137,  -135,  -134,  -133,  -131,  -130,  -129,  -127,  -126,
     -125,  -123,  -122,  -120,  -118,  -117,  -115,  -113,  -111,  -109,
     -107,  -105,  -103,  -100,  -98,   -96,   -94,   -91,   -89,   -87,
     -84,   -82,   -79,   -77,   -75,   -72,   -70,   -67,   -65,   -63,
     -60,   -58,   -56,   -53,   -51,   -49,   -47,   -44,   -42,   -40,
     -38,   -36,   -34,   -32,   -30,   -28,   -26,   -25,   -23,   -21,
     -20,   -18,   -16,   -15,   -13,   -12,   -10,   -9,    -8,    -6,
     -5,    -4,    -3,    -2,    -1,    0,     1,     2,     3,     4,
     5,     6,     6,     7,     8,     8,     9,     9,     9,     10,
     10,    10,    11,    11,    11,    12,    12,    12,    12,    13,
     13,    13,    13,    13,    13,    13,    13,    13,    12,    12,
     12,    12,    12,    12,    11,    11,    11,    11,    11,    10,
     10,    10,    10,    9,     9,     9,     9,     8,     8,     8,
     8,     7,     7,     7,     6,     6,     6,     6,     5,     5,
     5,     5,     4,     4,     4,     4,     3,     3,     3,     3,
     3,     2,     2,     2,     2,     2,     2,     1,     1,     1,
     1,     1,     1,     1,     1,     1,     1,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     1,     1,     1,     1,     1,     1,
     1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
     2,     2,     2,     2,     3,     3,     3,     3,     3,     3,
     3,     4,     4,     4,     4,     4,     4,     4,     5,     5,
     5,     5,     5,     5,     5,     5,     6,     6,     6,     6,
     6,     6,     6,     6,     6,     6,     6,     6,     6,     6,
     6,     6,     6,     6,     6,     6,     6,     6,     6,     6,
     6,     6,     5,     5,     5,     5,     5,     5,     4,     4,
     4,     4,     4,     3,     3,     3,     3,     2,     2,     2,
     1,     1,     1,     0,     0,     0,     -1,    -1,    -1,    -2,
     -2,    -2,    -3,    -3,    -4,    -4,    -5,    -5,    -5,    -6,
     -6,    -7,    -7,    -7,    -8,    -8,    -9,    -9,    -10,   -10,
     -10,   -11,   -11,   -12,   -12,   -13,   -13,   -13,   -14,   -14,
     -15,   -15,   -15,   -16,   -16,   -16,   -17,   -17,   -17,   -18,
     -18,   -18,   -19,   -19,   -19,   -19,   -20,   -20,   -20,   -20,
     -21,   -21,   -21,   -21,   -21,   -22,   -22,   -22,   -22,   -22,
     -22,   -22,   -22,   -22,   -23,   -23,   -23,   -23,   -23,   -23,
     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
     -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -21,
     -21,   -21,   -21,   -21,   -21,   -20,   -20,   -20,   -20,   -20,
     -19,   -19,   -19,   -19,   -19,   -18,   -18,   -18,   -18,   -17},
    // WORD16 window_sine_512_eld[2048];
    {0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     56,    93,
     139,   192,   251,   314,   380,   447,   515,   583,   651,   718,
     784,   849,   914,   979,   1044,  1109,  1174,  1239,  1304,  1368,
     1433,  1498,  1563,  1628,  1693,  1758,  1824,  1890,  1956,  2022,
     2090,  2157,  2226,  2295,  2365,  2436,  2508,  2580,  2653,  2727,
     2802,  2877,  2952,  3029,  3105,  3182,  3260,  3338,  3416,  3494,
     3573,  3652,  3731,  3811,  3891,  3971,  4052,  4133,  4214,  4296,
     4378,  4460,  4542,  4625,  4708,  4791,  4874,  4957,  5041,  5125,
     5209,  5293,  5377,  5460,  5544,  5627,  5710,  5794,  5877,  5960,
     6042,  6125,  6208,  6291,  6373,  6456,  6538,  6620,  6702,  6784,
     6865,  6947,  7028,  7108,  7189,  7269,  7349,  7428,  7507,  7586,
     7665,  7743,  7821,  7899,  7976,  8054,  8131,  8207,  8283,  8359,
     8434,  8510,  8584,  8659,  8733,  8807,  8880,  8953,  9026,  9099,
     9171,  9243,  9314,  9385,  9456,  9526,  9583,  9653,  9723,  9792,
     9860,  9929,  9997,  10064, 10132, 10199, 10265, 10331, 10397, 10463,
     10528, 10593, 10657, 10721, 10785, 10849, 10912, 10974, 11037, 11099,
     11161, 11222, 11283, 11344, 11404, 11464, 11524, 11583, 11642, 11701,
     11759, 11817, 11875, 11932, 11989, 12045, 12102, 12157, 12213, 12268,
     12322, 12377, 12431, 12484, 12537, 12590, 12642, 12694, 12746, 12797,
     12848, 12898, 12948, 12997, 13046, 13095, 13143, 13191, 13238, 13285,
     13331, 13377, 13422, 13467, 13512, 13556, 13599, 13642, 13685, 13727,
     13769, 13810, 13850, 13891, 13930, 13969, 14008, 14046, 14084, 14121,
     14158, 14194, 14230, 14265, 14300, 14334, 14368, 14401, 14434, 14466,
     14498, 14530, 14561, 14591, 14621, 14651, 14680, 14709, 14738, 14766,
     14794, 14821, 14849, 14876, 14902, 14929, 14955, 14981, 15007, 15033,
     15059, 15085, 15111, 15137, 15162, 15188, 15213, 15238, 15262, 15285,
     15307, 15327, 15345, 15361, 15384, 15388, 15394, 15400, 15406, 15412,
     15418, 15425, 15431, 15437, 15443, 15449, 15456, 15462, 15468, 15475,
     15481, 15487, 15494, 15500, 15507, 15513, 15520, 15526, 15533, 15540,
     15546, 15553, 15560, 15567, 15574, 15580, 15587, 15594, 15601, 15608,
     15615, 15622, 15630, 15637, 15644, 15651, 15658, 15666, 15673, 15680,
     15688, 15695, 15703, 15710, 15718, 15725, 15733, 15741, 15748, 15756,
     15764, 15772, 15780, 15787, 15795, 15803, 15811, 15819, 15827, 15835,
     15843, 15852, 15860, 15868, 15876, 15884, 15893, 15901, 15909, 15918,
     15926, 15935, 15943, 15952, 15960, 15969, 15977, 15986, 15994, 16003,
     16012, 16020, 16029, 16038, 16046, 16055, 16064, 16073, 16081, 16090,
     16099, 16108, 16117, 16126, 16135, 16144, 16152, 16161, 16170, 16179,
     16188, 16197, 16206, 16215, 16224, 16233, 16242, 16251, 16261, 16270,
     16279, 16288, 16297, 16306, 16315, 16324, 16334, 16343, 16352, 16361,
     16370, 16379, 16389, 16398, 16407, 16416, 16425, 16435, 16444, 16453,
     16462, 16472, 16481, 16490, 16499, 16508, 16518, 16527, 16536, 16545,
     16554, 16564, 16573, 16582, 16591, 16600, 16610, 16619, 16628, 16637,
     16646, 16656, 16665, 16674, 16683, 16692, 16701, 16710, 16720, 16729,
     16738, 16747, 16756, 16765, 16774, 16783, 16792, 16801, 16810, 16819,
     16828, 16837, 16846, 16855, 16864, 16873, 16882, 16890, 16899, 16908,
     16917, 16926, 16934, 16943, 16952, 16960, 16969, 16978, 16986, 16995,
     17003, 17012, 17020, 17029, 17037, 17045, 17054, 17062, 17070, 17078,
     17087, 17095, 17103, 17111, 17119, 17127, 17135, 17143, 17151, 17159,
     17167, 17175, 17183, 17191, 17198, 17206, 17214, 17221, 17229, 17237,
     17244, 17252, 17259, 17267, 17274, 17282, 17289, 17296, 17304, 17311,
     17318, 17325, 17333, 17340, 17347, 17354, 17361, 17368, 17375, 17382,
     17389, 17396, 17403, 17410, 17417, 17424, 17431, 17438, 17444, 17449,
     17446, 17444, 17440, 17434, 17426, 17417, 17408, 17398, 17388, 17377,
     17367, 17357, 17347, 17336, 17326, 17315, 17303, 17292, 17280, 17267,
     17254, 17241, 17228, 17215, 17202, 17188, 17175, 17162, 17149, 17135,
     17122, 17108, 17094, 17080, 17065, 17049, 17033, 17016, 16999, 16980,
     16962, 16942, 16922, 16901, 16880, 16858, 16836, 16814, 16792, 16769,
     16746, 16723, 16699, 16676, 16652, 16628, 16604, 16579, 16555, 16529,
     16504, 16478, 16451, 16424, 16397, 16368, 16340, 16310, 16280, 16249,
     16218, 16186, 16154, 16121, 16088, 16055, 16023, 15990, 15958, 15926,
     15894, 15861, 15828, 15795, 15761, 15727, 15692, 15656, 15620, 15583,
     15546, 15508, 15471, 15433, 15395, 15357, 15319, 15281, 15244, 15207,
     15169, 15132, 15094, 15055, 15016, 14976, 14936, 14895, 14855, 14814,
     14773, 14733, 14692, 14652, 14611, 14570, 14530, 14488, 14447, 14406,
     14364, 14322, 14280, 14238, 14195, 14153, 14111, 14068, 14025, 13983,
     13940, 13897, 13854, 13810, 13767, 13723, 13680, 13636, 13593, 13549,
     13505, 13462, 13418, 13374, 13330, 13286, 13241, 13195, 13150, 13104,
     13058, 13013, 12968, 12923, 12879, 12835, 12792, 12748, 12703, 12658,
     12612, 12565, 12518, 12471, 12423, 12376, 12328, 12281, 12233, 12187,
     12140, 12095, 12049, 12004, 11959, 11915, 11870, 11825, 11779, 11732,
     11684, 11635, 11586, 11536, 11486, 11435, 11385, 11336, 11287, 11239,
     11191, 11143, 11096, 11050, 11003, 10957, 10911, 10865, 10819, 10773,
     10727, 10680, 10633, 10585, 10537, 10488, 10439, 10389, 10338, 10287,
     10236, 10184, 10133, 10081, 10030, 9979,  9929,  9880,  9832,  9784,
     9737,  9691,  9646,  9602,  9558,  9514,  9470,  9426,  9381,  9334,
     9286,  9237,  9186,  9134,  9081,  9028,  8974,  8921,  8869,  8818,
     8769,  8721,  8675,  8630,  8586,  8542,  8499,  8455,  8410,  8365,
     8318,  8270,  8222,  8173,  8124,  8074,  8026,  7976,  7926,  7878,
     7831,  7784,  7738,  7693,  7647,  7602,  7556,  7509,  7463,  7416,
     7369,  7322,  7275,  7228,  7182,  7137,  7091,  7046,  7001,  6955,
     6909,  6863,  6817,  6770,  6723,  6676,  6629,  6583,  6537,  6491,
     6446,  6401,  6356,  6311,  6267,  6222,  6178,  6133,  6089,  6045,
     6000,  5956,  5912,  5868,  5824,  5780,  5736,  5692,  5648,  5604,
     5560,  5516,  5473,  5429,  5386,  5343,  5300,  5257,  5214,  5171,
     5128,  5085,  5043,  5000,  4958,  4915,  4873,  4831,  4789,  4747,
     4705,  4664,  4622,  4581,  4539,  4498,  4457,  4416,  4375,  4334,
     4293,  4253,  4212,  4172,  4132,  4092,  4052,  4012,  3972,  3933,
     3893,  3854,  3815,  3776,  3737,  3699,  3660,  3622,  3583,  3545,
     3507,  3469,  3432,  3394,  3357,  3319,  3282,  3245,  3208,  3171,
     3135,  3098,  3062,  3025,  2989,  2953,  2917,  2881,  2846,  2810,
     2775,  2740,  2706,  2671,  2638,  2604,  2572,  2539,  2507,  2475,
     2443,  2411,  2380,  2349,  2318,  2287,  2256,  2226,  2195,  2165,
     2135,  2105,  2075,  2046,  2016,  1987,  1958,  1929,  1901,  1872,
     1844,  1816,  1788,  1760,  1733,  1706,  1679,  1652,  1625,  1599,
     1572,  1546,  1521,  1495,  1470,  1444,  1419,  1395,  1370,  1346,
     1322,  1298,  1274,  1250,  1227,  1204,  1181,  1158,  1136,  1114,
     1092,  1070,  1048,  1027,  1005,  984,   964,   943,   923,   903,
     883,   863,   843,   824,   805,   786,   767,   749,   730,   712,
     694,   677,   659,   642,   625,   608,   592,   575,   559,   543,
     527,   512,   496,   481,   466,   451,   436,   422,   408,   394,
     380,   366,   352,   339,   326,   313,   301,   288,   276,   264,
     252,   241,   229,   218,   207,   196,   185,   175,   165,   155,
     145,   135,   125,   116,   107,   98,    89,    80,    72,    63,
     55,    48,    40,    33,    25,    18,    11,    4,     -3,    -9,
     -16,   -23,   -29,   -35,   -41,   -47,   -53,   -58,   -62,   -67,
     -71,   -75,   -79,   -82,   -86,   -89,   -93,   -97,   -101,  -104,
     -108,  -112,  -115,  -118,  -122,  -125,  -127,  -130,  -132,  -134,
     -136,  -137,  -138,  -139,  -140,  -141,  -142,  -143,  -143,  -144,
     -144,  -145,  -145,  -146,  -146,  -146,  -147,  -147,  -147,  -147,
     -147,  -147,  -147,  -146,  -146,  -145,  -144,  -143,  -142,  -141,
     -140,  -138,  -137,  -135,  -134,  -132,  -130,  -129,  -127,  -126,
     -124,  -122,  -121,  -119,  -117,  -115,  -113,  -111,  -109,  -106,
     -104,  -102,  -99,   -97,   -94,   -92,   -89,   -87,   -85,   -82,
     -80,   -77,   -74,   -72,   -69,   -67,   -64,   -61,   -59,   -56,
     -53,   -50,   -48,   -45,   -42,   -39,   -37,   -34,   -31,   -28,
     -26,   -23,   -20,   -17,   -15,   -12,   -9,    -7,    -4,    -1,
     1,     4,     7,     9,     12,    14,    17,    19,    22,    24,
     27,    29,    31,    34,    36,    38,    40,    43,    45,    47,
     49,    51,    53,    55,    57,    59,    60,    62,    64,    65,
     67,    69,    70,    71,    73,    74,    76,    77,    78,    79,
     81,    82,    83,    84,    84,    85,    86,    86,    87,    88,
     88,    88,    89,    89,    89,    90,    90,    90,    90,    91,
     91,    91,    91,    90,    90,    90,    89,    89,    88,    88,
     87,    86,    85,    84,    83,    83,    82,    81,    80,    79,
     78,    77,    75,    74,    73,    72,    71,    70,    68,    67,
     66,    64,    62,    61,    59,    57,    55,    53,    51,    49,
     47,    44,    42,    40,    38,    36,    34,    33,    31,    29,
     27,    25,    23,    20,    18,    16,    13,    11,    8,     6,
     3,     1,     -1,    -4,    -6,    -9,    -11,   -13,   -16,   -18,
     -21,   -23,   -25,   -28,   -30,   -33,   -35,   -38,   -40,   -43,
     -45,   -47,   -50,   -52,   -55,   -57,   -59,   -62,   -64,   -66,
     -69,   -71,   -73,   -76,   -78,   -80,   -83,   -85,   -87,   -89,
     -92,   -94,   -96,   -99,   -101,  -103,  -105,  -107,  -110,  -112,
     -114,  -116,  -119,  -121,  -123,  -125,  -128,  -130,  -132,  -135,
     -137,  -139,  -142,  -144,  -146,  -149,  -151,  -154,  -156,  -159,
     -162,  -164,  -167,  -170,  -172,  -175,  -178,  -180,  -182,  -185,
     -187,  -189,  -191,  -193,  -195,  -197,  -199,  -201,  -202,  -204,
     -205,  -207,  -208,  -209,  -210,  -211,  -213,  -214,  -214,  -215,
     -216,  -217,  -218,  -219,  -219,  -220,  -220,  -221,  -221,  -222,
     -222,  -222,  -222,  -223,  -223,  -223,  -223,  -223,  -223,  -223,
     -223,  -222,  -222,  -222,  -222,  -221,  -221,  -220,  -220,  -219,
     -219,  -218,  -217,  -217,  -216,  -215,  -215,  -214,  -213,  -213,
     -212,  -211,  -210,  -210,  -209,  -208,  -207,  -206,  -205,  -204,
     -202,  -201,  -200,  -199,  -197,  -196,  -195,  -193,  -192,  -190,
     -189,  -187,  -185,  -184,  -182,  -181,  -179,  -177,  -176,  -174,
     -172,  -170,  -169,  -167,  -165,  -163,  -162,  -160,  -158,  -156,
     -154,  -153,  -151,  -149,  -148,  -146,  -144,  -143,  -141,  -140,
     -138,  -137,  -135,  -134,  -133,  -131,  -130,  -129,  -128,  -127,
     -125,  -124,  -123,  -121,  -120,  -118,  -116,  -115,  -113,  -111,
     -109,  -107,  -105,  -103,  -101,  -99,   -97,   -95,   -93,   -91,
     -88,   -86,   -84,   -82,   -79,   -77,   -75,   -73,   -70,   -68,
     -66,   -64,   -61,   -59,   -57,   -55,   -53,   -51,   -49,   -46,
     -44,   -42,   -40,   -39,   -37,   -35,   -33,   -31,   -29,   -28,
     -26,   -24,   -22,   -21,   -19,   -18,   -16,   -15,   -13,   -12,
     -11,   -9,    -8,    -7,    -6,    -5,    -4,    -3,    -2,    -1,
     0,     1,     2,     3,     4,     5,     5,     6,     7,     7,
     8,     8,     9,     9,     10,    10,    10,    10,    11,    11,
     11,    12,    12,    12,    12,    12,    13,    13,    13,    13,
     13,    13,    13,    13,    13,    12,    12,    12,    12,    12,
     12,    12,    11,    11,    11,    11,    11,    10,    10,    10,
     10,    9,     9,     9,     9,     9,     8,     8,     8,     7,
     7,     7,     7,     6,     6,     6,     6,     5,     5,     5,
     5,     4,     4,     4,     4,     4,     3,     3,     3,     3,
     3,     2,     2,     2,     2,     2,     2,     2,     1,     1,
     1,     1,     1,     1,     1,     1,     1,     1,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     1,     1,
     1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     3,     3,
     3,     3,     3,     3,     3,     4,     4,     4,     4,     4,
     4,     4,     4,     5,     5,     5,     5,     5,     5,     5,
     5,     6,     6,     6,     6,     6,     6,     6,     6,     6,
     6,     6,     6,     6,     6,     6,     6,     6,     6,     6,
     6,     6,     6,     6,     6,     6,     6,     6,     6,     6,
     5,     5,     5,     5,     5,     5,     4,     4,     4,     4,
     4,     4,     3,     3,     3,     3,     2,     2,     2,     1,
     1,     1,     0,     0,     0,     -1,    -1,    -1,    -2,    -2,
     -2,    -3,    -3,    -3,    -4,    -4,    -5,    -5,    -5,    -6,
     -6,    -7,    -7,    -7,    -8,    -8,    -9,    -9,    -9,    -10,
     -10,   -11,   -11,   -11,   -12,   -12,   -13,   -13,   -13,   -14,
     -14,   -14,   -15,   -15,   -16,   -16,   -16,   -17,   -17,   -17,
     -18,   -18,   -18,   -18,   -19,   -19,   -19,   -19,   -20,   -20,
     -20,   -20,   -21,   -21,   -21,   -21,   -21,   -22,   -22,   -22,
     -22,   -22,   -22,   -22,   -22,   -23,   -23,   -23,   -23,   -23,
     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -22,
     -22,   -22,   -22,   -22,   -22,   -22,   -22,   -21,   -21,   -21,
     -21,   -21,   -21,   -20,   -20,   -20,   -20,   -20,   -20,   -19,
     -19,   -19,   -19,   -18,   -18,   -18,   -18,   -18},

    // const WORD16 only_long_window_sine_960[960] =
    {
        0x001B, 0x7FFF, 0x0050, 0x7FFF, 0x0086, 0x7FFF, 0x00BC, 0x7FFE, 0x00F1, 0x7FFE,
        0x0127, 0x7FFE, 0x015C, 0x7FFD, 0x0192, 0x7FFD, 0x01C8, 0x7FFC, 0x01FD, 0x7FFB,
        0x0233, 0x7FFA, 0x0269, 0x7FF9, 0x029E, 0x7FF8, 0x02D4, 0x7FF7, 0x0309, 0x7FF6,
        0x033F, 0x7FF4, 0x0375, 0x7FF3, 0x03AA, 0x7FF2, 0x03E0, 0x7FF0, 0x0415, 0x7FEE,
        0x044B, 0x7FED, 0x0480, 0x7FEB, 0x04B6, 0x7FE9, 0x04EC, 0x7FE7, 0x0521, 0x7FE5,
        0x0557, 0x7FE2, 0x058C, 0x7FE0, 0x05C2, 0x7FDE, 0x05F7, 0x7FDB, 0x062D, 0x7FD9,
        0x0663, 0x7FD6, 0x0698, 0x7FD3, 0x06CE, 0x7FD1, 0x0703, 0x7FCE, 0x0739, 0x7FCB,
        0x076E, 0x7FC8, 0x07A4, 0x7FC5, 0x07D9, 0x7FC1, 0x080F, 0x7FBE, 0x0844, 0x7FBB,
        0x087A, 0x7FB7, 0x08AF, 0x7FB3, 0x08E5, 0x7FB0, 0x091A, 0x7FAC, 0x0950, 0x7FA8,
        0x0985, 0x7FA4, 0x09BB, 0x7FA0, 0x09F0, 0x7F9C, 0x0A26, 0x7F98, 0x0A5B, 0x7F94,
        0x0A90, 0x7F8F, 0x0AC6, 0x7F8B, 0x0AFB, 0x7F86, 0x0B31, 0x7F82, 0x0B66, 0x7F7D,
        0x0B9C, 0x7F78, 0x0BD1, 0x7F73, 0x0C06, 0x7F6E, 0x0C3C, 0x7F69, 0x0C71, 0x7F64,
        0x0CA6, 0x7F5F, 0x0CDC, 0x7F59, 0x0D11, 0x7F54, 0x0D46, 0x7F4E, 0x0D7C, 0x7F49,
        0x0DB1, 0x7F43, 0x0DE6, 0x7F3D, 0x0E1C, 0x7F37, 0x0E51, 0x7F31, 0x0E86, 0x7F2B,
        0x0EBB, 0x7F25, 0x0EF1, 0x7F1F, 0x0F26, 0x7F19, 0x0F5B, 0x7F12, 0x0F90, 0x7F0C,
        0x0FC6, 0x7F05, 0x0FFB, 0x7EFF, 0x1030, 0x7EF8, 0x1065, 0x7EF1, 0x109A, 0x7EEA,
        0x10D0, 0x7EE3, 0x1105, 0x7EDC, 0x113A, 0x7ED5, 0x116F, 0x7ECE, 0x11A4, 0x7EC6,
        0x11D9, 0x7EBF, 0x120E, 0x7EB7, 0x1243, 0x7EB0, 0x1278, 0x7EA8, 0x12AD, 0x7EA0,
        0x12E2, 0x7E98, 0x1317, 0x7E90, 0x134C, 0x7E88, 0x1381, 0x7E80, 0x13B6, 0x7E78,
        0x13EB, 0x7E70, 0x1420, 0x7E67, 0x1455, 0x7E5F, 0x148A, 0x7E56, 0x14BF, 0x7E4E,
        0x14F4, 0x7E45, 0x1529, 0x7E3C, 0x155E, 0x7E33, 0x1593, 0x7E2A, 0x15C7, 0x7E21,
        0x15FC, 0x7E18, 0x1631, 0x7E0F, 0x1666, 0x7E05, 0x169B, 0x7DFC, 0x16CF, 0x7DF2,
        0x1704, 0x7DE9, 0x1739, 0x7DDF, 0x176E, 0x7DD5, 0x17A2, 0x7DCC, 0x17D7, 0x7DC2,
        0x180C, 0x7DB8, 0x1840, 0x7DAD, 0x1875, 0x7DA3, 0x18AA, 0x7D99, 0x18DE, 0x7D8F,
        0x1913, 0x7D84, 0x1947, 0x7D7A, 0x197C, 0x7D6F, 0x19B0, 0x7D64, 0x19E5, 0x7D59,
        0x1A19, 0x7D4F, 0x1A4E, 0x7D44, 0x1A82, 0x7D39, 0x1AB7, 0x7D2D, 0x1AEB, 0x7D22,
        0x1B20, 0x7D17, 0x1B54, 0x7D0B, 0x1B88, 0x7D00, 0x1BBD, 0x7CF4, 0x1BF1, 0x7CE9,
        0x1C25, 0x7CDD, 0x1C5A, 0x7CD1, 0x1C8E, 0x7CC5, 0x1CC2, 0x7CB9, 0x1CF6, 0x7CAD,
        0x1D2B, 0x7CA1, 0x1D5F, 0x7C95, 0x1D93, 0x7C88, 0x1DC7, 0x7C7C, 0x1DFB, 0x7C6F,
        0x1E2F, 0x7C63, 0x1E64, 0x7C56, 0x1E98, 0x7C49, 0x1ECC, 0x7C3C, 0x1F00, 0x7C30,
        0x1F34, 0x7C22, 0x1F68, 0x7C15, 0x1F9C, 0x7C08, 0x1FD0, 0x7BFB, 0x2004, 0x7BEE,
        0x2037, 0x7BE0, 0x206B, 0x7BD3, 0x209F, 0x7BC5, 0x20D3, 0x7BB7, 0x2107, 0x7BA9,
        0x213B, 0x7B9C, 0x216E, 0x7B8E, 0x21A2, 0x7B80, 0x21D6, 0x7B71, 0x220A, 0x7B63,
        0x223D, 0x7B55, 0x2271, 0x7B47, 0x22A4, 0x7B38, 0x22D8, 0x7B29, 0x230C, 0x7B1B,
        0x233F, 0x7B0C, 0x2373, 0x7AFD, 0x23A6, 0x7AEE, 0x23DA, 0x7ADF, 0x240D, 0x7AD0,
        0x2441, 0x7AC1, 0x2474, 0x7AB2, 0x24A7, 0x7AA3, 0x24DB, 0x7A93, 0x250E, 0x7A84,
        0x2541, 0x7A74, 0x2575, 0x7A65, 0x25A8, 0x7A55, 0x25DB, 0x7A45, 0x260E, 0x7A35,
        0x2642, 0x7A25, 0x2675, 0x7A15, 0x26A8, 0x7A05, 0x26DB, 0x79F5, 0x270E, 0x79E4,
        0x2741, 0x79D4, 0x2774, 0x79C4, 0x27A7, 0x79B3, 0x27DA, 0x79A2, 0x280D, 0x7992,
        0x2840, 0x7981, 0x2873, 0x7970, 0x28A6, 0x795F, 0x28D8, 0x794E, 0x290B, 0x793D,
        0x293E, 0x792B, 0x2971, 0x791A, 0x29A3, 0x7909, 0x29D6, 0x78F7, 0x2A09, 0x78E6,
        0x2A3B, 0x78D4, 0x2A6E, 0x78C2, 0x2AA1, 0x78B0, 0x2AD3, 0x789F, 0x2B06, 0x788D,
        0x2B38, 0x787B, 0x2B6B, 0x7868, 0x2B9D, 0x7856, 0x2BCF, 0x7844, 0x2C02, 0x7831,
        0x2C34, 0x781F, 0x2C66, 0x780C, 0x2C99, 0x77FA, 0x2CCB, 0x77E7, 0x2CFD, 0x77D4,
        0x2D2F, 0x77C1, 0x2D61, 0x77AE, 0x2D94, 0x779B, 0x2DC6, 0x7788, 0x2DF8, 0x7775,
        0x2E2A, 0x7762, 0x2E5C, 0x774E, 0x2E8E, 0x773B, 0x2EC0, 0x7727, 0x2EF1, 0x7714,
        0x2F23, 0x7700, 0x2F55, 0x76EC, 0x2F87, 0x76D8, 0x2FB9, 0x76C4, 0x2FEA, 0x76B0,
        0x301C, 0x769C, 0x304E, 0x7688, 0x307F, 0x7674, 0x30B1, 0x765F, 0x30E3, 0x764B,
        0x3114, 0x7636, 0x3146, 0x7622, 0x3177, 0x760D, 0x31A9, 0x75F8, 0x31DA, 0x75E4,
        0x320B, 0x75CF, 0x323D, 0x75BA, 0x326E, 0x75A5, 0x329F, 0x758F, 0x32D0, 0x757A,
        0x3302, 0x7565, 0x3333, 0x754F, 0x3364, 0x753A, 0x3395, 0x7524, 0x33C6, 0x750F,
        0x33F7, 0x74F9, 0x3428, 0x74E3, 0x3459, 0x74CD, 0x348A, 0x74B7, 0x34BB, 0x74A1,
        0x34EC, 0x748B, 0x351C, 0x7475, 0x354D, 0x745F, 0x357E, 0x7448, 0x35AF, 0x7432,
        0x35DF, 0x741B, 0x3610, 0x7405, 0x3640, 0x73EE, 0x3671, 0x73D7, 0x36A1, 0x73C0,
        0x36D2, 0x73AA, 0x3702, 0x7393, 0x3733, 0x737B, 0x3763, 0x7364, 0x3793, 0x734D,
        0x37C4, 0x7336, 0x37F4, 0x731E, 0x3824, 0x7307, 0x3854, 0x72EF, 0x3884, 0x72D8,
        0x38B5, 0x72C0, 0x38E5, 0x72A8, 0x3915, 0x7290, 0x3945, 0x7278, 0x3974, 0x7260,
        0x39A4, 0x7248, 0x39D4, 0x7230, 0x3A04, 0x7218, 0x3A34, 0x71FF, 0x3A64, 0x71E7,
        0x3A93, 0x71CF, 0x3AC3, 0x71B6, 0x3AF2, 0x719D, 0x3B22, 0x7185, 0x3B52, 0x716C,
        0x3B81, 0x7153, 0x3BB1, 0x713A, 0x3BE0, 0x7121, 0x3C0F, 0x7108, 0x3C3F, 0x70EF,
        0x3C6E, 0x70D5, 0x3C9D, 0x70BC, 0x3CCC, 0x70A2, 0x3CFB, 0x7089, 0x3D2B, 0x706F,
        0x3D5A, 0x7056, 0x3D89, 0x703C, 0x3DB8, 0x7022, 0x3DE7, 0x7008, 0x3E16, 0x6FEE,
        0x3E44, 0x6FD4, 0x3E73, 0x6FBA, 0x3EA2, 0x6FA0, 0x3ED1, 0x6F86, 0x3EFF, 0x6F6B,
        0x3F2E, 0x6F51, 0x3F5D, 0x6F36, 0x3F8B, 0x6F1C, 0x3FBA, 0x6F01, 0x3FE8, 0x6EE6,
        0x4017, 0x6ECC, 0x4045, 0x6EB1, 0x4073, 0x6E96, 0x40A2, 0x6E7B, 0x40D0, 0x6E60,
        0x40FE, 0x6E44, 0x412C, 0x6E29, 0x415A, 0x6E0E, 0x4189, 0x6DF2, 0x41B7, 0x6DD7,
        0x41E5, 0x6DBB, 0x4213, 0x6DA0, 0x4240, 0x6D84, 0x426E, 0x6D68, 0x429C, 0x6D4C,
        0x42CA, 0x6D30, 0x42F8, 0x6D14, 0x4325, 0x6CF8, 0x4353, 0x6CDC, 0x4380, 0x6CC0,
        0x43AE, 0x6CA4, 0x43DB, 0x6C87, 0x4409, 0x6C6B, 0x4436, 0x6C4E, 0x4464, 0x6C32,
        0x4491, 0x6C15, 0x44BE, 0x6BF8, 0x44EB, 0x6BDB, 0x4519, 0x6BBE, 0x4546, 0x6BA1,
        0x4573, 0x6B84, 0x45A0, 0x6B67, 0x45CD, 0x6B4A, 0x45FA, 0x6B2D, 0x4626, 0x6B0F,
        0x4653, 0x6AF2, 0x4680, 0x6AD5, 0x46AD, 0x6AB7, 0x46D9, 0x6A99, 0x4706, 0x6A7C,
        0x4733, 0x6A5E, 0x475F, 0x6A40, 0x478C, 0x6A22, 0x47B8, 0x6A04, 0x47E4, 0x69E6,
        0x4811, 0x69C8, 0x483D, 0x69AA, 0x4869, 0x698B, 0x4896, 0x696D, 0x48C2, 0x694F,
        0x48EE, 0x6930, 0x491A, 0x6911, 0x4946, 0x68F3, 0x4972, 0x68D4, 0x499E, 0x68B5,
        0x49C9, 0x6896, 0x49F5, 0x6877, 0x4A21, 0x6858, 0x4A4D, 0x6839, 0x4A78, 0x681A,
        0x4AA4, 0x67FB, 0x4ACF, 0x67DC, 0x4AFB, 0x67BC, 0x4B26, 0x679D, 0x4B52, 0x677D,
        0x4B7D, 0x675E, 0x4BA8, 0x673E, 0x4BD3, 0x671E, 0x4BFF, 0x66FF, 0x4C2A, 0x66DF,
        0x4C55, 0x66BF, 0x4C80, 0x669F, 0x4CAB, 0x667F, 0x4CD6, 0x665E, 0x4D01, 0x663E,
        0x4D2B, 0x661E, 0x4D56, 0x65FE, 0x4D81, 0x65DD, 0x4DAB, 0x65BD, 0x4DD6, 0x659C,
        0x4E01, 0x657B, 0x4E2B, 0x655B, 0x4E55, 0x653A, 0x4E80, 0x6519, 0x4EAA, 0x64F8,
        0x4ED4, 0x64D7, 0x4EFF, 0x64B6, 0x4F29, 0x6495, 0x4F53, 0x6474, 0x4F7D, 0x6453,
        0x4FA7, 0x6431, 0x4FD1, 0x6410, 0x4FFB, 0x63EE, 0x5025, 0x63CD, 0x504E, 0x63AB,
        0x5078, 0x638A, 0x50A2, 0x6368, 0x50CB, 0x6346, 0x50F5, 0x6324, 0x511E, 0x6302,
        0x5148, 0x62E0, 0x5171, 0x62BE, 0x519B, 0x629C, 0x51C4, 0x627A, 0x51ED, 0x6257,
        0x5216, 0x6235, 0x523F, 0x6213, 0x5268, 0x61F0, 0x5291, 0x61CE, 0x52BA, 0x61AB,
        0x52E3, 0x6188, 0x530C, 0x6166, 0x5335, 0x6143, 0x535E, 0x6120, 0x5386, 0x60FD,
        0x53AF, 0x60DA, 0x53D7, 0x60B7, 0x5400, 0x6094, 0x5428, 0x6070, 0x5451, 0x604D,
        0x5479, 0x602A, 0x54A1, 0x6006, 0x54C9, 0x5FE3, 0x54F2, 0x5FBF, 0x551A, 0x5F9C,
        0x5542, 0x5F78, 0x556A, 0x5F54, 0x5591, 0x5F31, 0x55B9, 0x5F0D, 0x55E1, 0x5EE9,
        0x5609, 0x5EC5, 0x5630, 0x5EA1, 0x5658, 0x5E7D, 0x5680, 0x5E58, 0x56A7, 0x5E34,
        0x56CF, 0x5E10, 0x56F6, 0x5DEB, 0x571D, 0x5DC7, 0x5745, 0x5DA2, 0x576C, 0x5D7E,
        0x5793, 0x5D59, 0x57BA, 0x5D34, 0x57E1, 0x5D10, 0x5808, 0x5CEB, 0x582F, 0x5CC6,
        0x5856, 0x5CA1, 0x587C, 0x5C7C, 0x58A3, 0x5C57, 0x58CA, 0x5C32, 0x58F0, 0x5C0C,
        0x5917, 0x5BE7, 0x593D, 0x5BC2, 0x5964, 0x5B9C, 0x598A, 0x5B77, 0x59B0, 0x5B51,
        0x59D7, 0x5B2C, 0x59FD, 0x5B06, 0x5A23, 0x5AE0, 0x5A49, 0x5ABB, 0x5A6F, 0x5A95
    },

    // const WORD16 only_long_window_kbd_960[960] =
    {
        0x000A, 0x7FFF, 0x000F, 0x7FFF, 0x0013, 0x7FFF, 0x0016, 0x7FFF, 0x001A, 0x7FFF,
        0x001D, 0x7FFF, 0x0021, 0x7FFF, 0x0025, 0x7FFF, 0x0028, 0x7FFF, 0x002C, 0x7FFF,
        0x002F, 0x7FFF, 0x0033, 0x7FFF, 0x0037, 0x7FFF, 0x003B, 0x7FFF, 0x003F, 0x7FFF,
        0x0043, 0x7FFF, 0x0047, 0x7FFF, 0x004B, 0x7FFF, 0x0050, 0x7FFF, 0x0054, 0x7FFF,
        0x0059, 0x7FFF, 0x005D, 0x7FFF, 0x0062, 0x7FFF, 0x0067, 0x7FFF, 0x006C, 0x7FFF,
        0x0071, 0x7FFF, 0x0076, 0x7FFF, 0x007B, 0x7FFF, 0x0080, 0x7FFF, 0x0086, 0x7FFF,
        0x008C, 0x7FFF, 0x0091, 0x7FFF, 0x0097, 0x7FFF, 0x009D, 0x7FFF, 0x00A3, 0x7FFF,
        0x00A9, 0x7FFF, 0x00B0, 0x7FFF, 0x00B6, 0x7FFE, 0x00BD, 0x7FFE, 0x00C3, 0x7FFE,
        0x00CA, 0x7FFE, 0x00D1, 0x7FFE, 0x00D8, 0x7FFE, 0x00E0, 0x7FFE, 0x00E7, 0x7FFE,
        0x00EF, 0x7FFE, 0x00F6, 0x7FFE, 0x00FE, 0x7FFE, 0x0106, 0x7FFE, 0x010E, 0x7FFE,
        0x0116, 0x7FFE, 0x011F, 0x7FFE, 0x0127, 0x7FFE, 0x0130, 0x7FFE, 0x0139, 0x7FFE,
        0x0142, 0x7FFD, 0x014B, 0x7FFD, 0x0154, 0x7FFD, 0x015E, 0x7FFD, 0x0167, 0x7FFD,
        0x0171, 0x7FFD, 0x017B, 0x7FFD, 0x0185, 0x7FFD, 0x018F, 0x7FFD, 0x019A, 0x7FFC,
        0x01A4, 0x7FFC, 0x01AF, 0x7FFC, 0x01BA, 0x7FFC, 0x01C5, 0x7FFC, 0x01D0, 0x7FFC,
        0x01DC, 0x7FFC, 0x01E7, 0x7FFB, 0x01F3, 0x7FFB, 0x01FF, 0x7FFB, 0x020B, 0x7FFB,
        0x0218, 0x7FFB, 0x0224, 0x7FFA, 0x0231, 0x7FFA, 0x023E, 0x7FFA, 0x024B, 0x7FFA,
        0x0258, 0x7FFA, 0x0265, 0x7FF9, 0x0273, 0x7FF9, 0x0281, 0x7FF9, 0x028F, 0x7FF8,
        0x029D, 0x7FF8, 0x02AC, 0x7FF8, 0x02BA, 0x7FF8, 0x02C9, 0x7FF7, 0x02D8, 0x7FF7,
        0x02E7, 0x7FF7, 0x02F7, 0x7FF6, 0x0306, 0x7FF6, 0x0316, 0x7FF5, 0x0326, 0x7FF5,
        0x0336, 0x7FF5, 0x0347, 0x7FF4, 0x0357, 0x7FF4, 0x0368, 0x7FF3, 0x0379, 0x7FF3,
        0x038A, 0x7FF2, 0x039C, 0x7FF2, 0x03AE, 0x7FF1, 0x03BF, 0x7FF1, 0x03D2, 0x7FF0,
        0x03E4, 0x7FF0, 0x03F7, 0x7FEF, 0x0409, 0x7FEF, 0x041C, 0x7FEE, 0x0430, 0x7FED,
        0x0443, 0x7FED, 0x0457, 0x7FEC, 0x046B, 0x7FEB, 0x047F, 0x7FEB, 0x0493, 0x7FEA,
        0x04A8, 0x7FE9, 0x04BD, 0x7FE9, 0x04D2, 0x7FE8, 0x04E7, 0x7FE7, 0x04FD, 0x7FE6,
        0x0513, 0x7FE5, 0x0529, 0x7FE4, 0x053F, 0x7FE3, 0x0555, 0x7FE3, 0x056C, 0x7FE2,
        0x0583, 0x7FE1, 0x059A, 0x7FE0, 0x05B2, 0x7FDF, 0x05CA, 0x7FDD, 0x05E2, 0x7FDC,
        0x05FA, 0x7FDB, 0x0612, 0x7FDA, 0x062B, 0x7FD9, 0x0644, 0x7FD8, 0x065D, 0x7FD6,
        0x0677, 0x7FD5, 0x0690, 0x7FD4, 0x06AA, 0x7FD3, 0x06C5, 0x7FD1, 0x06DF, 0x7FD0,
        0x06FA, 0x7FCE, 0x0715, 0x7FCD, 0x0730, 0x7FCB, 0x074C, 0x7FCA, 0x0768, 0x7FC8,
        0x0784, 0x7FC6, 0x07A0, 0x7FC5, 0x07BD, 0x7FC3, 0x07D9, 0x7FC1, 0x07F6, 0x7FC0,
        0x0814, 0x7FBE, 0x0832, 0x7FBC, 0x084F, 0x7FBA, 0x086E, 0x7FB8, 0x088C, 0x7FB6,
        0x08AB, 0x7FB4, 0x08CA, 0x7FB2, 0x08E9, 0x7FB0, 0x0909, 0x7FAD, 0x0928, 0x7FAB,
        0x0949, 0x7FA9, 0x0969, 0x7FA6, 0x098A, 0x7FA4, 0x09AA, 0x7FA1, 0x09CC, 0x7F9F,
        0x09ED, 0x7F9C, 0x0A0F, 0x7F9A, 0x0A31, 0x7F97, 0x0A53, 0x7F94, 0x0A76, 0x7F91,
        0x0A99, 0x7F8F, 0x0ABC, 0x7F8C, 0x0ADF, 0x7F89, 0x0B03, 0x7F86, 0x0B27, 0x7F82,
        0x0B4B, 0x7F7F, 0x0B70, 0x7F7C, 0x0B94, 0x7F79, 0x0BBA, 0x7F75, 0x0BDF, 0x7F72,
        0x0C05, 0x7F6E, 0x0C2B, 0x7F6B, 0x0C51, 0x7F67, 0x0C77, 0x7F63, 0x0C9E, 0x7F5F,
        0x0CC5, 0x7F5B, 0x0CED, 0x7F58, 0x0D14, 0x7F53, 0x0D3C, 0x7F4F, 0x0D65, 0x7F4B,
        0x0D8D, 0x7F47, 0x0DB6, 0x7F42, 0x0DDF, 0x7F3E, 0x0E08, 0x7F39, 0x0E32, 0x7F35,
        0x0E5C, 0x7F30, 0x0E86, 0x7F2B, 0x0EB1, 0x7F26, 0x0EDC, 0x7F21, 0x0F07, 0x7F1C,
        0x0F32, 0x7F17, 0x0F5E, 0x7F12, 0x0F8A, 0x7F0D, 0x0FB6, 0x7F07, 0x0FE3, 0x7F02,
        0x1010, 0x7EFC, 0x103D, 0x7EF6, 0x106A, 0x7EF0, 0x1098, 0x7EEA, 0x10C6, 0x7EE4,
        0x10F4, 0x7EDE, 0x1123, 0x7ED8, 0x1152, 0x7ED2, 0x1181, 0x7ECB, 0x11B0, 0x7EC5,
        0x11E0, 0x7EBE, 0x1210, 0x7EB7, 0x1240, 0x7EB0, 0x1271, 0x7EA9, 0x12A2, 0x7EA2,
        0x12D3, 0x7E9B, 0x1304, 0x7E93, 0x1336, 0x7E8C, 0x1368, 0x7E84, 0x139A, 0x7E7C,
        0x13CD, 0x7E75, 0x1400, 0x7E6D, 0x1433, 0x7E64, 0x1466, 0x7E5C, 0x149A, 0x7E54,
        0x14CE, 0x7E4B, 0x1502, 0x7E43, 0x1537, 0x7E3A, 0x156C, 0x7E31, 0x15A1, 0x7E28,
        0x15D6, 0x7E1F, 0x160C, 0x7E15, 0x1642, 0x7E0C, 0x1678, 0x7E02, 0x16AE, 0x7DF8,
        0x16E5, 0x7DEF, 0x171C, 0x7DE4, 0x1754, 0x7DDA, 0x178B, 0x7DD0, 0x17C3, 0x7DC5,
        0x17FB, 0x7DBB, 0x1833, 0x7DB0, 0x186C, 0x7DA5, 0x18A5, 0x7D9A, 0x18DE, 0x7D8F,
        0x1918, 0x7D83, 0x1952, 0x7D78, 0x198C, 0x7D6C, 0x19C6, 0x7D60, 0x1A00, 0x7D54,
        0x1A3B, 0x7D48, 0x1A76, 0x7D3B, 0x1AB1, 0x7D2F, 0x1AED, 0x7D22, 0x1B29, 0x7D15,
        0x1B65, 0x7D08, 0x1BA1, 0x7CFA, 0x1BDE, 0x7CED, 0x1C1B, 0x7CDF, 0x1C58, 0x7CD2,
        0x1C95, 0x7CC4, 0x1CD3, 0x7CB5, 0x1D11, 0x7CA7, 0x1D4F, 0x7C98, 0x1D8D, 0x7C8A,
        0x1DCC, 0x7C7B, 0x1E0B, 0x7C6C, 0x1E4A, 0x7C5C, 0x1E89, 0x7C4D, 0x1EC9, 0x7C3D,
        0x1F08, 0x7C2D, 0x1F48, 0x7C1D, 0x1F89, 0x7C0D, 0x1FC9, 0x7BFD, 0x200A, 0x7BEC,
        0x204B, 0x7BDB, 0x208C, 0x7BCA, 0x20CE, 0x7BB9, 0x210F, 0x7BA7, 0x2151, 0x7B95,
        0x2193, 0x7B84, 0x21D6, 0x7B71, 0x2218, 0x7B5F, 0x225B, 0x7B4D, 0x229E, 0x7B3A,
        0x22E1, 0x7B27, 0x2325, 0x7B14, 0x2369, 0x7B00, 0x23AC, 0x7AED, 0x23F1, 0x7AD9,
        0x2435, 0x7AC5, 0x2479, 0x7AB0, 0x24BE, 0x7A9C, 0x2503, 0x7A87, 0x2548, 0x7A72,
        0x258D, 0x7A5D, 0x25D3, 0x7A48, 0x2619, 0x7A32, 0x265F, 0x7A1C, 0x26A5, 0x7A06,
        0x26EB, 0x79F0, 0x2731, 0x79D9, 0x2778, 0x79C2, 0x27BF, 0x79AB, 0x2806, 0x7994,
        0x284D, 0x797C, 0x2895, 0x7965, 0x28DC, 0x794C, 0x2924, 0x7934, 0x296C, 0x791C,
        0x29B4, 0x7903, 0x29FC, 0x78EA, 0x2A45, 0x78D1, 0x2A8E, 0x78B7, 0x2AD6, 0x789D,
        0x2B1F, 0x7883, 0x2B68, 0x7869, 0x2BB2, 0x784F, 0x2BFB, 0x7834, 0x2C45, 0x7819,
        0x2C8E, 0x77FE, 0x2CD8, 0x77E2, 0x2D22, 0x77C6, 0x2D6D, 0x77AA, 0x2DB7, 0x778E,
        0x2E01, 0x7771, 0x2E4C, 0x7754, 0x2E97, 0x7737, 0x2EE2, 0x771A, 0x2F2D, 0x76FC,
        0x2F78, 0x76DE, 0x2FC3, 0x76C0, 0x300F, 0x76A2, 0x305A, 0x7683, 0x30A6, 0x7664,
        0x30F2, 0x7645, 0x313D, 0x7625, 0x318A, 0x7606, 0x31D6, 0x75E5, 0x3222, 0x75C5,
        0x326E, 0x75A4, 0x32BB, 0x7584, 0x3307, 0x7562, 0x3354, 0x7541, 0x33A1, 0x751F,
        0x33EE, 0x74FD, 0x343B, 0x74DB, 0x3488, 0x74B8, 0x34D5, 0x7496, 0x3522, 0x7472,
        0x356F, 0x744F, 0x35BD, 0x742B, 0x360A, 0x7407, 0x3658, 0x73E3, 0x36A5, 0x73BF,
        0x36F3, 0x739A, 0x3741, 0x7375, 0x378F, 0x734F, 0x37DD, 0x732A, 0x382B, 0x7304,
        0x3879, 0x72DD, 0x38C7, 0x72B7, 0x3915, 0x7290, 0x3963, 0x7269, 0x39B1, 0x7242,
        0x3A00, 0x721A, 0x3A4E, 0x71F2, 0x3A9C, 0x71CA, 0x3AEB, 0x71A1, 0x3B39, 0x7178,
        0x3B88, 0x714F, 0x3BD7, 0x7126, 0x3C25, 0x70FC, 0x3C74, 0x70D2, 0x3CC2, 0x70A8,
        0x3D11, 0x707D, 0x3D60, 0x7052, 0x3DAE, 0x7027, 0x3DFD, 0x6FFC, 0x3E4C, 0x6FD0,
        0x3E9B, 0x6FA4, 0x3EEA, 0x6F78, 0x3F38, 0x6F4B, 0x3F87, 0x6F1E, 0x3FD6, 0x6EF1,
        0x4025, 0x6EC4, 0x4073, 0x6E96, 0x40C2, 0x6E68, 0x4111, 0x6E39, 0x4160, 0x6E0B,
        0x41AF, 0x6DDC, 0x41FD, 0x6DAD, 0x424C, 0x6D7D, 0x429B, 0x6D4D, 0x42E9, 0x6D1D,
        0x4338, 0x6CED, 0x4387, 0x6CBC, 0x43D5, 0x6C8B, 0x4424, 0x6C5A, 0x4472, 0x6C28,
        0x44C1, 0x6BF7, 0x450F, 0x6BC4, 0x455E, 0x6B92, 0x45AC, 0x6B5F, 0x45FA, 0x6B2C,
        0x4648, 0x6AF9, 0x4697, 0x6AC6, 0x46E5, 0x6A92, 0x4733, 0x6A5E, 0x4781, 0x6A29,
        0x47CF, 0x69F5, 0x481D, 0x69C0, 0x486B, 0x698A, 0x48B8, 0x6955, 0x4906, 0x691F,
        0x4954, 0x68E9, 0x49A1, 0x68B3, 0x49EF, 0x687C, 0x4A3C, 0x6845, 0x4A89, 0x680E,
        0x4AD7, 0x67D6, 0x4B24, 0x679F, 0x4B71, 0x6767, 0x4BBE, 0x672E, 0x4C0B, 0x66F6,
        0x4C57, 0x66BD, 0x4CA4, 0x6684, 0x4CF0, 0x664A, 0x4D3D, 0x6611, 0x4D89, 0x65D7,
        0x4DD5, 0x659D, 0x4E21, 0x6562, 0x4E6D, 0x6527, 0x4EB9, 0x64EC, 0x4F05, 0x64B1,
        0x4F51, 0x6476, 0x4F9C, 0x643A, 0x4FE8, 0x63FE, 0x5033, 0x63C1, 0x507E, 0x6385,
        0x50C9, 0x6348, 0x5114, 0x630B, 0x515E, 0x62CE, 0x51A9, 0x6290, 0x51F3, 0x6252,
        0x523E, 0x6214, 0x5288, 0x61D6, 0x52D2, 0x6197, 0x531C, 0x6158, 0x5365, 0x6119,
        0x53AF, 0x60DA, 0x53F8, 0x609A, 0x5441, 0x605B, 0x548A, 0x601B, 0x54D3, 0x5FDA,
        0x551C, 0x5F9A, 0x5564, 0x5F59, 0x55AD, 0x5F18, 0x55F5, 0x5ED7, 0x563D, 0x5E95,
        0x5685, 0x5E53, 0x56CD, 0x5E12, 0x5714, 0x5DCF, 0x575B, 0x5D8D, 0x57A3, 0x5D4A,
        0x57E9, 0x5D08, 0x5830, 0x5CC4, 0x5877, 0x5C81, 0x58BD, 0x5C3E, 0x5903, 0x5BFA,
        0x5949, 0x5BB6, 0x598F, 0x5B72, 0x59D5, 0x5B2E, 0x5A1A, 0x5AE9, 0x5A5F, 0x5AA4
    },

    // const WORD16 only_short_window_sine_120[120] =
    {
        0x00D6, 0x7FFE, 0x0283, 0x7FF9, 0x0430, 0x7FED, 0x05DD, 0x7FDD, 0x0789, 0x7FC6,
        0x0935, 0x7FAA, 0x0AE1, 0x7F88, 0x0C8C, 0x7F61, 0x0E36, 0x7F34, 0x0FE0, 0x7F02,
        0x1189, 0x7ECA, 0x1332, 0x7E8C, 0x14DA, 0x7E49, 0x1680, 0x7E01, 0x1826, 0x7DB3,
        0x19CB, 0x7D5F, 0x1B6E, 0x7D06, 0x1D11, 0x7CA7, 0x1EB2, 0x7C43, 0x2051, 0x7BD9,
        0x21F0, 0x7B6A, 0x238D, 0x7AF6, 0x2528, 0x7A7C, 0x26C1, 0x79FD, 0x2859, 0x7978,
        0x29EF, 0x78EE, 0x2B84, 0x785F, 0x2D16, 0x77CB, 0x2EA7, 0x7731, 0x3035, 0x7692,
        0x31C1, 0x75EE, 0x334B, 0x7545, 0x34D3, 0x7496, 0x3659, 0x73E3, 0x37DC, 0x732A,
        0x395D, 0x726C, 0x3ADB, 0x71AA, 0x3C56, 0x70E2, 0x3DCF, 0x7015, 0x3F45, 0x6F44,
        0x40B9, 0x6E6D, 0x4229, 0x6D92, 0x4397, 0x6CB2, 0x4502, 0x6BCD, 0x466A, 0x6AE3,
        0x47CE, 0x69F5, 0x4930, 0x6902, 0x4A8E, 0x680B, 0x4BE9, 0x670E, 0x4D41, 0x660E,
        0x4E95, 0x6509, 0x4FE6, 0x63FF, 0x5133, 0x62F1, 0x527D, 0x61DF, 0x53C3, 0x60C8,
        0x5506, 0x5FAE, 0x5644, 0x5E8F, 0x577F, 0x5D6B, 0x58B6, 0x5C44, 0x59EA, 0x5B19
    },

    // const WORD16 only_short_window_kbd_120[120] =
    {
        0x0001, 0x7FFF, 0x0004, 0x7FFF, 0x0008, 0x7FFF, 0x000E, 0x7FFF, 0x0016, 0x7FFF,
        0x0021, 0x7FFF, 0x0030, 0x7FFF, 0x0042, 0x7FFF, 0x0059, 0x7FFF, 0x0075, 0x7FFF,
        0x0097, 0x7FFF, 0x00C1, 0x7FFE, 0x00F2, 0x7FFE, 0x012D, 0x7FFE, 0x0171, 0x7FFD,
        0x01C1, 0x7FFC, 0x021D, 0x7FFB, 0x0286, 0x7FF9, 0x02FE, 0x7FF6, 0x0385, 0x7FF3,
        0x041E, 0x7FEE, 0x04C9, 0x7FE8, 0x0586, 0x7FE0, 0x0658, 0x7FD7, 0x0740, 0x7FCA,
        0x083E, 0x7FBB, 0x0953, 0x7FA8, 0x0A80, 0x7F91, 0x0BC7, 0x7F74, 0x0D27, 0x7F52,
        0x0EA0, 0x7F28, 0x1035, 0x7EF7, 0x11E3, 0x7EBD, 0x13AD, 0x7E7A, 0x1591, 0x7E2A,
        0x1790, 0x7DCF, 0x19A8, 0x7D66, 0x1BDA, 0x7CEE, 0x1E25, 0x7C65, 0x2087, 0x7BCB,
        0x2300, 0x7B1E, 0x258E, 0x7A5D, 0x2830, 0x7986, 0x2AE5, 0x7898, 0x2DA9, 0x7793,
        0x307D, 0x7675, 0x335D, 0x753D, 0x3647, 0x73EB, 0x393A, 0x727E, 0x3C33, 0x70F5,
        0x3F2F, 0x6F50, 0x422D, 0x6D90, 0x452A, 0x6BB4, 0x4823, 0x69BC, 0x4B16, 0x67A9,
        0x4E01, 0x657B, 0x50E2, 0x6334, 0x53B5, 0x60D4, 0x567A, 0x5E5D, 0x592F, 0x5BD0
    },

    // WORD16 re_arr_tab_32[480];
    {
        0,      15,     30,     45,     60,     75,     90,     105,    120,    135,
        150,    165,    180,    195,    210,    225,    240,    255,    270,    285,
        300,    315,    330,    345,    360,    375,    390,    405,    420,    435,
        450,    465,    32,     47,     62,     77,     92,     107,    122,    137,
        152,    167,    182,    197,    212,    227,    242,    257,    272,    287,
        302,    317,    332,    347,    362,    377,    392,    407,    422,    437,
        452,    467,    2,      17,     64,     79,     94,     109,    124,    139,
        154,    169,    184,    199,    214,    229,    244,    259,    274,    289,
        304,    319,    334,    349,    364,    379,    394,    409,    424,    439,
        454,    469,    4,      19,     34,     49,     96,     111,    126,    141,
        156,    171,    186,    201,    216,    231,    246,    261,    276,    291,
        306,    321,    336,    351,    366,    381,    396,    411,    426,    441,
        456,    471,    6,      21,     36,     51,     66,     81,     128,    143,
        158,    173,    188,    203,    218,    233,    248,    263,    278,    293,
        308,    323,    338,    353,    368,    383,    398,    413,    428,    443,
        458,    473,    8,      23,     38,     53,     68,     83,     98,     113,
        160,    175,    190,    205,    220,    235,    250,    265,    280,    295,
        310,    325,    340,    355,    370,    385,    400,    415,    430,    445,
        460,    475,    10,     25,     40,     55,     70,     85,     100,    115,
        130,    145,    192,    207,    222,    237,    252,    267,    282,    297,
        312,    327,    342,    357,    372,    387,    402,    417,    432,    447,
        462,    477,    12,     27,     42,     57,     72,     87,     102,    117,
        132,    147,    162,    177,    224,    239,    254,    269,    284,    299,
        314,    329,    344,    359,    374,    389,    404,    419,    434,    449,
        464,    479,    14,     29,     44,     59,     74,     89,     104,    119,
        134,    149,    164,    179,    194,    209,    256,    271,    286,    301,
        316,    331,    346,    361,    376,    391,    406,    421,    436,    451,
        466,    1,      16,     31,     46,     61,     76,     91,     106,    121,
        136,    151,    166,    181,    196,    211,    226,    241,    288,    303,
        318,    333,    348,    363,    378,    393,    408,    423,    438,    453,
        468,    3,      18,     33,     48,     63,     78,     93,     108,    123,
        138,    153,    168,    183,    198,    213,    228,    243,    258,    273,
        320,    335,    350,    365,    380,    395,    410,    425,    440,    455,
        470,    5,      20,     35,     50,     65,     80,     95,     110,    125,
        140,    155,    170,    185,    200,    215,    230,    245,    260,    275,
        290,    305,    352,    367,    382,    397,    412,    427,    442,    457,
        472,    7,      22,     37,     52,     67,     82,     97,     112,    127,
        142,    157,    172,    187,    202,    217,    232,    247,    262,    277,
        292,    307,    322,    337,    384,    399,    414,    429,    444,    459,
        474,    9,      24,     39,     54,     69,     84,     99,     114,    129,
        144,    159,    174,    189,    204,    219,    234,    249,    264,    279,
        294,    309,    324,    339,    354,    369,    416,    431,    446,    461,
        476,    11,     26,     41,     56,     71,     86,     101,    116,    131,
        146,    161,    176,    191,    206,    221,    236,    251,    266,    281,
        296,    311,    326,    341,    356,    371,    386,    401,    448,    463,
        478,    13,     28,     43,     58,     73,     88,     103,    118,    133,
        148,    163,    178,    193,    208,    223,    238,    253,    268,    283,
        298,    313,    328,    343,    358,    373,    388,    403,    418,    433
    },

    // const WORD16 re_arr_tab_sml[FFT15 + 1] =
    {
        0,      4,      8,      9,      13,     2,      3,      7,
        11,     12,     1,      5,      6,      10,     14,     0
    },

    // const WORD16 re_arr_tab_4[60] =
    {
        0,      15,     30,     45,     4,      19,     34,     49,     8,      23,
        38,     53,     12,     27,     42,     57,     16,     31,     46,     1,
        20,     35,     50,     5,      24,     39,     54,     9,      28,     43,
        58,     13,     32,     47,     2,      17,     36,     51,     6,      21,
        40,     55,     10,     25,     44,     59,     14,     29,     48,     3,
        18,     33,     52,     7,      22,     37,     56,     11,     26,     41
    },

    // const WORD16 re_arr_tab_15_4[60] =
    {
        0,      4,      8,      12,     16,     20,     24,     28,     32,     36,
        40,     44,     48,     52,     56,     1,      5,      9,      13,     17,
        21,     25,     29,     33,     37,     41,     45,     49,     53,     57,
         2,     6,      10,     14,     18,     22,     26,     30,     34,     38,
        42,     46,     50,     54,     58,     3,      7,      11,     15,     19,
        23,     27,     31,     35,     39,     43,     47,     51,     55,     59
    },

    // const WORD16 re_arr_tab_120[60] =
    {
        0,      16,     32,     48,     4,      20,     36,     52,     8,      24,
        40,     56,     12,     28,     44,     45,     1,      17,     33,     49,
        5,      21,     37,     53,     9,      25,     41,     57,     13,     29,
        30,     46,     2,      18,     34,     50,     6,      22,     38,     54,
        10,     26,     42,     58,     14,     15,     31,     47,     3,      19,
        35,     51,     7,      23,     39,     55,     11,     27,     43,     59
    },

    // WORD16 re_arr_tab_5[FFT15 + 1] =
    {
        0,      3,      6,      9,      12,     5,      8,      11,
        14,     2,      10,     13,     1,      4,      7,      0
    },

    // WORD16 re_arr_tab_3[FFT15 + 1] =
    {
        0,      5,      10,     1,      6,      11,     2,      7,
        12,     3,      8,      13,     4,      9,      14,     0
    },

    // WORD16 re_arr_tab_sml_480[480] =
    {
        0,      160,    320,    96,     256,    416,    192,    352,
        32,     288,    448,    128,    384,    64,     224,    225,
        385,    65,     321,    1,      161,    417,    97,     257,
        33,     193,    353,    129,    289,    449,    450,    130,
        290,    66,     226,    386,    162,    322,    2,      258,
        418,    98,     354,    34,     194,    195,    355,    35,
        291,    451,    131,    387,    67,     227,    3,      163,
        323,    99,     259,    419,    420,    100,    260,    36,
        196,    356,    132,    292,    452,    228,    388,    68,
        324,    4,      164,    165,    325,    5,      261,    421,
        101,    357,    37,     197,    453,    133,    293,    69,
        229,    389,    390,    70,     230,    6,      166,    326,
        102,    262,    422,    198,    358,    38,     294,    454,
        134,    135,    295,    455,    231,    391,    71,     327,
        7,      167,    423,    103,    263,    39,     199,    359,
        360,    40,     200,    456,    136,    296,    72,     232,
        392,    168,    328,    8,      264,    424,    104,    105,
        265,    425,    201,    361,    41,     297,    457,    137,
        393,    73,     233,    9,      169,    329,    330,    10,
        170,    426,    106,    266,    42,     202,    362,    138,
        298,    458,    234,    394,    74,     75,     235,    395,
        171,    331,    11,     267,    427,    107,    363,    43,
        203,    459,    139,    299,    300,    460,    140,    396,
        76,     236,    12,     172,    332,    108,    268,    428,
        204,    364,    44,     45,     205,    365,    141,    301,
        461,    237,    397,    77,     333,    13,     173,    429,
        109,    269,    270,    430,    110,    366,    46,     206,
        462,    142,    302,    78,     238,    398,    174,    334,
        14,     15,     175,    335,    111,    271,    431,    207,
        367,    47,     303,    463,    143,    399,    79,     239,
        240,    400,    80,     336,    16,     176,    432,    112,
        272,    48,     208,    368,    144,    304,    464,    465,
        145,    305,    81,     241,    401,    177,    337,    17,
        273,    433,    113,    369,    49,     209,    210,    370,
        50,     306,    466,    146,    402,    82,     242,    18,
        178,    338,    114,    274,    434,    435,    115,    275,
        51,     211,    371,    147,    307,    467,    243,    403,
        83,     339,    19,     179,    180,    340,    20,     276,
        436,    116,    372,    52,     212,    468,    148,    308,
        84,     244,    404,    405,    85,     245,    21,     181,
        341,    117,    277,    437,    213,    373,    53,     309,
        469,    149,    150,    310,    470,    246,    406,    86,
        342,    22,     182,    438,    118,    278,    54,     214,
        374,    375,    55,     215,    471,    151,    311,    87,
        247,    407,    183,    343,    23,     279,    439,    119,
        120,    280,    440,    216,    376,    56,     312,    472,
        152,    408,    88,     248,    24,     184,    344,    345,
        25,     185,    441,    121,    281,    57,     217,    377,
        153,    313,    473,    249,    409,    89,     90,     250,
        410,    186,    346,    26,     282,    442,    122,    378,
        58,     218,    474,    154,    314,    315,    475,    155,
        411,    91,     251,    27,     187,    347,    123,    283,
        443,    219,    379,    59,     60,     220,    380,    156,
        316,    476,    252,    412,    92,     348,    28,     188,
        444,    124,    284,    285,    445,    125,    381,    61,
        221,    477,    157,    317,    93,     253,    413,    189,
        349,    29,     30,     190,    350,    126,    286,    446,
        222,    382,    62,     318,    478,    158,    414,    94,
        254,    255,    415,    95,     351,    31,     191,    447,
        127,    287,    63,     223,    383,    159,    319,    479
    },

    // WORD32 cosine_array_1920[960] =
    {
        32767,  13,     94,     32767,  32767,  121,    201,    32767,
        32767,  228,    308,    32767,  32766,  335,    416,    32765,
        32765,  442,    523,    32764,  32763,  550,    630,    32762,
        32761,  657,    737,    32760,  32759,  764,    844,    32757,
        32756,  871,    952,    32754,  32753,  978,    1059,   32751,
        32750,  1086,   1166,   32747,  32746,  1193,   1273,   32743,
        32742,  1300,   1380,   32739,  32738,  1407,   1487,   32734,
        32733,  1514,   1594,   32729,  32728,  1621,   1702,   32724,
        32722,  1728,   1809,   32718,  32717,  1835,   1916,   32712,
        32710,  1942,   2023,   32706,  32704,  2049,   2130,   32699,
        32697,  2157,   2237,   32692,  32690,  2263,   2344,   32684,
        32682,  2370,   2451,   32676,  32674,  2477,   2558,   32668,
        32666,  2584,   2664,   32659,  32657,  2691,   2771,   32651,
        32648,  2798,   2878,   32641,  32639,  2905,   2985,   32632,
        32629,  3012,   3092,   32622,  32619,  3118,   3198,   32612,
        32609,  3225,   3305,   32601,  32598,  3332,   3412,   32590,
        32587,  3439,   3518,   32579,  32576,  3545,   3625,   32567,
        32564,  3652,   3732,   32555,  32552,  3758,   3838,   32542,
        32539,  3865,   3945,   32530,  32526,  3971,   4051,   32517,
        32513,  4078,   4157,   32503,  32500,  4184,   4264,   32489,
        32486,  4290,   4370,   32475,  32472,  4397,   4476,   32461,
        32457,  4503,   4583,   32446,  32442,  4609,   4689,   32431,
        32427,  4715,   4795,   32415,  32411,  4821,   4901,   32399,
        32395,  4927,   5007,   32383,  32379,  5033,   5113,   32367,
        32362,  5139,   5219,   32350,  32345,  5245,   5325,   32333,
        32328,  5351,   5430,   32315,  32310,  5457,   5536,   32297,
        32292,  5562,   5642,   32279,  32274,  5668,   5747,   32260,
        32255,  5774,   5853,   32241,  32236,  5879,   5958,   32222,
        32217,  5985,   6064,   32202,  32197,  6090,   6169,   32182,
        32177,  6195,   6274,   32162,  32157,  6301,   6380,   32141,
        32136,  6406,   6485,   32120,  32115,  6511,   6590,   32099,
        32093,  6616,   6695,   32077,  32071,  6721,   6800,   32055,
        32049,  6826,   6905,   32032,  32027,  6931,   7009,   32010,
        32004,  7036,   7114,   31986,  31981,  7140,   7219,   31963,
        31957,  7245,   7323,   31939,  31933,  7349,   7428,   31915,
        31909,  7454,   7532,   31891,  31884,  7558,   7637,   31866,
        31859,  7663,   7741,   31841,  31834,  7767,   7845,   31815,
        31809,  7871,   7949,   31789,  31783,  7975,   8053,   31763,
        31756,  8079,   8157,   31737,  31730,  8183,   8261,   31710,
        31703,  8287,   8364,   31682,  31676,  8390,   8468,   31655,
        31648,  8494,   8572,   31627,  31620,  8597,   8675,   31599,
        31592,  8701,   8778,   31570,  31563,  8804,   8882,   31541,
        31534,  8907,   8985,   31512,  31505,  9011,   9088,   31483,
        31475,  9114,   9191,   31453,  31445,  9217,   9294,   31422,
        31415,  9319,   9397,   31392,  31384,  9422,   9499,   31361,
        31353,  9525,   9602,   31330,  31322,  9627,   9704,   31298,
        31290,  9730,   9807,   31266,  31258,  9832,   9909,   31234,
        31226,  9934,   10011,  31201,  31193,  10037,  10113,  31168,
        31160,  10139,  10215,  31135,  31127,  10241,  10317,  31102,
        31093,  10342,  10419,  31068,  31059,  10444,  10520,  31033,
        31025,  10546,  10622,  30999,  30990,  10647,  10723,  30964,
        30955,  10748,  10824,  30929,  30920,  10850,  10926,  30893,
        30884,  10951,  11027,  30857,  30848,  11052,  11128,  30821,
        30812,  11153,  11228,  30784,  30775,  11253,  11329,  30747,
        30738,  11354,  11430,  30710,  30701,  11455,  11530,  30672,
        30663,  11555,  11630,  30635,  30625,  11655,  11730,  30596,
        30587,  11756,  11831,  30558,  30548,  11856,  11930,  30519,
        30509,  11955,  12030,  30480,  30470,  12055,  12130,  30440,
        30430,  12155,  12230,  30400,  30390,  12254,  12329,  30360,
        30350,  12354,  12428,  30320,  30309,  12453,  12527,  30279,
        30269,  12552,  12626,  30238,  30227,  12651,  12725,  30196,
        30186,  12750,  12824,  30154,  30144,  12849,  12923,  30112,
        30102,  12947,  13021,  30070,  30059,  13046,  13119,  30027,
        30016,  13144,  13218,  29984,  29973,  13242,  13316,  29941,
        29930,  13340,  13414,  29897,  29886,  13438,  13511,  29853,
        29842,  13536,  13609,  29808,  29797,  13633,  13706,  29764,
        29752,  13731,  13804,  29719,  29707,  13828,  13901,  29673,
        29662,  13925,  13998,  29628,  29616,  14022,  14095,  29582,
        29570,  14119,  14192,  29535,  29524,  14216,  14288,  29489,
        29477,  14312,  14385,  29442,  29430,  14409,  14481,  29395,
        29383,  14505,  14577,  29347,  29335,  14601,  14673,  29299,
        29287,  14697,  14769,  29251,  29239,  14793,  14864,  29203,
        29190,  14888,  14960,  29154,  29142,  14984,  15055,  29105,
        29092,  15079,  15150,  29055,  29043,  15174,  15245,  29006,
        28993,  15269,  15340,  28955,  28943,  15364,  15435,  28905,
        28892,  15459,  15529,  28854,  28842,  15553,  15624,  28803,
        28791,  15647,  15718,  28752,  28739,  15741,  15812,  28701,
        28688,  15835,  15906,  28649,  28636,  15929,  15999,  28596,
        28583,  16023,  16093,  28544,  28531,  16116,  16186,  28491,
        28478,  16210,  16279,  28438,  28425,  16303,  16372,  28385,
        28371,  16396,  16465,  28331,  28317,  16488,  16558,  28277,
        28263,  16581,  16650,  28223,  28209,  16673,  16743,  28168,
        28154,  16766,  16835,  28113,  28099,  16858,  16927,  28058,
        28044,  16949,  17018,  28002,  27988,  17041,  17110,  27946,
        27932,  17133,  17201,  27890,  27876,  17224,  17292,  27834,
        27820,  17315,  17383,  27777,  27763,  17406,  17474,  27720,
        27706,  17497,  17565,  27663,  27648,  17587,  17655,  27605,
        27591,  17678,  17745,  27547,  27533,  17768,  17835,  27489,
        27474,  17858,  17925,  27430,  27416,  17948,  18015,  27372,
        27357,  18037,  18104,  27312,  27298,  18127,  18194,  27253,
        27238,  18216,  18283,  27193,  27178,  18305,  18372,  27133,
        27118,  18394,  18460,  27073,  27058,  18483,  18549,  27013,
        26997,  18571,  18637,  26952,  26936,  18659,  18725,  26891,
        26875,  18747,  18813,  26829,  26814,  18835,  18901,  26767,
        26752,  18923,  18988,  26705,  26690,  19010,  19076,  26643,
        26628,  19098,  19163,  26581,  26565,  19185,  19250,  26518,
        26502,  19271,  19336,  26455,  26439,  19358,  19423,  26391,
        26375,  19444,  19509,  26327,  26312,  19531,  19595,  26264,
        26247,  19617,  19681,  26199,  26183,  19702,  19767,  26135,
        26119,  19788,  19852,  26070,  26054,  19873,  19937,  26005,
        25988,  19959,  20022,  25939,  25923,  20043,  20107,  25874,
        25857,  20128,  20192,  25808,  25791,  20213,  20276,  25742,
        25725,  20297,  20360,  25675,  25658,  20381,  20444,  25608,
        25592,  20465,  20528,  25541,  25524,  20549,  20611,  25474,
        25457,  20632,  20694,  25406,  25389,  20715,  20777,  25339,
        25322,  20798,  20860,  25270,  25253,  20881,  20943,  25202,
        25185,  20963,  21025,  25133,  25116,  21046,  21107,  25064,
        25047,  21128,  21189,  24995,  24978,  21210,  21271,  24926,
        24908,  21291,  21352,  24856,  24838,  21373,  21434,  24786,
        24768,  21454,  21515,  24716,  24698,  21535,  21595,  24645,
        24627,  21616,  21676,  24574,  24557,  21696,  21756,  24503,
        24485,  21776,  21836,  24432,  24414,  21856,  21916,  24360,
        24342,  21936,  21996,  24288,  24270,  22016,  22075,  24216,
        24198,  22095,  22154,  24144,  24126,  22174,  22233,  24071,
        24053,  22253,  22312,  23998,  23980,  22331,  22390,  23925,
        23907,  22410,  22468,  23852,  23834,  22488,  22546,  23778,
        23760,  22566,  22624,  23704,  23686,  22643,  22701,  23630,
        23612,  22721,  22779,  23556,  23537,  22798,  22856,  23481,
        23462,  22875,  22932,  23406,  23387,  22951,  23009,  23331,
        23312,  23028,  23085,  23256,  23237,  23104,  23161,  23180
    },


    // const WORD16 w_512[2 * 510] =
    {
        0,      32767,  0,      32767,  0,      32767,  402,    32766,  804,    32758,
        1206,   32746,  804,    32758,  1608,   32729,  2411,   32679,  1206,   32746,
        2411,   32679,  3612,   32568,  1608,   32729,  3212,   32610,  4808,   32413,
        2009,   32706,  4011,   32522,  5998,   32214,  2411,   32679,  4808,   32413,
        7180,   31972,  2811,   32647,  5602,   32286,  8351,   31686,  3212,   32610,
        6393,   32138,  9512,   31357,  3612,   32568,  7180,   31972,  10660,  30986,
        4011,   32522,  7962,   31786,  11793,  30572,  4410,   32470,  8740,   31581,
        12910,  30118,  4808,   32413,  9512,   31357,  14010,  29622,  5205,   32352,
        10279,  31114,  15091,  29086,  5602,   32286,  11039,  30853,  16151,  28511,
        5998,   32214,  11793,  30572,  17190,  27897,  6393,   32138,  12540,  30274,
        18205,  27246,  6787,   32058,  13279,  29957,  19195,  26557,  7180,   31972,
        14010,  29622,  20160,  25833,  7571,   31881,  14733,  29269,  21097,  25073,
        7962,   31786,  15447,  28899,  22006,  24279,  8351,   31686,  16151,  28511,
        22884,  23453,  8740,   31581,  16846,  28106,  23732,  22595,  9127,   31471,
        17531,  27684,  24548,  21706,  9512,   31357,  18205,  27246,  25330,  20788,
        9896,   31238,  18868,  26791,  26078,  19841,  10279,  31114,  19520,  26320,
        26791,  18868,  10660,  30986,  20160,  25833,  27467,  17869,  11039,  30853,
        20788,  25330,  28106,  16846,  11417,  30715,  21403,  24812,  28707,  15800,
        11793,  30572,  22006,  24279,  29269,  14733,  12167,  30425,  22595,  23732,
        29792,  13646,  12540,  30274,  23170,  23170,  30274,  12540,  12910,  30118,
        23732,  22595,  30715,  11417,  13279,  29957,  24279,  22006,  31114,  10279,
        13646,  29792,  24812,  21403,  31471,  9127,   14010,  29622,  25330,  20788,
        31786,  7962,   14373,  29448,  25833,  20160,  32058,  6787,   14733,  29269,
        26320,  19520,  32286,  5602,   15091,  29086,  26791,  18868,  32470,  4410,
        15447,  28899,  27246,  18205,  32610,  3212,   15800,  28707,  27684,  17531,
        32706,  2009,   16151,  28511,  28106,  16846,  32758,  804,    16500,  28311,
        28511,  16151,  32766,  -402,   16846,  28106,  28899,  15447,  32729,  -1608,
        17190,  27897,  29269,  14733,  32647,  -2811,  17531,  27684,  29622,  14010,
        32522,  -4011,  17869,  27467,  29957,  13279,  32352,  -5205,  18205,  27246,
        30274,  12540,  32138,  -6393,  18538,  27020,  30572,  11793,  31881,  -7571,
        18868,  26791,  30853,  11039,  31581,  -8740,  19195,  26557,  31114,  10279,
        31238,  -9896,  19520,  26320,  31357,  9512,   30853,  -11039, 19841,  26078,
        31581,  8740,   30425,  -12167, 20160,  25833,  31786,  7962,   29957,  -13279,
        20475,  25583,  31972,  7180,   29448, -14373,  20788,  25330,  32138,  6393,
        28899,  -15447, 21097,  25073,  32286,  5602,   28311,  -16500, 21403,  24812,
        32413,  4808,   27684,  -17531, 21706,  24548,  32522,  4011,   27020,  -18538,
        22006,  24279,  32610,  3212,   26320,  -19520, 22302,  24008,  32679,  2411,
        25583,  -20475, 22595,  23732,  32729,  1608,   24812,  -21403, 22884,  23453,
        32758,  804,    24008,  -22302, 23170,  23170,  32767,  0,      23170,  -23170,
        23453,  22884,  32758,  -804,   22302,  -24008, 23732,  22595,  32729,  -1608,
        21403,  -24812, 24008,  22302,  32679,  -2411,  20475,  -25583, 24279,  22006,
        32610,  -3212,  19520,  -26320, 24548,  21706,  32522,  -4011,  18538,  -27020,
        24812,  21403,  32413,  -4808,  17531,  -27684, 25073,  21097,  32286,  -5602,
        16500,  -28311, 25330,  20788,  32138,  -6393,  15447,  -28899, 25583,  20475,
        31972,  -7180,  14373,  -29448, 25833,  20160,  31786,  -7962,  13279,  -29957,
        26078,  19841,  31581,  -8740,  12167,  -30425, 26320,  19520,  31357,  -9512,
        11039,  -30853, 26557,  19195,  31114,  -10279, 9896,   -31238, 26791,  18868,
        30853,  -11039, 8740,   -31581, 27020,  18538,  30572,  -11793, 7571,   -31881,
        27246,  18205,  30274,  -12540, 6393,   -32138, 27467,  17869,  29957,  -13279,
        5205,   -32352, 27684,  17531,  29622,  -14010, 4011,   -32522, 27897,  17190,
        29269,  -14733, 2811,   -32647, 28106,  16846,  28899,  -15447, 1608,   -32729,
        28311,  16500,  28511,  -16151, 402,    -32766, 28511,  16151,  28106,  -16846,
   -    804,    -32758, 28707,  15800,  27684,  -17531, -2009,  -32706, 28899,  15447,
        27246,  -18205, -3212,  -32610, 29086,  15091,  26791,  -18868, -4410,  -32470,
        29269,  14733,  26320,  -19520, -5602,  -32286, 29448,  14373,  25833,  -20160,
   -    6787,   -32058, 29622,  14010,  25330,  -20788, -7962,  -31786, 29792,  13646,
        24812,  -21403, -9127,  -31471, 29957,  13279,  24279,  -22006, -10279, -31114,
        30118,  12910,  23732,  -22595, -11417, -30715, 30274,  12540,  23170,  -23170,
   -    12540,  -30274, 30425,  12167,  22595,  -23732, -13646, -29792, 30572,  11793,
        22006,  -24279, -14733, -29269, 30715,  11417,  21403,  -24812, -15800, -28707,
        30853,  11039,  20788,  -25330, -16846, -28106, 30986,  10660,  20160,  -25833,
   -    17869,  -27467, 31114,  10279,  19520,  -26320, -18868, -26791, 31238,  9896,
        18868,  -26791, -19841, -26078, 31357,  9512,   18205,  -27246, -20788, -25330,
        31471,  9127,   17531,  -27684, -21706, -24548, 31581,  8740,   16846,  -28106,
   -    22595,  -23732, 31686,  8351,   16151,  -28511, -23453, -22884, 31786,  7962,
        15447,  -28899, -24279, -22006, 31881,  7571,   14733,  -29269, -25073, -21097,
        31972,  7180,   14010,  -29622, -25833, -20160, 32058,  6787,   13279,  -29957,
   -    26557,  -19195, 32138,  6393,   12540,  -30274, -27246, -18205, 32214,  5998,
        11793,  -30572, -27897, -17190, 32286,  5602,   11039,  -30853, -28511, -16151,
        32352,  5205,   10279,  -31114, -29086, -15091, 32413,  4808,   9512,   -31357,
   -    29622,  -14010, 32470,  4410,   8740,   -31581, -30118, -12910, 32522,  4011,
        7962,   -31786, -30572, -11793, 32568,  3612,   7180,   -31972, -30986, -10660,
        32610,  3212,   6393,   -32138, -31357, -9512,  32647,  2811,   5602,   -32286,
   -    31686,  -8351,  32679,  2411,   4808,   -32413, -31972, -7180,  32706,  2009,
        4011,   -32522, -32214, -5998,  32729,  1608,   3212,   -32610, -32413, -4808,
        32746,  1206,   2411,   -32679, -32568, -3612,  32758,  804,    1608,   -32729,
   -    32679,  -2411,  32766,  402,    804,    -32758, -32746, -1206,  0,      32767,
        0,      32767,  0,      32767,  1608,   32729,  3212,   32610,  4808,   32413,
        3212,   32610,  6393,   32138,  9512,   31357,  4808,   32413,  9512,   31357,
        14010,  29622,  6393,   32138,  12540,  30274,  18205,  27246,  7962,   31786,
        15447,  28899,  22006,  24279,  9512,   31357,  18205,  27246,  25330,  20788,
        11039,  30853,  20788,  25330,  28106,  16846,  12540,  30274,  23170,  23170,
        30274,  12540,  14010,  29622,  25330,  20788,  31786,  7962,   15447,  28899,
        27246,  18205,  32610,  3212,   16846,  28106,  28899,  15447,  32729,  -1608,
        18205,  27246,  30274,  12540,  32138,  -6393,  19520,  26320,  31357,   9512,
        30853, -11039,  20788,  25330,  32138,  6393,   28899,  -15447, 22006,  24279,
        32610,  3212,   26320,  -19520, 23170,  23170,  32767,  0,      23170,  -23170,
        24279,  22006,  32610,  -3212,  19520,  -26320, 25330,  20788,  32138,  -6393,
        15447,  -28899, 26320,  19520,  31357,  -9512,  11039,  -30853, 27246,  18205,
        30274,  -12540, 6393,   -32138, 28106,  16846,  28899,  -15447, 1608,   -32729,
        28899,  15447,  27246,  -18205, -3212,  -32610, 29622,  14010,  25330,  -20788,
   -    7962,   -31786, 30274,  12540,  23170,  -23170, -12540, -30274, 30853,  11039,
        20788,  -25330, -16846, -28106, 31357,  9512,   18205,  -27246, -20788, -25330,
        31786,  7962,   15447,  -28899, -24279, -22006, 32138,  6393,   12540,  -30274,
   -    27246,  -18205, 32413,  4808,   9512,   -31357, -29622, -14010, 32610,  3212,
        6393,   -32138, -31357, -9512,  32729,  1608,   3212,   -32610, -32413, -4808,
        0,      32767,  0,      32767,  0,      32767,  6393,   32138,  12540,  30274,
        18205,  27246,  12540,  30274,  23170,  23170,  30274,  12540,  18205,  27246,
        30274,  12540,  32138,  -6393,  23170,  23170,  32767,  0,      23170,  -23170,
        27246,  18205,  30274,  -12540, 6393,   -32138, 30274,  12540,  23170,  -23170,
   -    12540,  -30274, 32138,  6393,   12540,  -30274, -27246, -18205, 0,      32767,
        0,      32767,  0,      32767,  23170,  23170,  32767,  0,      23170,  -23170,
    },


    // WORD16 w_32[60]=
    {
        0,      32767,  0,      32767,  0,      32767,
        6393,   32137,  12539,  30273,  18204,  27245,
        12539,  30273,  23170,  23170,  30273,  12539,
        18204,  27245,  30273,  12539,  32137,  -6392,
        23170,  23170,  32767,  0,      23170,  -23169,
        27245,  18204,  30273,  -12538, 6393,   -32136,
        30273,  12539,  23170,  -23169, -12538, -30272,
        32137,  6393,   12539,  -30272, -27244, -18203,
        0,      32767,  0,      32767,  0,      32767,
        23170,  23170,  32767,  0,      23170,  -23169
    },

    // const WORD16 cosine_array_240[120] =
    {
        32767,  107,    751,    32759,  32754,  965,    1608,   32729,
        32717,  1822,   2464,   32675,  32658,  2678,   3319,   32600,
        32577,  3532,   4171,   32501,  32473,  4383,   5020,   32381,
        32348,  5232,   5866,   32239,  32200,  6077,   6708,   32074,
        32029,  6918,   7545,   31887,  31837,  7754,   8377,   31679,
        31624,  8585,   9204,   31449,  31388,  9409,   10024,  31197,
        31131,  10228,  10837,  30924,  30853,  11039,  11643,  30630,
        30553,  11843,  12441,  30315,  30232,  12639,  13230,  29979,
        29891,  13426,  14010,  29622,  29530,  14204,  14781,  29245,
        29148,  14972,  15541,  28848,  28746,  15730,  16291,  28431,
        28324,  16477,  17030,  27995,  27883,  17213,  17757,  27540,
        27423,  17937,  18472,  27066,  26944,  18648,  19174,  26573,
        26447,  19347,  19863,  26062,  25931,  20033,  20538,  25533,
        25398,  20705,  21199,  24986,  24847,  21363,  21846,  24423,
        24279,  22006,  22478,  23843,  23695,  22634,  23095,  23246
    },
};