changeset 6848:20a7e808dd82 libavcodec

Make wavtable a table instead of an array
author vitor
date Sat, 24 May 2008 09:15:01 +0000
parents c2a365612e80
children 3feec67125d8
files ra144.c ra144.h
diffstat 2 files changed, 516 insertions(+), 516 deletions(-) [+]
line wrap: on
line diff
--- a/ra144.c	Sat May 24 07:19:12 2008 +0000
+++ b/ra144.c	Sat May 24 09:15:01 2008 +0000
@@ -128,8 +128,8 @@
     int b, c, i;
     const short *ptr, *ptr2;
 
-    ptr  = wavtable1 + n * 9;
-    ptr2 = wavtable2 + n * 9;
+    ptr  = wavtable1[n];
+    ptr2 = wavtable2[n];
 
     if (f)
         a = (ptr[0] * m1) >> (ptr2[0] + 1);
--- a/ra144.h	Sat May 24 07:19:12 2008 +0000
+++ b/ra144.h	Sat May 24 09:15:01 2008 +0000
@@ -23,522 +23,522 @@
 #define FFMPEG_RA144_H
 
 /* 14.4 data tables */
-static const signed short wavtable1[2304]={
-     541,   956,   768, -1011,  -811,  -717,  -571,  -893,  -576,
-     877,   581,   568,  -997,  -975,  -646,  -752,  -661,  -632,
-     675,   787,   635,  -519,  -838,  -977,  -890,  -605,  -789,
-     624,   732,   668,  -893,  -815,  -956,  -762,  -523,  -873,
-     623,   839,   697, -1022,  -849,  -571,  -759,  -688,  -949,
-     640,   693,   991,  -867,  -619,  -671,  -800,  -940,  -959,
-     925,   687,   608,  -621,  -549,  -817,  -837,  -924,  -722,
-     552,   797,   572,  -861,  -617,  -892,  -596,  -621,  -640,
-     535,   832,   799,  -871,  -836,  -649,  -560,  -676,  -624,
-     762,   605,   577,  -902,  -859,  -682,  -568,  -716,  -650,
-     832,   561,  1003,  -913,  -815,  -550,  -676,  -616,  -982,
-     590,   687,   588,  -793,  -679,  -790,  -681,  -923,  -677,
-     646,   901,   732,  -569,  -924,  -645,  -816,  -794,  -524,
-     828,   689,   896,  -557,  -725,  -603,  -670,  -927,  -784,
-     875,   624,   848,  -533,  -725,  -516,  -748,  -760,  -702,
-     571,   942,  1022,  -526,  -570,  -941,  -638,  -868, -1020,
-     824,   736,   643,  -593,  -517,  -925,  -663,  -530,  -808,
-     517,   765,   512,  -774,  -518,  -767,  -523,  -572,  -513,
-     562,   908,   761,  -997,  -836,  -675,  -617,  -805,  -566,
-     694,   913,   675,  -619,  -916,  -603,  -941,  -815,  -891,
-     704,   524,   672,  -722,  -925,  -689,  -969,  -538,  -883,
-     721,   757,   558,  -534,  -786,  -826, -1018,  -561,  -608,
-     884,   551,   633,  -951,  -546,  -681,  -763,  -592,  -784,
-     558,  1007,   846,  -549,  -923,  -832,  -608,  -991,  -699,
-     932,   746,   777,  -679,  -707,  -566,  -849,  -544,  -589,
-     566,   822,   926,  -910,  -513,  -744,  -627,  -659,  -839,
-     613,   771,   611,  -924,  -731,  -921,  -733,  -581,  -729,
-     737,   671,  1008,  -967,  -726,  -661,  -531,  -880,  -993,
-     651,   594,   579,  -757,  -737,  -673,  -830,  -691,  -655,
-     801,   636,   564,  -996,  -883,  -702,  -626,  -792,  -622,
-     852,   910,   719,  -757,  -599,  -639,  -709,  -809, -1012,
-     998,   614,   575,  -599,  -561,  -691,  -974,  -737,  -647,
-     665,   935,   628,  -607,  -816,  -574,  -863,  -854,  -771,
-     631,   596,   829,  -735, -1023,  -966,  -778,  -694,  -672,
-     644,   926,   526,  -583,  -663,  -953,  -811,  -838,  -542,
-     879,   988,   613,  -848,  -526,  -592,  -755,  -953,  -734,
-     941,   692,   693,  -637,  -638,  -939,  -866,  -937,  -940,
-     565,   672,   576,  -742,  -637,  -757,  -625,  -882,  -649,
-     547,   628,   740,  -671,  -791,  -909,  -585,  -771,  -535,
-     639,   532,   537,  -665,  -671,  -559,  -798,  -554,  -564,
-     955,   604,   598,  -564,  -558,  -706,  -891,  -714,  -699,
-     562,   580,   900,  -637,  -989, -1021,  -617,  -658,  -791,
-     603,   899,   621,  -530,  -733,  -545,  -712,  -789,  -755,
-     746,   533,   624,  -776,  -909,  -650,  -543,  -555,  -761,
-     729,   514,   735,  -733,  -523,  -739,  -519,  -517,  -528,
-     853,   551,   692,  -919,  -577,  -745,  -711,  -593,  -936,
-     949,  1018,  1004,  -944,  -931,  -999,  -880, -1013,  -985,
-     544,   988,   735,  -525,  -781,  -710,  -578,  -954,  -528,
-     789,   782,   821,  -603,  -633,  -628,  -608,  -598,  -659,
-     897,   516,   754,  -906,  -661,  -761,  -786,  -521,  -556,
-     517,   702,   828,  -710,  -837,  -568,  -523,  -963,  -670,
-     586,   818,   763,  -937,  -874,  -609,  -672,  -654,  -568,
-     907,   652,   592,  -578,  -525,  -754,  -804,  -830,  -686,
-     528,   652,   642,  -673,  -663,  -818,  -546,  -830,  -806,
-     531,   708,   780,  -736,  -811,  -540,  -552,  -981,  -595,
-     666,   625,   727,  -813,  -946,  -888,  -867,  -763,  -516,
-     947,   727,   554,  -673,  -512,  -787,  -875,  -517,  -599,
-     549,   657,   981,  -705,  -526,  -630,  -589,  -843,  -941,
-     605,   920,   852,  -544, -1008,  -766,  -716,  -827,  -709,
-     624,   619,   983,  -755,  -599,  -595,  -761,  -750,  -944,
-     605,   909,   547,  -537,  -646,  -971,  -715,  -807,  -584,
-     690,   935,   516,  -631,  -697,  -944,  -932,  -855,  -521,
-     700,   612,   853,  -838,  -584, -1021,  -959,  -732,  -711,
-     767,   832,   574,  -623,  -861,  -933,  -575,  -676,  -643,
-     523,   898,   923,  -919,  -945,  -810,  -536,  -789,  -833,
-     722,   958,   691,  -676,  -976,  -647, -1020,  -896,  -935,
-     613,   771,   928,  -924,  -556,  -700,  -734,  -581,  -842,
-     758,   757,   584,  -561,  -866,  -865,  -562,  -560,  -667,
-     512,   567,   577,  -567,  -577,  -639,  -512,  -628,  -650,
-     615,   638,   698,  -766,  -839,  -871,  -739,  -795,  -954,
-     574,   642,   589,  -720,  -660,  -739,  -644,  -806,  -677,
-     993,   682,   878,  -662,  -852,  -585,  -963,  -910,  -753,
-     539,   890,   913,  -939,  -963,  -795,  -569,  -775,  -815,
-     694,   928,   544,  -629,  -738,  -987,  -941,  -842,  -578,
-     805,   600,   680,  -944,  -535,  -798,  -633,  -704,  -905,
-     540,   951,   782, -1004,  -825,  -727,  -570,  -884,  -597,
-     816,   950,   590,  -757,  -941,  -548,  -650,  -881,  -681,
-     955,   847,   811,  -790,  -757,  -671,  -891,  -700,  -643,
-     547,   883,   556,  -945,  -595,  -960,  -586,  -762,  -605,
-     652,   888,   604,  -565,  -770,  -524,  -831,  -770,  -713,
-     863,   585,   855,  -986,  -721,  -978,  -727,  -668,  -715,
-    1023,   997,   516,  -997,  -516, -1006, -1023,  -972,  -520,
-     932,   614,   640,  -560,  -583,  -769,  -850,  -738,  -800,
-     627,   564,   573,  -691,  -702,  -631,  -769,  -621,  -641,
-     876,   900,   724,  -770,  -620,  -637,  -750,  -792,  -512,
-     515,   857,   896,  -863,  -902,  -750,  -519,  -718,  -784,
-     647,   953,   879,  -602,  -555,  -818,  -817,  -888,  -755,
-     806,   854,   857,  -672,  -675,  -715,  -634,  -712,  -718,
-     545,   583,   631,  -621,  -672,  -719,  -581,  -664,  -778,
-     657,   601,   751,  -772,  -963,  -882,  -843,  -707,  -550,
-     740,   905,   795,  -654,  -575,  -704,  -535,  -801,  -618,
-     841,  1016,   568,  -835,  -934,  -564,  -691, -1009,  -631,
-     747,   589,   983,  -861,  -718,  -566,  -545,  -679,  -945,
-     878,   613,   526,  -526,  -902,  -630,  -753,  -736,  -540,
-     864,   723,   779,  -610,  -657,  -550,  -729, -1022,  -592,
-     534,   674,   774,  -703,  -808, -1019,  -557,  -887,  -586,
-     950,   649,   939,  -602,  -871,  -595,  -881,  -824,  -861,
-     590,   703,   899,  -811,  -518,  -618,  -680,  -966,  -790,
-     618,   527,   579,  -637,  -700,  -597,  -746,  -543,  -657,
-     725,   647,   972,  -917,  -689,  -615,  -513,  -818,  -924,
-     641,   647,   707,  -810,  -885,  -893,  -803,  -817,  -976,
-     730,   663,   644,  -946,  -920,  -835,  -521,  -860,  -812,
-     807,   572,   578,  -902,  -912,  -646,  -637,  -639,  -653,
-     879,   611,   821,  -524,  -705,  -979,  -755,  -729,  -658,
-     667,   729,   841,  -951,  -549,  -599,  -871,  -519,  -692,
-     782,   585,   751,  -895,  -574,  -859,  -598,  -670,  -551,
-     802,   733,   976,  -574,  -765,  -699,  -628,  -525,  -931,
-     850,   871,   708,  -724,  -588,  -602,  -706,  -742,  -979,
-     870,   743,   704,  -632,  -598, -1023,  -739,  -540,  -970,
-     941,   899,   585,  -827,  -538,  -514,  -866,  -790,  -669,
-     943,   632,   875,  -582,  -806,  -541,  -869,  -781,  -749,
-    1023,   732,   638,  -731,  -637,  -912, -1022,  -523,  -795,
-     778,   753,   655,  -573,  -997,  -965,  -592,  -554,  -839,
-     843,   945,   945,  -779,  -779,  -873,  -694,  -873,  -873,
-     942,   969,   572,  -892,  -527,  -542,  -867,  -918,  -640,
-    1008,   559,   854,  -551,  -841,  -934,  -993,  -612,  -712,
-     868,   729,   787,  -618,  -668,  -560,  -737,  -519,  -605,
-     970,   686,   547,  -650,  -518,  -733,  -919,  -919,  -585,
-     535,   635,   674,  -664,  -705,  -836,  -560,  -788,  -887,
-     560,   636,   828,  -696,  -907,  -514,  -613,  -790,  -670,
-     994,   592,   833,  -575,  -809,  -964,  -966,  -686,  -677,
-     548,   621,   694,  -665,  -743,  -843,  -587,  -755,  -942,
-     550,   801,   955,  -861,  -513,  -748,  -591,  -627,  -892,
-     582,   522,   646,  -594,  -735,  -659,  -663,  -533,  -815,
-     606,   625,   818,  -739,  -969,  -999,  -717,  -763,  -655,
-     623,   591,   874,  -720,  -531, -1010,  -758,  -683,  -746,
-     669,   535,  1001,  -700,  -654,  -523,  -876,  -559,  -979,
-     701,   938,   592,  -642,  -810,  -542,  -960,  -860,  -684,
-     925,   820,   738,  -741,  -667,  -592,  -835,  -657,  -533,
-     735,   790,   544,  -567,  -781,  -840,  -527,  -610,  -578,
-     575,   788,   674,  -886,  -758,  -519,  -647,  -607,  -888,
-     655,   783,   528, -1003,  -677,  -809,  -840,  -599,  -545,
-     527,   513,   677,  -529,  -699,  -679,  -544,  -514,  -897,
-     782,   852,   940,  -651,  -718,  -783,  -597,  -709,  -863,
-     578,   910,   513,  -514,  -581,  -914,  -654,  -809,  -515,
-     692,   882,   734,  -596,  -993,  -632,  -937,  -759,  -526,
-     586,   683,   715,  -782,  -818,  -954,  -670,  -911,  -999,
-     739,   609,   717,  -880,  -518,  -854,  -534,  -725, -1006,
-     778,   773,   697,  -588,  -530,  -527,  -592,  -584,  -951,
-     922,   785,   813,  -707,  -732,  -624,  -830,  -602,  -646,
-     766,   651,   984,  -974,  -736,  -626,  -573,  -827,  -946,
-     978,   596,   515,  -569,  -984,  -600,  -934,  -694,  -518,
-     535,   757,   540,  -792,  -565,  -799,  -560,  -559,  -571,
-     662,   687,   589,  -890,  -762,  -791,  -857,  -924,  -678,
-     554,   536,   979,  -580,  -530,  -512,  -601,  -561,  -936,
-     723,   982,   690,  -694,  -976,  -662, -1022,  -943,  -932,
-     936,   956,   527,  -875,  -965,  -986,  -856,  -894,  -543,
-     590,  1002,   547,  -577,  -631,  -536,  -680,  -980,  -586,
-     517,   653,   825,  -660,  -833,  -526,  -522,  -834,  -664,
-     832,   592,   974,  -964,  -792,  -564,  -677,  -686,  -928,
-     512,   957,   903,  -957,  -903,  -844,  -512,  -894,  -796,
-     631,   545,   906,  -672,  -558,  -965,  -777,  -581,  -802,
-     514,   720,   649,  -723,  -652,  -913,  -516, -1012,  -824,
-     596,   679,   694,  -790,  -807,  -920,  -693,  -900,  -940,
-     617,   740,   979,  -892,  -590,  -708,  -743,  -535,  -936,
-     711,   685,   877,  -952,  -609,  -587,  -987,  -917,  -752,
-     655,   835,   848,  -534,  -542,  -691,  -838,  -681,  -702,
-     754,   839,   698,  -618,  -515,  -573,  -556,  -688,  -954,
-     871,   515,   769,  -877,  -655,  -774,  -742,  -518,  -578,
-     955,   852,   573,  -795,  -535,  -955,  -892,  -709,  -643,
-     640,   859,   587,  -537,  -735,  -986,  -801,  -721,  -674,
-     792,   863,   554,  -667,  -858,  -935,  -612,  -727,  -601,
-     843,   708,   682,  -583,  -562,  -944,  -694,  -979,  -910,
-     971,   768,   552,  -728,  -524,  -829,  -921,  -576,  -596,
-     891,   536,   690,  -935,  -601,  -724,  -776,  -563,  -931,
-    1016,   560,   663,  -556,  -659,  -727, -1009,  -614,  -860,
-     543,   870,   674,  -924,  -716,  -573,  -577,  -739,  -889,
-     601,   999,   585,  -586,  -686,  -571,  -705,  -975,  -668,
-     945,   966,   889,  -892,  -821,  -840,  -872,  -912,  -773,
-     529,   912,   777,  -943,  -804,  -692,  -547,  -812,  -590,
-     574,  1020,   714,  -572,  -801,  -711,  -643, -1016,  -997,
-     609,   922,   932,  -549,  -555,  -840,  -725,  -831,  -848,
-     598,   778,   929,  -909,  -543,  -707,  -698,  -592,  -844,
-     651,   772,   744,  -982,  -947,  -561,  -827,  -582,  -541,
-     691,   957,   722,  -646,  -976,  -675,  -934,  -894, -1020,
-     729,   766,   984,  -546,  -701,  -736,  -520,  -573,  -945,
-     547,   519,   632,  -555,  -675,  -640,  -585,  -526,  -780,
-     583,   532,   922,  -607,  -525,  -960,  -664,  -554,  -831,
-     633,   995,   603,  -615,  -745,  -586,  -783,  -968,  -710,
-     677,   571,   874,  -757,  -578,  -977,  -896,  -638,  -747,
-     602,   545,   666,  -641,  -783,  -709,  -708,  -580,  -866,
-     627,   542,   875,  -665,  -536,  -928,  -769,  -575,  -748,
-     672,   983,   598,  -645,  -786,  -575,  -882,  -944,  -700,
-     692,   979,   730,  -662,  -988,  -698,  -937,  -937,  -521,
-     668,   634,   872,  -827,  -569,  -540,  -871,  -785,  -742,
-     711,   706,   674,  -982,  -937,  -931,  -988,  -975,  -889,
-     739,   977,   595,  -706,  -860,  -568,  -534,  -932,  -691,
-     759,   905,   763,  -671,  -566,  -675,  -563,  -799,  -569,
-     756,   582,   763,  -860,  -563,  -868,  -558,  -663,  -568,
-     748,  1013,   908,  -741,  -664,  -898,  -547, -1002,  -805,
-     804,   937,   950,  -736,  -746,  -869,  -631,  -858,  -882,
-     785,   543,   998,  -833,  -766,  -529,  -602,  -576,  -973,
-     999,   684,   942,  -668,  -920,  -630,  -975,  -915,  -868,
-     626,   633,   996,  -774,  -609,  -616,  -765,  -783,  -970,
-     626,   567,   835,  -693, -1021,  -925,  -765,  -628,  -681,
-     739,   571,   973,  -825,  -702,  -543,  -533,  -637,  -925,
-     655,   769,   707,  -984,  -906,  -531,  -839,  -577,  -978,
-     702,   952,   571,  -653,  -785,  -532,  -964,  -886,  -638,
-     727,   712,   514, -1012,  -730,  -715,  -516,  -990,  -516,
-     744,   686,   741,  -998,  -539,  -994,  -541,  -921,  -536,
-     731,   552,   714,  -789, -1021,  -772,  -522,  -596,  -998,
-     824,   991,   726,  -798,  -585,  -703,  -664,  -959,  -515,
-     795,   615,   544,  -955,  -844,  -653,  -617,  -738,  -578,
-     870,   575,   824,  -978,  -700,  -926,  -739,  -646,  -664,
-     803,   832,   923,  -653,  -724,  -750,  -630,  -677,  -832,
-     819,   839,   531,  -671,  -849,  -871,  -655,  -688,  -550,
-     887,   786,   852,  -681,  -738,  -654,  -769,  -603,  -709,
-     933,   764,   570,  -696,  -519,  -851,  -850,  -570,  -634,
-     716,   906,   654,  -634,  -916,  -579, -1003,  -802,  -837,
-     784,   804,   563,  -616,  -864,  -885,  -601,  -631,  -620,
-     774,   535,   876,  -809,  -662,  -915,  -585,  -559,  -749,
-     807,   598,   649,  -943, -1023,  -758,  -636,  -699,  -822,
-     817,   759,   718,  -606,  -573,  -533,  -652,  -563, -1008,
-     831,   993,   846,  -806,  -687,  -821,  -675,  -963,  -699,
-     858,   567,   605,  -951, -1015,  -670,  -720,  -628,  -716,
-     876,  1012,   651,  -866,  -557,  -643,  -750, -1001,  -827,
-     852,   548,   549,  -913,  -914,  -588,  -710,  -587,  -589,
-     895,  1008,   871,  -881,  -761,  -858,  -782,  -993,  -741,
-     892,  1000,   591,  -872,  -515,  -578,  -777,  -977,  -683,
-     935,   516,   836,  -944,  -764,  -844,  -855,  -521,  -682,
-     931,   612,   776,  -557,  -706,  -929,  -847,  -733,  -589,
-     968,   614,   816,  -581,  -771,  -980,  -915,  -738,  -651,
-     524,   777,   719,  -796,  -737,  -546,  -537,  -590, -1012,
-     549,   694,   786,  -744,  -843,  -533,  -589,  -941,  -603,
-     882,   754,   534,  -649,  -920,  -787,  -759,  -555,  -557,
-     597,   837,   766,  -977,  -895,  -627,  -697,  -684,  -574,
-     635,   954,   704,  -592,  -873,  -656,  -788,  -890,  -969,
-     803,   550,   798,  -863,  -626,  -858,  -630,  -591,  -622,
-     699,   654,   798,  -894,  -545, -1021,  -954,  -837,  -622,
-     924,   767,   738,  -693,  -666,  -553,  -834,  -575,  -531,
-     970,   675,   608,  -639,  -576,  -801,  -919,  -890,  -722,
-     632,   706,   684,  -873,  -844,  -944,  -780,  -976,  -914,
-     858,   767,   563,  -643,  -945,  -844,  -719,  -574,  -620,
-     527,   765,   702,  -788,  -724,  -525,  -543,  -572,  -964,
-     559,   924,  1003, -1009,  -547,  -905,  -610,  -833,  -983,
-     618,   524,   611,  -633,  -738,  -625,  -747,  -536,  -729,
-     999,   942,   963,  -920,  -940,  -886,  -976,  -867,  -905,
-     547,   857,   935,  -916,  -999,  -783,  -584,  -718,  -854,
-     734,   926,   569,  -665,  -818,  -515,  -527,  -838,  -634,
-     967,   746,   551,  -705,  -520,  -804,  -913,  -544,  -593,
-     834,   633,   881,  -515,  -718,  -545,  -679,  -783,  -758,
-     941,   701,   727,  -645,  -668,  -997,  -865,  -961,  -516,
-     945,   564,   636,  -521,  -587,  -701,  -873,  -623,  -790,
-     512,   563,   793,  -563,  -794,  -873,  -512,  -619,  -615,
-     984,   556,   570,  -534,  -548,  -620,  -945,  -604,  -636,
-     984,   540,   740,  -519,  -712,  -782,  -946,  -570,  -536,
-     527,   764,   874,  -787,  -901,  -652,  -543,  -570,  -747,
-     530,   664,  1014,  -688,  -525,  -658,  -549,  -862, -1005,
-     546,   515,   521,  -550,  -556,  -525,  -584,  -519,  -531,
-     554,   934,   672, -1011,  -728,  -613,  -600,  -852,  -882,
-     598,   945,   556,  -552,  -650,  -513,  -700,  -872,  -603,
-     627,   531,   733,  -651,  -899,  -760,  -769,  -551,  -525,
-     576,  1020,  1014,  -574,  -571, -1011,  -650, -1016, -1005,
-     623,   924,   594,  -563,  -724,  -537,  -759,  -835,  -691,
-     678,   909,   603,  -602,  -800,  -536,  -899,  -807,  -712,
-     814,   744,   543,  -592,  -865,  -790,  -648,  -541,  -577
+static const signed short wavtable1[256][9] = {
+    { 541,   956,   768, -1011,  -811,  -717,  -571,  -893,  -576},
+    { 877,   581,   568,  -997,  -975,  -646,  -752,  -661,  -632},
+    { 675,   787,   635,  -519,  -838,  -977,  -890,  -605,  -789},
+    { 624,   732,   668,  -893,  -815,  -956,  -762,  -523,  -873},
+    { 623,   839,   697, -1022,  -849,  -571,  -759,  -688,  -949},
+    { 640,   693,   991,  -867,  -619,  -671,  -800,  -940,  -959},
+    { 925,   687,   608,  -621,  -549,  -817,  -837,  -924,  -722},
+    { 552,   797,   572,  -861,  -617,  -892,  -596,  -621,  -640},
+    { 535,   832,   799,  -871,  -836,  -649,  -560,  -676,  -624},
+    { 762,   605,   577,  -902,  -859,  -682,  -568,  -716,  -650},
+    { 832,   561,  1003,  -913,  -815,  -550,  -676,  -616,  -982},
+    { 590,   687,   588,  -793,  -679,  -790,  -681,  -923,  -677},
+    { 646,   901,   732,  -569,  -924,  -645,  -816,  -794,  -524},
+    { 828,   689,   896,  -557,  -725,  -603,  -670,  -927,  -784},
+    { 875,   624,   848,  -533,  -725,  -516,  -748,  -760,  -702},
+    { 571,   942,  1022,  -526,  -570,  -941,  -638,  -868, -1020},
+    { 824,   736,   643,  -593,  -517,  -925,  -663,  -530,  -808},
+    { 517,   765,   512,  -774,  -518,  -767,  -523,  -572,  -513},
+    { 562,   908,   761,  -997,  -836,  -675,  -617,  -805,  -566},
+    { 694,   913,   675,  -619,  -916,  -603,  -941,  -815,  -891},
+    { 704,   524,   672,  -722,  -925,  -689,  -969,  -538,  -883},
+    { 721,   757,   558,  -534,  -786,  -826, -1018,  -561,  -608},
+    { 884,   551,   633,  -951,  -546,  -681,  -763,  -592,  -784},
+    { 558,  1007,   846,  -549,  -923,  -832,  -608,  -991,  -699},
+    { 932,   746,   777,  -679,  -707,  -566,  -849,  -544,  -589},
+    { 566,   822,   926,  -910,  -513,  -744,  -627,  -659,  -839},
+    { 613,   771,   611,  -924,  -731,  -921,  -733,  -581,  -729},
+    { 737,   671,  1008,  -967,  -726,  -661,  -531,  -880,  -993},
+    { 651,   594,   579,  -757,  -737,  -673,  -830,  -691,  -655},
+    { 801,   636,   564,  -996,  -883,  -702,  -626,  -792,  -622},
+    { 852,   910,   719,  -757,  -599,  -639,  -709,  -809, -1012},
+    { 998,   614,   575,  -599,  -561,  -691,  -974,  -737,  -647},
+    { 665,   935,   628,  -607,  -816,  -574,  -863,  -854,  -771},
+    { 631,   596,   829,  -735, -1023,  -966,  -778,  -694,  -672},
+    { 644,   926,   526,  -583,  -663,  -953,  -811,  -838,  -542},
+    { 879,   988,   613,  -848,  -526,  -592,  -755,  -953,  -734},
+    { 941,   692,   693,  -637,  -638,  -939,  -866,  -937,  -940},
+    { 565,   672,   576,  -742,  -637,  -757,  -625,  -882,  -649},
+    { 547,   628,   740,  -671,  -791,  -909,  -585,  -771,  -535},
+    { 639,   532,   537,  -665,  -671,  -559,  -798,  -554,  -564},
+    { 955,   604,   598,  -564,  -558,  -706,  -891,  -714,  -699},
+    { 562,   580,   900,  -637,  -989, -1021,  -617,  -658,  -791},
+    { 603,   899,   621,  -530,  -733,  -545,  -712,  -789,  -755},
+    { 746,   533,   624,  -776,  -909,  -650,  -543,  -555,  -761},
+    { 729,   514,   735,  -733,  -523,  -739,  -519,  -517,  -528},
+    { 853,   551,   692,  -919,  -577,  -745,  -711,  -593,  -936},
+    { 949,  1018,  1004,  -944,  -931,  -999,  -880, -1013,  -985},
+    { 544,   988,   735,  -525,  -781,  -710,  -578,  -954,  -528},
+    { 789,   782,   821,  -603,  -633,  -628,  -608,  -598,  -659},
+    { 897,   516,   754,  -906,  -661,  -761,  -786,  -521,  -556},
+    { 517,   702,   828,  -710,  -837,  -568,  -523,  -963,  -670},
+    { 586,   818,   763,  -937,  -874,  -609,  -672,  -654,  -568},
+    { 907,   652,   592,  -578,  -525,  -754,  -804,  -830,  -686},
+    { 528,   652,   642,  -673,  -663,  -818,  -546,  -830,  -806},
+    { 531,   708,   780,  -736,  -811,  -540,  -552,  -981,  -595},
+    { 666,   625,   727,  -813,  -946,  -888,  -867,  -763,  -516},
+    { 947,   727,   554,  -673,  -512,  -787,  -875,  -517,  -599},
+    { 549,   657,   981,  -705,  -526,  -630,  -589,  -843,  -941},
+    { 605,   920,   852,  -544, -1008,  -766,  -716,  -827,  -709},
+    { 624,   619,   983,  -755,  -599,  -595,  -761,  -750,  -944},
+    { 605,   909,   547,  -537,  -646,  -971,  -715,  -807,  -584},
+    { 690,   935,   516,  -631,  -697,  -944,  -932,  -855,  -521},
+    { 700,   612,   853,  -838,  -584, -1021,  -959,  -732,  -711},
+    { 767,   832,   574,  -623,  -861,  -933,  -575,  -676,  -643},
+    { 523,   898,   923,  -919,  -945,  -810,  -536,  -789,  -833},
+    { 722,   958,   691,  -676,  -976,  -647, -1020,  -896,  -935},
+    { 613,   771,   928,  -924,  -556,  -700,  -734,  -581,  -842},
+    { 758,   757,   584,  -561,  -866,  -865,  -562,  -560,  -667},
+    { 512,   567,   577,  -567,  -577,  -639,  -512,  -628,  -650},
+    { 615,   638,   698,  -766,  -839,  -871,  -739,  -795,  -954},
+    { 574,   642,   589,  -720,  -660,  -739,  -644,  -806,  -677},
+    { 993,   682,   878,  -662,  -852,  -585,  -963,  -910,  -753},
+    { 539,   890,   913,  -939,  -963,  -795,  -569,  -775,  -815},
+    { 694,   928,   544,  -629,  -738,  -987,  -941,  -842,  -578},
+    { 805,   600,   680,  -944,  -535,  -798,  -633,  -704,  -905},
+    { 540,   951,   782, -1004,  -825,  -727,  -570,  -884,  -597},
+    { 816,   950,   590,  -757,  -941,  -548,  -650,  -881,  -681},
+    { 955,   847,   811,  -790,  -757,  -671,  -891,  -700,  -643},
+    { 547,   883,   556,  -945,  -595,  -960,  -586,  -762,  -605},
+    { 652,   888,   604,  -565,  -770,  -524,  -831,  -770,  -713},
+    { 863,   585,   855,  -986,  -721,  -978,  -727,  -668,  -715},
+    {1023,   997,   516,  -997,  -516, -1006, -1023,  -972,  -520},
+    { 932,   614,   640,  -560,  -583,  -769,  -850,  -738,  -800},
+    { 627,   564,   573,  -691,  -702,  -631,  -769,  -621,  -641},
+    { 876,   900,   724,  -770,  -620,  -637,  -750,  -792,  -512},
+    { 515,   857,   896,  -863,  -902,  -750,  -519,  -718,  -784},
+    { 647,   953,   879,  -602,  -555,  -818,  -817,  -888,  -755},
+    { 806,   854,   857,  -672,  -675,  -715,  -634,  -712,  -718},
+    { 545,   583,   631,  -621,  -672,  -719,  -581,  -664,  -778},
+    { 657,   601,   751,  -772,  -963,  -882,  -843,  -707,  -550},
+    { 740,   905,   795,  -654,  -575,  -704,  -535,  -801,  -618},
+    { 841,  1016,   568,  -835,  -934,  -564,  -691, -1009,  -631},
+    { 747,   589,   983,  -861,  -718,  -566,  -545,  -679,  -945},
+    { 878,   613,   526,  -526,  -902,  -630,  -753,  -736,  -540},
+    { 864,   723,   779,  -610,  -657,  -550,  -729, -1022,  -592},
+    { 534,   674,   774,  -703,  -808, -1019,  -557,  -887,  -586},
+    { 950,   649,   939,  -602,  -871,  -595,  -881,  -824,  -861},
+    { 590,   703,   899,  -811,  -518,  -618,  -680,  -966,  -790},
+    { 618,   527,   579,  -637,  -700,  -597,  -746,  -543,  -657},
+    { 725,   647,   972,  -917,  -689,  -615,  -513,  -818,  -924},
+    { 641,   647,   707,  -810,  -885,  -893,  -803,  -817,  -976},
+    { 730,   663,   644,  -946,  -920,  -835,  -521,  -860,  -812},
+    { 807,   572,   578,  -902,  -912,  -646,  -637,  -639,  -653},
+    { 879,   611,   821,  -524,  -705,  -979,  -755,  -729,  -658},
+    { 667,   729,   841,  -951,  -549,  -599,  -871,  -519,  -692},
+    { 782,   585,   751,  -895,  -574,  -859,  -598,  -670,  -551},
+    { 802,   733,   976,  -574,  -765,  -699,  -628,  -525,  -931},
+    { 850,   871,   708,  -724,  -588,  -602,  -706,  -742,  -979},
+    { 870,   743,   704,  -632,  -598, -1023,  -739,  -540,  -970},
+    { 941,   899,   585,  -827,  -538,  -514,  -866,  -790,  -669},
+    { 943,   632,   875,  -582,  -806,  -541,  -869,  -781,  -749},
+    {1023,   732,   638,  -731,  -637,  -912, -1022,  -523,  -795},
+    { 778,   753,   655,  -573,  -997,  -965,  -592,  -554,  -839},
+    { 843,   945,   945,  -779,  -779,  -873,  -694,  -873,  -873},
+    { 942,   969,   572,  -892,  -527,  -542,  -867,  -918,  -640},
+    {1008,   559,   854,  -551,  -841,  -934,  -993,  -612,  -712},
+    { 868,   729,   787,  -618,  -668,  -560,  -737,  -519,  -605},
+    { 970,   686,   547,  -650,  -518,  -733,  -919,  -919,  -585},
+    { 535,   635,   674,  -664,  -705,  -836,  -560,  -788,  -887},
+    { 560,   636,   828,  -696,  -907,  -514,  -613,  -790,  -670},
+    { 994,   592,   833,  -575,  -809,  -964,  -966,  -686,  -677},
+    { 548,   621,   694,  -665,  -743,  -843,  -587,  -755,  -942},
+    { 550,   801,   955,  -861,  -513,  -748,  -591,  -627,  -892},
+    { 582,   522,   646,  -594,  -735,  -659,  -663,  -533,  -815},
+    { 606,   625,   818,  -739,  -969,  -999,  -717,  -763,  -655},
+    { 623,   591,   874,  -720,  -531, -1010,  -758,  -683,  -746},
+    { 669,   535,  1001,  -700,  -654,  -523,  -876,  -559,  -979},
+    { 701,   938,   592,  -642,  -810,  -542,  -960,  -860,  -684},
+    { 925,   820,   738,  -741,  -667,  -592,  -835,  -657,  -533},
+    { 735,   790,   544,  -567,  -781,  -840,  -527,  -610,  -578},
+    { 575,   788,   674,  -886,  -758,  -519,  -647,  -607,  -888},
+    { 655,   783,   528, -1003,  -677,  -809,  -840,  -599,  -545},
+    { 527,   513,   677,  -529,  -699,  -679,  -544,  -514,  -897},
+    { 782,   852,   940,  -651,  -718,  -783,  -597,  -709,  -863},
+    { 578,   910,   513,  -514,  -581,  -914,  -654,  -809,  -515},
+    { 692,   882,   734,  -596,  -993,  -632,  -937,  -759,  -526},
+    { 586,   683,   715,  -782,  -818,  -954,  -670,  -911,  -999},
+    { 739,   609,   717,  -880,  -518,  -854,  -534,  -725, -1006},
+    { 778,   773,   697,  -588,  -530,  -527,  -592,  -584,  -951},
+    { 922,   785,   813,  -707,  -732,  -624,  -830,  -602,  -646},
+    { 766,   651,   984,  -974,  -736,  -626,  -573,  -827,  -946},
+    { 978,   596,   515,  -569,  -984,  -600,  -934,  -694,  -518},
+    { 535,   757,   540,  -792,  -565,  -799,  -560,  -559,  -571},
+    { 662,   687,   589,  -890,  -762,  -791,  -857,  -924,  -678},
+    { 554,   536,   979,  -580,  -530,  -512,  -601,  -561,  -936},
+    { 723,   982,   690,  -694,  -976,  -662, -1022,  -943,  -932},
+    { 936,   956,   527,  -875,  -965,  -986,  -856,  -894,  -543},
+    { 590,  1002,   547,  -577,  -631,  -536,  -680,  -980,  -586},
+    { 517,   653,   825,  -660,  -833,  -526,  -522,  -834,  -664},
+    { 832,   592,   974,  -964,  -792,  -564,  -677,  -686,  -928},
+    { 512,   957,   903,  -957,  -903,  -844,  -512,  -894,  -796},
+    { 631,   545,   906,  -672,  -558,  -965,  -777,  -581,  -802},
+    { 514,   720,   649,  -723,  -652,  -913,  -516, -1012,  -824},
+    { 596,   679,   694,  -790,  -807,  -920,  -693,  -900,  -940},
+    { 617,   740,   979,  -892,  -590,  -708,  -743,  -535,  -936},
+    { 711,   685,   877,  -952,  -609,  -587,  -987,  -917,  -752},
+    { 655,   835,   848,  -534,  -542,  -691,  -838,  -681,  -702},
+    { 754,   839,   698,  -618,  -515,  -573,  -556,  -688,  -954},
+    { 871,   515,   769,  -877,  -655,  -774,  -742,  -518,  -578},
+    { 955,   852,   573,  -795,  -535,  -955,  -892,  -709,  -643},
+    { 640,   859,   587,  -537,  -735,  -986,  -801,  -721,  -674},
+    { 792,   863,   554,  -667,  -858,  -935,  -612,  -727,  -601},
+    { 843,   708,   682,  -583,  -562,  -944,  -694,  -979,  -910},
+    { 971,   768,   552,  -728,  -524,  -829,  -921,  -576,  -596},
+    { 891,   536,   690,  -935,  -601,  -724,  -776,  -563,  -931},
+    {1016,   560,   663,  -556,  -659,  -727, -1009,  -614,  -860},
+    { 543,   870,   674,  -924,  -716,  -573,  -577,  -739,  -889},
+    { 601,   999,   585,  -586,  -686,  -571,  -705,  -975,  -668},
+    { 945,   966,   889,  -892,  -821,  -840,  -872,  -912,  -773},
+    { 529,   912,   777,  -943,  -804,  -692,  -547,  -812,  -590},
+    { 574,  1020,   714,  -572,  -801,  -711,  -643, -1016,  -997},
+    { 609,   922,   932,  -549,  -555,  -840,  -725,  -831,  -848},
+    { 598,   778,   929,  -909,  -543,  -707,  -698,  -592,  -844},
+    { 651,   772,   744,  -982,  -947,  -561,  -827,  -582,  -541},
+    { 691,   957,   722,  -646,  -976,  -675,  -934,  -894, -1020},
+    { 729,   766,   984,  -546,  -701,  -736,  -520,  -573,  -945},
+    { 547,   519,   632,  -555,  -675,  -640,  -585,  -526,  -780},
+    { 583,   532,   922,  -607,  -525,  -960,  -664,  -554,  -831},
+    { 633,   995,   603,  -615,  -745,  -586,  -783,  -968,  -710},
+    { 677,   571,   874,  -757,  -578,  -977,  -896,  -638,  -747},
+    { 602,   545,   666,  -641,  -783,  -709,  -708,  -580,  -866},
+    { 627,   542,   875,  -665,  -536,  -928,  -769,  -575,  -748},
+    { 672,   983,   598,  -645,  -786,  -575,  -882,  -944,  -700},
+    { 692,   979,   730,  -662,  -988,  -698,  -937,  -937,  -521},
+    { 668,   634,   872,  -827,  -569,  -540,  -871,  -785,  -742},
+    { 711,   706,   674,  -982,  -937,  -931,  -988,  -975,  -889},
+    { 739,   977,   595,  -706,  -860,  -568,  -534,  -932,  -691},
+    { 759,   905,   763,  -671,  -566,  -675,  -563,  -799,  -569},
+    { 756,   582,   763,  -860,  -563,  -868,  -558,  -663,  -568},
+    { 748,  1013,   908,  -741,  -664,  -898,  -547, -1002,  -805},
+    { 804,   937,   950,  -736,  -746,  -869,  -631,  -858,  -882},
+    { 785,   543,   998,  -833,  -766,  -529,  -602,  -576,  -973},
+    { 999,   684,   942,  -668,  -920,  -630,  -975,  -915,  -868},
+    { 626,   633,   996,  -774,  -609,  -616,  -765,  -783,  -970},
+    { 626,   567,   835,  -693, -1021,  -925,  -765,  -628,  -681},
+    { 739,   571,   973,  -825,  -702,  -543,  -533,  -637,  -925},
+    { 655,   769,   707,  -984,  -906,  -531,  -839,  -577,  -978},
+    { 702,   952,   571,  -653,  -785,  -532,  -964,  -886,  -638},
+    { 727,   712,   514, -1012,  -730,  -715,  -516,  -990,  -516},
+    { 744,   686,   741,  -998,  -539,  -994,  -541,  -921,  -536},
+    { 731,   552,   714,  -789, -1021,  -772,  -522,  -596,  -998},
+    { 824,   991,   726,  -798,  -585,  -703,  -664,  -959,  -515},
+    { 795,   615,   544,  -955,  -844,  -653,  -617,  -738,  -578},
+    { 870,   575,   824,  -978,  -700,  -926,  -739,  -646,  -664},
+    { 803,   832,   923,  -653,  -724,  -750,  -630,  -677,  -832},
+    { 819,   839,   531,  -671,  -849,  -871,  -655,  -688,  -550},
+    { 887,   786,   852,  -681,  -738,  -654,  -769,  -603,  -709},
+    { 933,   764,   570,  -696,  -519,  -851,  -850,  -570,  -634},
+    { 716,   906,   654,  -634,  -916,  -579, -1003,  -802,  -837},
+    { 784,   804,   563,  -616,  -864,  -885,  -601,  -631,  -620},
+    { 774,   535,   876,  -809,  -662,  -915,  -585,  -559,  -749},
+    { 807,   598,   649,  -943, -1023,  -758,  -636,  -699,  -822},
+    { 817,   759,   718,  -606,  -573,  -533,  -652,  -563, -1008},
+    { 831,   993,   846,  -806,  -687,  -821,  -675,  -963,  -699},
+    { 858,   567,   605,  -951, -1015,  -670,  -720,  -628,  -716},
+    { 876,  1012,   651,  -866,  -557,  -643,  -750, -1001,  -827},
+    { 852,   548,   549,  -913,  -914,  -588,  -710,  -587,  -589},
+    { 895,  1008,   871,  -881,  -761,  -858,  -782,  -993,  -741},
+    { 892,  1000,   591,  -872,  -515,  -578,  -777,  -977,  -683},
+    { 935,   516,   836,  -944,  -764,  -844,  -855,  -521,  -682},
+    { 931,   612,   776,  -557,  -706,  -929,  -847,  -733,  -589},
+    { 968,   614,   816,  -581,  -771,  -980,  -915,  -738,  -651},
+    { 524,   777,   719,  -796,  -737,  -546,  -537,  -590, -1012},
+    { 549,   694,   786,  -744,  -843,  -533,  -589,  -941,  -603},
+    { 882,   754,   534,  -649,  -920,  -787,  -759,  -555,  -557},
+    { 597,   837,   766,  -977,  -895,  -627,  -697,  -684,  -574},
+    { 635,   954,   704,  -592,  -873,  -656,  -788,  -890,  -969},
+    { 803,   550,   798,  -863,  -626,  -858,  -630,  -591,  -622},
+    { 699,   654,   798,  -894,  -545, -1021,  -954,  -837,  -622},
+    { 924,   767,   738,  -693,  -666,  -553,  -834,  -575,  -531},
+    { 970,   675,   608,  -639,  -576,  -801,  -919,  -890,  -722},
+    { 632,   706,   684,  -873,  -844,  -944,  -780,  -976,  -914},
+    { 858,   767,   563,  -643,  -945,  -844,  -719,  -574,  -620},
+    { 527,   765,   702,  -788,  -724,  -525,  -543,  -572,  -964},
+    { 559,   924,  1003, -1009,  -547,  -905,  -610,  -833,  -983},
+    { 618,   524,   611,  -633,  -738,  -625,  -747,  -536,  -729},
+    { 999,   942,   963,  -920,  -940,  -886,  -976,  -867,  -905},
+    { 547,   857,   935,  -916,  -999,  -783,  -584,  -718,  -854},
+    { 734,   926,   569,  -665,  -818,  -515,  -527,  -838,  -634},
+    { 967,   746,   551,  -705,  -520,  -804,  -913,  -544,  -593},
+    { 834,   633,   881,  -515,  -718,  -545,  -679,  -783,  -758},
+    { 941,   701,   727,  -645,  -668,  -997,  -865,  -961,  -516},
+    { 945,   564,   636,  -521,  -587,  -701,  -873,  -623,  -790},
+    { 512,   563,   793,  -563,  -794,  -873,  -512,  -619,  -615},
+    { 984,   556,   570,  -534,  -548,  -620,  -945,  -604,  -636},
+    { 984,   540,   740,  -519,  -712,  -782,  -946,  -570,  -536},
+    { 527,   764,   874,  -787,  -901,  -652,  -543,  -570,  -747},
+    { 530,   664,  1014,  -688,  -525,  -658,  -549,  -862, -1005},
+    { 546,   515,   521,  -550,  -556,  -525,  -584,  -519,  -531},
+    { 554,   934,   672, -1011,  -728,  -613,  -600,  -852,  -882},
+    { 598,   945,   556,  -552,  -650,  -513,  -700,  -872,  -603},
+    { 627,   531,   733,  -651,  -899,  -760,  -769,  -551,  -525},
+    { 576,  1020,  1014,  -574,  -571, -1011,  -650, -1016, -1005},
+    { 623,   924,   594,  -563,  -724,  -537,  -759,  -835,  -691},
+    { 678,   909,   603,  -602,  -800,  -536,  -899,  -807,  -712},
+    { 814,   744,   543,  -592,  -865,  -790,  -648,  -541,  -577}
 };
 
-static const unsigned short wavtable2[2304]={
-    14,  14,  14,  20,  20,  19,  21,  20,  20,
-    14,  14,  14,  20,  20,  20,  20,  21,  21,
-    14,  13,  14,  18,  20,  19,  21,  18,  21,
-    13,  13,  14,  18,  19,  19,  19,  18,  21,
-    13,  14,  13,  19,  18,  18,  19,  20,  19,
-    13,  14,  15,  19,  19,  20,  19,  21,  22,
-    13,  13,  13,  17,  17,  18,  18,  19,  19,
-    12,  14,  13,  18,  17,  19,  17,  20,  19,
-    13,  13,  13,  18,  18,  17,  19,  18,  18,
-    13,  13,  12,  18,  17,  17,  18,  19,  17,
-    13,  12,  13,  17,  17,  16,  18,  17,  18,
-    12,  13,  12,  17,  16,  17,  17,  19,  17,
-    12,  13,  13,  16,  17,  17,  17,  18,  18,
-    12,  13,  13,  16,  16,  17,  16,  19,  18,
-    12,  12,  13,  15,  16,  16,  16,  17,  18,
-    11,  13,  13,  15,  15,  17,  15,  18,  18,
-    13,  12,  13,  16,  17,  17,  18,  16,  19,
-    12,  12,  12,  16,  16,  16,  17,  16,  17,
-    13,  12,  12,  17,  17,  15,  19,  16,  16,
-    13,  12,  11,  16,  16,  14,  19,  16,  15,
-    12,  12,  12,  16,  16,  16,  17,  17,  17,
-    12,  13,  11,  16,  15,  16,  17,  18,  15,
-    12,  12,  11,  16,  14,  15,  16,  17,  15,
-    11,  13,  12,  15,  15,  16,  15,  18,  16,
-    12,  12,  12,  15,  15,  15,  16,  16,  16,
-    11,  12,  12,  15,  14,  15,  15,  16,  16,
-    11,  12,  12,  15,  15,  16,  15,  16,  17,
-    11,  12,  13,  15,  15,  16,  14,  17,  18,
-    11,  12,  11,  15,  14,  15,  15,  17,  15,
-    11,  12,  11,  15,  14,  15,  14,  17,  15,
-    11,  13,  12,  15,  14,  16,  14,  18,  17,
-    11,  12,  12,  14,  14,  16,  14,  17,  17,
-    12,  12,  12,  15,  16,  15,  17,  16,  17,
-    12,  11,  12,  15,  16,  15,  17,  15,  16,
-    12,  12,  11,  15,  15,  15,  17,  16,  15,
-    12,  12,  11,  15,  14,  14,  16,  16,  15,
-    13,  11,  11,  15,  15,  14,  18,  15,  15,
-    12,  11,  10,  15,  14,  13,  17,  15,  13,
-    11,  11,  11,  14,  14,  14,  15,  15,  14,
-    11,  11,  10,  14,  13,  13,  15,  15,  13,
-    12,  11,  12,  14,  15,  15,  16,  15,  17,
-    11,  11,  12,  14,  15,  15,  15,  15,  16,
-    11,  12,  11,  14,  14,  14,  15,  16,  15,
-    11,  11,  11,  14,  14,  14,  14,  15,  15,
-    11,  11,  12,  14,  14,  15,  14,  15,  16,
-    11,  11,  12,  14,  14,  15,  14,  15,  17,
-    11,  12,  12,  14,  14,  15,  14,  16,  16,
-    10,  12,  12,  13,  14,  15,  13,  16,  16,
-    11,  12,  11,  14,  13,  14,  14,  16,  14,
-    11,  11,  11,  14,  13,  14,  14,  15,  14,
-    10,  12,  11,  14,  13,  14,  13,  17,  14,
-    10,  12,  11,  14,  13,  14,  13,  16,  14,
-    11,  11,  11,  13,  13,  14,  14,  15,  15,
-    10,  11,  11,  13,  13,  14,  13,  15,  15,
-    10,  11,  12,  13,  14,  14,  13,  15,  16,
-    10,  11,  12,  13,  14,  15,  13,  15,  16,
-    11,  12,  11,  14,  13,  15,  14,  16,  15,
-    10,  12,  12,  14,  13,  15,  13,  17,  16,
-    10,  13,  12,  14,  14,  16,  13,  18,  16,
-    10,  12,  13,  14,  14,  16,  13,  17,  18,
-    10,  12,  11,  13,  13,  15,  13,  16,  15,
-    10,  12,  11,  13,  13,  15,  13,  16,  15,
-    10,  12,  12,  14,  13,  16,  13,  17,  16,
-    10,  12,  12,  13,  14,  16,  12,  16,  17,
-    12,  11,  12,  15,  16,  14,  17,  14,  16,
-    12,  11,  11,  14,  15,  13,  17,  14,  15,
-    11,  11,  12,  14,  14,  14,  15,  14,  16,
-    11,  11,  11,  13,  14,  14,  14,  14,  15,
-    11,  10,  11,  13,  14,  13,  15,  13,  15,
-    11,  10,  11,  13,  14,  13,  15,  13,  15,
-    12,  10,  10,  14,  14,  12,  17,  13,  13,
-    12,  10,  10,  13,  13,  11,  16,  13,  12,
-    11,  11,  11,  14,  14,  13,  15,  14,  14,
-    11,  11,  10,  13,  13,  13,  15,  14,  13,
-    11,  11,  10,  14,  12,  13,  14,  15,  13,
-    10,  12,  10,  14,  12,  13,  13,  16,  12,
-    11,  11,  11,  13,  14,  13,  14,  14,  15,
-    11,  11,  11,  13,  13,  13,  14,  14,  14,
-    10,  11,  11,  13,  13,  14,  13,  14,  15,
-    10,  11,  11,  12,  13,  13,  13,  14,  15,
-    11,  10,  11,  13,  13,  13,  14,  13,  14,
-    11,  11,  10,  13,  12,  13,  14,  14,  13,
-    11,  10,  10,  12,  12,  12,  14,  13,  13,
-    10,  10,  10,  12,  12,  12,  13,  13,  13,
-    11,  11,  10,  13,  12,  12,  14,  14,  12,
-    10,  11,  10,  13,  12,  12,  13,  14,  12,
-    10,  11,  10,  12,  11,  12,  13,  14,  12,
-    10,  11,  10,  12,  11,  12,  12,  14,  12,
-    10,  10,  11,  12,  13,  13,  13,  13,  15,
-    10,  10,  11,  12,  13,  13,  13,  13,  14,
-    10,  11,  11,  12,  12,  13,  12,  14,  14,
-    10,  11,  11,  12,  13,  13,  12,  14,  15,
-    10,  10,  11,  12,  12,  12,  12,  13,  14,
-    10,  10,  10,  11,  12,  12,  12,  13,  13,
-    10,  10,  11,  11,  12,  12,  12,  13,  14,
-     9,  10,  11,  11,  12,  13,  11,  13,  14,
-    11,  11,  11,  13,  13,  13,  14,  15,  14,
-    10,  11,  11,  13,  12,  13,  13,  15,  14,
-    10,  11,  10,  13,  12,  13,  13,  15,  13,
-    10,  11,  11,  13,  12,  13,  12,  15,  14,
-    10,  11,  11,  13,  13,  14,  13,  15,  15,
-    10,  11,  11,  13,  13,  14,  12,  15,  15,
-    10,  11,  11,  13,  13,  14,  12,  15,  15,
-    10,  11,  12,  12,  13,  15,  12,  15,  16,
-    10,  12,  11,  14,  12,  14,  13,  16,  14,
-    10,  12,  11,  14,  12,  15,  12,  17,  14,
-    10,  12,  12,  13,  13,  15,  12,  16,  16,
-    10,  13,  12,  14,  13,  16,  12,  18,  17,
-    10,  12,  11,  13,  12,  15,  12,  16,  15,
-    10,  12,  11,  13,  12,  14,  12,  16,  15,
-    10,  12,  12,  13,  13,  15,  12,  17,  16,
-    10,  12,  12,  13,  13,  16,  12,  16,  17,
-    10,  12,  10,  13,  12,  14,  12,  16,  13,
-    10,  12,  11,  13,  12,  14,  12,  16,  14,
-    10,  12,  10,  13,  11,  13,  12,  16,  13,
-    10,  11,  11,  12,  12,  14,  12,  15,  14,
-    10,  11,  11,  12,  12,  13,  12,  14,  14,
-    10,  11,  11,  12,  12,  14,  12,  15,  15,
-     9,  11,  11,  12,  12,  14,  11,  15,  15,
-     9,  11,  12,  12,  13,  14,  11,  15,  16,
-    10,  12,  11,  13,  12,  15,  12,  17,  14,
-     9,  12,  11,  13,  12,  15,  11,  17,  15,
-     9,  12,  12,  13,  12,  15,  11,  16,  16,
-     9,  12,  12,  13,  13,  16,  11,  17,  17,
-     9,  12,  11,  13,  12,  15,  11,  17,  14,
-     9,  12,  12,  13,  12,  16,  11,  17,  16,
-     9,  12,  12,  13,  12,  15,  11,  17,  16,
-     9,  13,  12,  13,  13,  16,  11,  18,  17,
-    12,  10,  11,  13,  14,  12,  16,  12,  14,
-    11,  10,  10,  12,  13,  12,  14,  12,  13,
-    10,  10,  11,  12,  13,  12,  13,  12,  15,
-    10,  10,  10,  12,  12,  12,  13,  12,  13,
-    11,   9,  10,  12,  13,  11,  15,  11,  13,
-    11,  10,  10,  12,  12,  11,  14,  12,  12,
-    10,  10,   9,  11,  11,  11,  13,  12,  11,
-    10,  10,   9,  11,  11,  10,  13,  12,  10,
-    10,  10,  10,  12,  12,  12,  13,  13,  13,
-    10,  10,  10,  12,  11,  12,  12,  13,  13,
-    10,  10,  10,  11,  11,  11,  12,  12,  13,
-    10,  10,  10,  11,  11,  11,  12,  12,  12,
-    10,  10,  10,  12,  11,  11,  12,  13,  12,
-    10,  10,   9,  11,  11,  11,  12,  13,  11,
-     9,  10,   9,  11,  10,  11,  11,  12,  11,
-     9,  10,   9,  11,  10,  11,  11,  13,  11,
-    10,   9,  11,  11,  12,  11,  13,  11,  14,
-    10,  10,  10,  11,  12,  11,  13,  12,  13,
-    10,  10,  10,  11,  12,  12,  12,  12,  13,
-     9,  10,  10,  10,  11,  11,  11,  12,  13,
-    10,   9,  10,  11,  12,  10,  13,  11,  12,
-    10,   9,  10,  11,  11,  10,  12,  11,  12,
-     9,  10,  10,  11,  11,  11,  11,  12,  12,
-     9,   9,  10,  10,  10,  11,  11,  11,  12,
-     9,  10,  10,  11,  11,  12,  11,  13,  13,
-     9,  10,  10,  11,  11,  12,  11,  13,  13,
-     9,  10,  11,  11,  11,  12,  11,  12,  14,
-     9,  10,  11,  11,  11,  12,  11,  13,  14,
-     9,  10,  10,  10,  10,  11,  11,  12,  12,
-     9,  10,  10,  10,  10,  11,  10,  12,  13,
-     9,   9,  10,  10,  10,  11,  10,  11,  12,
-     9,  10,  10,  10,  10,  12,  10,  12,  13,
-    10,  11,  10,  12,  12,  13,  13,  14,  13,
-    10,  11,  10,  12,  12,  13,  12,  14,  13,
-    10,  11,  10,  12,  11,  13,  12,  15,  13,
-    10,  11,  10,  12,  11,  13,  12,  14,  13,
-    10,  10,  10,  12,  11,  12,  12,  13,  13,
-    10,  10,  10,  11,  11,  12,  12,  13,  13,
-     9,  11,  10,  12,  11,  12,  11,  14,  13,
-     9,  11,  10,  11,  11,  12,  11,  14,  13,
-    10,  11,  11,  12,  12,  13,  12,  14,  14,
-     9,  11,  11,  12,  12,  13,  11,  14,  14,
-     9,  11,  11,  11,  12,  13,  11,  14,  15,
-     9,  11,  12,  11,  12,  14,  11,  14,  16,
-     9,  11,  11,  12,  11,  13,  11,  14,  14,
-     9,  11,  11,  12,  12,  13,  11,  14,  14,
-     9,  11,  11,  11,  12,  13,  11,  14,  15,
-     9,  11,  12,  11,  12,  14,  10,  14,  16,
-     9,  11,  10,  12,  11,  13,  11,  15,  13,
-     9,  11,  11,  12,  11,  14,  11,  15,  14,
-     9,  12,  10,  12,  11,  13,  11,  16,  13,
-     9,  11,  11,  12,  11,  14,  11,  15,  14,
-     9,  11,  11,  12,  12,  14,  11,  15,  15,
-     9,  11,  12,  12,  12,  15,  11,  15,  16,
-     9,  12,  11,  12,  12,  14,  11,  16,  15,
-     9,  12,  12,  12,  13,  15,  11,  16,  16,
-     9,  12,  11,  13,  11,  14,  11,  17,  14,
-     9,  12,  11,  13,  12,  15,  11,  17,  15,
-     9,  12,  11,  12,  12,  14,  10,  16,  15,
-     9,  12,  12,  12,  12,  15,  10,  16,  16,
-     9,  12,  11,  13,  11,  15,  10,  17,  14,
-     9,  13,  12,  13,  12,  16,  10,  18,  16,
-     9,  13,  12,  13,  12,  16,  10,  18,  16,
-     9,  12,  13,  13,  13,  16,  10,  17,  18,
-    10,  11,  10,  12,  11,  12,  12,  15,  12,
-     9,  11,  10,  12,  10,  12,  11,  15,  12,
-     9,  10,  10,  11,  11,  12,  11,  13,  12,
-     9,  10,  10,  11,  10,  11,  10,  13,  12,
-     9,  11,  10,  12,  11,  12,  11,  14,  13,
-     9,  11,  10,  11,  11,  12,  11,  14,  13,
-     9,  11,  10,  12,  11,  13,  10,  15,  13,
-     9,  11,  11,  12,  11,  14,  10,  15,  14,
-     9,  10,  10,  11,  11,  12,  10,  13,  13,
-     9,  11,  10,  11,  10,  12,  10,  14,  12,
-     9,  10,  10,  11,  11,  12,  10,  13,  13,
-     9,  10,  11,  11,  11,  13,  10,  13,  14,
-     9,  11,  11,  11,  11,  13,  10,  14,  14,
-     9,  11,  11,  11,  12,  14,  10,  14,  15,
-     9,  11,  11,  11,  11,  13,  10,  14,  14,
-     9,  11,  11,  11,  11,  14,  10,  14,  15,
-     9,  12,  10,  12,  11,  13,  11,  16,  13,
-     9,  12,  10,  12,  11,  14,  10,  16,  13,
-     9,  11,  11,  12,  11,  14,  10,  15,  14,
-     9,  11,  11,  12,  12,  14,  10,  15,  15,
-     9,  12,  11,  12,  11,  14,  10,  16,  15,
-     9,  12,  12,  12,  12,  15,  10,  16,  16,
-     9,  12,  11,  13,  12,  15,  10,  17,  15,
-     9,  13,  12,  13,  12,  16,  10,  18,  17,
-     9,  11,  10,  12,  11,  13,  10,  15,  13,
-     9,  12,  11,  12,  11,  14,  10,  16,  14,
-     9,  12,  11,  12,  11,  14,  10,  16,  15,
-     9,  11,  12,  12,  12,  15,  10,  15,  16,
-     9,  12,  11,  12,  11,  15,  10,  17,  14,
-     9,  12,  12,  12,  12,  16,  10,  17,  16,
-     8,  12,  11,  12,  11,  14,   9,  16,  15,
-     8,  12,  12,  12,  12,  15,   9,  17,  16,
-    10,   9,   9,  10,  11,  10,  12,  10,  11,
-     9,   9,   9,  10,  10,   9,  11,  10,  10,
-     9,  10,   9,  10,  10,  10,  11,  12,  11,
-     9,   9,   9,  10,   9,  10,  10,  11,  10,
-     9,   9,  10,  10,  10,  11,  11,  11,  12,
-     9,   9,  10,   9,  10,  10,  10,  10,  12,
-     9,   9,   9,   9,   9,  10,  10,  11,  11,
-     8,   9,   9,   9,   9,  10,   9,  11,  11,
-     9,  10,   9,  10,  10,  11,  10,  12,  11,
-     8,  10,   9,  10,   9,  10,   9,  12,  11,
-     8,  10,  10,  10,   9,  11,   9,  12,  12,
-     8,   9,  10,   9,  10,  11,   9,  11,  13,
-     9,   9,   9,   9,   9,   9,  10,  10,  10,
-     7,   8,   8,   7,   7,   7,   7,   8,   8,
-     8,  10,   9,   9,   9,  10,   8,  12,  11,
-     8,   9,   9,   8,   8,  10,   8,  10,  11,
-     9,  11,  10,  11,  10,  12,  10,  15,  12,
-     9,  11,  10,  11,  10,  13,  10,  15,  12,
-     9,  10,  10,  10,  10,  12,  10,  13,  13,
-     8,  10,  11,  10,  11,  13,   9,  13,  14,
-     9,  11,  10,  11,  10,  13,  10,  15,  13,
-     9,  11,  11,  11,  11,  14,  10,  15,  14,
-     8,  11,  11,  11,  11,  13,   9,  14,  14,
-     8,  11,  12,  11,  11,  14,   9,  15,  16,
-     8,  10,   9,  10,   9,  11,   9,  13,  11,
-     8,  11,  10,  11,  10,  12,   9,  14,  13,
-     8,  11,  10,  10,  10,  12,   9,  14,  13,
-     8,  10,  11,  10,  11,  13,   9,  13,  14,
-     8,  12,  11,  11,  10,  14,   9,  16,  14,
-     8,  12,  11,  11,  11,  14,   9,  16,  15,
-     8,  11,  10,  10,  10,  12,   9,  14,  13,
-     8,  11,  10,  10,  10,  13,   8,  14,  13
+static const unsigned short wavtable2[256][9] = {
+    {14, 14, 14, 20, 20, 19, 21, 20, 20},
+    {14, 14, 14, 20, 20, 20, 20, 21, 21},
+    {14, 13, 14, 18, 20, 19, 21, 18, 21},
+    {13, 13, 14, 18, 19, 19, 19, 18, 21},
+    {13, 14, 13, 19, 18, 18, 19, 20, 19},
+    {13, 14, 15, 19, 19, 20, 19, 21, 22},
+    {13, 13, 13, 17, 17, 18, 18, 19, 19},
+    {12, 14, 13, 18, 17, 19, 17, 20, 19},
+    {13, 13, 13, 18, 18, 17, 19, 18, 18},
+    {13, 13, 12, 18, 17, 17, 18, 19, 17},
+    {13, 12, 13, 17, 17, 16, 18, 17, 18},
+    {12, 13, 12, 17, 16, 17, 17, 19, 17},
+    {12, 13, 13, 16, 17, 17, 17, 18, 18},
+    {12, 13, 13, 16, 16, 17, 16, 19, 18},
+    {12, 12, 13, 15, 16, 16, 16, 17, 18},
+    {11, 13, 13, 15, 15, 17, 15, 18, 18},
+    {13, 12, 13, 16, 17, 17, 18, 16, 19},
+    {12, 12, 12, 16, 16, 16, 17, 16, 17},
+    {13, 12, 12, 17, 17, 15, 19, 16, 16},
+    {13, 12, 11, 16, 16, 14, 19, 16, 15},
+    {12, 12, 12, 16, 16, 16, 17, 17, 17},
+    {12, 13, 11, 16, 15, 16, 17, 18, 15},
+    {12, 12, 11, 16, 14, 15, 16, 17, 15},
+    {11, 13, 12, 15, 15, 16, 15, 18, 16},
+    {12, 12, 12, 15, 15, 15, 16, 16, 16},
+    {11, 12, 12, 15, 14, 15, 15, 16, 16},
+    {11, 12, 12, 15, 15, 16, 15, 16, 17},
+    {11, 12, 13, 15, 15, 16, 14, 17, 18},
+    {11, 12, 11, 15, 14, 15, 15, 17, 15},
+    {11, 12, 11, 15, 14, 15, 14, 17, 15},
+    {11, 13, 12, 15, 14, 16, 14, 18, 17},
+    {11, 12, 12, 14, 14, 16, 14, 17, 17},
+    {12, 12, 12, 15, 16, 15, 17, 16, 17},
+    {12, 11, 12, 15, 16, 15, 17, 15, 16},
+    {12, 12, 11, 15, 15, 15, 17, 16, 15},
+    {12, 12, 11, 15, 14, 14, 16, 16, 15},
+    {13, 11, 11, 15, 15, 14, 18, 15, 15},
+    {12, 11, 10, 15, 14, 13, 17, 15, 13},
+    {11, 11, 11, 14, 14, 14, 15, 15, 14},
+    {11, 11, 10, 14, 13, 13, 15, 15, 13},
+    {12, 11, 12, 14, 15, 15, 16, 15, 17},
+    {11, 11, 12, 14, 15, 15, 15, 15, 16},
+    {11, 12, 11, 14, 14, 14, 15, 16, 15},
+    {11, 11, 11, 14, 14, 14, 14, 15, 15},
+    {11, 11, 12, 14, 14, 15, 14, 15, 16},
+    {11, 11, 12, 14, 14, 15, 14, 15, 17},
+    {11, 12, 12, 14, 14, 15, 14, 16, 16},
+    {10, 12, 12, 13, 14, 15, 13, 16, 16},
+    {11, 12, 11, 14, 13, 14, 14, 16, 14},
+    {11, 11, 11, 14, 13, 14, 14, 15, 14},
+    {10, 12, 11, 14, 13, 14, 13, 17, 14},
+    {10, 12, 11, 14, 13, 14, 13, 16, 14},
+    {11, 11, 11, 13, 13, 14, 14, 15, 15},
+    {10, 11, 11, 13, 13, 14, 13, 15, 15},
+    {10, 11, 12, 13, 14, 14, 13, 15, 16},
+    {10, 11, 12, 13, 14, 15, 13, 15, 16},
+    {11, 12, 11, 14, 13, 15, 14, 16, 15},
+    {10, 12, 12, 14, 13, 15, 13, 17, 16},
+    {10, 13, 12, 14, 14, 16, 13, 18, 16},
+    {10, 12, 13, 14, 14, 16, 13, 17, 18},
+    {10, 12, 11, 13, 13, 15, 13, 16, 15},
+    {10, 12, 11, 13, 13, 15, 13, 16, 15},
+    {10, 12, 12, 14, 13, 16, 13, 17, 16},
+    {10, 12, 12, 13, 14, 16, 12, 16, 17},
+    {12, 11, 12, 15, 16, 14, 17, 14, 16},
+    {12, 11, 11, 14, 15, 13, 17, 14, 15},
+    {11, 11, 12, 14, 14, 14, 15, 14, 16},
+    {11, 11, 11, 13, 14, 14, 14, 14, 15},
+    {11, 10, 11, 13, 14, 13, 15, 13, 15},
+    {11, 10, 11, 13, 14, 13, 15, 13, 15},
+    {12, 10, 10, 14, 14, 12, 17, 13, 13},
+    {12, 10, 10, 13, 13, 11, 16, 13, 12},
+    {11, 11, 11, 14, 14, 13, 15, 14, 14},
+    {11, 11, 10, 13, 13, 13, 15, 14, 13},
+    {11, 11, 10, 14, 12, 13, 14, 15, 13},
+    {10, 12, 10, 14, 12, 13, 13, 16, 12},
+    {11, 11, 11, 13, 14, 13, 14, 14, 15},
+    {11, 11, 11, 13, 13, 13, 14, 14, 14},
+    {10, 11, 11, 13, 13, 14, 13, 14, 15},
+    {10, 11, 11, 12, 13, 13, 13, 14, 15},
+    {11, 10, 11, 13, 13, 13, 14, 13, 14},
+    {11, 11, 10, 13, 12, 13, 14, 14, 13},
+    {11, 10, 10, 12, 12, 12, 14, 13, 13},
+    {10, 10, 10, 12, 12, 12, 13, 13, 13},
+    {11, 11, 10, 13, 12, 12, 14, 14, 12},
+    {10, 11, 10, 13, 12, 12, 13, 14, 12},
+    {10, 11, 10, 12, 11, 12, 13, 14, 12},
+    {10, 11, 10, 12, 11, 12, 12, 14, 12},
+    {10, 10, 11, 12, 13, 13, 13, 13, 15},
+    {10, 10, 11, 12, 13, 13, 13, 13, 14},
+    {10, 11, 11, 12, 12, 13, 12, 14, 14},
+    {10, 11, 11, 12, 13, 13, 12, 14, 15},
+    {10, 10, 11, 12, 12, 12, 12, 13, 14},
+    {10, 10, 10, 11, 12, 12, 12, 13, 13},
+    {10, 10, 11, 11, 12, 12, 12, 13, 14},
+    { 9, 10, 11, 11, 12, 13, 11, 13, 14},
+    {11, 11, 11, 13, 13, 13, 14, 15, 14},
+    {10, 11, 11, 13, 12, 13, 13, 15, 14},
+    {10, 11, 10, 13, 12, 13, 13, 15, 13},
+    {10, 11, 11, 13, 12, 13, 12, 15, 14},
+    {10, 11, 11, 13, 13, 14, 13, 15, 15},
+    {10, 11, 11, 13, 13, 14, 12, 15, 15},
+    {10, 11, 11, 13, 13, 14, 12, 15, 15},
+    {10, 11, 12, 12, 13, 15, 12, 15, 16},
+    {10, 12, 11, 14, 12, 14, 13, 16, 14},
+    {10, 12, 11, 14, 12, 15, 12, 17, 14},
+    {10, 12, 12, 13, 13, 15, 12, 16, 16},
+    {10, 13, 12, 14, 13, 16, 12, 18, 17},
+    {10, 12, 11, 13, 12, 15, 12, 16, 15},
+    {10, 12, 11, 13, 12, 14, 12, 16, 15},
+    {10, 12, 12, 13, 13, 15, 12, 17, 16},
+    {10, 12, 12, 13, 13, 16, 12, 16, 17},
+    {10, 12, 10, 13, 12, 14, 12, 16, 13},
+    {10, 12, 11, 13, 12, 14, 12, 16, 14},
+    {10, 12, 10, 13, 11, 13, 12, 16, 13},
+    {10, 11, 11, 12, 12, 14, 12, 15, 14},
+    {10, 11, 11, 12, 12, 13, 12, 14, 14},
+    {10, 11, 11, 12, 12, 14, 12, 15, 15},
+    { 9, 11, 11, 12, 12, 14, 11, 15, 15},
+    { 9, 11, 12, 12, 13, 14, 11, 15, 16},
+    {10, 12, 11, 13, 12, 15, 12, 17, 14},
+    { 9, 12, 11, 13, 12, 15, 11, 17, 15},
+    { 9, 12, 12, 13, 12, 15, 11, 16, 16},
+    { 9, 12, 12, 13, 13, 16, 11, 17, 17},
+    { 9, 12, 11, 13, 12, 15, 11, 17, 14},
+    { 9, 12, 12, 13, 12, 16, 11, 17, 16},
+    { 9, 12, 12, 13, 12, 15, 11, 17, 16},
+    { 9, 13, 12, 13, 13, 16, 11, 18, 17},
+    {12, 10, 11, 13, 14, 12, 16, 12, 14},
+    {11, 10, 10, 12, 13, 12, 14, 12, 13},
+    {10, 10, 11, 12, 13, 12, 13, 12, 15},
+    {10, 10, 10, 12, 12, 12, 13, 12, 13},
+    {11,  9, 10, 12, 13, 11, 15, 11, 13},
+    {11, 10, 10, 12, 12, 11, 14, 12, 12},
+    {10, 10,  9, 11, 11, 11, 13, 12, 11},
+    {10, 10,  9, 11, 11, 10, 13, 12, 10},
+    {10, 10, 10, 12, 12, 12, 13, 13, 13},
+    {10, 10, 10, 12, 11, 12, 12, 13, 13},
+    {10, 10, 10, 11, 11, 11, 12, 12, 13},
+    {10, 10, 10, 11, 11, 11, 12, 12, 12},
+    {10, 10, 10, 12, 11, 11, 12, 13, 12},
+    {10, 10,  9, 11, 11, 11, 12, 13, 11},
+    { 9, 10,  9, 11, 10, 11, 11, 12, 11},
+    { 9, 10,  9, 11, 10, 11, 11, 13, 11},
+    {10,  9, 11, 11, 12, 11, 13, 11, 14},
+    {10, 10, 10, 11, 12, 11, 13, 12, 13},
+    {10, 10, 10, 11, 12, 12, 12, 12, 13},
+    { 9, 10, 10, 10, 11, 11, 11, 12, 13},
+    {10,  9, 10, 11, 12, 10, 13, 11, 12},
+    {10,  9, 10, 11, 11, 10, 12, 11, 12},
+    { 9, 10, 10, 11, 11, 11, 11, 12, 12},
+    { 9,  9, 10, 10, 10, 11, 11, 11, 12},
+    { 9, 10, 10, 11, 11, 12, 11, 13, 13},
+    { 9, 10, 10, 11, 11, 12, 11, 13, 13},
+    { 9, 10, 11, 11, 11, 12, 11, 12, 14},
+    { 9, 10, 11, 11, 11, 12, 11, 13, 14},
+    { 9, 10, 10, 10, 10, 11, 11, 12, 12},
+    { 9, 10, 10, 10, 10, 11, 10, 12, 13},
+    { 9,  9, 10, 10, 10, 11, 10, 11, 12},
+    { 9, 10, 10, 10, 10, 12, 10, 12, 13},
+    {10, 11, 10, 12, 12, 13, 13, 14, 13},
+    {10, 11, 10, 12, 12, 13, 12, 14, 13},
+    {10, 11, 10, 12, 11, 13, 12, 15, 13},
+    {10, 11, 10, 12, 11, 13, 12, 14, 13},
+    {10, 10, 10, 12, 11, 12, 12, 13, 13},
+    {10, 10, 10, 11, 11, 12, 12, 13, 13},
+    { 9, 11, 10, 12, 11, 12, 11, 14, 13},
+    { 9, 11, 10, 11, 11, 12, 11, 14, 13},
+    {10, 11, 11, 12, 12, 13, 12, 14, 14},
+    { 9, 11, 11, 12, 12, 13, 11, 14, 14},
+    { 9, 11, 11, 11, 12, 13, 11, 14, 15},
+    { 9, 11, 12, 11, 12, 14, 11, 14, 16},
+    { 9, 11, 11, 12, 11, 13, 11, 14, 14},
+    { 9, 11, 11, 12, 12, 13, 11, 14, 14},
+    { 9, 11, 11, 11, 12, 13, 11, 14, 15},
+    { 9, 11, 12, 11, 12, 14, 10, 14, 16},
+    { 9, 11, 10, 12, 11, 13, 11, 15, 13},
+    { 9, 11, 11, 12, 11, 14, 11, 15, 14},
+    { 9, 12, 10, 12, 11, 13, 11, 16, 13},
+    { 9, 11, 11, 12, 11, 14, 11, 15, 14},
+    { 9, 11, 11, 12, 12, 14, 11, 15, 15},
+    { 9, 11, 12, 12, 12, 15, 11, 15, 16},
+    { 9, 12, 11, 12, 12, 14, 11, 16, 15},
+    { 9, 12, 12, 12, 13, 15, 11, 16, 16},
+    { 9, 12, 11, 13, 11, 14, 11, 17, 14},
+    { 9, 12, 11, 13, 12, 15, 11, 17, 15},
+    { 9, 12, 11, 12, 12, 14, 10, 16, 15},
+    { 9, 12, 12, 12, 12, 15, 10, 16, 16},
+    { 9, 12, 11, 13, 11, 15, 10, 17, 14},
+    { 9, 13, 12, 13, 12, 16, 10, 18, 16},
+    { 9, 13, 12, 13, 12, 16, 10, 18, 16},
+    { 9, 12, 13, 13, 13, 16, 10, 17, 18},
+    {10, 11, 10, 12, 11, 12, 12, 15, 12},
+    { 9, 11, 10, 12, 10, 12, 11, 15, 12},
+    { 9, 10, 10, 11, 11, 12, 11, 13, 12},
+    { 9, 10, 10, 11, 10, 11, 10, 13, 12},
+    { 9, 11, 10, 12, 11, 12, 11, 14, 13},
+    { 9, 11, 10, 11, 11, 12, 11, 14, 13},
+    { 9, 11, 10, 12, 11, 13, 10, 15, 13},
+    { 9, 11, 11, 12, 11, 14, 10, 15, 14},
+    { 9, 10, 10, 11, 11, 12, 10, 13, 13},
+    { 9, 11, 10, 11, 10, 12, 10, 14, 12},
+    { 9, 10, 10, 11, 11, 12, 10, 13, 13},
+    { 9, 10, 11, 11, 11, 13, 10, 13, 14},
+    { 9, 11, 11, 11, 11, 13, 10, 14, 14},
+    { 9, 11, 11, 11, 12, 14, 10, 14, 15},
+    { 9, 11, 11, 11, 11, 13, 10, 14, 14},
+    { 9, 11, 11, 11, 11, 14, 10, 14, 15},
+    { 9, 12, 10, 12, 11, 13, 11, 16, 13},
+    { 9, 12, 10, 12, 11, 14, 10, 16, 13},
+    { 9, 11, 11, 12, 11, 14, 10, 15, 14},
+    { 9, 11, 11, 12, 12, 14, 10, 15, 15},
+    { 9, 12, 11, 12, 11, 14, 10, 16, 15},
+    { 9, 12, 12, 12, 12, 15, 10, 16, 16},
+    { 9, 12, 11, 13, 12, 15, 10, 17, 15},
+    { 9, 13, 12, 13, 12, 16, 10, 18, 17},
+    { 9, 11, 10, 12, 11, 13, 10, 15, 13},
+    { 9, 12, 11, 12, 11, 14, 10, 16, 14},
+    { 9, 12, 11, 12, 11, 14, 10, 16, 15},
+    { 9, 11, 12, 12, 12, 15, 10, 15, 16},
+    { 9, 12, 11, 12, 11, 15, 10, 17, 14},
+    { 9, 12, 12, 12, 12, 16, 10, 17, 16},
+    { 8, 12, 11, 12, 11, 14,  9, 16, 15},
+    { 8, 12, 12, 12, 12, 15,  9, 17, 16},
+    {10,  9,  9, 10, 11, 10, 12, 10, 11},
+    { 9,  9,  9, 10, 10,  9, 11, 10, 10},
+    { 9, 10,  9, 10, 10, 10, 11, 12, 11},
+    { 9,  9,  9, 10,  9, 10, 10, 11, 10},
+    { 9,  9, 10, 10, 10, 11, 11, 11, 12},
+    { 9,  9, 10,  9, 10, 10, 10, 10, 12},
+    { 9,  9,  9,  9,  9, 10, 10, 11, 11},
+    { 8,  9,  9,  9,  9, 10,  9, 11, 11},
+    { 9, 10,  9, 10, 10, 11, 10, 12, 11},
+    { 8, 10,  9, 10,  9, 10,  9, 12, 11},
+    { 8, 10, 10, 10,  9, 11,  9, 12, 12},
+    { 8,  9, 10,  9, 10, 11,  9, 11, 13},
+    { 9,  9,  9,  9,  9,  9, 10, 10, 10},
+    { 7,  8,  8,  7,  7,  7,  7,  8,  8},
+    { 8, 10,  9,  9,  9, 10,  8, 12, 11},
+    { 8,  9,  9,  8,  8, 10,  8, 10, 11},
+    { 9, 11, 10, 11, 10, 12, 10, 15, 12},
+    { 9, 11, 10, 11, 10, 13, 10, 15, 12},
+    { 9, 10, 10, 10, 10, 12, 10, 13, 13},
+    { 8, 10, 11, 10, 11, 13,  9, 13, 14},
+    { 9, 11, 10, 11, 10, 13, 10, 15, 13},
+    { 9, 11, 11, 11, 11, 14, 10, 15, 14},
+    { 8, 11, 11, 11, 11, 13,  9, 14, 14},
+    { 8, 11, 12, 11, 11, 14,  9, 15, 16},
+    { 8, 10,  9, 10,  9, 11,  9, 13, 11},
+    { 8, 11, 10, 11, 10, 12,  9, 14, 13},
+    { 8, 11, 10, 10, 10, 12,  9, 14, 13},
+    { 8, 10, 11, 10, 11, 13,  9, 13, 14},
+    { 8, 12, 11, 11, 10, 14,  9, 16, 14},
+    { 8, 12, 11, 11, 11, 14,  9, 16, 15},
+    { 8, 11, 10, 10, 10, 12,  9, 14, 13},
+    { 8, 11, 10, 10, 10, 13,  8, 14, 13}
 };
 
 static const signed short etable1[128][40]={