1cabdff1aSopenharmony_ci/*
2cabdff1aSopenharmony_ci * Real Audio 1.0 (14.4K)
3cabdff1aSopenharmony_ci * Copyright (c) 2003 The FFmpeg project
4cabdff1aSopenharmony_ci *
5cabdff1aSopenharmony_ci * This file is part of FFmpeg.
6cabdff1aSopenharmony_ci *
7cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or
8cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public
9cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either
10cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version.
11cabdff1aSopenharmony_ci *
12cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful,
13cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of
14cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15cabdff1aSopenharmony_ci * Lesser General Public License for more details.
16cabdff1aSopenharmony_ci *
17cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public
18cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software
19cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20cabdff1aSopenharmony_ci */
21cabdff1aSopenharmony_ci
22cabdff1aSopenharmony_ci#include <stdint.h>
23cabdff1aSopenharmony_ci#include "avcodec.h"
24cabdff1aSopenharmony_ci#include "celp_filters.h"
25cabdff1aSopenharmony_ci#include "mathops.h"
26cabdff1aSopenharmony_ci#include "ra144.h"
27cabdff1aSopenharmony_ci
28cabdff1aSopenharmony_ciconst int16_t ff_gain_val_tab[256][3] = {
29cabdff1aSopenharmony_ci    { 541, 956,  768}, { 877, 581,  568}, { 675,1574,  635}, {1248,1464,  668},
30cabdff1aSopenharmony_ci    {1246, 839, 1394}, {2560,1386,  991}, { 925, 687,  608}, {2208, 797, 1144},
31cabdff1aSopenharmony_ci    { 535, 832,  799}, { 762, 605, 1154}, { 832,1122, 1003}, {1180, 687, 1176},
32cabdff1aSopenharmony_ci    {1292, 901,  732}, {1656, 689,  896}, {1750,1248,  848}, {2284, 942, 1022},
33cabdff1aSopenharmony_ci    { 824,1472,  643}, { 517, 765,  512}, { 562,1816, 1522}, { 694,1826, 2700},
34cabdff1aSopenharmony_ci    { 704, 524,  672}, {1442, 757, 2232}, { 884, 551, 1266}, {2232,1007, 1692},
35cabdff1aSopenharmony_ci    { 932, 746,  777}, {1132, 822,  926}, {1226, 771,  611}, {2948,1342, 1008},
36cabdff1aSopenharmony_ci    {1302, 594, 1158}, {1602, 636, 1128}, {3408, 910, 1438}, {1996, 614,  575},
37cabdff1aSopenharmony_ci    { 665, 935,  628}, { 631,1192,  829}, { 644, 926, 1052}, { 879, 988, 1226},
38cabdff1aSopenharmony_ci    { 941,2768, 2772}, { 565,1344, 2304}, { 547, 628,  740}, { 639, 532, 1074},
39cabdff1aSopenharmony_ci    { 955,1208,  598}, {1124,1160,  900}, {1206, 899, 1242}, { 746, 533,  624},
40cabdff1aSopenharmony_ci    {1458,1028,  735}, {1706,1102,  692}, {1898,1018, 1004}, {2176, 988,  735},
41cabdff1aSopenharmony_ci    {1578, 782, 1642}, { 897, 516,  754}, {2068, 702, 1656}, {2344, 818, 1526},
42cabdff1aSopenharmony_ci    { 907, 652,  592}, {1056, 652,  642}, {2124,1416,  780}, {2664,1250,  727},
43cabdff1aSopenharmony_ci    {1894, 727, 1108}, {2196, 657,  981}, {4840, 920, 1704}, {4992,1238,  983},
44cabdff1aSopenharmony_ci    {2420, 909, 1094}, {2760, 935, 1032}, {2800, 612,  853}, {3068, 832,  574},
45cabdff1aSopenharmony_ci    { 523,1796,  923}, { 722,1916, 1382}, {1226,1542,  928}, { 758, 757,  584},
46cabdff1aSopenharmony_ci    { 512,1134,  577}, { 615,1276,  698}, { 574,2568, 2356}, { 993,2728, 3512},
47cabdff1aSopenharmony_ci    { 539, 890,  913}, { 694, 928, 1088}, { 805, 600, 1360}, {2160, 951, 3128},
48cabdff1aSopenharmony_ci    { 816, 950,  590}, { 955, 847,  811}, {1094, 883,  556}, {1304, 888,  604},
49cabdff1aSopenharmony_ci    { 863,1170,  855}, {1023, 997, 1032}, { 932,1228, 1280}, { 627, 564,  573},
50cabdff1aSopenharmony_ci    { 876, 900, 1448}, {1030, 857, 1792}, {1294, 953, 1758}, {1612, 854, 1714},
51cabdff1aSopenharmony_ci    {1090,1166,  631}, {1314,1202,  751}, {1480, 905,  795}, {1682,1016,  568},
52cabdff1aSopenharmony_ci    {1494,1178,  983}, { 878, 613,  526}, {1728,1446,  779}, {2136,1348,  774},
53cabdff1aSopenharmony_ci    { 950, 649,  939}, {1180, 703,  899}, {1236, 527, 1158}, {1450, 647,  972},
54cabdff1aSopenharmony_ci    {1282, 647,  707}, {1460, 663,  644}, {1614, 572,  578}, {3516,1222,  821},
55cabdff1aSopenharmony_ci    {2668, 729, 1682}, {3128, 585, 1502}, {3208, 733,  976}, {6800, 871, 1416},
56cabdff1aSopenharmony_ci    {3480, 743, 1408}, {3764, 899, 1170}, {3772, 632,  875}, {4092, 732,  638},
57cabdff1aSopenharmony_ci    {3112, 753, 2620}, {3372, 945, 1890}, {3768, 969, 2288}, {2016, 559,  854},
58cabdff1aSopenharmony_ci    {1736, 729,  787}, {1940, 686,  547}, {2140, 635,  674}, {4480,1272,  828},
59cabdff1aSopenharmony_ci    {3976, 592, 1666}, {4384, 621, 1388}, {4400, 801,  955}, {4656, 522,  646},
60cabdff1aSopenharmony_ci    {4848, 625, 1636}, {4984, 591,  874}, {5352, 535, 1001}, {11216,938, 1184},
61cabdff1aSopenharmony_ci    { 925,3280, 1476}, { 735,1580, 1088}, {1150,1576,  674}, { 655, 783,  528},
62cabdff1aSopenharmony_ci    { 527,2052, 1354}, { 782,1704, 1880}, { 578, 910, 1026}, { 692, 882, 1468},
63cabdff1aSopenharmony_ci    { 586, 683,  715}, { 739, 609,  717}, { 778, 773,  697}, { 922, 785,  813},
64cabdff1aSopenharmony_ci    { 766, 651,  984}, { 978, 596, 1030}, {1070, 757, 1080}, {1324, 687, 1178},
65cabdff1aSopenharmony_ci    {1108,2144,  979}, { 723, 982,  690}, { 936, 956,  527}, {1180,1002,  547},
66cabdff1aSopenharmony_ci    { 517,1306,  825}, { 832,1184,  974}, {1024, 957,  903}, {1262,1090,  906},
67cabdff1aSopenharmony_ci    {1028, 720,  649}, {1192, 679,  694}, {2468,1480,  979}, {2844,1370,  877},
68cabdff1aSopenharmony_ci    {1310, 835,  848}, {1508, 839,  698}, {1742,1030,  769}, {1910, 852,  573},
69cabdff1aSopenharmony_ci    {1280, 859, 1174}, {1584, 863, 1108}, {1686, 708, 1364}, {1942, 768, 1104},
70cabdff1aSopenharmony_ci    { 891, 536,  690}, {1016, 560,  663}, {2172, 870, 1348}, {2404, 999, 1170},
71cabdff1aSopenharmony_ci    {1890, 966,  889}, {2116, 912,  777}, {2296,1020,  714}, {4872,1844,  932},
72cabdff1aSopenharmony_ci    {2392, 778,  929}, {2604, 772,  744}, {2764, 957,  722}, {5832,1532,  984},
73cabdff1aSopenharmony_ci    {2188, 519, 1264}, {2332, 532,  922}, {5064, 995, 2412}, {2708, 571,  874},
74cabdff1aSopenharmony_ci    {2408, 545,  666}, {5016,1084,  875}, {5376, 983, 1196}, {5536, 979,  730},
75cabdff1aSopenharmony_ci    {5344, 634, 1744}, {5688, 706, 1348}, {5912, 977, 1190}, {6072, 905,  763},
76cabdff1aSopenharmony_ci    {6048, 582, 1526}, {11968,1013,1816}, {12864,937, 1900}, {12560,1086, 998},
77cabdff1aSopenharmony_ci    {1998, 684, 1884}, {2504, 633, 1992}, {1252, 567,  835}, {1478, 571,  973},
78cabdff1aSopenharmony_ci    {2620, 769, 1414}, {2808, 952, 1142}, {2908, 712, 1028}, {2976, 686,  741},
79cabdff1aSopenharmony_ci    {1462, 552,  714}, {3296, 991, 1452}, {1590, 615,  544}, {3480,1150,  824},
80cabdff1aSopenharmony_ci    {3212, 832,  923}, {3276, 839,  531}, {3548, 786,  852}, {3732, 764,  570},
81cabdff1aSopenharmony_ci    {5728, 906, 2616}, {6272, 804, 2252}, {3096, 535,  876}, {3228, 598,  649},
82cabdff1aSopenharmony_ci    {6536, 759, 1436}, {6648, 993,  846}, {6864, 567, 1210},{14016,1012, 1302},
83cabdff1aSopenharmony_ci    {3408, 548, 1098}, {7160,1008, 1742}, {7136,1000, 1182}, {7480,1032,  836},
84cabdff1aSopenharmony_ci    {7448, 612, 1552}, {7744, 614,  816}, {8384, 777, 1438}, {8784, 694,  786},
85cabdff1aSopenharmony_ci    { 882,1508, 1068}, { 597, 837,  766}, {1270, 954, 1408}, { 803, 550,  798},
86cabdff1aSopenharmony_ci    {1398,1308,  798}, {1848,1534,  738}, { 970, 675,  608}, {1264, 706,  684},
87cabdff1aSopenharmony_ci    {1716, 767, 1126}, {2108, 765, 1404}, {2236, 924, 1003}, {2472,1048,  611},
88cabdff1aSopenharmony_ci    { 999, 942,  963}, {1094, 857,  935}, {2936, 926, 1138}, {1934, 746,  551},
89cabdff1aSopenharmony_ci    {3336, 633, 1762}, {3764, 701, 1454}, {1890, 564,  636}, {4096,1126,  793},
90cabdff1aSopenharmony_ci    {3936, 556, 1140}, {3936, 540,  740}, {4216, 764,  874}, {8480,1328, 1014},
91cabdff1aSopenharmony_ci    {2184, 515, 1042}, {4432, 934, 1344}, {4784, 945, 1112}, {5016,1062,  733},
92cabdff1aSopenharmony_ci    {9216,1020, 2028}, {9968, 924, 1188}, {5424, 909, 1206}, {6512, 744, 1086}
93cabdff1aSopenharmony_ci};
94cabdff1aSopenharmony_ci
95cabdff1aSopenharmony_ciconst uint8_t ff_gain_exp_tab[256] = {
96cabdff1aSopenharmony_ci   15, 15, 15, 15, 15, 16, 14, 15, 14, 14, 14, 14, 14, 14, 14, 14,
97cabdff1aSopenharmony_ci   14, 13, 14, 14, 13, 14, 13, 14, 13, 13, 13, 14, 13, 13, 14, 13,
98cabdff1aSopenharmony_ci   13, 13, 13, 13, 14, 13, 12, 12, 13, 13, 13, 12, 13, 13, 13, 13,
99cabdff1aSopenharmony_ci   13, 12, 13, 13, 12, 12, 13, 13, 13, 13, 14, 14, 13, 13, 13, 13,
100cabdff1aSopenharmony_ci   13, 13, 13, 12, 12, 12, 13, 13, 12, 12, 12, 13, 12, 12, 12, 12,
101cabdff1aSopenharmony_ci   12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12,
102cabdff1aSopenharmony_ci   12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 13, 13, 13, 13,
103cabdff1aSopenharmony_ci   13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14,
104cabdff1aSopenharmony_ci   13, 12, 12, 11, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
105cabdff1aSopenharmony_ci   12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 11, 11, 11, 11,
106cabdff1aSopenharmony_ci   12, 12, 12, 12, 11, 11, 12, 12, 12, 12, 12, 13, 12, 12, 12, 13,
107cabdff1aSopenharmony_ci   12, 12, 13, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14,
108cabdff1aSopenharmony_ci   12, 12, 11, 11, 12, 12, 12, 12, 11, 12, 11, 12, 12, 12, 12, 12,
109cabdff1aSopenharmony_ci   13, 13, 12, 12, 13, 13, 13, 14, 12, 13, 13, 13, 13, 13, 13, 13,
110cabdff1aSopenharmony_ci   11, 10, 11, 10, 11, 11, 10, 10, 11, 11, 11, 11, 10,  9, 11, 10,
111cabdff1aSopenharmony_ci   12, 12, 11, 12, 12, 12, 12, 13, 11, 12, 12, 12, 13, 13, 12, 12
112cabdff1aSopenharmony_ci};
113cabdff1aSopenharmony_ci
114cabdff1aSopenharmony_ciconst int8_t ff_cb1_vects[128][40]={
115cabdff1aSopenharmony_ci    {
116cabdff1aSopenharmony_ci     38,  -4,  15,  -4,  14, -13,  12, -11,  -2,  -6,
117cabdff1aSopenharmony_ci     -6, -11, -45, -16, -11, -13,  -7,   6, -12,   4,
118cabdff1aSopenharmony_ci    -20,   3, -16,  12,  -1,  12,  46,  24,   0,  33,
119cabdff1aSopenharmony_ci     -3,   9, -12, -12,  -8,  -7,  17,  -6,   0,  -2,
120cabdff1aSopenharmony_ci    }, {
121cabdff1aSopenharmony_ci     60, -16,   3, -22,  10, -32,   0, -28, -17, -18,
122cabdff1aSopenharmony_ci     -3, -25, -37, -23, -10,   3,   2,   3,   0,   3,
123cabdff1aSopenharmony_ci    -14,   0, -14,  -1,   0,   2,  32,   9,  -1,  25,
124cabdff1aSopenharmony_ci      7,  13,  -5,  13,   8,   1,   2,   8, -10,   6,
125cabdff1aSopenharmony_ci    }, {
126cabdff1aSopenharmony_ci     27, -12,  28,  -2,   6,  -7,  15,   9, -11,   1,
127cabdff1aSopenharmony_ci    -13, -11, -40,   4, -29, -14, -19,  -5, -23,  -8,
128cabdff1aSopenharmony_ci    -30, -13, -17,   0, -14,  12,  34,  20,  -2,  25,
129cabdff1aSopenharmony_ci      2, -16,  -4, -12,  15,  16,  29,   7,  24,  10,
130cabdff1aSopenharmony_ci    }, {
131cabdff1aSopenharmony_ci     49, -24,  16, -20,   2, -26,   2,  -7, -25, -10,
132cabdff1aSopenharmony_ci    -11, -25, -32,  -3, -27,   2,  -8,  -8, -11,  -9,
133cabdff1aSopenharmony_ci    -24, -17, -16, -14, -13,   2,  20,   5,  -4,  17,
134cabdff1aSopenharmony_ci     14, -12,   3,  13,  33,  25,  14,  23,  15,  19,
135cabdff1aSopenharmony_ci    }, {
136cabdff1aSopenharmony_ci     46,  -6,  21,   8,  -2, -16,  -5,  -8, -11,   4,
137cabdff1aSopenharmony_ci      8,  15, -24,   4,  -2, -26,  -3, -16, -16, -14,
138cabdff1aSopenharmony_ci     -9,  -2,  -1,   4,  19,   7,  36,  17,   9,  13,
139cabdff1aSopenharmony_ci      0,  31,  -5, -12,   7,  -8,  11, -15, -13,  -4,
140cabdff1aSopenharmony_ci    }, {
141cabdff1aSopenharmony_ci     68, -18,   9,  -9,  -6, -35, -18, -25, -26,  -7,
142cabdff1aSopenharmony_ci     10,   1, -16,  -3,  -1,  -9,   6, -19,  -4, -15,
143cabdff1aSopenharmony_ci     -4,  -6,   0,  -8,  20,  -2,  23,   2,   7,   5,
144cabdff1aSopenharmony_ci     12,  35,   1,  13,  24,   0,  -3,   0, -22,   4,
145cabdff1aSopenharmony_ci    }, {
146cabdff1aSopenharmony_ci     35, -14,  34,  10, -10, -10,  -1,  12, -20,  12,
147cabdff1aSopenharmony_ci      0,  15, -18,  24, -20, -27, -14, -28, -27, -27,
148cabdff1aSopenharmony_ci    -20, -19,  -2,  -8,   5,   7,  25,  13,   5,   5,
149cabdff1aSopenharmony_ci      6,   5,   2, -12,  31,  15,  23,  -1,  12,   8,
150cabdff1aSopenharmony_ci    }, {
151cabdff1aSopenharmony_ci     57, -26,  22,  -7, -14, -28, -14,  -3, -35,   0,
152cabdff1aSopenharmony_ci      3,   1, -11,  16, -18, -10,  -4, -31, -15, -28,
153cabdff1aSopenharmony_ci    -14, -23,  -1, -21,   7,  -2,  11,  -1,   3,  -1,
154cabdff1aSopenharmony_ci     18,   9,  10,  13,  49,  24,   8,  14,   2,  16,
155cabdff1aSopenharmony_ci    }, {
156cabdff1aSopenharmony_ci     25,  15,  22,  11,  18,   4,  15, -22,   8,  -2,
157cabdff1aSopenharmony_ci    -17,  -9, -48, -20, -30, -17, -16,  11,  -1,  16,
158cabdff1aSopenharmony_ci      2,  10,  -5,  26,  -2,  -4,  22,   0,   2,  10,
159cabdff1aSopenharmony_ci     -6,  13, -14,  10, -23,   0,  10,  -2,   1,   0,
160cabdff1aSopenharmony_ci    }, {
161cabdff1aSopenharmony_ci     47,   3,  11,  -6,  15, -13,   2, -38,  -6, -13,
162cabdff1aSopenharmony_ci    -15, -22, -40, -28, -28,   0,  -5,   8,  10,  15,
163cabdff1aSopenharmony_ci      7,   7,  -4,  13,  -1, -14,   9, -14,   0,   2,
164cabdff1aSopenharmony_ci      4,  18,  -7,  36,  -6,   8,  -3,  13,  -7,   8,
165cabdff1aSopenharmony_ci    }, {
166cabdff1aSopenharmony_ci     14,   7,  36,  13,  10,  10,  18,   0,   0,   5,
167cabdff1aSopenharmony_ci    -25,  -8, -43,   0, -48, -18, -27,   0, -12,   3,
168cabdff1aSopenharmony_ci     -7,  -6,  -7,  13, -15,  -5,  11,  -3,   0,   2,
169cabdff1aSopenharmony_ci      0, -12,  -6,  10,   0,  23,  22,  11,  26,  12,
170cabdff1aSopenharmony_ci    }, {
171cabdff1aSopenharmony_ci     36,  -5,  24,  -4,   7,  -7,   6, -17, -14,  -5,
172cabdff1aSopenharmony_ci    -22, -22, -35,  -8, -46,  -1, -17,  -3,   0,   2,
173cabdff1aSopenharmony_ci     -2, -10,  -5,   0, -14, -15,  -2, -18,  -2,  -4,
174cabdff1aSopenharmony_ci     11,  -7,   1,  36,  18,  32,   7,  27,  17,  20,
175cabdff1aSopenharmony_ci    }, {
176cabdff1aSopenharmony_ci     33,  13,  29,  24,   1,   1,  -2, -18,   0,   9,
177cabdff1aSopenharmony_ci     -3,  17, -27,   0, -21, -30, -12, -11,  -5,  -2,
178cabdff1aSopenharmony_ci     12,   4,   9,  19,  18,  -9,  13,  -6,  11,  -8,
179cabdff1aSopenharmony_ci     -2,  35,  -8,  10,  -7,  -1,   4, -11, -10,  -2,
180cabdff1aSopenharmony_ci    }, {
181cabdff1aSopenharmony_ci     55,   1,  17,   6,  -1, -16, -15, -35, -15,  -2,
182cabdff1aSopenharmony_ci      0,   4, -19,  -8, -20, -13,  -1, -14,   7,  -3,
183cabdff1aSopenharmony_ci     18,   0,  10,   5,  19, -19,   0, -21,   8, -16,
184cabdff1aSopenharmony_ci      9,  39,   0,  36,  10,   7,  -9,   4, -20,   5,
185cabdff1aSopenharmony_ci    }, {
186cabdff1aSopenharmony_ci     22,   5,  42,  26,  -6,   8,   1,   2,  -9,  17,
187cabdff1aSopenharmony_ci    -10,  18, -21,  19, -39, -31, -23, -23, -16, -15,
188cabdff1aSopenharmony_ci      2, -12,   7,   6,   5,  -9,   1, -10,   7, -16,
189cabdff1aSopenharmony_ci      4,   9,   0,  10,  17,  22,  16,   2,  14,   9,
190cabdff1aSopenharmony_ci    }, {
191cabdff1aSopenharmony_ci     44,  -6,  30,   8,  -9, -10, -11, -14, -23,   5,
192cabdff1aSopenharmony_ci     -8,   4, -14,  12, -37, -14, -12, -26,  -4, -16,
193cabdff1aSopenharmony_ci      8, -16,   9,  -7,   6, -19, -12, -25,   5, -24,
194cabdff1aSopenharmony_ci     15,  13,   8,  36,  34,  31,   1,  18,   4,  18,
195cabdff1aSopenharmony_ci    }, {
196cabdff1aSopenharmony_ci     -3,  -5,  -9,  -7,  15,  -1,   5,  13,   2,  12,
197cabdff1aSopenharmony_ci      5,   2, -21, -23,  -2, -16,   0,   5,  -6,  13,
198cabdff1aSopenharmony_ci    -23,   3, -32,  10, -15,   8,  44,  28,   9,  37,
199cabdff1aSopenharmony_ci     -2,  13,  -9, -15, -12, -27,  -7, -12,   0, -11,
200cabdff1aSopenharmony_ci    }, {
201cabdff1aSopenharmony_ci     18, -17, -21, -25,  11, -19,  -6,  -3, -11,   0,
202cabdff1aSopenharmony_ci      7, -11, -13, -31,  -1,   0,   9,   1,   5,  12,
203cabdff1aSopenharmony_ci    -18,   0, -31,  -2, -13,  -1,  30,  14,   7,  29,
204cabdff1aSopenharmony_ci      9,  18,  -1,  10,   4, -18, -22,   3, -10,  -2,
205cabdff1aSopenharmony_ci    }, {
206cabdff1aSopenharmony_ci    -13, -13,   3,  -5,   7,   4,   9,  34,  -5,  20,
207cabdff1aSopenharmony_ci     -2,   3, -16,  -3, -20, -17, -11,  -7, -17,   0,
208cabdff1aSopenharmony_ci    -34, -13, -33,  -2, -28,   8,  32,  24,   5,  29,
209cabdff1aSopenharmony_ci      3, -12,   0, -15,  11,  -3,   3,   2,  24,   1,
210cabdff1aSopenharmony_ci    }, {
211cabdff1aSopenharmony_ci      8, -25,  -8, -23,   3, -13,  -3,  17, -20,   8,
212cabdff1aSopenharmony_ci      0, -10,  -8, -11, -18,   0,  -1, -10,  -5,   0,
213cabdff1aSopenharmony_ci    -28, -17, -32, -15, -26,  -1,  19,   9,   3,  21,
214cabdff1aSopenharmony_ci     15,  -7,   6,   9,  29,   5, -10,  17,  15,   9,
215cabdff1aSopenharmony_ci    }, {
216cabdff1aSopenharmony_ci      4,  -6,  -3,   5,  -1,  -4, -11,  16,  -6,  23,
217cabdff1aSopenharmony_ci     19,  29,   0,  -3,   6, -30,   3, -17, -10,  -5,
218cabdff1aSopenharmony_ci    -13,  -2, -17,   3,   5,   3,  35,  21,  17,  17,
219cabdff1aSopenharmony_ci      2,  35,  -2, -15,   3, -28, -13, -21, -13, -13,
220cabdff1aSopenharmony_ci    }, {
221cabdff1aSopenharmony_ci     26, -19, -15, -12,  -5, -22, -24,   0, -21,  12,
222cabdff1aSopenharmony_ci     21,  15,   8, -11,   7, -12,  14, -20,   2,  -6,
223cabdff1aSopenharmony_ci     -7,  -6, -16,  -9,   6,  -5,  21,   7,  15,  10,
224cabdff1aSopenharmony_ci     13,  39,   5,  10,  20, -19, -28,  -5, -22,  -5,
225cabdff1aSopenharmony_ci    }, {
226cabdff1aSopenharmony_ci     -5, -15,   9,   7,  -9,   2,  -8,  37, -14,  31,
227cabdff1aSopenharmony_ci     11,  29,   5,  16, -11, -30,  -7, -29, -21, -18,
228cabdff1aSopenharmony_ci    -23, -19, -18,  -9,  -7,   3,  23,  17,  14,   9,
229cabdff1aSopenharmony_ci      8,   9,   6, -15,  27,  -4,  -2,  -6,  12,  -1,
230cabdff1aSopenharmony_ci    }, {
231cabdff1aSopenharmony_ci     16, -27,  -2, -10, -13, -16, -20,  20, -29,  20,
232cabdff1aSopenharmony_ci     14,  16,  13,   8,  -9, -13,   2, -33,  -9, -19,
233cabdff1aSopenharmony_ci    -17, -23, -17, -22,  -6,  -6,   9,   2,  12,   2,
234cabdff1aSopenharmony_ci     20,  13,  13,  10,  45,   4, -16,   8,   2,   7,
235cabdff1aSopenharmony_ci    }, {
236cabdff1aSopenharmony_ci    -16,  14,  -2,   8,  20,  17,   9,   2,  14,  16,
237cabdff1aSopenharmony_ci     -6,   5, -24, -28, -21, -20,  -8,   9,   4,  25,
238cabdff1aSopenharmony_ci     -1,  11, -22,  24, -15,  -8,  21,   5,  11,  14,
239cabdff1aSopenharmony_ci     -5,  18, -11,   7, -27, -20, -14,  -7,   1,  -9,
240cabdff1aSopenharmony_ci    }, {
241cabdff1aSopenharmony_ci      6,   2, -14,  -9,  16,  -1,  -3, -14,   0,   5,
242cabdff1aSopenharmony_ci     -3,  -8, -16, -36, -19,  -3,   1,   6,  17,  24,
243cabdff1aSopenharmony_ci      4,   7, -21,  11, -14, -18,   7,  -9,   9,   7,
244cabdff1aSopenharmony_ci      6,  22,  -3,  33, -10, -11, -28,   7,  -7,   0,
245cabdff1aSopenharmony_ci    }, {
246cabdff1aSopenharmony_ci    -26,   6,  11,  10,  12,  23,  12,  23,   5,  24,
247cabdff1aSopenharmony_ci    -13,   5, -19,  -8, -38, -21, -20,  -2,  -6,  12,
248cabdff1aSopenharmony_ci    -11,  -5, -23,  11, -29,  -9,   9,   0,   7,   6,
249cabdff1aSopenharmony_ci      1,  -7,  -2,   7,  -3,   3,  -2,   6,  27,   3,
250cabdff1aSopenharmony_ci    }, {
251cabdff1aSopenharmony_ci     -4,  -6,   0,  -7,   8,   4,   0,   6,  -9,  13,
252cabdff1aSopenharmony_ci    -11,  -7, -11, -15, -37,  -4,  -9,  -5,   5,  11,
253cabdff1aSopenharmony_ci     -5,  -9, -22,  -1, -27, -18,  -4, -14,   5,   0,
254cabdff1aSopenharmony_ci     12,  -3,   4,  32,  14,  12, -17,  22,  17,  11,
255cabdff1aSopenharmony_ci    }, {
256cabdff1aSopenharmony_ci     -8,  12,   3,  21,   3,  14,  -8,   5,   4,  28,
257cabdff1aSopenharmony_ci      7,  32,  -2,  -8, -12, -34,  -4, -12,   1,   6,
258cabdff1aSopenharmony_ci      9,   4,  -7,  17,   4, -13,  11,  -1,  19,  -4,
259cabdff1aSopenharmony_ci      0,  39,  -4,   7, -11, -21, -20, -16, -10, -11,
260cabdff1aSopenharmony_ci    }, {
261cabdff1aSopenharmony_ci     13,   0,  -8,   3,   0,  -4, -21, -11,  -9,  16,
262cabdff1aSopenharmony_ci     10,  18,   5, -16, -10, -16,   5, -15,  13,   5,
263cabdff1aSopenharmony_ci     15,   1,  -6,   4,   6, -23,  -2, -16,  17, -12,
264cabdff1aSopenharmony_ci     10,  44,   3,  33,   6, -12, -34,  -1, -20,  -3,
265cabdff1aSopenharmony_ci    }, {
266cabdff1aSopenharmony_ci    -18,   4,  17,  23,  -4,  20,  -4,  26,  -3,  36,
267cabdff1aSopenharmony_ci      0,  32,   2,  12, -29, -34, -16, -24, -10,  -6,
268cabdff1aSopenharmony_ci      0, -12,  -8,   4,  -8, -13,   0,  -6,  16, -12,
269cabdff1aSopenharmony_ci      5,  13,   3,   7,  13,   3,  -8,  -2,  14,   0,
270cabdff1aSopenharmony_ci    }, {
271cabdff1aSopenharmony_ci      3,  -7,   5,   5,  -8,   2, -17,   9, -18,  24,
272cabdff1aSopenharmony_ci      2,  19,  10,   4, -28, -17,  -5, -28,   2,  -7,
273cabdff1aSopenharmony_ci      4, -15,  -7,  -8,  -6, -23, -13, -21,  14, -20,
274cabdff1aSopenharmony_ci     17,  18,  11,  33,  30,  11, -23,  13,   5,   9,
275cabdff1aSopenharmony_ci    }, {
276cabdff1aSopenharmony_ci     60,  10,   7,  -1,   9,  -8,   6, -13,   2, -15,
277cabdff1aSopenharmony_ci     -1, -10, -13, -11,  15,   0,   6,   9,  -1,   0,
278cabdff1aSopenharmony_ci    -13,   1, -11,  -3, -13,  21,  13,  26,  -7,  31,
279cabdff1aSopenharmony_ci    -10,  -7, -16, -33, -31, -10,  22,  -8,   1,  -2,
280cabdff1aSopenharmony_ci    }, {
281cabdff1aSopenharmony_ci     82,  -1,  -4, -19,   6, -27,  -6, -29, -12, -26,
282cabdff1aSopenharmony_ci      1, -24,  -5, -18,  17,  17,  17,   6,  10,   0,
283cabdff1aSopenharmony_ci     -7,  -2,  -9, -16, -12,  11,   0,  11,  -9,  23,
284cabdff1aSopenharmony_ci      0,  -3,  -8,  -8, -13,  -1,   8,   7,  -7,   6,
285cabdff1aSopenharmony_ci    }, {
286cabdff1aSopenharmony_ci     49,   2,  21,   0,   1,  -2,   9,   8,  -6,  -6,
287cabdff1aSopenharmony_ci     -8, -10,  -8,   9,  -2,   0,  -4,  -2, -13, -12,
288cabdff1aSopenharmony_ci    -23, -15, -12, -16, -26,  21,   2,  21, -11,  23,
289cabdff1aSopenharmony_ci     -4, -33,  -7, -33,  -6,  13,  34,   5,  27,  10,
290cabdff1aSopenharmony_ci    }, {
291cabdff1aSopenharmony_ci     71, -10,   9, -17,  -1, -20,  -3,  -8, -21, -18,
292cabdff1aSopenharmony_ci     -6, -24,   0,   1,   0,  16,   6,  -5,   0, -13,
293cabdff1aSopenharmony_ci    -17, -19, -11, -29, -25,  11, -11,   6, -13,  15,
294cabdff1aSopenharmony_ci      7, -29,   0,  -8,  11,  22,  20,  21,  17,  18,
295cabdff1aSopenharmony_ci    }, {
296cabdff1aSopenharmony_ci     67,   8,  14,  11,  -7, -11, -11,  -9,  -7,  -3,
297cabdff1aSopenharmony_ci     13,  16,   8,   9,  24, -12,  10, -13,  -5, -17,
298cabdff1aSopenharmony_ci     -2,  -4,   3, -10,   6,  17,   4,  19,   0,  11,
299cabdff1aSopenharmony_ci     -6,  13,  -9, -33, -14, -10,  16, -17, -10,  -4,
300cabdff1aSopenharmony_ci    }, {
301cabdff1aSopenharmony_ci     90,  -3,   2,  -6, -10, -29, -24, -26, -21, -15,
302cabdff1aSopenharmony_ci     15,   2,  16,   1,  25,   4,  21, -16,   6, -18,
303cabdff1aSopenharmony_ci      3,  -8,   5, -24,   8,   7,  -9,   4,  -1,   3,
304cabdff1aSopenharmony_ci      5,  18,  -1,  -7,   2,  -1,   2,  -1, -19,   3,
305cabdff1aSopenharmony_ci    }, {
306cabdff1aSopenharmony_ci     57,   0,  27,  13, -14,  -5,  -7,  11, -15,   4,
307cabdff1aSopenharmony_ci      5,  16,  13,  29,   6, -13,   0, -25, -16, -31,
308cabdff1aSopenharmony_ci    -12, -22,   2, -23,  -6,  16,  -7,  14,  -2,   3,
309cabdff1aSopenharmony_ci      0, -12,   0, -33,   9,  13,  28,  -3,  14,   7,
310cabdff1aSopenharmony_ci    }, {
311cabdff1aSopenharmony_ci     79, -11,  15,  -4, -18, -23, -20,  -5, -30,  -7,
312cabdff1aSopenharmony_ci      7,   2,  21,  21,   8,   3,  10, -28,  -4, -31,
313cabdff1aSopenharmony_ci     -6, -25,   3, -37,  -4,   7, -20,   0,  -4,  -4,
314cabdff1aSopenharmony_ci     11,  -7,   6,  -8,  27,  22,  14,  12,   5,  16,
315cabdff1aSopenharmony_ci    }, {
316cabdff1aSopenharmony_ci     47,  30,  15,  14,  14,   9,   9, -23,  13, -10,
317cabdff1aSopenharmony_ci    -12,  -7, -16, -15,  -3,  -3,  -1,  14,   9,  12,
318cabdff1aSopenharmony_ci      9,   8,   0,  10, -14,   4,  -9,   2,  -5,   8,
319cabdff1aSopenharmony_ci    -13,  -3, -18, -10, -45,  -3,  16,  -4,   4,   0,
320cabdff1aSopenharmony_ci    }, {
321cabdff1aSopenharmony_ci     69,  17,   3,  -3,  10,  -8,  -3, -40,  -1, -21,
322cabdff1aSopenharmony_ci    -10, -21,  -8, -23,  -1,  13,   8,  11,  21,  11,
323cabdff1aSopenharmony_ci     15,   4,   0,  -2, -13,  -5, -23, -12,  -7,   0,
324cabdff1aSopenharmony_ci     -1,   0, -10,  14, -28,   5,   1,  11,  -5,   7,
325cabdff1aSopenharmony_ci    }, {
326cabdff1aSopenharmony_ci     36,  21,  28,  16,   6,  16,  12,  -2,   4,  -2,
327cabdff1aSopenharmony_ci    -20,  -7, -11,   4, -20,  -4, -12,   2,  -1,   0,
328cabdff1aSopenharmony_ci      0,  -8,  -2,  -2, -27,   4, -21,  -2,  -9,   0,
329cabdff1aSopenharmony_ci     -6, -29,  -9, -10, -21,  21,  28,  10,  29,  11,
330cabdff1aSopenharmony_ci    }, {
331cabdff1aSopenharmony_ci     58,   9,  16,  -1,   2,  -2,   0, -19, -10, -13,
332cabdff1aSopenharmony_ci    -17, -21,  -3,  -3, -19,  12,  -2,   0,  10,  -1,
333cabdff1aSopenharmony_ci      5, -12,   0, -15, -26,  -5, -34, -16, -11,  -7,
334cabdff1aSopenharmony_ci      4, -25,  -2,  14,  -3,  29,  13,  25,  20,  20,
335cabdff1aSopenharmony_ci    }, {
336cabdff1aSopenharmony_ci     55,  28,  21,  27,  -2,   7,  -8, -20,   4,   1,
337cabdff1aSopenharmony_ci      1,  18,   5,   4,   5, -16,   2,  -8,   5,  -5,
338cabdff1aSopenharmony_ci     19,   2,  14,   3,   6,   0, -18,  -4,   2, -11,
339cabdff1aSopenharmony_ci     -8,  18, -11, -10, -29,  -3,  10, -13,  -8,  -3,
340cabdff1aSopenharmony_ci    }, {
341cabdff1aSopenharmony_ci     77,  16,   9,   9,  -6, -11, -21, -37, -10, -10,
342cabdff1aSopenharmony_ci      4,   5,  13,  -3,   7,   0,  13, -11,  17,  -6,
343cabdff1aSopenharmony_ci     25,  -1,  15,  -9,   7,  -9, -32, -19,   0, -18,
344cabdff1aSopenharmony_ci      2,  22,  -3,  15, -12,   5,  -4,   2, -17,   5,
345cabdff1aSopenharmony_ci    }, {
346cabdff1aSopenharmony_ci     44,  20,  34,  29, -10,  13,  -4,   0,  -4,   9,
347cabdff1aSopenharmony_ci     -5,  19,  10,  24, -11, -17,  -8, -20,  -5, -19,
348cabdff1aSopenharmony_ci      9, -14,  12,  -9,  -6,   0, -30,  -9,   0, -19,
349cabdff1aSopenharmony_ci     -2,  -7,  -2, -10,  -5,  20,  21,   1,  17,   9,
350cabdff1aSopenharmony_ci    }, {
351cabdff1aSopenharmony_ci     66,   8,  23,  11, -14,  -5, -17, -16, -19,  -2,
352cabdff1aSopenharmony_ci     -3,   5,  18,  17, -10,   0,   1, -23,   6, -20,
353cabdff1aSopenharmony_ci     15, -18,  14, -22,  -5, -10, -44, -23,  -2, -26,
354cabdff1aSopenharmony_ci      9,  -3,   4,  14,  12,  29,   7,  16,   7,  18,
355cabdff1aSopenharmony_ci    }, {
356cabdff1aSopenharmony_ci     18,   9, -17,  -4,  11,   3,   0,  11,   7,   4,
357cabdff1aSopenharmony_ci     10,   3,  10, -18,  24,  -3,  14,   7,   4,  10,
358cabdff1aSopenharmony_ci    -16,   1, -27,  -4, -27,  17,  12,  30,   0,  35,
359cabdff1aSopenharmony_ci     -9,  -3, -12, -36, -35, -30,  -2, -13,   2, -11,
360cabdff1aSopenharmony_ci    }, {
361cabdff1aSopenharmony_ci     40,  -2, -29, -22,   7, -14, -12,  -5,  -7,  -7,
362cabdff1aSopenharmony_ci     12,  -9,  18, -26,  26,  14,  24,   4,  16,   9,
363cabdff1aSopenharmony_ci    -10,  -2, -26, -18, -26,   7,  -1,  15,  -1,  27,
364cabdff1aSopenharmony_ci      2,   0,  -4, -11, -17, -21, -16,   1,  -7,  -3,
365cabdff1aSopenharmony_ci    }, {
366cabdff1aSopenharmony_ci      8,   1,  -3,  -2,   3,  10,   3,  32,  -1,  12,
367cabdff1aSopenharmony_ci      2,   4,  15,   1,   7,  -3,   2,  -4,  -6,  -3,
368cabdff1aSopenharmony_ci    -26, -15, -29, -17, -40,  17,   0,  26,  -2,  27,
369cabdff1aSopenharmony_ci     -2, -29,  -4, -36, -10,  -6,   9,   0,  27,   0,
370cabdff1aSopenharmony_ci    }, {
371cabdff1aSopenharmony_ci     30, -11, -15, -20,   0,  -8,  -9,  15, -15,   0,
372cabdff1aSopenharmony_ci      5,  -9,  23,  -6,   8,  13,  13,  -7,   5,  -3,
373cabdff1aSopenharmony_ci    -20, -19, -27, -31, -39,   7, -13,  11,  -4,  19,
374cabdff1aSopenharmony_ci      8, -25,   3, -11,   7,   2,  -4,  16,  18,   9,
375cabdff1aSopenharmony_ci    }, {
376cabdff1aSopenharmony_ci     26,   7, -11,   8,  -5,   1, -17,  14,  -1,  15,
377cabdff1aSopenharmony_ci     24,  30,  32,   1,  33, -16,  18, -14,   0,  -8,
378cabdff1aSopenharmony_ci     -6,  -4, -12, -12,  -6,  13,   2,  23,   8,  15,
379cabdff1aSopenharmony_ci     -4,  17,  -5, -36, -18, -30,  -8, -22, -10, -14,
380cabdff1aSopenharmony_ci    }, {
381cabdff1aSopenharmony_ci     48,  -4, -23,  -9,  -9, -17, -30,  -2, -16,   3,
382cabdff1aSopenharmony_ci     26,  16,  40,  -6,  35,   1,  28, -17,  12,  -9,
383cabdff1aSopenharmony_ci      0,  -8, -11, -25,  -5,   3, -10,   8,   6,   7,
384cabdff1aSopenharmony_ci      6,  22,   1, -11,  -1, -21, -22,  -7, -19,  -5,
385cabdff1aSopenharmony_ci    }, {
386cabdff1aSopenharmony_ci     15,   0,   2,  10, -13,   7, -14,  35, -10,  23,
387cabdff1aSopenharmony_ci     16,  31,  37,  21,  16, -17,   6, -26, -10, -21,
388cabdff1aSopenharmony_ci    -16, -21, -13, -25, -19,  13,  -8,  19,   5,   7,
389cabdff1aSopenharmony_ci      1,  -8,   2, -36,   5,  -6,   3,  -8,  15,  -1,
390cabdff1aSopenharmony_ci    }, {
391cabdff1aSopenharmony_ci     37, -12,  -9,  -7, -17, -11, -26,  18, -25,  12,
392cabdff1aSopenharmony_ci     19,  17,  45,  14,  17,   0,  17, -30,   1, -22,
393cabdff1aSopenharmony_ci    -10, -25, -12, -38, -18,   3, -22,   4,   3,   0,
394cabdff1aSopenharmony_ci     13,  -3,  10, -11,  23,   2, -10,   7,   5,   7,
395cabdff1aSopenharmony_ci    }, {
396cabdff1aSopenharmony_ci      5,  29,  -9,  11,  15,  22,   3,   0,  18,   8,
397cabdff1aSopenharmony_ci     -1,   6,   7, -23,   6,  -6,   5,  12,  15,  21,
398cabdff1aSopenharmony_ci      5,   8, -17,   9, -28,   0, -11,   6,   2,  12,
399cabdff1aSopenharmony_ci    -11,   0, -14, -13, -49, -22,  -8,  -9,   4,  -9,
400cabdff1aSopenharmony_ci    }, {
401cabdff1aSopenharmony_ci     27,  16, -21,  -6,  12,   3,  -9, -16,   3,  -2,
402cabdff1aSopenharmony_ci      1,  -7,  15, -31,   7,  10,  16,   9,  27,  21,
403cabdff1aSopenharmony_ci     11,   5, -16,  -3, -26,  -9, -24,  -7,   0,   4,
404cabdff1aSopenharmony_ci      0,   4,  -6,  11, -32, -14, -23,   6,  -5,  -1,
405cabdff1aSopenharmony_ci    }, {
406cabdff1aSopenharmony_ci     -4,  20,   3,  13,   8,  28,   6,  21,  10,  16,
407cabdff1aSopenharmony_ci     -8,   7,  12,  -3, -11,  -7,  -5,   0,   4,   8,
408cabdff1aSopenharmony_ci     -4,  -8, -18,  -3, -41,   0, -22,   2,   0,   4,
409cabdff1aSopenharmony_ci     -5, -25,  -6, -14, -25,   1,   2,   4,  29,   2,
410cabdff1aSopenharmony_ci    }, {
411cabdff1aSopenharmony_ci     17,   8,  -8,  -4,   4,  10,  -6,   5,  -4,   5,
412cabdff1aSopenharmony_ci     -6,  -6,  20, -10,  -9,   9,   4,  -2,  16,   7,
413cabdff1aSopenharmony_ci      1, -12, -17, -16, -39,  -9, -36, -12,  -2,  -3,
414cabdff1aSopenharmony_ci      6, -21,   1,  11,  -7,  10, -11,  20,  20,  11,
415cabdff1aSopenharmony_ci    }, {
416cabdff1aSopenharmony_ci     13,  27,  -3,  24,  -1,  19, -14,   3,   9,  20,
417cabdff1aSopenharmony_ci     12,  33,  29,  -3,  15, -20,   9,  -9,  11,   3,
418cabdff1aSopenharmony_ci     16,   2,  -2,   2,  -7,  -3, -20,   0,  10,  -7,
419cabdff1aSopenharmony_ci     -7,  22,  -7, -13, -33, -23, -14, -18,  -7, -12,
420cabdff1aSopenharmony_ci    }, {
421cabdff1aSopenharmony_ci     35,  15, -15,   6,  -4,   1, -27, -12,  -5,   8,
422cabdff1aSopenharmony_ci     15,  19,  37, -11,  16,  -2,  20, -12,  23,   2,
423cabdff1aSopenharmony_ci     22,  -1,  -1, -11,  -5, -13, -34, -14,   8, -14,
424cabdff1aSopenharmony_ci      4,  26,   0,  11, -16, -14, -29,  -2, -17,  -3,
425cabdff1aSopenharmony_ci    }, {
426cabdff1aSopenharmony_ci      3,  19,   9,  26,  -8,  26, -10,  24,   0,  28,
427cabdff1aSopenharmony_ci      5,  33,  34,  17,  -2, -20,  -1, -22,   0, -10,
428cabdff1aSopenharmony_ci      6, -14,  -3, -10, -20,  -4, -32,  -4,   7, -15,
429cabdff1aSopenharmony_ci      0,  -3,   0, -13,  -9,   0,  -3,  -4,  17,   0,
430cabdff1aSopenharmony_ci    }, {
431cabdff1aSopenharmony_ci     25,   7,  -2,   8, -12,   7, -23,   8, -13,  16,
432cabdff1aSopenharmony_ci      7,  20,  42,   9,   0,  -3,   9, -25,  12, -10,
433cabdff1aSopenharmony_ci     12, -18,  -2, -24, -19, -13, -46, -19,   5, -22,
434cabdff1aSopenharmony_ci     10,   0,   8,  11,   8,   9, -17,  11,   7,   8,
435cabdff1aSopenharmony_ci    }, {
436cabdff1aSopenharmony_ci    -25,  -7,   2,  -8,  12,  -7,  23,  -8,  13, -16,
437cabdff1aSopenharmony_ci     -7, -20, -42,  -9,   0,   3,  -9,  25, -12,  10,
438cabdff1aSopenharmony_ci    -12,  18,   2,  24,  19,  13,  46,  19,  -5,  22,
439cabdff1aSopenharmony_ci    -10,   0,  -8, -11,  -8,  -9,  17, -11,  -7,  -8,
440cabdff1aSopenharmony_ci    }, {
441cabdff1aSopenharmony_ci     -3, -19,  -9, -26,   8, -26,  10, -24,   0, -28,
442cabdff1aSopenharmony_ci     -5, -33, -34, -17,   2,  20,   1,  22,   0,  10,
443cabdff1aSopenharmony_ci     -6,  14,   3,  10,  20,   4,  32,   4,  -7,  15,
444cabdff1aSopenharmony_ci      0,   3,   0,  13,   9,   0,   3,   4, -17,   0,
445cabdff1aSopenharmony_ci    }, {
446cabdff1aSopenharmony_ci    -35, -15,  15,  -6,   4,  -1,  27,  12,   5,  -8,
447cabdff1aSopenharmony_ci    -15, -19, -37,  11, -16,   2, -20,  12, -23,  -2,
448cabdff1aSopenharmony_ci    -22,   1,   1,  11,   5,  13,  34,  14,  -8,  14,
449cabdff1aSopenharmony_ci     -4, -26,   0, -11,  16,  14,  29,   2,  17,   3,
450cabdff1aSopenharmony_ci    }, {
451cabdff1aSopenharmony_ci    -13, -27,   3, -24,   1, -19,  14,  -3,  -9, -20,
452cabdff1aSopenharmony_ci    -12, -33, -29,   3, -15,  20,  -9,   9, -11,  -3,
453cabdff1aSopenharmony_ci    -16,  -2,   2,  -2,   7,   3,  20,   0, -10,   7,
454cabdff1aSopenharmony_ci      7, -22,   7,  13,  33,  23,  14,  18,   7,  12,
455cabdff1aSopenharmony_ci    }, {
456cabdff1aSopenharmony_ci    -17,  -8,   8,   4,  -4, -10,   6,  -5,   4,  -5,
457cabdff1aSopenharmony_ci      6,   6, -20,  10,   9,  -9,  -4,   2, -16,  -7,
458cabdff1aSopenharmony_ci     -1,  12,  17,  16,  39,   9,  36,  12,   2,   3,
459cabdff1aSopenharmony_ci     -6,  21,  -1, -11,   7, -10,  11, -20, -20, -11,
460cabdff1aSopenharmony_ci    }, {
461cabdff1aSopenharmony_ci      4, -20,  -3, -13,  -8, -28,  -6, -21, -10, -16,
462cabdff1aSopenharmony_ci      8,  -7, -12,   3,  11,   7,   5,   0,  -4,  -8,
463cabdff1aSopenharmony_ci      4,   8,  18,   3,  41,   0,  22,  -2,   0,  -4,
464cabdff1aSopenharmony_ci      5,  25,   6,  14,  25,  -1,  -2,  -4, -29,  -2,
465cabdff1aSopenharmony_ci    }, {
466cabdff1aSopenharmony_ci    -27, -16,  21,   6, -12,  -3,   9,  16,  -3,   2,
467cabdff1aSopenharmony_ci     -1,   7, -15,  31,  -7, -10, -16,  -9, -27, -21,
468cabdff1aSopenharmony_ci    -11,  -5,  16,   3,  26,   9,  24,   7,   0,  -4,
469cabdff1aSopenharmony_ci      0,  -4,   6, -11,  32,  14,  23,  -6,   5,   1,
470cabdff1aSopenharmony_ci    }, {
471cabdff1aSopenharmony_ci     -5, -29,   9, -11, -15, -22,  -3,   0, -18,  -8,
472cabdff1aSopenharmony_ci      1,  -6,  -7,  23,  -6,   6,  -5, -12, -15, -21,
473cabdff1aSopenharmony_ci     -5,  -8,  17,  -9,  28,   0,  11,  -6,  -2, -12,
474cabdff1aSopenharmony_ci     11,   0,  14,  13,  49,  22,   8,   9,  -4,   9,
475cabdff1aSopenharmony_ci    }, {
476cabdff1aSopenharmony_ci    -37,  12,   9,   7,  17,  11,  26, -18,  25, -12,
477cabdff1aSopenharmony_ci    -19, -17, -45, -14, -17,   0, -17,  30,  -1,  22,
478cabdff1aSopenharmony_ci     10,  25,  12,  38,  18,  -3,  22,  -4,  -3,   0,
479cabdff1aSopenharmony_ci    -13,   3, -10,  11, -23,  -2,  10,  -7,  -5,  -7,
480cabdff1aSopenharmony_ci    }, {
481cabdff1aSopenharmony_ci    -15,   0,  -2, -10,  13,  -7,  14, -35,  10, -23,
482cabdff1aSopenharmony_ci    -16, -31, -37, -21, -16,  17,  -6,  26,  10,  21,
483cabdff1aSopenharmony_ci     16,  21,  13,  25,  19, -13,   8, -19,  -5,  -7,
484cabdff1aSopenharmony_ci     -1,   8,  -2,  36,  -5,   6,  -3,   8, -15,   1,
485cabdff1aSopenharmony_ci    }, {
486cabdff1aSopenharmony_ci    -48,   4,  23,   9,   9,  17,  30,   2,  16,  -3,
487cabdff1aSopenharmony_ci    -26, -16, -40,   6, -35,  -1, -28,  17, -12,   9,
488cabdff1aSopenharmony_ci      0,   8,  11,  25,   5,  -3,  10,  -8,  -6,  -7,
489cabdff1aSopenharmony_ci     -6, -22,  -1,  11,   1,  21,  22,   7,  19,   5,
490cabdff1aSopenharmony_ci    }, {
491cabdff1aSopenharmony_ci    -26,  -7,  11,  -8,   5,  -1,  17, -14,   1, -15,
492cabdff1aSopenharmony_ci    -24, -30, -32,  -1, -33,  16, -18,  14,   0,   8,
493cabdff1aSopenharmony_ci      6,   4,  12,  12,   6, -13,  -2, -23,  -8, -15,
494cabdff1aSopenharmony_ci      4, -17,   5,  36,  18,  30,   8,  22,  10,  14,
495cabdff1aSopenharmony_ci    }, {
496cabdff1aSopenharmony_ci    -30,  11,  15,  20,   0,   8,   9, -15,  15,   0,
497cabdff1aSopenharmony_ci     -5,   9, -23,   6,  -8, -13, -13,   7,  -5,   3,
498cabdff1aSopenharmony_ci     20,  19,  27,  31,  39,  -7,  13, -11,   4, -19,
499cabdff1aSopenharmony_ci     -8,  25,  -3,  11,  -7,  -2,   4, -16, -18,  -9,
500cabdff1aSopenharmony_ci    }, {
501cabdff1aSopenharmony_ci     -8,  -1,   3,   2,  -3, -10,  -3, -32,   1, -12,
502cabdff1aSopenharmony_ci     -2,  -4, -15,  -1,  -7,   3,  -2,   4,   6,   3,
503cabdff1aSopenharmony_ci     26,  15,  29,  17,  40, -17,   0, -26,   2, -27,
504cabdff1aSopenharmony_ci      2,  29,   4,  36,  10,   6,  -9,   0, -27,   0,
505cabdff1aSopenharmony_ci    }, {
506cabdff1aSopenharmony_ci    -40,   2,  29,  22,  -7,  14,  12,   5,   7,   7,
507cabdff1aSopenharmony_ci    -12,   9, -18,  26, -26, -14, -24,  -4, -16,  -9,
508cabdff1aSopenharmony_ci     10,   2,  26,  18,  26,  -7,   1, -15,   1, -27,
509cabdff1aSopenharmony_ci     -2,   0,   4,  11,  17,  21,  16,  -1,   7,   3,
510cabdff1aSopenharmony_ci    }, {
511cabdff1aSopenharmony_ci    -18,  -9,  17,   4, -11,  -3,   0, -11,  -7,  -4,
512cabdff1aSopenharmony_ci    -10,  -3, -10,  18, -24,   3, -14,  -7,  -4, -10,
513cabdff1aSopenharmony_ci     16,  -1,  27,   4,  27, -17, -12, -30,   0, -35,
514cabdff1aSopenharmony_ci      9,   3,  12,  36,  35,  30,   2,  13,  -2,  11,
515cabdff1aSopenharmony_ci    }, {
516cabdff1aSopenharmony_ci    -66,  -8, -23, -11,  14,   5,  17,  16,  19,   2,
517cabdff1aSopenharmony_ci      3,  -5, -18, -17,  10,   0,  -1,  23,  -6,  20,
518cabdff1aSopenharmony_ci    -15,  18, -14,  22,   5,  10,  44,  23,   2,  26,
519cabdff1aSopenharmony_ci     -9,   3,  -4, -14, -12, -29,  -7, -16,  -7, -18,
520cabdff1aSopenharmony_ci    }, {
521cabdff1aSopenharmony_ci    -44, -20, -34, -29,  10, -13,   4,   0,   4,  -9,
522cabdff1aSopenharmony_ci      5, -19, -10, -24,  11,  17,   8,  20,   5,  19,
523cabdff1aSopenharmony_ci     -9,  14, -12,   9,   6,   0,  30,   9,   0,  19,
524cabdff1aSopenharmony_ci      2,   7,   2,  10,   5, -20, -21,  -1, -17,  -9,
525cabdff1aSopenharmony_ci    }, {
526cabdff1aSopenharmony_ci    -77, -16,  -9,  -9,   6,  11,  21,  37,  10,  10,
527cabdff1aSopenharmony_ci     -4,  -5, -13,   3,  -7,   0, -13,  11, -17,   6,
528cabdff1aSopenharmony_ci    -25,   1, -15,   9,  -7,   9,  32,  19,   0,  18,
529cabdff1aSopenharmony_ci     -2, -22,   3, -15,  12,  -5,   4,  -2,  17,  -5,
530cabdff1aSopenharmony_ci    }, {
531cabdff1aSopenharmony_ci    -55, -28, -21, -27,   2,  -7,   8,  20,  -4,  -1,
532cabdff1aSopenharmony_ci     -1, -18,  -5,  -4,  -5,  16,  -2,   8,  -5,   5,
533cabdff1aSopenharmony_ci    -19,  -2, -14,  -3,  -6,   0,  18,   4,  -2,  11,
534cabdff1aSopenharmony_ci      8, -18,  11,  10,  29,   3, -10,  13,   8,   3,
535cabdff1aSopenharmony_ci    }, {
536cabdff1aSopenharmony_ci    -58,  -9, -16,   1,  -2,   2,   0,  19,  10,  13,
537cabdff1aSopenharmony_ci     17,  21,   3,   3,  19, -12,   2,   0, -10,   1,
538cabdff1aSopenharmony_ci     -5,  12,   0,  15,  26,   5,  34,  16,  11,   7,
539cabdff1aSopenharmony_ci     -4,  25,   2, -14,   3, -29, -13, -25, -20, -20,
540cabdff1aSopenharmony_ci    }, {
541cabdff1aSopenharmony_ci    -36, -21, -28, -16,  -6, -16, -12,   2,  -4,   2,
542cabdff1aSopenharmony_ci     20,   7,  11,  -4,  20,   4,  12,  -2,   1,   0,
543cabdff1aSopenharmony_ci      0,   8,   2,   2,  27,  -4,  21,   2,   9,   0,
544cabdff1aSopenharmony_ci      6,  29,   9,  10,  21, -21, -28, -10, -29, -11,
545cabdff1aSopenharmony_ci    }, {
546cabdff1aSopenharmony_ci    -69, -17,  -3,   3, -10,   8,   3,  40,   1,  21,
547cabdff1aSopenharmony_ci     10,  21,   8,  23,   1, -13,  -8, -11, -21, -11,
548cabdff1aSopenharmony_ci    -15,  -4,   0,   2,  13,   5,  23,  12,   7,   0,
549cabdff1aSopenharmony_ci      1,   0,  10, -14,  28,  -5,  -1, -11,   5,  -7,
550cabdff1aSopenharmony_ci    }, {
551cabdff1aSopenharmony_ci    -47, -30, -15, -14, -14,  -9,  -9,  23, -13,  10,
552cabdff1aSopenharmony_ci     12,   7,  16,  15,   3,   3,   1, -14,  -9, -12,
553cabdff1aSopenharmony_ci     -9,  -8,   0, -10,  14,  -4,   9,  -2,   5,  -8,
554cabdff1aSopenharmony_ci     13,   3,  18,  10,  45,   3, -16,   4,  -4,   0,
555cabdff1aSopenharmony_ci    }, {
556cabdff1aSopenharmony_ci    -79,  11, -15,   4,  18,  23,  20,   5,  30,   7,
557cabdff1aSopenharmony_ci     -7,  -2, -21, -21,  -8,  -3, -10,  28,   4,  31,
558cabdff1aSopenharmony_ci      6,  25,  -3,  37,   4,  -7,  20,   0,   4,   4,
559cabdff1aSopenharmony_ci    -11,   7,  -6,   8, -27, -22, -14, -12,  -5, -16,
560cabdff1aSopenharmony_ci    }, {
561cabdff1aSopenharmony_ci    -57,   0, -27, -13,  14,   5,   7, -11,  15,  -4,
562cabdff1aSopenharmony_ci     -5, -16, -13, -29,  -6,  13,   0,  25,  16,  31,
563cabdff1aSopenharmony_ci     12,  22,  -2,  23,   6, -16,   7, -14,   2,  -3,
564cabdff1aSopenharmony_ci      0,  12,   0,  33,  -9, -13, -28,   3, -14,  -7,
565cabdff1aSopenharmony_ci    }, {
566cabdff1aSopenharmony_ci    -90,   3,  -2,   6,  10,  29,  24,  26,  21,  15,
567cabdff1aSopenharmony_ci    -15,  -2, -16,  -1, -25,  -4, -21,  16,  -6,  18,
568cabdff1aSopenharmony_ci     -3,   8,  -5,  24,  -8,  -7,   9,  -4,   1,  -3,
569cabdff1aSopenharmony_ci     -5, -18,   1,   7,  -2,   1,  -2,   1,  19,  -3,
570cabdff1aSopenharmony_ci    }, {
571cabdff1aSopenharmony_ci    -67,  -8, -14, -11,   7,  11,  11,   9,   7,   3,
572cabdff1aSopenharmony_ci    -13, -16,  -8,  -9, -24,  12, -10,  13,   5,  17,
573cabdff1aSopenharmony_ci      2,   4,  -3,  10,  -6, -17,  -4, -19,   0, -11,
574cabdff1aSopenharmony_ci      6, -13,   9,  33,  14,  10, -16,  17,  10,   4,
575cabdff1aSopenharmony_ci    }, {
576cabdff1aSopenharmony_ci    -71,  10,  -9,  17,   1,  20,   3,   8,  21,  18,
577cabdff1aSopenharmony_ci      6,  24,   0,  -1,   0, -16,  -6,   5,   0,  13,
578cabdff1aSopenharmony_ci     17,  19,  11,  29,  25, -11,  11,  -6,  13, -15,
579cabdff1aSopenharmony_ci     -7,  29,   0,   8, -11, -22, -20, -21, -17, -18,
580cabdff1aSopenharmony_ci    }, {
581cabdff1aSopenharmony_ci    -49,  -2, -21,   0,  -1,   2,  -9,  -8,   6,   6,
582cabdff1aSopenharmony_ci      8,  10,   8,  -9,   2,   0,   4,   2,  13,  12,
583cabdff1aSopenharmony_ci     23,  15,  12,  16,  26, -21,  -2, -21,  11, -23,
584cabdff1aSopenharmony_ci      4,  33,   7,  33,   6, -13, -34,  -5, -27, -10,
585cabdff1aSopenharmony_ci    }, {
586cabdff1aSopenharmony_ci    -82,   1,   4,  19,  -6,  27,   6,  29,  12,  26,
587cabdff1aSopenharmony_ci     -1,  24,   5,  18, -17, -17, -17,  -6, -10,   0,
588cabdff1aSopenharmony_ci      7,   2,   9,  16,  12, -11,   0, -11,   9, -23,
589cabdff1aSopenharmony_ci      0,   3,   8,   8,  13,   1,  -8,  -7,   7,  -6,
590cabdff1aSopenharmony_ci    }, {
591cabdff1aSopenharmony_ci    -60, -10,  -7,   1,  -9,   8,  -6,  13,  -2,  15,
592cabdff1aSopenharmony_ci      1,  10,  13,  11, -15,   0,  -6,  -9,   1,   0,
593cabdff1aSopenharmony_ci     13,  -1,  11,   3,  13, -21, -13, -26,   7, -31,
594cabdff1aSopenharmony_ci     10,   7,  16,  33,  31,  10, -22,   8,  -1,   2,
595cabdff1aSopenharmony_ci    }, {
596cabdff1aSopenharmony_ci     -3,   7,  -5,  -5,   8,  -2,  17,  -9,  18, -24,
597cabdff1aSopenharmony_ci     -2, -19, -10,  -4,  28,  17,   5,  28,  -2,   7,
598cabdff1aSopenharmony_ci     -4,  15,   7,   8,   6,  23,  13,  21, -14,  20,
599cabdff1aSopenharmony_ci    -17, -18, -11, -33, -30, -11,  23, -13,  -5,  -9,
600cabdff1aSopenharmony_ci    }, {
601cabdff1aSopenharmony_ci     18,  -4, -17, -23,   4, -20,   4, -26,   3, -36,
602cabdff1aSopenharmony_ci      0, -32,  -2, -12,  29,  34,  16,  24,  10,   6,
603cabdff1aSopenharmony_ci      0,  12,   8,  -4,   8,  13,   0,   6, -16,  12,
604cabdff1aSopenharmony_ci     -5, -13,  -3,  -7, -13,  -3,   8,   2, -14,   0,
605cabdff1aSopenharmony_ci    }, {
606cabdff1aSopenharmony_ci    -13,   0,   8,  -3,   0,   4,  21,  11,   9, -16,
607cabdff1aSopenharmony_ci    -10, -18,  -5,  16,  10,  16,  -5,  15, -13,  -5,
608cabdff1aSopenharmony_ci    -15,  -1,   6,  -4,  -6,  23,   2,  16, -17,  12,
609cabdff1aSopenharmony_ci    -10, -44,  -3, -33,  -6,  12,  34,   1,  20,   3,
610cabdff1aSopenharmony_ci    }, {
611cabdff1aSopenharmony_ci      8, -12,  -3, -21,  -3, -14,   8,  -5,  -4, -28,
612cabdff1aSopenharmony_ci     -7, -32,   2,   8,  12,  34,   4,  12,  -1,  -6,
613cabdff1aSopenharmony_ci     -9,  -4,   7, -17,  -4,  13, -11,   1, -19,   4,
614cabdff1aSopenharmony_ci      0, -39,   4,  -7,  11,  21,  20,  16,  10,  11,
615cabdff1aSopenharmony_ci    }, {
616cabdff1aSopenharmony_ci      4,   6,   0,   7,  -8,  -4,   0,  -6,   9, -13,
617cabdff1aSopenharmony_ci     11,   7,  11,  15,  37,   4,   9,   5,  -5, -11,
618cabdff1aSopenharmony_ci      5,   9,  22,   1,  27,  18,   4,  14,  -5,   0,
619cabdff1aSopenharmony_ci    -12,   3,  -4, -32, -14, -12,  17, -22, -17, -11,
620cabdff1aSopenharmony_ci    }, {
621cabdff1aSopenharmony_ci     26,  -6, -11, -10, -12, -23, -12, -23,  -5, -24,
622cabdff1aSopenharmony_ci     13,  -5,  19,   8,  38,  21,  20,   2,   6, -12,
623cabdff1aSopenharmony_ci     11,   5,  23, -11,  29,   9,  -9,   0,  -7,  -6,
624cabdff1aSopenharmony_ci     -1,   7,   2,  -7,   3,  -3,   2,  -6, -27,  -3,
625cabdff1aSopenharmony_ci    }, {
626cabdff1aSopenharmony_ci     -6,  -2,  14,   9, -16,   1,   3,  14,   0,  -5,
627cabdff1aSopenharmony_ci      3,   8,  16,  36,  19,   3,  -1,  -6, -17, -24,
628cabdff1aSopenharmony_ci     -4,  -7,  21, -11,  14,  18,  -7,   9,  -9,  -7,
629cabdff1aSopenharmony_ci     -6, -22,   3, -33,  10,  11,  28,  -7,   7,   0,
630cabdff1aSopenharmony_ci    }, {
631cabdff1aSopenharmony_ci     16, -14,   2,  -8, -20, -17,  -9,  -2, -14, -16,
632cabdff1aSopenharmony_ci      6,  -5,  24,  28,  21,  20,   8,  -9,  -4, -25,
633cabdff1aSopenharmony_ci      1, -11,  22, -24,  15,   8, -21,  -5, -11, -14,
634cabdff1aSopenharmony_ci      5, -18,  11,  -7,  27,  20,  14,   7,  -1,   9,
635cabdff1aSopenharmony_ci    }, {
636cabdff1aSopenharmony_ci    -16,  27,   2,  10,  13,  16,  20, -20,  29, -20,
637cabdff1aSopenharmony_ci    -14, -16, -13,  -8,   9,  13,  -2,  33,   9,  19,
638cabdff1aSopenharmony_ci     17,  23,  17,  22,   6,   6,  -9,  -2, -12,  -2,
639cabdff1aSopenharmony_ci    -20, -13, -13, -10, -45,  -4,  16,  -8,  -2,  -7,
640cabdff1aSopenharmony_ci    }, {
641cabdff1aSopenharmony_ci      5,  15,  -9,  -7,   9,  -2,   8, -37,  14, -31,
642cabdff1aSopenharmony_ci    -11, -29,  -5, -16,  11,  30,   7,  29,  21,  18,
643cabdff1aSopenharmony_ci     23,  19,  18,   9,   7,  -3, -23, -17, -14,  -9,
644cabdff1aSopenharmony_ci     -8,  -9,  -6,  15, -27,   4,   2,   6, -12,   1,
645cabdff1aSopenharmony_ci    }, {
646cabdff1aSopenharmony_ci    -26,  19,  15,  12,   5,  22,  24,   0,  21, -12,
647cabdff1aSopenharmony_ci    -21, -15,  -8,  11,  -7,  12, -14,  20,  -2,   6,
648cabdff1aSopenharmony_ci      7,   6,  16,   9,  -6,   5, -21,  -7, -15, -10,
649cabdff1aSopenharmony_ci    -13, -39,  -5, -10, -20,  19,  28,   5,  22,   5,
650cabdff1aSopenharmony_ci    }, {
651cabdff1aSopenharmony_ci     -4,   6,   3,  -5,   1,   4,  11, -16,   6, -23,
652cabdff1aSopenharmony_ci    -19, -29,   0,   3,  -6,  30,  -3,  17,  10,   5,
653cabdff1aSopenharmony_ci     13,   2,  17,  -3,  -5,  -3, -35, -21, -17, -17,
654cabdff1aSopenharmony_ci     -2, -35,   2,  15,  -3,  28,  13,  21,  13,  13,
655cabdff1aSopenharmony_ci    }, {
656cabdff1aSopenharmony_ci     -8,  25,   8,  23,  -3,  13,   3, -17,  20,  -8,
657cabdff1aSopenharmony_ci      0,  10,   8,  11,  18,   0,   1,  10,   5,   0,
658cabdff1aSopenharmony_ci     28,  17,  32,  15,  26,   1, -19,  -9,  -3, -21,
659cabdff1aSopenharmony_ci    -15,   7,  -6,  -9, -29,  -5,  10, -17, -15,  -9,
660cabdff1aSopenharmony_ci    }, {
661cabdff1aSopenharmony_ci     13,  13,  -3,   5,  -7,  -4,  -9, -34,   5, -20,
662cabdff1aSopenharmony_ci      2,  -3,  16,   3,  20,  17,  11,   7,  17,   0,
663cabdff1aSopenharmony_ci     34,  13,  33,   2,  28,  -8, -32, -24,  -5, -29,
664cabdff1aSopenharmony_ci     -3,  12,   0,  15, -11,   3,  -3,  -2, -24,  -1,
665cabdff1aSopenharmony_ci    }, {
666cabdff1aSopenharmony_ci    -18,  17,  21,  25, -11,  19,   6,   3,  11,   0,
667cabdff1aSopenharmony_ci     -7,  11,  13,  31,   1,   0,  -9,  -1,  -5, -12,
668cabdff1aSopenharmony_ci     18,   0,  31,   2,  13,   1, -30, -14,  -7, -29,
669cabdff1aSopenharmony_ci     -9, -18,   1, -10,  -4,  18,  22,  -3,  10,   2,
670cabdff1aSopenharmony_ci    }, {
671cabdff1aSopenharmony_ci      3,   5,   9,   7, -15,   1,  -5, -13,  -2, -12,
672cabdff1aSopenharmony_ci     -5,  -2,  21,  23,   2,  16,   0,  -5,   6, -13,
673cabdff1aSopenharmony_ci     23,  -3,  32, -10,  15,  -8, -44, -28,  -9, -37,
674cabdff1aSopenharmony_ci      2, -13,   9,  15,  12,  27,   7,  12,   0,  11,
675cabdff1aSopenharmony_ci    }, {
676cabdff1aSopenharmony_ci    -44,   6, -30,  -8,   9,  10,  11,  14,  23,  -5,
677cabdff1aSopenharmony_ci      8,  -4,  14, -12,  37,  14,  12,  26,   4,  16,
678cabdff1aSopenharmony_ci     -8,  16,  -9,   7,  -6,  19,  12,  25,  -5,  24,
679cabdff1aSopenharmony_ci    -15, -13,  -8, -36, -34, -31,  -1, -18,  -4, -18,
680cabdff1aSopenharmony_ci    }, {
681cabdff1aSopenharmony_ci    -22,  -5, -42, -26,   6,  -8,  -1,  -2,   9, -17,
682cabdff1aSopenharmony_ci     10, -18,  21, -19,  39,  31,  23,  23,  16,  15,
683cabdff1aSopenharmony_ci     -2,  12,  -7,  -6,  -5,   9,  -1,  10,  -7,  16,
684cabdff1aSopenharmony_ci     -4,  -9,   0, -10, -17, -22, -16,  -2, -14,  -9,
685cabdff1aSopenharmony_ci    }, {
686cabdff1aSopenharmony_ci    -55,  -1, -17,  -6,   1,  16,  15,  35,  15,   2,
687cabdff1aSopenharmony_ci      0,  -4,  19,   8,  20,  13,   1,  14,  -7,   3,
688cabdff1aSopenharmony_ci    -18,   0, -10,  -5, -19,  19,   0,  21,  -8,  16,
689cabdff1aSopenharmony_ci     -9, -39,   0, -36, -10,  -7,   9,  -4,  20,  -5,
690cabdff1aSopenharmony_ci    }, {
691cabdff1aSopenharmony_ci    -33, -13, -29, -24,  -1,  -1,   2,  18,   0,  -9,
692cabdff1aSopenharmony_ci      3, -17,  27,   0,  21,  30,  12,  11,   5,   2,
693cabdff1aSopenharmony_ci    -12,  -4,  -9, -19, -18,   9, -13,   6, -11,   8,
694cabdff1aSopenharmony_ci      2, -35,   8, -10,   7,   1,  -4,  11,  10,   2,
695cabdff1aSopenharmony_ci    }, {
696cabdff1aSopenharmony_ci    -36,   5, -24,   4,  -7,   7,  -6,  17,  14,   5,
697cabdff1aSopenharmony_ci     22,  22,  35,   8,  46,   1,  17,   3,   0,  -2,
698cabdff1aSopenharmony_ci      2,  10,   5,   0,  14,  15,   2,  18,   2,   4,
699cabdff1aSopenharmony_ci    -11,   7,  -1, -36, -18, -32,  -7, -27, -17, -20,
700cabdff1aSopenharmony_ci    }, {
701cabdff1aSopenharmony_ci    -14,  -7, -36, -13, -10, -10, -18,   0,   0,  -5,
702cabdff1aSopenharmony_ci     25,   8,  43,   0,  48,  18,  27,   0,  12,  -3,
703cabdff1aSopenharmony_ci      7,   6,   7, -13,  15,   5, -11,   3,   0,  -2,
704cabdff1aSopenharmony_ci      0,  12,   6, -10,   0, -23, -22, -11, -26, -12,
705cabdff1aSopenharmony_ci    }, {
706cabdff1aSopenharmony_ci    -47,  -3, -11,   6, -15,  13,  -2,  38,   6,  13,
707cabdff1aSopenharmony_ci     15,  22,  40,  28,  28,   0,   5,  -8, -10, -15,
708cabdff1aSopenharmony_ci     -7,  -7,   4, -13,   1,  14,  -9,  14,   0,  -2,
709cabdff1aSopenharmony_ci     -4, -18,   7, -36,   6,  -8,   3, -13,   7,  -8,
710cabdff1aSopenharmony_ci    }, {
711cabdff1aSopenharmony_ci    -25, -15, -22, -11, -18,  -4, -15,  22,  -8,   2,
712cabdff1aSopenharmony_ci     17,   9,  48,  20,  30,  17,  16, -11,   1, -16,
713cabdff1aSopenharmony_ci     -2, -10,   5, -26,   2,   4, -22,   0,  -2, -10,
714cabdff1aSopenharmony_ci      6, -13,  14, -10,  23,   0, -10,   2,  -1,   0,
715cabdff1aSopenharmony_ci    }, {
716cabdff1aSopenharmony_ci    -57,  26, -22,   7,  14,  28,  14,   3,  35,   0,
717cabdff1aSopenharmony_ci     -3,  -1,  11, -16,  18,  10,   4,  31,  15,  28,
718cabdff1aSopenharmony_ci     14,  23,   1,  21,  -7,   2, -11,   1,  -3,   1,
719cabdff1aSopenharmony_ci    -18,  -9, -10, -13, -49, -24,  -8, -14,  -2, -16,
720cabdff1aSopenharmony_ci    }, {
721cabdff1aSopenharmony_ci    -35,  14, -34, -10,  10,  10,   1, -12,  20, -12,
722cabdff1aSopenharmony_ci      0, -15,  18, -24,  20,  27,  14,  28,  27,  27,
723cabdff1aSopenharmony_ci     20,  19,   2,   8,  -5,  -7, -25, -13,  -5,  -5,
724cabdff1aSopenharmony_ci     -6,  -5,  -2,  12, -31, -15, -23,   1, -12,  -8,
725cabdff1aSopenharmony_ci    }, {
726cabdff1aSopenharmony_ci    -68,  18,  -9,   9,   6,  35,  18,  25,  26,   7,
727cabdff1aSopenharmony_ci    -10,  -1,  16,   3,   1,   9,  -6,  19,   4,  15,
728cabdff1aSopenharmony_ci      4,   6,   0,   8, -20,   2, -23,  -2,  -7,  -5,
729cabdff1aSopenharmony_ci    -12, -35,  -1, -13, -24,   0,   3,   0,  22,  -4,
730cabdff1aSopenharmony_ci    }, {
731cabdff1aSopenharmony_ci    -46,   6, -21,  -8,   2,  16,   5,   8,  11,  -4,
732cabdff1aSopenharmony_ci     -8, -15,  24,  -4,   2,  26,   3,  16,  16,  14,
733cabdff1aSopenharmony_ci      9,   2,   1,  -4, -19,  -7, -36, -17,  -9, -13,
734cabdff1aSopenharmony_ci      0, -31,   5,  12,  -7,   8, -11,  15,  13,   4,
735cabdff1aSopenharmony_ci    }, {
736cabdff1aSopenharmony_ci    -49,  24, -16,  20,  -2,  26,  -2,   7,  25,  10,
737cabdff1aSopenharmony_ci     11,  25,  32,   3,  27,  -2,   8,   8,  11,   9,
738cabdff1aSopenharmony_ci     24,  17,  16,  14,  13,  -2, -20,  -5,   4, -17,
739cabdff1aSopenharmony_ci    -14,  12,  -3, -13, -33, -25, -14, -23, -15, -19,
740cabdff1aSopenharmony_ci    }, {
741cabdff1aSopenharmony_ci    -27,  12, -28,   2,  -6,   7, -15,  -9,  11,  -1,
742cabdff1aSopenharmony_ci     13,  11,  40,  -4,  29,  14,  19,   5,  23,   8,
743cabdff1aSopenharmony_ci     30,  13,  17,   0,  14, -12, -34, -20,   2, -25,
744cabdff1aSopenharmony_ci     -2,  16,   4,  12, -15, -16, -29,  -7, -24, -10,
745cabdff1aSopenharmony_ci    }, {
746cabdff1aSopenharmony_ci    -60,  16,  -3,  22, -10,  32,   0,  28,  17,  18,
747cabdff1aSopenharmony_ci      3,  25,  37,  23,  10,  -3,  -2,  -3,   0,  -3,
748cabdff1aSopenharmony_ci     14,   0,  14,   1,   0,  -2, -32,  -9,   1, -25,
749cabdff1aSopenharmony_ci     -7, -13,   5, -13,  -8,  -1,  -2,  -8,  10,  -6,
750cabdff1aSopenharmony_ci    }, {
751cabdff1aSopenharmony_ci    -38,   4, -15,   4, -14,  13, -12,  11,   2,   6,
752cabdff1aSopenharmony_ci      6,  11,  45,  16,  11,  13,   7,  -6,  12,  -4,
753cabdff1aSopenharmony_ci     20,  -3,  16, -12,   1, -12, -46, -24,   0, -33,
754cabdff1aSopenharmony_ci      3,  -9,  12,  12,   8,   7, -17,   6,   0,   2
755cabdff1aSopenharmony_ci    }
756cabdff1aSopenharmony_ci};
757cabdff1aSopenharmony_ci
758cabdff1aSopenharmony_ciconst int8_t ff_cb2_vects[128][40]={
759cabdff1aSopenharmony_ci    {
760cabdff1aSopenharmony_ci     73, -32, -60, -15, -26,  59,   2, -33,  30, -10,
761cabdff1aSopenharmony_ci     -3, -17,   8,  30,  -1, -26,  -4, -22,  10,  16,
762cabdff1aSopenharmony_ci    -36,  -5, -11,  56,  37,   6, -10,  -5, -13,  -3,
763cabdff1aSopenharmony_ci      6,  -5,  11,   4, -19,  -5, -16,  41,  24,  13,
764cabdff1aSopenharmony_ci    }, {
765cabdff1aSopenharmony_ci      4, -11, -37,  23,  -5,  46,  -2, -29,  -5, -39,
766cabdff1aSopenharmony_ci    -21,  -9,   0,  49,  12,  -9, -16, -26,  22,  15,
767cabdff1aSopenharmony_ci    -45, -20,  -5,  40,  22,  17, -26,  31, -14,   2,
768cabdff1aSopenharmony_ci    -14,  10,  30,  20, -27,  -9, -39,  39,  18,   5,
769cabdff1aSopenharmony_ci    }, {
770cabdff1aSopenharmony_ci     34, -25, -48, -28, -11,  34,  -2, -41,   9,  -7,
771cabdff1aSopenharmony_ci    -17,  21,  20,  24, -17, -33,   0, -24,  10,  42,
772cabdff1aSopenharmony_ci      3,  -5,  10,  42,  11,   8,  -3,   3,  16,   9,
773cabdff1aSopenharmony_ci     22,  -2,   0, -33, -10,  18,   7,  58,  10,  28,
774cabdff1aSopenharmony_ci    }, {
775cabdff1aSopenharmony_ci    -34,  -4, -25,  10,   9,  21,  -7, -36, -26, -36,
776cabdff1aSopenharmony_ci    -35,  28,  12,  42,  -3, -16, -12, -28,  21,  42,
777cabdff1aSopenharmony_ci     -5, -21,  16,  26,  -4,  19, -19,  39,  15,  15,
778cabdff1aSopenharmony_ci      1,  13,  19, -17, -17,  14, -15,  55,   4,  19,
779cabdff1aSopenharmony_ci    }, {
780cabdff1aSopenharmony_ci     28, -20, -51, -14,  -6,   7,   0, -26,  27,  -4,
781cabdff1aSopenharmony_ci     18, -40,  -6,  16,  -1, -15,   0, -55,  -5, -16,
782cabdff1aSopenharmony_ci    -19,  14,  -3,  49,  14,   1, -22, -30, -12,   0,
783cabdff1aSopenharmony_ci     24,  15,   9, -17, -45, -29,   4,  28,  51,  35,
784cabdff1aSopenharmony_ci    }, {
785cabdff1aSopenharmony_ci    -40,   0, -28,  24,  14,  -5,  -4, -21,  -7, -33,
786cabdff1aSopenharmony_ci      0, -32, -15,  35,  12,   1, -11, -58,   5, -16,
787cabdff1aSopenharmony_ci    -28,   0,   1,  33,   0,  11, -39,   5, -14,   6,
788cabdff1aSopenharmony_ci      3,  31,  28,  -1, -53, -33, -19,  25,  46,  26,
789cabdff1aSopenharmony_ci    }, {
790cabdff1aSopenharmony_ci    -11, -14, -39, -27,   9, -17,  -4, -33,   6,   0,
791cabdff1aSopenharmony_ci      4,  -1,   5,  10, -17, -22,   5, -57,  -5,   9,
792cabdff1aSopenharmony_ci     20,  13,  18,  35, -11,   3, -16, -22,  17,  13,
793cabdff1aSopenharmony_ci     40,  19,  -1, -55, -35,  -5,  27,  44,  37,  49,
794cabdff1aSopenharmony_ci    }, {
795cabdff1aSopenharmony_ci    -80,   6, -16,  11,  30, -30,  -9, -28, -28, -29,
796cabdff1aSopenharmony_ci    -13,   6,  -2,  28,  -3,  -5,  -7, -60,   5,   9,
797cabdff1aSopenharmony_ci     11,  -1,  24,  19, -27,  13, -32,  13,  15,  19,
798cabdff1aSopenharmony_ci     19,  35,  17, -39, -43,  -9,   4,  42,  32,  41,
799cabdff1aSopenharmony_ci    }, {
800cabdff1aSopenharmony_ci     78, -21, -43,   4, -38,  17,  17,  -5,  55,  24,
801cabdff1aSopenharmony_ci    -15, -36,  14,   4,  24, -24,  12,   5,  17,  31,
802cabdff1aSopenharmony_ci    -54,  -5,  -2,  27,  43, -12,   2,   9,  -9, -15,
803cabdff1aSopenharmony_ci     22,  -3,  28,  21, -20,   3,  20,  28,   9,  -5,
804cabdff1aSopenharmony_ci    }, {
805cabdff1aSopenharmony_ci      9,  -1, -20,  43, -17,   3,  12,   0,  20,  -4,
806cabdff1aSopenharmony_ci    -33, -29,   6,  22,  38,  -7,   0,   1,  29,  30,
807cabdff1aSopenharmony_ci    -63, -21,   3,  11,  27,  -1, -14,  45, -10,  -9,
808cabdff1aSopenharmony_ci      1,  12,  47,  37, -28,   0,  -2,  26,   4, -13,
809cabdff1aSopenharmony_ci    }, {
810cabdff1aSopenharmony_ci     39, -14, -30,  -8, -22,  -8,  12, -12,  34,  27,
811cabdff1aSopenharmony_ci    -29,   2,  26,  -2,   8, -31,  16,   3,  17,  57,
812cabdff1aSopenharmony_ci    -14,  -6,  19,  13,  16, -10,   8,  17,  20,  -2,
813cabdff1aSopenharmony_ci     38,   0,  17, -16, -11,  27,  44,  45,  -4,   8,
814cabdff1aSopenharmony_ci    }, {
815cabdff1aSopenharmony_ci    -29,   5,  -7,  30,  -1, -21,   7,  -7,   0,   0,
816cabdff1aSopenharmony_ci    -47,   9,  18,  15,  22, -14,   4,   0,  28,  57,
817cabdff1aSopenharmony_ci    -23, -21,  25,  -2,   1,   0,  -7,  53,  19,   3,
818cabdff1aSopenharmony_ci     17,  15,  36,   0, -19,  24,  21,  43,  -9,   0,
819cabdff1aSopenharmony_ci    }, {
820cabdff1aSopenharmony_ci     33, -10, -34,   5, -17, -35,  15,   1,  53,  30,
821cabdff1aSopenharmony_ci      6, -59,   0, -10,  24, -13,  17, -27,   1,  -1,
822cabdff1aSopenharmony_ci    -37,  13,   4,  20,  20, -18, -10, -16,  -8, -11,
823cabdff1aSopenharmony_ci     39,  18,  26,   0, -46, -20,  41,  15,  37,  15,
824cabdff1aSopenharmony_ci    }, {
825cabdff1aSopenharmony_ci    -35,  10, -11,  44,   3, -48,  10,   6,  17,   2,
826cabdff1aSopenharmony_ci    -11, -51,  -8,   8,  38,   3,   4, -31,  12,  -2,
827cabdff1aSopenharmony_ci    -46,  -1,  10,   4,   5,  -7, -26,  19, -10,  -5,
828cabdff1aSopenharmony_ci     18,  34,  45,  15, -54, -24,  18,  13,  31,   7,
829cabdff1aSopenharmony_ci    }, {
830cabdff1aSopenharmony_ci     -5,  -3, -21,  -7,  -2, -60,  10,  -5,  32,  34,
831cabdff1aSopenharmony_ci     -7, -20,  11, -16,   8, -20,  21, -29,   1,  24,
832cabdff1aSopenharmony_ci      2,  13,  27,   6,  -5, -15,  -3,  -8,  21,   1,
833cabdff1aSopenharmony_ci     55,  21,  15, -38, -37,   3,  65,  32,  23,  30,
834cabdff1aSopenharmony_ci    }, {
835cabdff1aSopenharmony_ci    -74,  17,   0,  31,  18, -73,   5,   0,  -3,   5,
836cabdff1aSopenharmony_ci    -25, -12,   3,   1,  22,  -3,   9, -33,  12,  24,
837cabdff1aSopenharmony_ci     -6,  -2,  33,  -9, -21,  -5, -20,  27,  19,   7,
838cabdff1aSopenharmony_ci     34,  37,  34, -22, -44,   0,  41,  29,  17,  21,
839cabdff1aSopenharmony_ci    }, {
840cabdff1aSopenharmony_ci     76, -35, -31, -28, -49,  43, -40,   0,  29, -14,
841cabdff1aSopenharmony_ci      8,   5,  10,  18, -26, -46,   0,   7,   6,   3,
842cabdff1aSopenharmony_ci    -25,  -7,  -2,  40,  28,  14,  18,  -3, -27, -28,
843cabdff1aSopenharmony_ci     -8, -45, -13,  34, -13, -27, -15,  31,  12,   3,
844cabdff1aSopenharmony_ci    }, {
845cabdff1aSopenharmony_ci      7, -15,  -9,   9, -28,  29, -45,   5,  -6, -43,
846cabdff1aSopenharmony_ci     -9,  12,   2,  36, -12, -30, -11,   3,  17,   3,
847cabdff1aSopenharmony_ci    -34, -22,   3,  24,  12,  24,   2,  32, -28, -22,
848cabdff1aSopenharmony_ci    -29, -29,   5,  50, -21, -31, -38,  29,   7,  -5,
849cabdff1aSopenharmony_ci    }, {
850cabdff1aSopenharmony_ci     36, -29, -19, -41, -34,  18, -45,  -6,   8, -10,
851cabdff1aSopenharmony_ci     -5,  43,  23,  11, -42, -53,   5,   5,   6,  30,
852cabdff1aSopenharmony_ci     14,  -8,  20,  26,   1,  16,  25,   4,   3, -15,
853cabdff1aSopenharmony_ci      7, -41, -23,  -3,  -4,  -3,   8,  48,  -1,  17,
854cabdff1aSopenharmony_ci    }, {
855cabdff1aSopenharmony_ci    -32,  -8,   3,  -2, -13,   4, -50,  -1, -27, -39,
856cabdff1aSopenharmony_ci    -23,  51,  15,  30, -27, -37,  -7,   1,  17,  29,
857cabdff1aSopenharmony_ci      5, -23,  25,  10, -14,  26,   8,  41,   1,  -9,
858cabdff1aSopenharmony_ci    -13, -26,  -5,  12, -12,  -7, -14,  45,  -6,   9,
859cabdff1aSopenharmony_ci    }, {
860cabdff1aSopenharmony_ci     31, -24, -23, -27, -29,  -9, -43,   8,  26,  -7,
861cabdff1aSopenharmony_ci     30, -17,  -4,   3, -26, -35,   5, -24, -10, -28,
862cabdff1aSopenharmony_ci     -9,  12,   5,  33,   5,   8,   5, -29, -26, -24,
863cabdff1aSopenharmony_ci      9, -23, -14,  12, -39, -52,   5,  18,  39,  24,
864cabdff1aSopenharmony_ci    }, {
865cabdff1aSopenharmony_ci    -37,  -3,   0,  10,  -7, -22, -48,  12,  -8, -36,
866cabdff1aSopenharmony_ci     12,  -9, -12,  22, -12, -19,  -6, -28,   0, -29,
867cabdff1aSopenharmony_ci    -18,  -3,  11,  17, -10,  18, -10,   7, -27, -18,
868cabdff1aSopenharmony_ci    -11,  -7,   3,  28, -47, -55, -18,  15,  34,  16,
869cabdff1aSopenharmony_ci    }, {
870cabdff1aSopenharmony_ci     -8, -17, -10, -40, -13, -34, -47,   0,   5,  -4,
871cabdff1aSopenharmony_ci     16,  21,   8,  -2, -42, -43,  10, -26, -10,  -2,
872cabdff1aSopenharmony_ci     31,  11,  27,  19, -21,  10,  12, -20,   3, -11,
873cabdff1aSopenharmony_ci     25, -20, -25, -25, -29, -28,  28,  34,  25,  38,
874cabdff1aSopenharmony_ci    }, {
875cabdff1aSopenharmony_ci    -77,   2,  11,  -1,   7, -47, -52,   5, -29, -33,
876cabdff1aSopenharmony_ci     -1,  28,   0,  15, -28, -26,  -2, -30,   0,  -2,
877cabdff1aSopenharmony_ci     22,  -4,  33,   3, -36,  21,  -3,  15,   2,  -5,
878cabdff1aSopenharmony_ci      4,  -4,  -6,  -9, -37, -31,   5,  32,  20,  30,
879cabdff1aSopenharmony_ci    }, {
880cabdff1aSopenharmony_ci     81, -25, -14,  -8, -61,   0, -25,  28,  54,  20,
881cabdff1aSopenharmony_ci     -3, -14,  17,  -8,   0, -44,  16,  35,  13,  18,
882cabdff1aSopenharmony_ci    -43,  -7,   6,  11,  33,  -4,  30,  11, -22, -40,
883cabdff1aSopenharmony_ci      6, -43,   3,  50, -14, -18,  22,  18,  -1, -16,
884cabdff1aSopenharmony_ci    }, {
885cabdff1aSopenharmony_ci     12,  -4,   8,  29, -39, -12, -30,  33,  19,  -8,
886cabdff1aSopenharmony_ci    -21,  -6,   8,   9,  13, -28,   4,  31,  24,  18,
887cabdff1aSopenharmony_ci    -52, -23,  12,  -4,  18,   5,  14,  47, -24, -34,
888cabdff1aSopenharmony_ci    -14, -27,  22,  66, -22, -22,  -1,  16,  -6, -24,
889cabdff1aSopenharmony_ci    }, {
890cabdff1aSopenharmony_ci     41, -18,  -2, -21, -45, -24, -30,  21,  33,  24,
891cabdff1aSopenharmony_ci    -17,  24,  29, -15, -16, -51,  21,  33,  13,  45,
892cabdff1aSopenharmony_ci     -3,  -8,  28,  -2,   7,  -2,  37,  19,   7, -27,
893cabdff1aSopenharmony_ci     22, -39,  -7,  12,  -5,   5,  45,  35, -15,  -1,
894cabdff1aSopenharmony_ci    }, {
895cabdff1aSopenharmony_ci    -27,   1,  20,  17, -24, -38, -35,  26,  -1,  -4,
896cabdff1aSopenharmony_ci    -35,  32,  21,   3,  -2, -35,   8,  29,  24,  44,
897cabdff1aSopenharmony_ci    -12, -24,  34, -18,  -8,   7,  21,  55,   5, -21,
898cabdff1aSopenharmony_ci      2, -23,  11,  28, -13,   1,  22,  33, -21, -10,
899cabdff1aSopenharmony_ci    }, {
900cabdff1aSopenharmony_ci     36, -13,  -5,  -7, -40, -51, -28,  36,  52,  27,
901cabdff1aSopenharmony_ci     18, -36,   2, -22,   0, -33,  21,   2,  -3, -13,
902cabdff1aSopenharmony_ci    -26,  11,  14,   4,  10, -10,  18, -14, -22, -36,
903cabdff1aSopenharmony_ci     24, -21,   1,  28, -40, -42,  42,   5,  25,   5,
904cabdff1aSopenharmony_ci    }, {
905cabdff1aSopenharmony_ci    -32,   6,  17,  31, -19, -65, -33,  41,  16,  -1,
906cabdff1aSopenharmony_ci      0, -29,  -6,  -4,  13, -17,   9,  -1,   8, -14,
907cabdff1aSopenharmony_ci    -35,  -3,  19, -11,  -4,   0,   1,  21, -23, -30,
908cabdff1aSopenharmony_ci      3,  -5,  20,  44, -48, -46,  19,   3,  20,  -3,
909cabdff1aSopenharmony_ci    }, {
910cabdff1aSopenharmony_ci     -3,  -7,   6, -20, -25, -77, -32,  29,  31,  30,
911cabdff1aSopenharmony_ci      4,   2,  14, -29, -16, -40,  26,   0,  -3,  12,
912cabdff1aSopenharmony_ci     13,  10,  36,  -9, -15,  -8,  24,  -6,   7, -22,
913cabdff1aSopenharmony_ci     40, -17,  -8,  -9, -31, -18,  66,  22,  11,  19,
914cabdff1aSopenharmony_ci    }, {
915cabdff1aSopenharmony_ci    -72,  13,  29,  18,  -4, -90, -37,  34,  -4,   1,
916cabdff1aSopenharmony_ci    -13,   9,   6, -11,  -2, -24,  13,  -3,   7,  11,
917cabdff1aSopenharmony_ci      4,  -4,  42, -25, -31,   1,   8,  29,   6, -17,
918cabdff1aSopenharmony_ci     19,  -2,  10,   6, -38, -22,  42,  19,   6,  11,
919cabdff1aSopenharmony_ci    }, {
920cabdff1aSopenharmony_ci    116, -20, -68, -30, -28,  83,  28, -18,  32, -22,
921cabdff1aSopenharmony_ci    -13, -21,   5,  28,   5,  -7, -24,  -8, -22,  17,
922cabdff1aSopenharmony_ci    -23,  30, -25,  45,  15,  -9, -11, -18,  22, -10,
923cabdff1aSopenharmony_ci      4,  -2,  19, -12,  23,   3, -43,   2,  12,  -4,
924cabdff1aSopenharmony_ci    }, {
925cabdff1aSopenharmony_ci     47,   0, -45,   7,  -7,  69,  23, -13,  -2, -51,
926cabdff1aSopenharmony_ci    -32, -14,  -3,  47,  19,   8, -37, -11, -10,  16,
927cabdff1aSopenharmony_ci    -32,  15, -19,  29,   0,   1, -28,  18,  20,  -4,
928cabdff1aSopenharmony_ci    -16,  13,  38,   3,  15,   0, -66,   0,   7, -13,
929cabdff1aSopenharmony_ci    }, {
930cabdff1aSopenharmony_ci     77, -13, -56, -43, -13,  57,  23, -26,  11, -19,
931cabdff1aSopenharmony_ci    -27,  16,  17,  22, -10, -15, -19, -10, -22,  43,
932cabdff1aSopenharmony_ci     16,  30,  -2,  31, -11,  -6,  -5,  -9,  52,   2,
933cabdff1aSopenharmony_ci     20,   0,   8, -50,  33,  27, -19,  19,  -1,   9,
934cabdff1aSopenharmony_ci    }, {
935cabdff1aSopenharmony_ci      8,   6, -33,  -4,   7,  44,  18, -21, -23, -48,
936cabdff1aSopenharmony_ci    -46,  24,   9,  40,   3,   1, -32, -13, -11,  43,
937cabdff1aSopenharmony_ci      7,  14,   3,  15, -26,   3, -21,  26,  50,   8,
938cabdff1aSopenharmony_ci      0,  16,  27, -34,  25,  23, -43,  17,  -6,   1,
939cabdff1aSopenharmony_ci    }, {
940cabdff1aSopenharmony_ci     71,  -9, -59, -29,  -8,  30,  26, -11,  30, -16,
941cabdff1aSopenharmony_ci      8, -44,  -9,  14,   5,   2, -19, -40, -38, -15,
942cabdff1aSopenharmony_ci     -7,  50, -17,  38,  -7, -14, -24, -43,  22,  -6,
943cabdff1aSopenharmony_ci     22,  19,  17, -34,  -2, -20, -23, -10,  39,  16,
944cabdff1aSopenharmony_ci    }, {
945cabdff1aSopenharmony_ci      2,  11, -36,   9,  13,  17,  21,  -6,  -5, -45,
946cabdff1aSopenharmony_ci    -10, -36, -18,  33,  19,  19, -31, -44, -27, -15,
947cabdff1aSopenharmony_ci    -16,  34, -11,  22, -22,  -4, -40,  -7,  21,   0,
948cabdff1aSopenharmony_ci      1,  35,  36, -18, -10, -24, -46, -12,  34,   8,
949cabdff1aSopenharmony_ci    }, {
950cabdff1aSopenharmony_ci     32,  -2, -47, -42,   7,   5,  21, -18,   9, -12,
951cabdff1aSopenharmony_ci     -5,  -5,   2,   8, -10,  -4, -14, -42, -38,  10,
952cabdff1aSopenharmony_ci     33,  49,   5,  24, -33, -12, -17, -35,  52,   6,
953cabdff1aSopenharmony_ci     38,  22,   7, -72,   7,   3,   0,   6,  25,  30,
954cabdff1aSopenharmony_ci    }, {
955cabdff1aSopenharmony_ci    -36,  18, -24,  -3,  28,  -7,  16, -13, -26, -41,
956cabdff1aSopenharmony_ci    -24,   1,  -5,  26,   3,  12, -27, -46, -27,  10,
957cabdff1aSopenharmony_ci     24,  34,  10,   8, -49,  -2, -34,   0,  51,  12,
958cabdff1aSopenharmony_ci     17,  38,  25, -56,   0,   0, -22,   3,  20,  22,
959cabdff1aSopenharmony_ci    }, {
960cabdff1aSopenharmony_ci    121,  -9, -50, -10, -40,  40,  43,   9,  58,  12,
961cabdff1aSopenharmony_ci    -25, -41,  11,   2,  31,  -5,  -8,  19, -15,  32,
962cabdff1aSopenharmony_ci    -41,  30, -16,  16,  20, -28,   0,  -3,  26, -22,
963cabdff1aSopenharmony_ci     19,   0,  36,   4,  22,  12,  -6,  -9,  -1, -24,
964cabdff1aSopenharmony_ci    }, {
965cabdff1aSopenharmony_ci     52,  10, -27,  27, -18,  26,  38,  14,  23, -16,
966cabdff1aSopenharmony_ci    -44, -33,   3,  20,  45,  10, -20,  15,  -3,  31,
967cabdff1aSopenharmony_ci    -50,  14, -10,   0,   5, -17, -15,  32,  24, -16,
968cabdff1aSopenharmony_ci     -1,  15,  55,  20,  14,   8, -29, -12,  -7, -32,
969cabdff1aSopenharmony_ci    }, {
970cabdff1aSopenharmony_ci     82,  -3, -38, -23, -24,  15,  38,   2,  37,  15,
971cabdff1aSopenharmony_ci    -39,  -2,  23,  -4,  15, -12,  -3,  17, -15,  58,
972cabdff1aSopenharmony_ci     -1,  29,   6,   2,  -5, -26,   7,   4,  56,  -9,
973cabdff1aSopenharmony_ci     35,   3,  25, -33,  32,  36,  17,   7, -15,  -9,
974cabdff1aSopenharmony_ci    }, {
975cabdff1aSopenharmony_ci     13,  17, -15,  15,  -3,   1,  33,   7,   1, -12,
976cabdff1aSopenharmony_ci    -58,   5,  15,  13,  29,   3, -16,  13,  -4,  57,
977cabdff1aSopenharmony_ci    -10,  13,  11, -13, -21, -15,  -9,  40,  55,  -3,
978cabdff1aSopenharmony_ci     14,  19,  44, -17,  24,  32,  -5,   4, -21, -18,
979cabdff1aSopenharmony_ci    }, {
980cabdff1aSopenharmony_ci     76,   1, -41,  -9, -19, -12,  41,  17,  55,  18,
981cabdff1aSopenharmony_ci     -3, -63,  -3, -12,  30,   5,  -3, -12, -31,   0,
982cabdff1aSopenharmony_ci    -24,  49,  -8,   9,  -1, -33, -12, -29,  27, -18,
983cabdff1aSopenharmony_ci     37,  21,  34, -17,  -3, -11,  14, -23,  25,  -2,
984cabdff1aSopenharmony_ci    }, {
985cabdff1aSopenharmony_ci      7,  22, -18,  29,   1, -25,  36,  21,  20,  -9,
986cabdff1aSopenharmony_ci    -22, -56, -11,   6,  45,  21, -15, -16, -20,  -1,
987cabdff1aSopenharmony_ci    -33,  34,  -2,  -6, -17, -23, -28,   6,  25, -12,
988cabdff1aSopenharmony_ci     16,  37,  53,  -1, -11, -15,  -8, -25,  20, -11,
989cabdff1aSopenharmony_ci    }, {
990cabdff1aSopenharmony_ci     37,   8, -29, -22,  -4, -37,  36,   9,  34,  22,
991cabdff1aSopenharmony_ci    -17, -24,   8, -18,  15,  -2,   1, -14, -31,  25,
992cabdff1aSopenharmony_ci     15,  48,  13,  -4, -28, -31,  -5, -21,  57,  -4,
993cabdff1aSopenharmony_ci     53,  24,  23, -55,   6,  12,  37,  -6,  11,  11,
994cabdff1aSopenharmony_ci    }, {
995cabdff1aSopenharmony_ci    -31,  28,  -6,  16,  16, -50,  31,  14,   0,  -6,
996cabdff1aSopenharmony_ci    -36, -17,   0,   0,  29,  14, -11, -18, -20,  25,
997cabdff1aSopenharmony_ci      6,  33,  19, -20, -43, -21, -21,  14,  55,   0,
998cabdff1aSopenharmony_ci     32,  40,  42, -39,  -1,   8,  14,  -8,   6,   3,
999cabdff1aSopenharmony_ci    }, {
1000cabdff1aSopenharmony_ci    119, -24, -39, -44, -51,  66, -14,  15,  31, -26,
1001cabdff1aSopenharmony_ci     -1,   0,   7,  16, -19, -28, -19,  22, -26,   4,
1002cabdff1aSopenharmony_ci    -13,  28, -16,  29,   5,  -1,  16, -16,   8, -35,
1003cabdff1aSopenharmony_ci    -10, -42,  -4,  17,  29, -19, -42,  -7,   0, -15,
1004cabdff1aSopenharmony_ci    }, {
1005cabdff1aSopenharmony_ci     50,  -3, -16,  -5, -30,  53, -19,  20,  -3, -55,
1006cabdff1aSopenharmony_ci    -19,   8,   0,  34,  -5, -11, -32,  18, -15,   4,
1007cabdff1aSopenharmony_ci    -22,  13, -10,  13,  -9,   8,   0,  19,   7, -29,
1008cabdff1aSopenharmony_ci    -31, -26,  13,  33,  21, -22, -65,  -9,  -4, -23,
1009cabdff1aSopenharmony_ci    }, {
1010cabdff1aSopenharmony_ci     79, -17, -27, -56, -36,  41, -19,   8,  10, -22,
1011cabdff1aSopenharmony_ci    -15,  39,  20,   9, -35, -35, -15,  20, -26,  31,
1012cabdff1aSopenharmony_ci     26,  27,   6,  15, -20,   0,  23,  -8,  38, -22,
1013cabdff1aSopenharmony_ci      5, -38, -15, -20,  39,   4, -18,   9, -13,  -1,
1014cabdff1aSopenharmony_ci    }, {
1015cabdff1aSopenharmony_ci     10,   3,  -4, -18, -15,  27, -24,  13, -24, -51,
1016cabdff1aSopenharmony_ci    -34,  47,  12,  28, -21, -19, -27,  16, -15,  30,
1017cabdff1aSopenharmony_ci     17,  12,  12,   0, -36,  10,   7,  27,  37, -16,
1018cabdff1aSopenharmony_ci    -15, -22,   3,  -4,  31,   1, -42,   7, -18,  -9,
1019cabdff1aSopenharmony_ci    }, {
1020cabdff1aSopenharmony_ci     74, -12, -30, -42, -30,  14, -16,  23,  29, -19,
1021cabdff1aSopenharmony_ci     20, -21,  -7,   1, -19, -17, -14, -10, -43, -27,
1022cabdff1aSopenharmony_ci      3,  48,  -8,  22, -16,  -7,   4, -42,   9, -31,
1023cabdff1aSopenharmony_ci      6, -20,  -6,  -4,   3, -43, -22, -20,  28,   5,
1024cabdff1aSopenharmony_ci    }, {
1025cabdff1aSopenharmony_ci      5,   7,  -7,  -4,  -9,   0, -21,  28,  -6, -48,
1026cabdff1aSopenharmony_ci      2, -14, -15,  20,  -5,   0, -27, -14, -32, -28,
1027cabdff1aSopenharmony_ci     -5,  32,  -2,   6, -32,   3, -12,  -5,   8, -25,
1028cabdff1aSopenharmony_ci    -14,  -4,  12,  11,  -4, -47, -45, -22,  22,  -2,
1029cabdff1aSopenharmony_ci    }, {
1030cabdff1aSopenharmony_ci     34,  -6, -18, -55, -15, -11, -21,  16,   8, -16,
1031cabdff1aSopenharmony_ci      6,  16,   5,  -4, -35, -24, -10, -12, -43,  -1,
1032cabdff1aSopenharmony_ci     43,  47,  14,   8, -43,  -5,  10, -34,  39, -18,
1033cabdff1aSopenharmony_ci     22, -16, -17, -42,  13, -19,   1,  -3,  14,  20,
1034cabdff1aSopenharmony_ci    }, {
1035cabdff1aSopenharmony_ci    -34,  14,   4, -17,   5, -24, -26,  20, -27, -45,
1036cabdff1aSopenharmony_ci    -12,  24,  -2,  13, -21,  -8, -22, -16, -32,  -2,
1037cabdff1aSopenharmony_ci     34,  31,  20,  -7, -58,   5,  -5,   2,  38, -12,
1038cabdff1aSopenharmony_ci      2,  -1,   1, -26,   5, -23, -21,  -6,   8,  11,
1039cabdff1aSopenharmony_ci    }, {
1040cabdff1aSopenharmony_ci    124, -13, -21, -23, -62,  23,   0,  43,  57,   8,
1041cabdff1aSopenharmony_ci    -13, -18,  14, -10,   6, -26,  -3,  49, -19,  19,
1042cabdff1aSopenharmony_ci    -31,  27,  -7,   0,  11, -20,  29,  -1,  12, -47,
1043cabdff1aSopenharmony_ci      4, -39,  11,  34,  28,  -9,  -5, -19, -13, -34,
1044cabdff1aSopenharmony_ci    }, {
1045cabdff1aSopenharmony_ci     55,   6,   1,  14, -41,  10,  -4,  48,  22, -20,
1046cabdff1aSopenharmony_ci    -31, -10,   5,   7,  20,  -9, -16,  45,  -8,  19,
1047cabdff1aSopenharmony_ci    -40,  12,  -1, -15,  -4, -10,  12,  34,  11, -41,
1048cabdff1aSopenharmony_ci    -16, -24,  30,  49,  20, -13, -28, -22, -18, -43,
1049cabdff1aSopenharmony_ci    }, {
1050cabdff1aSopenharmony_ci     84,  -6,  -9, -36, -47,  -1,  -4,  36,  36,  12,
1051cabdff1aSopenharmony_ci    -27,  20,  26, -17,  -9, -33,   1,  47, -19,  46,
1052cabdff1aSopenharmony_ci      9,  27,  15, -13, -15, -18,  35,   6,  42, -33,
1053cabdff1aSopenharmony_ci     20, -36,   1,  -4,  38,  14,  18,  -2, -27, -20,
1054cabdff1aSopenharmony_ci    }, {
1055cabdff1aSopenharmony_ci     15,  13,  13,   1, -26, -14,  -9,  41,   1, -16,
1056cabdff1aSopenharmony_ci    -46,  27,  18,   1,   4, -16, -11,  43,  -8,  45,
1057cabdff1aSopenharmony_ci      0,  11,  21, -29, -30,  -8,  19,  42,  41, -28,
1058cabdff1aSopenharmony_ci      0, -20,  20,  11,  30,  10,  -4,  -5, -32, -28,
1059cabdff1aSopenharmony_ci    }, {
1060cabdff1aSopenharmony_ci     79,  -2, -12, -22, -42, -28,  -1,  51,  54,  15,
1061cabdff1aSopenharmony_ci      8, -41,   0, -24,   6, -15,   1,  17, -36, -12,
1062cabdff1aSopenharmony_ci    -14,  47,   0,  -6, -11, -26,  16, -27,  13, -43,
1063cabdff1aSopenharmony_ci     22, -18,  10,  12,   2, -34,  15, -33,  13, -13,
1064cabdff1aSopenharmony_ci    }, {
1065cabdff1aSopenharmony_ci     10,  18,  10,  15, -21, -41,  -6,  56,  19, -13,
1066cabdff1aSopenharmony_ci     -9, -33,  -9,  -6,  20,   1, -11,  13, -24, -13,
1067cabdff1aSopenharmony_ci    -23,  32,   6, -22, -26, -15,   0,   8,  12, -37,
1068cabdff1aSopenharmony_ci      1,  -2,  28,  27,  -5, -37,  -7, -35,   8, -21,
1069cabdff1aSopenharmony_ci    }, {
1070cabdff1aSopenharmony_ci     39,   4,   0, -35, -27, -53,  -6,  44,  33,  18,
1071cabdff1aSopenharmony_ci     -5,  -2,  11, -31,  -9, -22,   6,  15, -36,  13,
1072cabdff1aSopenharmony_ci     25,  46,  23, -20, -37, -24,  23, -19,  43, -29,
1073cabdff1aSopenharmony_ci     38, -14,   0, -26,  12, -10,  38, -16,   0,   0,
1074cabdff1aSopenharmony_ci    }, {
1075cabdff1aSopenharmony_ci    -29,  25,  22,   2,  -6, -67, -11,  49,  -1, -10,
1076cabdff1aSopenharmony_ci    -24,   5,   3, -13,   4,  -5,  -6,  11, -25,  12,
1077cabdff1aSopenharmony_ci     16,  31,  28, -36, -53, -13,   6,  16,  42, -24,
1078cabdff1aSopenharmony_ci     17,   1,  18, -10,   4, -13,  15, -18,  -5,  -7,
1079cabdff1aSopenharmony_ci    }, {
1080cabdff1aSopenharmony_ci     29, -25, -22,  -2,   6,  67,  11, -49,   1,  10,
1081cabdff1aSopenharmony_ci     24,  -5,  -3,  13,  -4,   5,   6, -11,  25, -12,
1082cabdff1aSopenharmony_ci    -16, -31, -28,  36,  53,  13,  -6, -16, -42,  24,
1083cabdff1aSopenharmony_ci    -17,  -1, -18,  10,  -4,  13, -15,  18,   5,   7,
1084cabdff1aSopenharmony_ci    }, {
1085cabdff1aSopenharmony_ci    -39,  -4,   0,  35,  27,  53,   6, -44, -33, -18,
1086cabdff1aSopenharmony_ci      5,   2, -11,  31,   9,  22,  -6, -15,  36, -13,
1087cabdff1aSopenharmony_ci    -25, -46, -23,  20,  37,  24, -23,  19, -43,  29,
1088cabdff1aSopenharmony_ci    -38,  14,   0,  26, -12,  10, -38,  16,   0,   0,
1089cabdff1aSopenharmony_ci    }, {
1090cabdff1aSopenharmony_ci    -10, -18, -10, -15,  21,  41,   6, -56, -19,  13,
1091cabdff1aSopenharmony_ci      9,  33,   9,   6, -20,  -1,  11, -13,  24,  13,
1092cabdff1aSopenharmony_ci     23, -32,  -6,  22,  26,  15,   0,  -8, -12,  37,
1093cabdff1aSopenharmony_ci     -1,   2, -28, -27,   5,  37,   7,  35,  -8,  21,
1094cabdff1aSopenharmony_ci    }, {
1095cabdff1aSopenharmony_ci    -79,   2,  12,  22,  42,  28,   1, -51, -54, -15,
1096cabdff1aSopenharmony_ci     -8,  41,   0,  24,  -6,  15,  -1, -17,  36,  12,
1097cabdff1aSopenharmony_ci     14, -47,   0,   6,  11,  26, -16,  27, -13,  43,
1098cabdff1aSopenharmony_ci    -22,  18, -10, -12,  -2,  34, -15,  33, -13,  13,
1099cabdff1aSopenharmony_ci    }, {
1100cabdff1aSopenharmony_ci    -15, -13, -13,  -1,  26,  14,   9, -41,  -1,  16,
1101cabdff1aSopenharmony_ci     46, -27, -18,  -1,  -4,  16,  11, -43,   8, -45,
1102cabdff1aSopenharmony_ci      0, -11, -21,  29,  30,   8, -19, -42, -41,  28,
1103cabdff1aSopenharmony_ci      0,  20, -20, -11, -30, -10,   4,   5,  32,  28,
1104cabdff1aSopenharmony_ci    }, {
1105cabdff1aSopenharmony_ci    -84,   6,   9,  36,  47,   1,   4, -36, -36, -12,
1106cabdff1aSopenharmony_ci     27, -20, -26,  17,   9,  33,  -1, -47,  19, -46,
1107cabdff1aSopenharmony_ci     -9, -27, -15,  13,  15,  18, -35,  -6, -42,  33,
1108cabdff1aSopenharmony_ci    -20,  36,  -1,   4, -38, -14, -18,   2,  27,  20,
1109cabdff1aSopenharmony_ci    }, {
1110cabdff1aSopenharmony_ci    -55,  -6,  -1, -14,  41, -10,   4, -48, -22,  20,
1111cabdff1aSopenharmony_ci     31,  10,  -5,  -7, -20,   9,  16, -45,   8, -19,
1112cabdff1aSopenharmony_ci     40, -12,   1,  15,   4,  10, -12, -34, -11,  41,
1113cabdff1aSopenharmony_ci     16,  24, -30, -49, -20,  13,  28,  22,  18,  43,
1114cabdff1aSopenharmony_ci    }, {
1115cabdff1aSopenharmony_ci   -124,  13,  21,  23,  62, -23,   0, -43, -57,  -8,
1116cabdff1aSopenharmony_ci     13,  18, -14,  10,  -6,  26,   3, -49,  19, -19,
1117cabdff1aSopenharmony_ci     31, -27,   7,   0, -11,  20, -29,   1, -12,  47,
1118cabdff1aSopenharmony_ci     -4,  39, -11, -34, -28,   9,   5,  19,  13,  34,
1119cabdff1aSopenharmony_ci    }, {
1120cabdff1aSopenharmony_ci     34, -14,  -4,  17,  -5,  24,  26, -20,  27,  45,
1121cabdff1aSopenharmony_ci     12, -24,   2, -13,  21,   8,  22,  16,  32,   2,
1122cabdff1aSopenharmony_ci    -34, -31, -20,   7,  58,  -5,   5,  -2, -38,  12,
1123cabdff1aSopenharmony_ci     -2,   1,  -1,  26,  -5,  23,  21,   6,  -8, -11,
1124cabdff1aSopenharmony_ci    }, {
1125cabdff1aSopenharmony_ci    -34,   6,  18,  55,  15,  11,  21, -16,  -8,  16,
1126cabdff1aSopenharmony_ci     -6, -16,  -5,   4,  35,  24,  10,  12,  43,   1,
1127cabdff1aSopenharmony_ci    -43, -47, -14,  -8,  43,   5, -10,  34, -39,  18,
1128cabdff1aSopenharmony_ci    -22,  16,  17,  42, -13,  19,  -1,   3, -14, -20,
1129cabdff1aSopenharmony_ci    }, {
1130cabdff1aSopenharmony_ci     -5,  -7,   7,   4,   9,   0,  21, -28,   6,  48,
1131cabdff1aSopenharmony_ci     -2,  14,  15, -20,   5,   0,  27,  14,  32,  28,
1132cabdff1aSopenharmony_ci      5, -32,   2,  -6,  32,  -3,  12,   5,  -8,  25,
1133cabdff1aSopenharmony_ci     14,   4, -12, -11,   4,  47,  45,  22, -22,   2,
1134cabdff1aSopenharmony_ci    }, {
1135cabdff1aSopenharmony_ci    -74,  12,  30,  42,  30, -14,  16, -23, -29,  19,
1136cabdff1aSopenharmony_ci    -20,  21,   7,  -1,  19,  17,  14,  10,  43,  27,
1137cabdff1aSopenharmony_ci     -3, -48,   8, -22,  16,   7,  -4,  42,  -9,  31,
1138cabdff1aSopenharmony_ci     -6,  20,   6,   4,  -3,  43,  22,  20, -28,  -5,
1139cabdff1aSopenharmony_ci    }, {
1140cabdff1aSopenharmony_ci    -10,  -3,   4,  18,  15, -27,  24, -13,  24,  51,
1141cabdff1aSopenharmony_ci     34, -47, -12, -28,  21,  19,  27, -16,  15, -30,
1142cabdff1aSopenharmony_ci    -17, -12, -12,   0,  36, -10,  -7, -27, -37,  16,
1143cabdff1aSopenharmony_ci     15,  22,  -3,   4, -31,  -1,  42,  -7,  18,   9,
1144cabdff1aSopenharmony_ci    }, {
1145cabdff1aSopenharmony_ci    -79,  17,  27,  56,  36, -41,  19,  -8, -10,  22,
1146cabdff1aSopenharmony_ci     15, -39, -20,  -9,  35,  35,  15, -20,  26, -31,
1147cabdff1aSopenharmony_ci    -26, -27,  -6, -15,  20,   0, -23,   8, -38,  22,
1148cabdff1aSopenharmony_ci     -5,  38,  15,  20, -39,  -4,  18,  -9,  13,   1,
1149cabdff1aSopenharmony_ci    }, {
1150cabdff1aSopenharmony_ci    -50,   3,  16,   5,  30, -53,  19, -20,   3,  55,
1151cabdff1aSopenharmony_ci     19,  -8,   0, -34,   5,  11,  32, -18,  15,  -4,
1152cabdff1aSopenharmony_ci     22, -13,  10, -13,   9,  -8,   0, -19,  -7,  29,
1153cabdff1aSopenharmony_ci     31,  26, -13, -33, -21,  22,  65,   9,   4,  23,
1154cabdff1aSopenharmony_ci    }, {
1155cabdff1aSopenharmony_ci   -119,  24,  39,  44,  51, -66,  14, -15, -31,  26,
1156cabdff1aSopenharmony_ci      1,   0,  -7, -16,  19,  28,  19, -22,  26,  -4,
1157cabdff1aSopenharmony_ci     13, -28,  16, -29,  -5,   1, -16,  16,  -8,  35,
1158cabdff1aSopenharmony_ci     10,  42,   4, -17, -29,  19,  42,   7,   0,  15,
1159cabdff1aSopenharmony_ci    }, {
1160cabdff1aSopenharmony_ci     31, -28,   6, -16, -16,  50, -31, -14,   0,   6,
1161cabdff1aSopenharmony_ci     36,  17,   0,   0, -29, -14,  11,  18,  20, -25,
1162cabdff1aSopenharmony_ci     -6, -33, -19,  20,  43,  21,  21, -14, -55,   0,
1163cabdff1aSopenharmony_ci    -32, -40, -42,  39,   1,  -8, -14,   8,  -6,  -3,
1164cabdff1aSopenharmony_ci    }, {
1165cabdff1aSopenharmony_ci    -37,  -8,  29,  22,   4,  37, -36,  -9, -34, -22,
1166cabdff1aSopenharmony_ci     17,  24,  -8,  18, -15,   2,  -1,  14,  31, -25,
1167cabdff1aSopenharmony_ci    -15, -48, -13,   4,  28,  31,   5,  21, -57,   4,
1168cabdff1aSopenharmony_ci    -53, -24, -23,  55,  -6, -12, -37,   6, -11, -11,
1169cabdff1aSopenharmony_ci    }, {
1170cabdff1aSopenharmony_ci     -7, -22,  18, -29,  -1,  25, -36, -21, -20,   9,
1171cabdff1aSopenharmony_ci     22,  56,  11,  -6, -45, -21,  15,  16,  20,   1,
1172cabdff1aSopenharmony_ci     33, -34,   2,   6,  17,  23,  28,  -6, -25,  12,
1173cabdff1aSopenharmony_ci    -16, -37, -53,   1,  11,  15,   8,  25, -20,  11,
1174cabdff1aSopenharmony_ci    }, {
1175cabdff1aSopenharmony_ci    -76,  -1,  41,   9,  19,  12, -41, -17, -55, -18,
1176cabdff1aSopenharmony_ci      3,  63,   3,  12, -30,  -5,   3,  12,  31,   0,
1177cabdff1aSopenharmony_ci     24, -49,   8,  -9,   1,  33,  12,  29, -27,  18,
1178cabdff1aSopenharmony_ci    -37, -21, -34,  17,   3,  11, -14,  23, -25,   2,
1179cabdff1aSopenharmony_ci    }, {
1180cabdff1aSopenharmony_ci    -13, -17,  15, -15,   3,  -1, -33,  -7,  -1,  12,
1181cabdff1aSopenharmony_ci     58,  -5, -15, -13, -29,  -3,  16, -13,   4, -57,
1182cabdff1aSopenharmony_ci     10, -13, -11,  13,  21,  15,   9, -40, -55,   3,
1183cabdff1aSopenharmony_ci    -14, -19, -44,  17, -24, -32,   5,  -4,  21,  18,
1184cabdff1aSopenharmony_ci    }, {
1185cabdff1aSopenharmony_ci    -82,   3,  38,  23,  24, -15, -38,  -2, -37, -15,
1186cabdff1aSopenharmony_ci     39,   2, -23,   4, -15,  12,   3, -17,  15, -58,
1187cabdff1aSopenharmony_ci      1, -29,  -6,  -2,   5,  26,  -7,  -4, -56,   9,
1188cabdff1aSopenharmony_ci    -35,  -3, -25,  33, -32, -36, -17,  -7,  15,   9,
1189cabdff1aSopenharmony_ci    }, {
1190cabdff1aSopenharmony_ci    -52, -10,  27, -27,  18, -26, -38, -14, -23,  16,
1191cabdff1aSopenharmony_ci     44,  33,  -3, -20, -45, -10,  20, -15,   3, -31,
1192cabdff1aSopenharmony_ci     50, -14,  10,   0,  -5,  17,  15, -32, -24,  16,
1193cabdff1aSopenharmony_ci      1, -15, -55, -20, -14,  -8,  29,  12,   7,  32,
1194cabdff1aSopenharmony_ci    }, {
1195cabdff1aSopenharmony_ci   -121,   9,  50,  10,  40, -40, -43,  -9, -58, -12,
1196cabdff1aSopenharmony_ci     25,  41, -11,  -2, -31,   5,   8, -19,  15, -32,
1197cabdff1aSopenharmony_ci     41, -30,  16, -16, -20,  28,   0,   3, -26,  22,
1198cabdff1aSopenharmony_ci    -19,   0, -36,  -4, -22, -12,   6,   9,   1,  24,
1199cabdff1aSopenharmony_ci    }, {
1200cabdff1aSopenharmony_ci     36, -18,  24,   3, -28,   7, -16,  13,  26,  41,
1201cabdff1aSopenharmony_ci     24,  -1,   5, -26,  -3, -12,  27,  46,  27, -10,
1202cabdff1aSopenharmony_ci    -24, -34, -10,  -8,  49,   2,  34,   0, -51, -12,
1203cabdff1aSopenharmony_ci    -17, -38, -25,  56,   0,   0,  22,  -3, -20, -22,
1204cabdff1aSopenharmony_ci    }, {
1205cabdff1aSopenharmony_ci    -32,   2,  47,  42,  -7,  -5, -21,  18,  -9,  12,
1206cabdff1aSopenharmony_ci      5,   5,  -2,  -8,  10,   4,  14,  42,  38, -10,
1207cabdff1aSopenharmony_ci    -33, -49,  -5, -24,  33,  12,  17,  35, -52,  -6,
1208cabdff1aSopenharmony_ci    -38, -22,  -7,  72,  -7,  -3,   0,  -6, -25, -30,
1209cabdff1aSopenharmony_ci    }, {
1210cabdff1aSopenharmony_ci     -2, -11,  36,  -9, -13, -17, -21,   6,   5,  45,
1211cabdff1aSopenharmony_ci     10,  36,  18, -33, -19, -19,  31,  44,  27,  15,
1212cabdff1aSopenharmony_ci     16, -34,  11, -22,  22,   4,  40,   7, -21,   0,
1213cabdff1aSopenharmony_ci     -1, -35, -36,  18,  10,  24,  46,  12, -34,  -8,
1214cabdff1aSopenharmony_ci    }, {
1215cabdff1aSopenharmony_ci    -71,   9,  59,  29,   8, -30, -26,  11, -30,  16,
1216cabdff1aSopenharmony_ci     -8,  44,   9, -14,  -5,  -2,  19,  40,  38,  15,
1217cabdff1aSopenharmony_ci      7, -50,  17, -38,   7,  14,  24,  43, -22,   6,
1218cabdff1aSopenharmony_ci    -22, -19, -17,  34,   2,  20,  23,  10, -39, -16,
1219cabdff1aSopenharmony_ci    }, {
1220cabdff1aSopenharmony_ci     -8,  -6,  33,   4,  -7, -44, -18,  21,  23,  48,
1221cabdff1aSopenharmony_ci     46, -24,  -9, -40,  -3,  -1,  32,  13,  11, -43,
1222cabdff1aSopenharmony_ci     -7, -14,  -3, -15,  26,  -3,  21, -26, -50,  -8,
1223cabdff1aSopenharmony_ci      0, -16, -27,  34, -25, -23,  43, -17,   6,  -1,
1224cabdff1aSopenharmony_ci    }, {
1225cabdff1aSopenharmony_ci    -77,  13,  56,  43,  13, -57, -23,  26, -11,  19,
1226cabdff1aSopenharmony_ci     27, -16, -17, -22,  10,  15,  19,  10,  22, -43,
1227cabdff1aSopenharmony_ci    -16, -30,   2, -31,  11,   6,   5,   9, -52,  -2,
1228cabdff1aSopenharmony_ci    -20,   0,  -8,  50, -33, -27,  19, -19,   1,  -9,
1229cabdff1aSopenharmony_ci    }, {
1230cabdff1aSopenharmony_ci    -47,   0,  45,  -7,   7, -69, -23,  13,   2,  51,
1231cabdff1aSopenharmony_ci     32,  14,   3, -47, -19,  -8,  37,  11,  10, -16,
1232cabdff1aSopenharmony_ci     32, -15,  19, -29,   0,  -1,  28, -18, -20,   4,
1233cabdff1aSopenharmony_ci     16, -13, -38,  -3, -15,   0,  66,   0,  -7,  13,
1234cabdff1aSopenharmony_ci    }, {
1235cabdff1aSopenharmony_ci   -116,  20,  68,  30,  28, -83, -28,  18, -32,  22,
1236cabdff1aSopenharmony_ci     13,  21,  -5, -28,  -5,   7,  24,   8,  22, -17,
1237cabdff1aSopenharmony_ci     23, -30,  25, -45, -15,   9,  11,  18, -22,  10,
1238cabdff1aSopenharmony_ci     -4,   2, -19,  12, -23,  -3,  43,  -2, -12,   4,
1239cabdff1aSopenharmony_ci    }, {
1240cabdff1aSopenharmony_ci     72, -13, -29, -18,   4,  90,  37, -34,   4,  -1,
1241cabdff1aSopenharmony_ci     13,  -9,  -6,  11,   2,  24, -13,   3,  -7, -11,
1242cabdff1aSopenharmony_ci     -4,   4, -42,  25,  31,  -1,  -8, -29,  -6,  17,
1243cabdff1aSopenharmony_ci    -19,   2, -10,  -6,  38,  22, -42, -19,  -6, -11,
1244cabdff1aSopenharmony_ci    }, {
1245cabdff1aSopenharmony_ci      3,   7,  -6,  20,  25,  77,  32, -29, -31, -30,
1246cabdff1aSopenharmony_ci     -4,  -2, -14,  29,  16,  40, -26,   0,   3, -12,
1247cabdff1aSopenharmony_ci    -13, -10, -36,   9,  15,   8, -24,   6,  -7,  22,
1248cabdff1aSopenharmony_ci    -40,  17,   8,   9,  31,  18, -66, -22, -11, -19,
1249cabdff1aSopenharmony_ci    }, {
1250cabdff1aSopenharmony_ci     32,  -6, -17, -31,  19,  65,  33, -41, -16,   1,
1251cabdff1aSopenharmony_ci      0,  29,   6,   4, -13,  17,  -9,   1,  -8,  14,
1252cabdff1aSopenharmony_ci     35,   3, -19,  11,   4,   0,  -1, -21,  23,  30,
1253cabdff1aSopenharmony_ci     -3,   5, -20, -44,  48,  46, -19,  -3, -20,   3,
1254cabdff1aSopenharmony_ci    }, {
1255cabdff1aSopenharmony_ci    -36,  13,   5,   7,  40,  51,  28, -36, -52, -27,
1256cabdff1aSopenharmony_ci    -18,  36,  -2,  22,   0,  33, -21,  -2,   3,  13,
1257cabdff1aSopenharmony_ci     26, -11, -14,  -4, -10,  10, -18,  14,  22,  36,
1258cabdff1aSopenharmony_ci    -24,  21,  -1, -28,  40,  42, -42,  -5, -25,  -5,
1259cabdff1aSopenharmony_ci    }, {
1260cabdff1aSopenharmony_ci     27,  -1, -20, -17,  24,  38,  35, -26,   1,   4,
1261cabdff1aSopenharmony_ci     35, -32, -21,  -3,   2,  35,  -8, -29, -24, -44,
1262cabdff1aSopenharmony_ci     12,  24, -34,  18,   8,  -7, -21, -55,  -5,  21,
1263cabdff1aSopenharmony_ci     -2,  23, -11, -28,  13,  -1, -22, -33,  21,  10,
1264cabdff1aSopenharmony_ci    }, {
1265cabdff1aSopenharmony_ci    -41,  18,   2,  21,  45,  24,  30, -21, -33, -24,
1266cabdff1aSopenharmony_ci     17, -24, -29,  15,  16,  51, -21, -33, -13, -45,
1267cabdff1aSopenharmony_ci      3,   8, -28,   2,  -7,   2, -37, -19,  -7,  27,
1268cabdff1aSopenharmony_ci    -22,  39,   7, -12,   5,  -5, -45, -35,  15,   1,
1269cabdff1aSopenharmony_ci    }, {
1270cabdff1aSopenharmony_ci    -12,   4,  -8, -29,  39,  12,  30, -33, -19,   8,
1271cabdff1aSopenharmony_ci     21,   6,  -8,  -9, -13,  28,  -4, -31, -24, -18,
1272cabdff1aSopenharmony_ci     52,  23, -12,   4, -18,  -5, -14, -47,  24,  34,
1273cabdff1aSopenharmony_ci     14,  27, -22, -66,  22,  22,   1, -16,   6,  24,
1274cabdff1aSopenharmony_ci    }, {
1275cabdff1aSopenharmony_ci    -81,  25,  14,   8,  61,   0,  25, -28, -54, -20,
1276cabdff1aSopenharmony_ci      3,  14, -17,   8,   0,  44, -16, -35, -13, -18,
1277cabdff1aSopenharmony_ci     43,   7,  -6, -11, -33,   4, -30, -11,  22,  40,
1278cabdff1aSopenharmony_ci     -6,  43,  -3, -50,  14,  18, -22, -18,   1,  16,
1279cabdff1aSopenharmony_ci    }, {
1280cabdff1aSopenharmony_ci     77,  -2, -11,   1,  -7,  47,  52,  -5,  29,  33,
1281cabdff1aSopenharmony_ci      1, -28,   0, -15,  28,  26,   2,  30,   0,   2,
1282cabdff1aSopenharmony_ci    -22,   4, -33,  -3,  36, -21,   3, -15,  -2,   5,
1283cabdff1aSopenharmony_ci     -4,   4,   6,   9,  37,  31,  -5, -32, -20, -30,
1284cabdff1aSopenharmony_ci    }, {
1285cabdff1aSopenharmony_ci      8,  17,  10,  40,  13,  34,  47,   0,  -5,   4,
1286cabdff1aSopenharmony_ci    -16, -21,  -8,   2,  42,  43, -10,  26,  10,   2,
1287cabdff1aSopenharmony_ci    -31, -11, -27, -19,  21, -10, -12,  20,  -3,  11,
1288cabdff1aSopenharmony_ci    -25,  20,  25,  25,  29,  28, -28, -34, -25, -38,
1289cabdff1aSopenharmony_ci    }, {
1290cabdff1aSopenharmony_ci     37,   3,   0, -10,   7,  22,  48, -12,   8,  36,
1291cabdff1aSopenharmony_ci    -12,   9,  12, -22,  12,  19,   6,  28,   0,  29,
1292cabdff1aSopenharmony_ci     18,   3, -11, -17,  10, -18,  10,  -7,  27,  18,
1293cabdff1aSopenharmony_ci     11,   7,  -3, -28,  47,  55,  18, -15, -34, -16,
1294cabdff1aSopenharmony_ci    }, {
1295cabdff1aSopenharmony_ci    -31,  24,  23,  27,  29,   9,  43,  -8, -26,   7,
1296cabdff1aSopenharmony_ci    -30,  17,   4,  -3,  26,  35,  -5,  24,  10,  28,
1297cabdff1aSopenharmony_ci      9, -12,  -5, -33,  -5,  -8,  -5,  29,  26,  24,
1298cabdff1aSopenharmony_ci     -9,  23,  14, -12,  39,  52,  -5, -18, -39, -24,
1299cabdff1aSopenharmony_ci    }, {
1300cabdff1aSopenharmony_ci     32,   8,  -3,   2,  13,  -4,  50,   1,  27,  39,
1301cabdff1aSopenharmony_ci     23, -51, -15, -30,  27,  37,   7,  -1, -17, -29,
1302cabdff1aSopenharmony_ci     -5,  23, -25, -10,  14, -26,  -8, -41,  -1,   9,
1303cabdff1aSopenharmony_ci     13,  26,   5, -12,  12,   7,  14, -45,   6,  -9,
1304cabdff1aSopenharmony_ci    }, {
1305cabdff1aSopenharmony_ci    -36,  29,  19,  41,  34, -18,  45,   6,  -8,  10,
1306cabdff1aSopenharmony_ci      5, -43, -23, -11,  42,  53,  -5,  -5,  -6, -30,
1307cabdff1aSopenharmony_ci    -14,   8, -20, -26,  -1, -16, -25,  -4,  -3,  15,
1308cabdff1aSopenharmony_ci     -7,  41,  23,   3,   4,   3,  -8, -48,   1, -17,
1309cabdff1aSopenharmony_ci    }, {
1310cabdff1aSopenharmony_ci     -7,  15,   9,  -9,  28, -29,  45,  -5,   6,  43,
1311cabdff1aSopenharmony_ci      9, -12,  -2, -36,  12,  30,  11,  -3, -17,  -3,
1312cabdff1aSopenharmony_ci     34,  22,  -3, -24, -12, -24,  -2, -32,  28,  22,
1313cabdff1aSopenharmony_ci     29,  29,  -5, -50,  21,  31,  38, -29,  -7,   5,
1314cabdff1aSopenharmony_ci    }, {
1315cabdff1aSopenharmony_ci    -76,  35,  31,  28,  49, -43,  40,   0, -29,  14,
1316cabdff1aSopenharmony_ci     -8,  -5, -10, -18,  26,  46,   0,  -7,  -6,  -3,
1317cabdff1aSopenharmony_ci     25,   7,   2, -40, -28, -14, -18,   3,  27,  28,
1318cabdff1aSopenharmony_ci      8,  45,  13, -34,  13,  27,  15, -31, -12,  -3,
1319cabdff1aSopenharmony_ci    }, {
1320cabdff1aSopenharmony_ci     74, -17,   0, -31, -18,  73,  -5,   0,   3,  -5,
1321cabdff1aSopenharmony_ci     25,  12,  -3,  -1, -22,   3,  -9,  33, -12, -24,
1322cabdff1aSopenharmony_ci      6,   2, -33,   9,  21,   5,  20, -27, -19,  -7,
1323cabdff1aSopenharmony_ci    -34, -37, -34,  22,  44,   0, -41, -29, -17, -21,
1324cabdff1aSopenharmony_ci    }, {
1325cabdff1aSopenharmony_ci      5,   3,  21,   7,   2,  60, -10,   5, -32, -34,
1326cabdff1aSopenharmony_ci      7,  20, -11,  16,  -8,  20, -21,  29,  -1, -24,
1327cabdff1aSopenharmony_ci     -2, -13, -27,  -6,   5,  15,   3,   8, -21,  -1,
1328cabdff1aSopenharmony_ci    -55, -21, -15,  38,  37,  -3, -65, -32, -23, -30,
1329cabdff1aSopenharmony_ci    }, {
1330cabdff1aSopenharmony_ci     35, -10,  11, -44,  -3,  48, -10,  -6, -17,  -2,
1331cabdff1aSopenharmony_ci     11,  51,   8,  -8, -38,  -3,  -4,  31, -12,   2,
1332cabdff1aSopenharmony_ci     46,   1, -10,  -4,  -5,   7,  26, -19,  10,   5,
1333cabdff1aSopenharmony_ci    -18, -34, -45, -15,  54,  24, -18, -13, -31,  -7,
1334cabdff1aSopenharmony_ci    }, {
1335cabdff1aSopenharmony_ci    -33,  10,  34,  -5,  17,  35, -15,  -1, -53, -30,
1336cabdff1aSopenharmony_ci     -6,  59,   0,  10, -24,  13, -17,  27,  -1,   1,
1337cabdff1aSopenharmony_ci     37, -13,  -4, -20, -20,  18,  10,  16,   8,  11,
1338cabdff1aSopenharmony_ci    -39, -18, -26,   0,  46,  20, -41, -15, -37, -15,
1339cabdff1aSopenharmony_ci    }, {
1340cabdff1aSopenharmony_ci     29,  -5,   7, -30,   1,  21,  -7,   7,   0,   0,
1341cabdff1aSopenharmony_ci     47,  -9, -18, -15, -22,  14,  -4,   0, -28, -57,
1342cabdff1aSopenharmony_ci     23,  21, -25,   2,  -1,   0,   7, -53, -19,  -3,
1343cabdff1aSopenharmony_ci    -17, -15, -36,   0,  19, -24, -21, -43,   9,   0,
1344cabdff1aSopenharmony_ci    }, {
1345cabdff1aSopenharmony_ci    -39,  14,  30,   8,  22,   8, -12,  12, -34, -27,
1346cabdff1aSopenharmony_ci     29,  -2, -26,   2,  -8,  31, -16,  -3, -17, -57,
1347cabdff1aSopenharmony_ci     14,   6, -19, -13, -16,  10,  -8, -17, -20,   2,
1348cabdff1aSopenharmony_ci    -38,   0, -17,  16,  11, -27, -44, -45,   4,  -8,
1349cabdff1aSopenharmony_ci    }, {
1350cabdff1aSopenharmony_ci     -9,   1,  20, -43,  17,  -3, -12,   0, -20,   4,
1351cabdff1aSopenharmony_ci     33,  29,  -6, -22, -38,   7,   0,  -1, -29, -30,
1352cabdff1aSopenharmony_ci     63,  21,  -3, -11, -27,   1,  14, -45,  10,   9,
1353cabdff1aSopenharmony_ci     -1, -12, -47, -37,  28,   0,   2, -26,  -4,  13,
1354cabdff1aSopenharmony_ci    }, {
1355cabdff1aSopenharmony_ci    -78,  21,  43,  -4,  38, -17, -17,   5, -55, -24,
1356cabdff1aSopenharmony_ci     15,  36, -14,  -4, -24,  24, -12,  -5, -17, -31,
1357cabdff1aSopenharmony_ci     54,   5,   2, -27, -43,  12,  -2,  -9,   9,  15,
1358cabdff1aSopenharmony_ci    -22,   3, -28, -21,  20,  -3, -20, -28,  -9,   5,
1359cabdff1aSopenharmony_ci    }, {
1360cabdff1aSopenharmony_ci     80,  -6,  16, -11, -30,  30,   9,  28,  28,  29,
1361cabdff1aSopenharmony_ci     13,  -6,   2, -28,   3,   5,   7,  60,  -5,  -9,
1362cabdff1aSopenharmony_ci    -11,   1, -24, -19,  27, -13,  32, -13, -15, -19,
1363cabdff1aSopenharmony_ci    -19, -35, -17,  39,  43,   9,  -4, -42, -32, -41,
1364cabdff1aSopenharmony_ci    }, {
1365cabdff1aSopenharmony_ci     11,  14,  39,  27,  -9,  17,   4,  33,  -6,   0,
1366cabdff1aSopenharmony_ci     -4,   1,  -5, -10,  17,  22,  -5,  57,   5,  -9,
1367cabdff1aSopenharmony_ci    -20, -13, -18, -35,  11,  -3,  16,  22, -17, -13,
1368cabdff1aSopenharmony_ci    -40, -19,   1,  55,  35,   5, -27, -44, -37, -49,
1369cabdff1aSopenharmony_ci    }, {
1370cabdff1aSopenharmony_ci     40,   0,  28, -24, -14,   5,   4,  21,   7,  33,
1371cabdff1aSopenharmony_ci      0,  32,  15, -35, -12,  -1,  11,  58,  -5,  16,
1372cabdff1aSopenharmony_ci     28,   0,  -1, -33,   0, -11,  39,  -5,  14,  -6,
1373cabdff1aSopenharmony_ci     -3, -31, -28,   1,  53,  33,  19, -25, -46, -26,
1374cabdff1aSopenharmony_ci    }, {
1375cabdff1aSopenharmony_ci    -28,  20,  51,  14,   6,  -7,   0,  26, -27,   4,
1376cabdff1aSopenharmony_ci    -18,  40,   6, -16,   1,  15,   0,  55,   5,  16,
1377cabdff1aSopenharmony_ci     19, -14,   3, -49, -14,  -1,  22,  30,  12,   0,
1378cabdff1aSopenharmony_ci    -24, -15,  -9,  17,  45,  29,  -4, -28, -51, -35,
1379cabdff1aSopenharmony_ci    }, {
1380cabdff1aSopenharmony_ci     34,   4,  25, -10,  -9, -21,   7,  36,  26,  36,
1381cabdff1aSopenharmony_ci     35, -28, -12, -42,   3,  16,  12,  28, -21, -42,
1382cabdff1aSopenharmony_ci      5,  21, -16, -26,   4, -19,  19, -39, -15, -15,
1383cabdff1aSopenharmony_ci     -1, -13, -19,  17,  17, -14,  15, -55,  -4, -19,
1384cabdff1aSopenharmony_ci    }, {
1385cabdff1aSopenharmony_ci    -34,  25,  48,  28,  11, -34,   2,  41,  -9,   7,
1386cabdff1aSopenharmony_ci     17, -21, -20, -24,  17,  33,   0,  24, -10, -42,
1387cabdff1aSopenharmony_ci     -3,   5, -10, -42, -11,  -8,   3,  -3, -16,  -9,
1388cabdff1aSopenharmony_ci    -22,   2,   0,  33,  10, -18,  -7, -58, -10, -28,
1389cabdff1aSopenharmony_ci    }, {
1390cabdff1aSopenharmony_ci     -4,  11,  37, -23,   5, -46,   2,  29,   5,  39,
1391cabdff1aSopenharmony_ci     21,   9,   0, -49, -12,   9,  16,  26, -22, -15,
1392cabdff1aSopenharmony_ci     45,  20,   5, -40, -22, -17,  26, -31,  14,  -2,
1393cabdff1aSopenharmony_ci     14, -10, -30, -20,  27,   9,  39, -39, -18,  -5,
1394cabdff1aSopenharmony_ci    }, {
1395cabdff1aSopenharmony_ci    -73,  32,  60,  15,  26, -59,  -2,  33, -30,  10,
1396cabdff1aSopenharmony_ci      3,  17,  -8, -30,   1,  26,   4,  22, -10, -16,
1397cabdff1aSopenharmony_ci     36,   5,  11, -56, -37,  -6,  10,   5,  13,   3,
1398cabdff1aSopenharmony_ci     -6,   5, -11,  -4,  19,   5,  16, -41, -24, -13
1399cabdff1aSopenharmony_ci    }
1400cabdff1aSopenharmony_ci};
1401cabdff1aSopenharmony_ci
1402cabdff1aSopenharmony_ciconst uint16_t ff_cb1_base[128]={
1403cabdff1aSopenharmony_ci    19657, 18474, 18365, 17520, 21048, 18231, 18584, 16671,
1404cabdff1aSopenharmony_ci    20363, 19069, 19409, 18430, 21844, 18753, 19613, 17411,
1405cabdff1aSopenharmony_ci    20389, 21772, 20129, 21702, 20978, 20472, 19627, 19387,
1406cabdff1aSopenharmony_ci    21477, 23134, 21841, 23919, 22089, 21519, 21134, 20852,
1407cabdff1aSopenharmony_ci    19675, 17821, 19044, 17477, 19986, 16955, 18446, 16086,
1408cabdff1aSopenharmony_ci    21138, 18899, 20952, 18929, 21452, 17833, 20104, 17159,
1409cabdff1aSopenharmony_ci    19770, 20056, 20336, 20866, 19329, 18217, 18908, 18004,
1410cabdff1aSopenharmony_ci    21556, 21948, 23079, 23889, 20922, 19544, 20984, 19781,
1411cabdff1aSopenharmony_ci    19781, 20984, 19544, 20922, 23889, 23079, 21948, 21556,
1412cabdff1aSopenharmony_ci    18004, 18908, 18217, 19329, 20866, 20336, 20056, 19770,
1413cabdff1aSopenharmony_ci    17159, 20104, 17833, 21452, 18929, 20952, 18899, 21138,
1414cabdff1aSopenharmony_ci    16086, 18446, 16955, 19986, 17477, 19044, 17821, 19675,
1415cabdff1aSopenharmony_ci    20852, 21134, 21519, 22089, 23919, 21841, 23134, 21477,
1416cabdff1aSopenharmony_ci    19387, 19627, 20472, 20978, 21702, 20129, 21772, 20389,
1417cabdff1aSopenharmony_ci    17411, 19613, 18753, 21844, 18430, 19409, 19069, 20363,
1418cabdff1aSopenharmony_ci    16671, 18584, 18231, 21048, 17520, 18365, 18474, 19657,
1419cabdff1aSopenharmony_ci};
1420cabdff1aSopenharmony_ci
1421cabdff1aSopenharmony_ciconst uint16_t ff_cb2_base[128]={
1422cabdff1aSopenharmony_ci    12174, 13380, 13879, 13832, 13170, 13227, 13204, 12053,
1423cabdff1aSopenharmony_ci    12410, 13988, 14348, 14631, 13100, 13415, 13224, 12268,
1424cabdff1aSopenharmony_ci    11982, 13825, 13499, 14210, 13877, 14788, 13811, 13109,
1425cabdff1aSopenharmony_ci    11449, 13275, 12833, 13717, 12728, 13696, 12759, 12405,
1426cabdff1aSopenharmony_ci    10230, 12185, 11628, 13161, 11762, 13458, 12312, 12818,
1427cabdff1aSopenharmony_ci    10443, 12773, 12011, 14020, 11818, 13825, 12453, 13226,
1428cabdff1aSopenharmony_ci    10446, 13162, 11881, 14300, 12859, 16288, 13490, 15053,
1429cabdff1aSopenharmony_ci    10155, 12820, 11519, 13973, 12041, 15081, 12635, 14198,
1430cabdff1aSopenharmony_ci    14198, 12635, 15081, 12041, 13973, 11519, 12820, 10155,
1431cabdff1aSopenharmony_ci    15053, 13490, 16288, 12859, 14300, 11881, 13162, 10446,
1432cabdff1aSopenharmony_ci    13226, 12453, 13825, 11818, 14020, 12011, 12773, 10443,
1433cabdff1aSopenharmony_ci    12818, 12312, 13458, 11762, 13161, 11628, 12185, 10230,
1434cabdff1aSopenharmony_ci    12405, 12759, 13696, 12728, 13717, 12833, 13275, 11449,
1435cabdff1aSopenharmony_ci    13109, 13811, 14788, 13877, 14210, 13499, 13825, 11982,
1436cabdff1aSopenharmony_ci    12268, 13224, 13415, 13100, 14631, 14348, 13988, 12410,
1437cabdff1aSopenharmony_ci    12053, 13204, 13227, 13170, 13832, 13879, 13380, 12174,
1438cabdff1aSopenharmony_ci};
1439cabdff1aSopenharmony_ci
1440cabdff1aSopenharmony_ciconst int16_t ff_energy_tab[32]={
1441cabdff1aSopenharmony_ci        0,    16,    20,    25,    32,    41,    51,    65,
1442cabdff1aSopenharmony_ci       81,   103,   129,   163,   205,   259,   326,   410,
1443cabdff1aSopenharmony_ci      516,   650,   819,  1031,  1298,  1634,  2057,  2590,
1444cabdff1aSopenharmony_ci     3261,  4105,  5168,  6507,  8192, 10313, 12983, 16345
1445cabdff1aSopenharmony_ci};
1446cabdff1aSopenharmony_ci
1447cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb1[64]={
1448cabdff1aSopenharmony_ci    -4041, -4018, -3998, -3977, -3954, -3930, -3906, -3879,
1449cabdff1aSopenharmony_ci    -3852, -3825, -3795, -3764, -3731, -3699, -3666, -3631,
1450cabdff1aSopenharmony_ci    -3594, -3555, -3513, -3468, -3420, -3372, -3321, -3268,
1451cabdff1aSopenharmony_ci    -3212, -3153, -3090, -3021, -2944, -2863, -2772, -2676,
1452cabdff1aSopenharmony_ci    -2565, -2445, -2328, -2202, -2072, -1941, -1808, -1660,
1453cabdff1aSopenharmony_ci    -1508, -1348, -1185,  -994,  -798,  -600,  -374,  -110,
1454cabdff1aSopenharmony_ci      152,   447,   720,   982,  1229,  1456,  1682,  1916,
1455cabdff1aSopenharmony_ci     2130,  2353,  2595,  2853,  3118,  3363,  3588,  3814
1456cabdff1aSopenharmony_ci};
1457cabdff1aSopenharmony_ci
1458cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb2[32]={
1459cabdff1aSopenharmony_ci    -3091, -2386, -1871, -1425, -1021,  -649,  -316,   -20,
1460cabdff1aSopenharmony_ci      267,   544,   810,  1065,  1305,  1534,  1756,  1970,
1461cabdff1aSopenharmony_ci     2171,  2359,  2536,  2700,  2854,  2996,  3133,  3263,
1462cabdff1aSopenharmony_ci     3386,  3499,  3603,  3701,  3789,  3870,  3947,  4020
1463cabdff1aSopenharmony_ci};
1464cabdff1aSopenharmony_ci
1465cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb3[32]={
1466cabdff1aSopenharmony_ci    -3525, -3295, -3081, -2890, -2696, -2511, -2328, -2149,
1467cabdff1aSopenharmony_ci    -1979, -1817, -1658, -1498, -1341, -1188, -1032,  -876,
1468cabdff1aSopenharmony_ci     -721,  -561,  -394,  -228,   -54,   119,   296,   484,
1469cabdff1aSopenharmony_ci      683,   895,  1123,  1373,  1651,  1965,  2360,  2854
1470cabdff1aSopenharmony_ci};
1471cabdff1aSopenharmony_ci
1472cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb4[16]={
1473cabdff1aSopenharmony_ci    -1845, -1057,  -522,   -77,   301,   647,   975,  1285,
1474cabdff1aSopenharmony_ci     1582,  1873,  2163,  2452,  2735,  3017,  3299,  3569
1475cabdff1aSopenharmony_ci};
1476cabdff1aSopenharmony_ci
1477cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb5[16]={
1478cabdff1aSopenharmony_ci    -2691, -2187, -1788, -1435, -1118,  -837,  -571,  -316,
1479cabdff1aSopenharmony_ci      -59,   201,   470,   759,  1077,  1457,  1908,  2495
1480cabdff1aSopenharmony_ci};
1481cabdff1aSopenharmony_ci
1482cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb6[8]={
1483cabdff1aSopenharmony_ci    -1372,  -474,   133,   632,  1100,  1571,  2075,  2672
1484cabdff1aSopenharmony_ci};
1485cabdff1aSopenharmony_ci
1486cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb7[8]={
1487cabdff1aSopenharmony_ci    -2389, -1787, -1231,  -717,  -239,   234,   770,  1474
1488cabdff1aSopenharmony_ci};
1489cabdff1aSopenharmony_ci
1490cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb8[8]={
1491cabdff1aSopenharmony_ci    -1569,  -864,  -296,   200,   670,  1151,  1709,  2385
1492cabdff1aSopenharmony_ci};
1493cabdff1aSopenharmony_ci
1494cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb9[8]={
1495cabdff1aSopenharmony_ci    -2200, -1608, -1062,  -569,  -120,   338,   863,  1621
1496cabdff1aSopenharmony_ci};
1497cabdff1aSopenharmony_ci
1498cabdff1aSopenharmony_cistatic const int16_t lpc_refl_cb10[4]={
1499cabdff1aSopenharmony_ci     -617,   190,   802,  1483
1500cabdff1aSopenharmony_ci};
1501cabdff1aSopenharmony_ci
1502cabdff1aSopenharmony_ciconst int16_t * const ff_lpc_refl_cb[10]={
1503cabdff1aSopenharmony_ci    lpc_refl_cb1, lpc_refl_cb2, lpc_refl_cb3, lpc_refl_cb4, lpc_refl_cb5,
1504cabdff1aSopenharmony_ci    lpc_refl_cb6, lpc_refl_cb7, lpc_refl_cb8, lpc_refl_cb9, lpc_refl_cb10
1505cabdff1aSopenharmony_ci};
1506cabdff1aSopenharmony_ci
1507cabdff1aSopenharmony_cistatic void add_wav(int16_t *dest, int n, int skip_first, int *m,
1508cabdff1aSopenharmony_ci                    const int16_t *s1, const int8_t *s2, const int8_t *s3)
1509cabdff1aSopenharmony_ci{
1510cabdff1aSopenharmony_ci    int i;
1511cabdff1aSopenharmony_ci    int v[3];
1512cabdff1aSopenharmony_ci
1513cabdff1aSopenharmony_ci    v[0] = 0;
1514cabdff1aSopenharmony_ci    for (i=!skip_first; i<3; i++)
1515cabdff1aSopenharmony_ci        v[i] = (ff_gain_val_tab[n][i] * (unsigned)m[i]) >> ff_gain_exp_tab[n];
1516cabdff1aSopenharmony_ci
1517cabdff1aSopenharmony_ci    if (v[0]) {
1518cabdff1aSopenharmony_ci        for (i=0; i < BLOCKSIZE; i++)
1519cabdff1aSopenharmony_ci            dest[i] = (int)((s1[i]*(unsigned)v[0]) + s2[i]*v[1] + s3[i]*v[2]) >> 12;
1520cabdff1aSopenharmony_ci    } else {
1521cabdff1aSopenharmony_ci        for (i=0; i < BLOCKSIZE; i++)
1522cabdff1aSopenharmony_ci            dest[i] = (             s2[i]*v[1] + s3[i]*v[2]) >> 12;
1523cabdff1aSopenharmony_ci    }
1524cabdff1aSopenharmony_ci}
1525cabdff1aSopenharmony_ci
1526cabdff1aSopenharmony_ci/**
1527cabdff1aSopenharmony_ci * Copy the last offset values of *source to *target. If those values are not
1528cabdff1aSopenharmony_ci * enough to fill the target buffer, fill it with another copy of those values.
1529cabdff1aSopenharmony_ci */
1530cabdff1aSopenharmony_civoid ff_copy_and_dup(int16_t *target, const int16_t *source, int offset)
1531cabdff1aSopenharmony_ci{
1532cabdff1aSopenharmony_ci    source += BUFFERSIZE - offset;
1533cabdff1aSopenharmony_ci
1534cabdff1aSopenharmony_ci    memcpy(target, source, FFMIN(BLOCKSIZE, offset)*sizeof(*target));
1535cabdff1aSopenharmony_ci    if (offset < BLOCKSIZE)
1536cabdff1aSopenharmony_ci        memcpy(target + offset, source, (BLOCKSIZE - offset)*sizeof(*target));
1537cabdff1aSopenharmony_ci}
1538cabdff1aSopenharmony_ci
1539cabdff1aSopenharmony_ci/**
1540cabdff1aSopenharmony_ci * Evaluate the reflection coefficients from the filter coefficients.
1541cabdff1aSopenharmony_ci *
1542cabdff1aSopenharmony_ci * @return 1 if one of the reflection coefficients is greater than
1543cabdff1aSopenharmony_ci *         4095, 0 if not.
1544cabdff1aSopenharmony_ci */
1545cabdff1aSopenharmony_ciint ff_eval_refl(int *refl, const int16_t *coefs, AVCodecContext *avctx)
1546cabdff1aSopenharmony_ci{
1547cabdff1aSopenharmony_ci    int b, i, j;
1548cabdff1aSopenharmony_ci    int buffer1[LPC_ORDER];
1549cabdff1aSopenharmony_ci    int buffer2[LPC_ORDER];
1550cabdff1aSopenharmony_ci    int *bp1 = buffer1;
1551cabdff1aSopenharmony_ci    int *bp2 = buffer2;
1552cabdff1aSopenharmony_ci
1553cabdff1aSopenharmony_ci    for (i=0; i < LPC_ORDER; i++)
1554cabdff1aSopenharmony_ci        buffer2[i] = coefs[i];
1555cabdff1aSopenharmony_ci
1556cabdff1aSopenharmony_ci    refl[LPC_ORDER-1] = bp2[LPC_ORDER-1];
1557cabdff1aSopenharmony_ci
1558cabdff1aSopenharmony_ci    if ((unsigned) bp2[LPC_ORDER-1] + 0x1000 > 0x1fff) {
1559cabdff1aSopenharmony_ci        av_log(avctx, AV_LOG_ERROR, "Overflow. Broken sample?\n");
1560cabdff1aSopenharmony_ci        return 1;
1561cabdff1aSopenharmony_ci    }
1562cabdff1aSopenharmony_ci
1563cabdff1aSopenharmony_ci    for (i = LPC_ORDER-2; i >= 0; i--) {
1564cabdff1aSopenharmony_ci        b = 0x1000-((bp2[i+1] * bp2[i+1]) >> 12);
1565cabdff1aSopenharmony_ci
1566cabdff1aSopenharmony_ci        if (!b)
1567cabdff1aSopenharmony_ci            b = -2;
1568cabdff1aSopenharmony_ci
1569cabdff1aSopenharmony_ci        b = 0x1000000 / b;
1570cabdff1aSopenharmony_ci        for (j=0; j <= i; j++) {
1571cabdff1aSopenharmony_ci#if CONFIG_FTRAPV
1572cabdff1aSopenharmony_ci            int a = bp2[j] - ((int)(refl[i+1] * (unsigned)bp2[i-j]) >> 12);
1573cabdff1aSopenharmony_ci            if((int)(a*(unsigned)b) != a*(int64_t)b)
1574cabdff1aSopenharmony_ci                return 1;
1575cabdff1aSopenharmony_ci#endif
1576cabdff1aSopenharmony_ci            bp1[j] = (int)((bp2[j] - ((int)(refl[i+1] * (unsigned)bp2[i-j]) >> 12)) * (unsigned)b) >> 12;
1577cabdff1aSopenharmony_ci        }
1578cabdff1aSopenharmony_ci
1579cabdff1aSopenharmony_ci        if ((unsigned) bp1[i] + 0x1000 > 0x1fff)
1580cabdff1aSopenharmony_ci            return 1;
1581cabdff1aSopenharmony_ci
1582cabdff1aSopenharmony_ci        refl[i] = bp1[i];
1583cabdff1aSopenharmony_ci
1584cabdff1aSopenharmony_ci        FFSWAP(int *, bp1, bp2);
1585cabdff1aSopenharmony_ci    }
1586cabdff1aSopenharmony_ci    return 0;
1587cabdff1aSopenharmony_ci}
1588cabdff1aSopenharmony_ci
1589cabdff1aSopenharmony_ci/**
1590cabdff1aSopenharmony_ci * Evaluate the LPC filter coefficients from the reflection coefficients.
1591cabdff1aSopenharmony_ci * Does the inverse of the ff_eval_refl() function.
1592cabdff1aSopenharmony_ci */
1593cabdff1aSopenharmony_civoid ff_eval_coefs(int *coefs, const int *refl)
1594cabdff1aSopenharmony_ci{
1595cabdff1aSopenharmony_ci    int buffer[LPC_ORDER];
1596cabdff1aSopenharmony_ci    int *b1 = buffer;
1597cabdff1aSopenharmony_ci    int *b2 = coefs;
1598cabdff1aSopenharmony_ci    int i, j;
1599cabdff1aSopenharmony_ci
1600cabdff1aSopenharmony_ci    for (i=0; i < LPC_ORDER; i++) {
1601cabdff1aSopenharmony_ci        b1[i] = refl[i] * 16;
1602cabdff1aSopenharmony_ci
1603cabdff1aSopenharmony_ci        for (j=0; j < i; j++)
1604cabdff1aSopenharmony_ci            b1[j] = ((int)(refl[i] * (unsigned)b2[i-j-1]) >> 12) + b2[j];
1605cabdff1aSopenharmony_ci
1606cabdff1aSopenharmony_ci        FFSWAP(int *, b1, b2);
1607cabdff1aSopenharmony_ci    }
1608cabdff1aSopenharmony_ci
1609cabdff1aSopenharmony_ci    for (i=0; i < LPC_ORDER; i++)
1610cabdff1aSopenharmony_ci        coefs[i] >>= 4;
1611cabdff1aSopenharmony_ci}
1612cabdff1aSopenharmony_ci
1613cabdff1aSopenharmony_civoid ff_int_to_int16(int16_t *out, const int *inp)
1614cabdff1aSopenharmony_ci{
1615cabdff1aSopenharmony_ci    int i;
1616cabdff1aSopenharmony_ci
1617cabdff1aSopenharmony_ci    for (i = 0; i < LPC_ORDER; i++)
1618cabdff1aSopenharmony_ci        *out++ = *inp++;
1619cabdff1aSopenharmony_ci}
1620cabdff1aSopenharmony_ci
1621cabdff1aSopenharmony_ci/**
1622cabdff1aSopenharmony_ci * Evaluate sqrt(x << 24). x must fit in 20 bits. This value is evaluated in an
1623cabdff1aSopenharmony_ci * odd way to make the output identical to the binary decoder.
1624cabdff1aSopenharmony_ci */
1625cabdff1aSopenharmony_ciint ff_t_sqrt(unsigned int x)
1626cabdff1aSopenharmony_ci{
1627cabdff1aSopenharmony_ci    int s = 2;
1628cabdff1aSopenharmony_ci    while (x > 0xfff) {
1629cabdff1aSopenharmony_ci        s++;
1630cabdff1aSopenharmony_ci        x >>= 2;
1631cabdff1aSopenharmony_ci    }
1632cabdff1aSopenharmony_ci
1633cabdff1aSopenharmony_ci    return ff_sqrt(x << 20) << s;
1634cabdff1aSopenharmony_ci}
1635cabdff1aSopenharmony_ci
1636cabdff1aSopenharmony_ciunsigned int ff_rms(const int *data)
1637cabdff1aSopenharmony_ci{
1638cabdff1aSopenharmony_ci    int i;
1639cabdff1aSopenharmony_ci    unsigned int res = 0x10000;
1640cabdff1aSopenharmony_ci    int b = LPC_ORDER;
1641cabdff1aSopenharmony_ci
1642cabdff1aSopenharmony_ci    for (i = 0; i < LPC_ORDER; i++) {
1643cabdff1aSopenharmony_ci        res = (((0x1000000 - data[i]*data[i]) >> 12) * res) >> 12;
1644cabdff1aSopenharmony_ci
1645cabdff1aSopenharmony_ci        if (res == 0)
1646cabdff1aSopenharmony_ci            return 0;
1647cabdff1aSopenharmony_ci
1648cabdff1aSopenharmony_ci        while (res <= 0x3fff) {
1649cabdff1aSopenharmony_ci            b++;
1650cabdff1aSopenharmony_ci            res <<= 2;
1651cabdff1aSopenharmony_ci        }
1652cabdff1aSopenharmony_ci    }
1653cabdff1aSopenharmony_ci
1654cabdff1aSopenharmony_ci    return ff_t_sqrt(res) >> b;
1655cabdff1aSopenharmony_ci}
1656cabdff1aSopenharmony_ci
1657cabdff1aSopenharmony_ciint ff_interp(RA144Context *ractx, int16_t *out, int a, int copyold, int energy)
1658cabdff1aSopenharmony_ci{
1659cabdff1aSopenharmony_ci    int work[LPC_ORDER];
1660cabdff1aSopenharmony_ci    int b = NBLOCKS - a;
1661cabdff1aSopenharmony_ci    int i;
1662cabdff1aSopenharmony_ci
1663cabdff1aSopenharmony_ci    // Interpolate block coefficients from the this frame's forth block and
1664cabdff1aSopenharmony_ci    // last frame's forth block.
1665cabdff1aSopenharmony_ci    for (i = 0; i < LPC_ORDER; i++)
1666cabdff1aSopenharmony_ci        out[i] = (a * ractx->lpc_coef[0][i] + b * ractx->lpc_coef[1][i])>> 2;
1667cabdff1aSopenharmony_ci
1668cabdff1aSopenharmony_ci    if (ff_eval_refl(work, out, ractx->avctx)) {
1669cabdff1aSopenharmony_ci        // The interpolated coefficients are unstable, copy either new or old
1670cabdff1aSopenharmony_ci        // coefficients.
1671cabdff1aSopenharmony_ci        ff_int_to_int16(out, ractx->lpc_coef[copyold]);
1672cabdff1aSopenharmony_ci        return ff_rescale_rms(ractx->lpc_refl_rms[copyold], energy);
1673cabdff1aSopenharmony_ci    } else {
1674cabdff1aSopenharmony_ci        return ff_rescale_rms(ff_rms(work), energy);
1675cabdff1aSopenharmony_ci    }
1676cabdff1aSopenharmony_ci}
1677cabdff1aSopenharmony_ci
1678cabdff1aSopenharmony_ciunsigned int ff_rescale_rms(unsigned int rms, unsigned int energy)
1679cabdff1aSopenharmony_ci{
1680cabdff1aSopenharmony_ci    return (rms * energy) >> 10;
1681cabdff1aSopenharmony_ci}
1682cabdff1aSopenharmony_ci
1683cabdff1aSopenharmony_ci/** inverse root mean square */
1684cabdff1aSopenharmony_ciint ff_irms(AudioDSPContext *adsp, const int16_t *data)
1685cabdff1aSopenharmony_ci{
1686cabdff1aSopenharmony_ci    unsigned int sum = adsp->scalarproduct_int16(data, data, BLOCKSIZE);
1687cabdff1aSopenharmony_ci
1688cabdff1aSopenharmony_ci    if (sum == 0)
1689cabdff1aSopenharmony_ci        return 0; /* OOPS - division by zero */
1690cabdff1aSopenharmony_ci
1691cabdff1aSopenharmony_ci    return 0x20000000 / (ff_t_sqrt(sum) >> 8);
1692cabdff1aSopenharmony_ci}
1693cabdff1aSopenharmony_ci
1694cabdff1aSopenharmony_civoid ff_subblock_synthesis(RA144Context *ractx, const int16_t *lpc_coefs,
1695cabdff1aSopenharmony_ci                           int cba_idx, int cb1_idx, int cb2_idx,
1696cabdff1aSopenharmony_ci                           int gval, int gain)
1697cabdff1aSopenharmony_ci{
1698cabdff1aSopenharmony_ci    int16_t *block;
1699cabdff1aSopenharmony_ci    int m[3];
1700cabdff1aSopenharmony_ci
1701cabdff1aSopenharmony_ci    if (cba_idx) {
1702cabdff1aSopenharmony_ci        cba_idx += BLOCKSIZE/2 - 1;
1703cabdff1aSopenharmony_ci        ff_copy_and_dup(ractx->buffer_a, ractx->adapt_cb, cba_idx);
1704cabdff1aSopenharmony_ci        m[0] = (ff_irms(&ractx->adsp, ractx->buffer_a) * (unsigned)gval) >> 12;
1705cabdff1aSopenharmony_ci    } else {
1706cabdff1aSopenharmony_ci        m[0] = 0;
1707cabdff1aSopenharmony_ci    }
1708cabdff1aSopenharmony_ci    m[1] = (ff_cb1_base[cb1_idx] * gval) >> 8;
1709cabdff1aSopenharmony_ci    m[2] = (ff_cb2_base[cb2_idx] * gval) >> 8;
1710cabdff1aSopenharmony_ci    memmove(ractx->adapt_cb, ractx->adapt_cb + BLOCKSIZE,
1711cabdff1aSopenharmony_ci            (BUFFERSIZE - BLOCKSIZE) * sizeof(*ractx->adapt_cb));
1712cabdff1aSopenharmony_ci
1713cabdff1aSopenharmony_ci    block = ractx->adapt_cb + BUFFERSIZE - BLOCKSIZE;
1714cabdff1aSopenharmony_ci
1715cabdff1aSopenharmony_ci    add_wav(block, gain, cba_idx, m, cba_idx? ractx->buffer_a: NULL,
1716cabdff1aSopenharmony_ci            ff_cb1_vects[cb1_idx], ff_cb2_vects[cb2_idx]);
1717cabdff1aSopenharmony_ci
1718cabdff1aSopenharmony_ci    memcpy(ractx->curr_sblock, ractx->curr_sblock + BLOCKSIZE,
1719cabdff1aSopenharmony_ci           LPC_ORDER*sizeof(*ractx->curr_sblock));
1720cabdff1aSopenharmony_ci
1721cabdff1aSopenharmony_ci    if (ff_celp_lp_synthesis_filter(ractx->curr_sblock + LPC_ORDER, lpc_coefs,
1722cabdff1aSopenharmony_ci                                    block, BLOCKSIZE, LPC_ORDER, 1, 0, 0xfff))
1723cabdff1aSopenharmony_ci        memset(ractx->curr_sblock, 0, (LPC_ORDER+BLOCKSIZE)*sizeof(*ractx->curr_sblock));
1724cabdff1aSopenharmony_ci}
1725