home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2004 March / PCWELT_3_2004.ISO / pcwsoft / flaskmpeg_078_39_src.z.exe / flaskmpeg / Audio / MPEG / hufftbl.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2002-10-28  |  48.9 KB  |  750 lines

  1. #include <crtdbg.h>
  2. #include "AMPDecoder.h"
  3.  
  4. typedef unsigned char byte;
  5.  
  6. const byte hufftbl_1[][2]={
  7.     0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 
  8. };
  9.  
  10. const byte hufftbl_2[][2]={
  11.     0x02, 0x01, 0x00, 0x00, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 0x00, 0x21, 
  12.     0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x02, 0x00, 0x22, 
  13. };
  14.  
  15. const byte hufftbl_3[][2]={
  16.     0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x02, 0x01, 0x00, 0x10, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 0x00, 0x21, 
  17.     0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x02, 0x00, 0x22, 
  18. };
  19.  
  20. const byte hufftbl_5[][2]={
  21.     0x02, 0x01, 0x00, 0x00, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  22.     0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x22, 0x00, 0x30, 0x02, 0x01, 0x00, 0x03, 0x00, 0x13, 
  23.     0x02, 0x01, 0x00, 0x31, 0x02, 0x01, 0x00, 0x32, 0x02, 0x01, 0x00, 0x23, 0x00, 0x33, 
  24. };
  25.  
  26. const byte hufftbl_6[][2]={
  27.     0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x11, 0x06, 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x20, 0x00, 0x21, 
  28.     0x06, 0x01, 0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x02, 0x00, 0x22, 0x04, 0x01, 0x02, 0x01, 0x00, 0x31, 0x00, 0x13, 0x04, 0x01, 0x02, 0x01, 
  29.     0x00, 0x30, 0x00, 0x32, 0x02, 0x01, 0x00, 0x23, 0x02, 0x01, 0x00, 0x03, 0x00, 0x33, 
  30. };
  31.  
  32. const byte hufftbl_7[][2]={
  33.     0x02, 0x01, 0x00, 0x00, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  34.     0x00, 0x02, 0x00, 0x21, 0x12, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x22, 0x00, 0x30, 0x04, 0x01, 0x02, 0x01, 0x00, 0x31, 
  35.     0x00, 0x13, 0x04, 0x01, 0x02, 0x01, 0x00, 0x03, 0x00, 0x32, 0x02, 0x01, 0x00, 0x23, 0x00, 0x04, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 
  36.     0x00, 0x41, 0x02, 0x01, 0x00, 0x14, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x0c, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x33, 0x00, 0x43, 
  37.     0x00, 0x50, 0x04, 0x01, 0x02, 0x01, 0x00, 0x34, 0x00, 0x05, 0x00, 0x51, 0x06, 0x01, 0x02, 0x01, 0x00, 0x15, 0x02, 0x01, 0x00, 0x52, 0x00, 0x25, 
  38.     0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x35, 0x04, 0x01, 0x02, 0x01, 0x00, 0x53, 0x00, 0x54, 0x02, 0x01, 0x00, 0x45, 0x00, 0x55, 
  39. };
  40.  
  41. const struct HuffQuad {
  42.     signed char x, y;
  43.     byte bits;
  44.     byte _pad;
  45. } hufftbl_1_fast[32]={    // maximum: 5 bits
  46.     /* 00000 */ { +1, +1, 5 },
  47.     /* 00001 */ { +1, -1, 5 },
  48.     /* 00010 */ { -1, +1, 5 },
  49.     /* 00011 */ { -1, -1, 5 },
  50.     /* 0010x */ {  0, +1, 4 },    { 0, +1, 4 },
  51.     /* 0011x */ {  0, -1, 4 },    { 0, -1, 4 },
  52.     /* 010xx */ { +1,  0, 3 },    { +1,  0, 3 },    { +1,  0, 3 },    { +1,  0, 3 },
  53.     /* 011xx */ { -1,  0, 3 },    { -1,  0, 3 },    { -1,  0, 3 },    { -1,  0, 3 },
  54.     /* 1xxxx */ {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },
  55.                 {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },
  56.                 {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },
  57.                 {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },
  58. }, hufftbl_2_lo[28]={
  59.     /* 00100 */    { +1, +1, 5 },
  60.     /* 00101 */    { +1, -1, 5 },
  61.     /* 00110 */    { -1, +1, 5 },
  62.     /* 00111 */    { -1, -1, 5 },
  63.     /* 0100x */ {  0, +1, 4 },    {  0, +1, 4 },
  64.     /* 0101x */ {  0, -1, 4 },    {  0, -1, 4 },
  65.     /* 0110x */ { +1,  0, 4 },    { +1,  0, 4 },
  66.     /* 0111x */ { -1,  0, 4 },    { -1,  0, 4 },
  67.     /* 1xxxx */    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },
  68.                 {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },
  69.                 {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },
  70.                 {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },    {  0,  0, 1 },
  71. }, hufftbl_2_3_hi[32]={
  72.     /* 00000000 */ { +2, +2, 8 },
  73.     /* 00000001 */ { +2, -2, 8 },
  74.     /* 00000010 */ { -2, +2, 8 },
  75.     /* 00000011 */ { -2, -2, 8 },
  76.     /* 0000010x */ {  0, +2, 7 }, {  0, +2, 7 },
  77.     /* 0000011x */ {  0, -2, 7 }, {  0, -2, 7 },
  78.     /* 0000100x */ { +1, +2, 7 }, { +1, +2, 7 },
  79.     /* 0000101x */ { +1, -2, 7 }, { +1, -2, 7 },
  80.     /* 0000110x */ { -1, +2, 7 }, { -1, +2, 7 },
  81.     /* 0000111x */ { -1, -2, 7 }, { -1, -2, 7 },
  82.     /* 0001000x */ { +2, +1, 7 }, { +2, +1, 7 },
  83.     /* 0001001x */ { +2, -1, 7 }, { +2, -1, 7 },
  84.     /* 0001010x */ { -2, +1, 7 }, { -2, +1, 7 },
  85.     /* 0001011x */ { -2, -1, 7 }, { -2, -1, 7 },
  86.     /* 000110xx */ { +2,  0, 6 }, { +2,  0, 6 }, { +2,  0, 6 }, { +2,  0, 6 },
  87.     /* 000111xx */ { -2,  0, 6 }, { -2,  0, 6 }, { -2,  0, 6 }, { -2,  0, 6 },
  88. }, hufftbl_3_lo[28]={
  89.     /* 0010x */ { +1,  0, 4 }, { +1,  0, 4 },
  90.     /* 0011x */ { -1,  0, 4 }, { -1,  0, 4 },
  91.     /* 0100x */    { +1, +1, 4 }, { +1, +1, 4 },
  92.     /* 0101x */    { +1, -1, 4 }, { +1, -1, 4 },
  93.     /* 0110x */    { -1, +1, 4 }, { -1, +1, 4 },
  94.     /* 0111x */    { -1, -1, 4 }, { -1, -1, 4 },
  95.     /* 100xx */ {  0, +1, 3 }, {  0, +1, 3 }, {  0, +1, 3 }, {  0, +1, 3 },
  96.     /* 101xx */ {  0, -1, 3 }, {  0, -1, 3 }, {  0, -1, 3 }, {  0, -1, 3 },
  97.     /* 11xxx */    {  0,  0, 2 }, {  0,  0, 2 }, {  0,  0, 2 }, {  0,  0, 2 },
  98.                 {  0,  0, 2 }, {  0,  0, 2 }, {  0,  0, 2 }, {  0,  0, 2 },
  99. };
  100.  
  101. /////////////////////////////////////////////////////////////
  102.  
  103. const byte hufftbl_8[][2]={
  104.     0x06, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 
  105.     0x0e, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 0x00, 0x02, 0x02, 0x01, 0x00, 0x22, 0x04, 0x01, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 0x02, 0x01, 
  106.     0x00, 0x31, 0x00, 0x13, 0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 0x02, 0x01, 
  107.     0x00, 0x41, 0x02, 0x01, 0x00, 0x14, 0x00, 0x42, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x24, 0x02, 0x01, 0x00, 0x33, 0x00, 0x50, 0x04, 0x01, 
  108.     0x02, 0x01, 0x00, 0x43, 0x00, 0x34, 0x00, 0x51, 0x06, 0x01, 0x02, 0x01, 0x00, 0x15, 0x02, 0x01, 0x00, 0x05, 0x00, 0x52, 0x06, 0x01, 0x02, 0x01, 
  109.     0x00, 0x25, 0x02, 0x01, 0x00, 0x44, 0x00, 0x35, 0x02, 0x01, 0x00, 0x53, 0x02, 0x01, 0x00, 0x45, 0x02, 0x01, 0x00, 0x54, 0x00, 0x55, 
  110. };
  111.  
  112. const byte hufftbl_9[][2]={
  113.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  114.     0x00, 0x21, 0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x02, 0x00, 0x22, 0x0c, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 
  115.     0x00, 0x31, 0x02, 0x01, 0x00, 0x13, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x41, 0x00, 0x14, 0x04, 0x01, 
  116.     0x02, 0x01, 0x00, 0x40, 0x00, 0x33, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x04, 0x00, 0x50, 
  117.     0x00, 0x43, 0x02, 0x01, 0x00, 0x34, 0x00, 0x51, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x15, 0x00, 0x52, 0x02, 0x01, 0x00, 0x25, 0x00, 0x44, 
  118.     0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x54, 0x00, 0x53, 0x02, 0x01, 0x00, 0x35, 0x02, 0x01, 0x00, 0x45, 0x00, 0x55, 
  119. };
  120.  
  121. const byte hufftbl_10[][2]={
  122.     0x02, 0x01, 0x00, 0x00, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x0a, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  123.     0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x1c, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x22, 0x00, 0x30, 0x02, 0x01, 0x00, 0x31, 
  124.     0x00, 0x13, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x03, 0x00, 0x32, 0x02, 0x01, 0x00, 0x23, 0x00, 0x40, 0x04, 0x01, 0x02, 0x01, 0x00, 0x41, 
  125.     0x00, 0x14, 0x04, 0x01, 0x02, 0x01, 0x00, 0x04, 0x00, 0x33, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x1c, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 
  126.     0x02, 0x01, 0x00, 0x50, 0x00, 0x05, 0x00, 0x60, 0x02, 0x01, 0x00, 0x61, 0x00, 0x16, 0x0c, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x43, 
  127.     0x00, 0x34, 0x00, 0x51, 0x02, 0x01, 0x00, 0x15, 0x02, 0x01, 0x00, 0x52, 0x00, 0x25, 0x04, 0x01, 0x02, 0x01, 0x00, 0x26, 0x00, 0x36, 0x00, 0x71, 
  128.     0x14, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x17, 0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x53, 0x00, 0x06, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 
  129.     0x00, 0x35, 0x00, 0x45, 0x00, 0x62, 0x02, 0x01, 0x00, 0x70, 0x02, 0x01, 0x00, 0x07, 0x00, 0x64, 0x0e, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x72, 
  130.     0x00, 0x27, 0x06, 0x01, 0x02, 0x01, 0x00, 0x63, 0x02, 0x01, 0x00, 0x54, 0x00, 0x55, 0x02, 0x01, 0x00, 0x46, 0x00, 0x73, 0x08, 0x01, 0x04, 0x01, 
  131.     0x02, 0x01, 0x00, 0x37, 0x00, 0x65, 0x02, 0x01, 0x00, 0x56, 0x00, 0x74, 0x06, 0x01, 0x02, 0x01, 0x00, 0x47, 0x02, 0x01, 0x00, 0x66, 0x00, 0x75, 
  132.     0x04, 0x01, 0x02, 0x01, 0x00, 0x57, 0x00, 0x76, 0x02, 0x01, 0x00, 0x67, 0x00, 0x77, 
  133. };
  134.  
  135. const byte hufftbl_11[][2]={
  136.     0x06, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  137.     0x00, 0x02, 0x00, 0x12, 0x18, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x21, 0x02, 0x01, 0x00, 0x22, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 0x04, 0x01, 
  138.     0x02, 0x01, 0x00, 0x31, 0x00, 0x13, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 0x02, 0x01, 
  139.     0x00, 0x41, 0x00, 0x14, 0x1e, 0x01, 0x10, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x04, 0x01, 0x02, 0x01, 0x00, 0x33, 
  140.     0x00, 0x43, 0x00, 0x50, 0x04, 0x01, 0x02, 0x01, 0x00, 0x34, 0x00, 0x51, 0x00, 0x61, 0x06, 0x01, 0x02, 0x01, 0x00, 0x16, 0x02, 0x01, 0x00, 0x06, 
  141.     0x00, 0x26, 0x02, 0x01, 0x00, 0x62, 0x02, 0x01, 0x00, 0x15, 0x02, 0x01, 0x00, 0x05, 0x00, 0x52, 0x10, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 
  142.     0x02, 0x01, 0x00, 0x25, 0x00, 0x44, 0x00, 0x60, 0x02, 0x01, 0x00, 0x63, 0x00, 0x36, 0x04, 0x01, 0x02, 0x01, 0x00, 0x70, 0x00, 0x17, 0x00, 0x71, 
  143.     0x10, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x07, 0x00, 0x64, 0x00, 0x72, 0x02, 0x01, 0x00, 0x27, 0x04, 0x01, 0x02, 0x01, 0x00, 0x53, 
  144.     0x00, 0x35, 0x02, 0x01, 0x00, 0x54, 0x00, 0x45, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x46, 0x00, 0x73, 0x02, 0x01, 0x00, 0x37, 0x02, 0x01, 
  145.     0x00, 0x65, 0x00, 0x56, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x55, 0x00, 0x57, 0x00, 0x74, 0x02, 0x01, 0x00, 0x47, 0x00, 0x66, 
  146.     0x04, 0x01, 0x02, 0x01, 0x00, 0x75, 0x00, 0x76, 0x02, 0x01, 0x00, 0x67, 0x00, 0x77, 
  147. };
  148.  
  149. const byte hufftbl_12[][2]={
  150.     0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x20, 0x00, 0x02, 
  151.     0x10, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x04, 0x01, 0x02, 0x01, 0x00, 0x22, 0x00, 0x31, 0x02, 0x01, 0x00, 0x13, 0x02, 0x01, 
  152.     0x00, 0x30, 0x02, 0x01, 0x00, 0x03, 0x00, 0x40, 0x1a, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x02, 0x01, 0x00, 0x41, 
  153.     0x00, 0x33, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x14, 0x00, 0x42, 0x02, 0x01, 0x00, 0x24, 0x02, 0x01, 0x00, 0x04, 0x00, 0x50, 0x04, 0x01, 
  154.     0x02, 0x01, 0x00, 0x43, 0x00, 0x34, 0x02, 0x01, 0x00, 0x51, 0x00, 0x15, 0x1c, 0x01, 0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x52, 
  155.     0x00, 0x25, 0x02, 0x01, 0x00, 0x53, 0x00, 0x35, 0x04, 0x01, 0x02, 0x01, 0x00, 0x60, 0x00, 0x16, 0x00, 0x61, 0x04, 0x01, 0x02, 0x01, 0x00, 0x62, 
  156.     0x00, 0x26, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x06, 0x00, 0x44, 0x02, 0x01, 0x00, 0x54, 0x00, 0x45, 0x12, 0x01, 0x0a, 0x01, 
  157.     0x04, 0x01, 0x02, 0x01, 0x00, 0x63, 0x00, 0x36, 0x04, 0x01, 0x02, 0x01, 0x00, 0x70, 0x00, 0x07, 0x00, 0x71, 0x04, 0x01, 0x02, 0x01, 0x00, 0x17, 
  158.     0x00, 0x64, 0x02, 0x01, 0x00, 0x46, 0x00, 0x72, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x27, 0x02, 0x01, 0x00, 0x55, 0x00, 0x73, 0x02, 0x01, 
  159.     0x00, 0x37, 0x00, 0x56, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x65, 0x00, 0x74, 0x02, 0x01, 0x00, 0x47, 0x00, 0x66, 0x04, 0x01, 0x02, 0x01, 
  160.     0x00, 0x75, 0x00, 0x57, 0x02, 0x01, 0x00, 0x76, 0x02, 0x01, 0x00, 0x67, 0x00, 0x77, 
  161. };
  162.  
  163. const byte hufftbl_13[][2]={
  164.     0x02, 0x01, 0x00, 0x00, 0x06, 0x01, 0x02, 0x01, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 0x1c, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  165.     0x00, 0x20, 0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x22, 0x00, 0x30, 0x02, 0x01, 0x00, 0x03, 
  166.     0x00, 0x31, 0x06, 0x01, 0x02, 0x01, 0x00, 0x13, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 0x00, 0x41, 
  167.     0x46, 0x01, 0x1c, 0x01, 0x0e, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x14, 0x02, 0x01, 0x00, 0x33, 0x00, 0x42, 0x04, 0x01, 0x02, 0x01, 0x00, 0x24, 
  168.     0x00, 0x50, 0x02, 0x01, 0x00, 0x43, 0x00, 0x34, 0x04, 0x01, 0x02, 0x01, 0x00, 0x51, 0x00, 0x15, 0x04, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x52, 
  169.     0x02, 0x01, 0x00, 0x25, 0x02, 0x01, 0x00, 0x44, 0x00, 0x53, 0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x60, 0x00, 0x06, 0x02, 0x01, 
  170.     0x00, 0x61, 0x00, 0x16, 0x04, 0x01, 0x02, 0x01, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x35, 
  171.     0x00, 0x62, 0x02, 0x01, 0x00, 0x26, 0x00, 0x54, 0x04, 0x01, 0x02, 0x01, 0x00, 0x45, 0x00, 0x63, 0x02, 0x01, 0x00, 0x36, 0x00, 0x70, 0x06, 0x01, 
  172.     0x04, 0x01, 0x02, 0x01, 0x00, 0x07, 0x00, 0x55, 0x00, 0x71, 0x02, 0x01, 0x00, 0x17, 0x02, 0x01, 0x00, 0x27, 0x00, 0x37, 0x48, 0x01, 0x18, 0x01, 
  173.     0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x18, 0x00, 0x82, 0x02, 0x01, 0x00, 0x28, 0x04, 0x01, 0x02, 0x01, 0x00, 0x64, 0x00, 0x46, 0x00, 0x72, 
  174.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x84, 0x00, 0x48, 0x02, 0x01, 0x00, 0x90, 0x00, 0x09, 0x02, 0x01, 0x00, 0x91, 0x00, 0x19, 0x18, 0x01, 
  175.     0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x73, 0x00, 0x65, 0x02, 0x01, 0x00, 0x56, 0x00, 0x74, 0x04, 0x01, 0x02, 0x01, 0x00, 0x47, 
  176.     0x00, 0x66, 0x00, 0x83, 0x06, 0x01, 0x02, 0x01, 0x00, 0x38, 0x02, 0x01, 0x00, 0x75, 0x00, 0x57, 0x02, 0x01, 0x00, 0x92, 0x00, 0x29, 0x0e, 0x01, 
  177.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x67, 0x00, 0x85, 0x02, 0x01, 0x00, 0x58, 0x00, 0x39, 0x02, 0x01, 0x00, 0x93, 0x02, 0x01, 0x00, 0x49, 
  178.     0x00, 0x86, 0x06, 0x01, 0x02, 0x01, 0x00, 0xa0, 0x02, 0x01, 0x00, 0x68, 0x00, 0x0a, 0x02, 0x01, 0x00, 0xa1, 0x00, 0x1a, 0x44, 0x01, 0x18, 0x01, 
  179.     0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa2, 0x00, 0x2a, 0x04, 0x01, 0x02, 0x01, 0x00, 0x95, 0x00, 0x59, 0x02, 0x01, 0x00, 0xa3, 0x00, 0x3a, 
  180.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x4a, 0x00, 0x96, 0x02, 0x01, 0x00, 0xb0, 0x00, 0x0b, 0x02, 0x01, 0x00, 0xb1, 0x00, 0x1b, 0x14, 0x01, 
  181.     0x08, 0x01, 0x02, 0x01, 0x00, 0xb2, 0x04, 0x01, 0x02, 0x01, 0x00, 0x76, 0x00, 0x77, 0x00, 0x94, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x87, 
  182.     0x00, 0x78, 0x00, 0xa4, 0x04, 0x01, 0x02, 0x01, 0x00, 0x69, 0x00, 0xa5, 0x00, 0x2b, 0x0c, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x5a, 
  183.     0x00, 0x88, 0x00, 0xb3, 0x02, 0x01, 0x00, 0x3b, 0x02, 0x01, 0x00, 0x79, 0x00, 0xa6, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x6a, 0x00, 0xb4, 
  184.     0x00, 0xc0, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0c, 0x00, 0x98, 0x00, 0xc1, 0x3c, 0x01, 0x16, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x1c, 
  185.     0x02, 0x01, 0x00, 0x89, 0x00, 0xb5, 0x02, 0x01, 0x00, 0x5b, 0x00, 0xc2, 0x04, 0x01, 0x02, 0x01, 0x00, 0x2c, 0x00, 0x3c, 0x04, 0x01, 0x02, 0x01, 
  186.     0x00, 0xb6, 0x00, 0x6b, 0x02, 0x01, 0x00, 0xc4, 0x00, 0x4c, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa8, 0x00, 0x8a, 0x02, 0x01, 
  187.     0x00, 0xd0, 0x00, 0x0d, 0x02, 0x01, 0x00, 0xd1, 0x02, 0x01, 0x00, 0x4b, 0x02, 0x01, 0x00, 0x97, 0x00, 0xa7, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 
  188.     0x00, 0xc3, 0x02, 0x01, 0x00, 0x7a, 0x00, 0x99, 0x04, 0x01, 0x02, 0x01, 0x00, 0xc5, 0x00, 0x5c, 0x00, 0xb7, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1d, 
  189.     0x00, 0xd2, 0x02, 0x01, 0x00, 0x2d, 0x02, 0x01, 0x00, 0x7b, 0x00, 0xd3, 0x34, 0x01, 0x1c, 0x01, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x3d, 
  190.     0x00, 0xc6, 0x04, 0x01, 0x02, 0x01, 0x00, 0x6c, 0x00, 0xa9, 0x02, 0x01, 0x00, 0x9a, 0x00, 0xd4, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb8, 
  191.     0x00, 0x8b, 0x02, 0x01, 0x00, 0x4d, 0x00, 0xc7, 0x04, 0x01, 0x02, 0x01, 0x00, 0x7c, 0x00, 0xd5, 0x02, 0x01, 0x00, 0x5d, 0x00, 0xe0, 0x0a, 0x01, 
  192.     0x04, 0x01, 0x02, 0x01, 0x00, 0xe1, 0x00, 0x1e, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0e, 0x00, 0x2e, 0x00, 0xe2, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  193.     0x00, 0xe3, 0x00, 0x6d, 0x02, 0x01, 0x00, 0x8c, 0x00, 0xe4, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe5, 0x00, 0xba, 0x00, 0xf0, 0x26, 0x01, 0x10, 0x01, 
  194.     0x04, 0x01, 0x02, 0x01, 0x00, 0xf1, 0x00, 0x1f, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xaa, 0x00, 0x9b, 0x00, 0xb9, 0x02, 0x01, 0x00, 0x3e, 
  195.     0x02, 0x01, 0x00, 0xd6, 0x00, 0xc8, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x4e, 0x02, 0x01, 0x00, 0xd7, 0x00, 0x7d, 0x02, 0x01, 0x00, 0xab, 
  196.     0x02, 0x01, 0x00, 0x5e, 0x00, 0xc9, 0x06, 0x01, 0x02, 0x01, 0x00, 0x0f, 0x02, 0x01, 0x00, 0x9c, 0x00, 0x6e, 0x02, 0x01, 0x00, 0xf2, 0x00, 0x2f, 
  197.     0x20, 0x01, 0x10, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd8, 0x00, 0x8d, 0x00, 0x3f, 0x06, 0x01, 0x02, 0x01, 0x00, 0xf3, 0x02, 0x01, 
  198.     0x00, 0xe6, 0x00, 0xca, 0x02, 0x01, 0x00, 0xf4, 0x00, 0x4f, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xbb, 0x00, 0xac, 0x02, 0x01, 0x00, 0xe7, 
  199.     0x00, 0xf5, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd9, 0x00, 0x9d, 0x02, 0x01, 0x00, 0x5f, 0x00, 0xe8, 0x1e, 0x01, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 
  200.     0x00, 0x6f, 0x02, 0x01, 0x00, 0xf6, 0x00, 0xcb, 0x04, 0x01, 0x02, 0x01, 0x00, 0xbc, 0x00, 0xad, 0x00, 0xda, 0x08, 0x01, 0x02, 0x01, 0x00, 0xf7, 
  201.     0x04, 0x01, 0x02, 0x01, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x8e, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xcc, 0x02, 0x01, 
  202.     0x00, 0xf8, 0x00, 0x8f, 0x12, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdb, 0x00, 0xbd, 0x02, 0x01, 0x00, 0xea, 0x00, 0xf9, 0x04, 0x01, 
  203.     0x02, 0x01, 0x00, 0x9f, 0x00, 0xeb, 0x02, 0x01, 0x00, 0xbe, 0x02, 0x01, 0x00, 0xcd, 0x00, 0xfa, 0x0e, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdd, 
  204.     0x00, 0xec, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe9, 0x00, 0xaf, 0x00, 0xdc, 0x02, 0x01, 0x00, 0xce, 0x00, 0xfb, 0x08, 0x01, 0x04, 0x01, 
  205.     0x02, 0x01, 0x00, 0xbf, 0x00, 0xde, 0x02, 0x01, 0x00, 0xcf, 0x00, 0xee, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdf, 0x00, 0xef, 0x02, 0x01, 0x00, 0xff, 
  206.     0x02, 0x01, 0x00, 0xed, 0x02, 0x01, 0x00, 0xfd, 0x02, 0x01, 0x00, 0xfc, 0x00, 0xfe, 
  207. };
  208.  
  209. const byte hufftbl_15[][2]={
  210.     0x10, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x10, 0x00, 0x01, 0x02, 0x01, 0x00, 0x11, 0x04, 0x01, 0x02, 0x01, 0x00, 0x20, 
  211.     0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x32, 0x01, 0x10, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x22, 0x02, 0x01, 0x00, 0x30, 0x00, 0x31, 
  212.     0x06, 0x01, 0x02, 0x01, 0x00, 0x13, 0x02, 0x01, 0x00, 0x03, 0x00, 0x40, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x0e, 0x01, 0x06, 0x01, 0x04, 0x01, 
  213.     0x02, 0x01, 0x00, 0x04, 0x00, 0x14, 0x00, 0x41, 0x04, 0x01, 0x02, 0x01, 0x00, 0x33, 0x00, 0x42, 0x02, 0x01, 0x00, 0x24, 0x00, 0x43, 0x0a, 0x01, 
  214.     0x06, 0x01, 0x02, 0x01, 0x00, 0x34, 0x02, 0x01, 0x00, 0x50, 0x00, 0x05, 0x02, 0x01, 0x00, 0x51, 0x00, 0x15, 0x04, 0x01, 0x02, 0x01, 0x00, 0x52, 
  215.     0x00, 0x25, 0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x53, 0x00, 0x61, 0x5a, 0x01, 0x24, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 
  216.     0x00, 0x35, 0x02, 0x01, 0x00, 0x60, 0x00, 0x06, 0x02, 0x01, 0x00, 0x16, 0x00, 0x62, 0x04, 0x01, 0x02, 0x01, 0x00, 0x26, 0x00, 0x54, 0x02, 0x01, 
  217.     0x00, 0x45, 0x00, 0x63, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x36, 0x02, 0x01, 0x00, 0x70, 0x00, 0x07, 0x02, 0x01, 0x00, 0x71, 0x00, 0x55, 
  218.     0x04, 0x01, 0x02, 0x01, 0x00, 0x17, 0x00, 0x64, 0x02, 0x01, 0x00, 0x72, 0x00, 0x27, 0x18, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  219.     0x00, 0x46, 0x00, 0x73, 0x02, 0x01, 0x00, 0x37, 0x00, 0x65, 0x04, 0x01, 0x02, 0x01, 0x00, 0x56, 0x00, 0x80, 0x02, 0x01, 0x00, 0x08, 0x00, 0x74, 
  220.     0x04, 0x01, 0x02, 0x01, 0x00, 0x81, 0x00, 0x18, 0x02, 0x01, 0x00, 0x82, 0x00, 0x28, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x47, 
  221.     0x00, 0x66, 0x02, 0x01, 0x00, 0x83, 0x00, 0x38, 0x04, 0x01, 0x02, 0x01, 0x00, 0x75, 0x00, 0x57, 0x02, 0x01, 0x00, 0x84, 0x00, 0x48, 0x06, 0x01, 
  222.     0x04, 0x01, 0x02, 0x01, 0x00, 0x90, 0x00, 0x19, 0x00, 0x91, 0x04, 0x01, 0x02, 0x01, 0x00, 0x92, 0x00, 0x76, 0x02, 0x01, 0x00, 0x67, 0x00, 0x29, 
  223.     0x5c, 0x01, 0x24, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x85, 0x00, 0x58, 0x04, 0x01, 0x02, 0x01, 0x00, 0x09, 0x00, 0x77, 
  224.     0x00, 0x93, 0x04, 0x01, 0x02, 0x01, 0x00, 0x39, 0x00, 0x94, 0x02, 0x01, 0x00, 0x49, 0x00, 0x86, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x68, 
  225.     0x02, 0x01, 0x00, 0xa0, 0x00, 0x0a, 0x02, 0x01, 0x00, 0xa1, 0x00, 0x1a, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa2, 0x00, 0x2a, 0x02, 0x01, 0x00, 0x95, 
  226.     0x00, 0x59, 0x1a, 0x01, 0x0e, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0xa3, 0x02, 0x01, 0x00, 0x3a, 0x00, 0x87, 0x04, 0x01, 0x02, 0x01, 0x00, 0x78, 
  227.     0x00, 0xa4, 0x02, 0x01, 0x00, 0x4a, 0x00, 0x96, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x69, 0x00, 0xb0, 0x00, 0xb1, 0x04, 0x01, 0x02, 0x01, 
  228.     0x00, 0x1b, 0x00, 0xa5, 0x00, 0xb2, 0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x5a, 0x00, 0x2b, 0x02, 0x01, 0x00, 0x88, 0x00, 0x97, 
  229.     0x02, 0x01, 0x00, 0xb3, 0x02, 0x01, 0x00, 0x79, 0x00, 0x3b, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x6a, 0x00, 0xb4, 0x02, 0x01, 0x00, 0x4b, 
  230.     0x00, 0xc1, 0x04, 0x01, 0x02, 0x01, 0x00, 0x98, 0x00, 0x89, 0x02, 0x01, 0x00, 0x1c, 0x00, 0xb5, 0x50, 0x01, 0x22, 0x01, 0x10, 0x01, 0x06, 0x01, 
  231.     0x04, 0x01, 0x02, 0x01, 0x00, 0x5b, 0x00, 0x2c, 0x00, 0xc2, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0b, 0x00, 0xc0, 0x00, 0xa6, 0x02, 0x01, 
  232.     0x00, 0xa7, 0x00, 0x7a, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xc3, 0x00, 0x3c, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0c, 0x00, 0x99, 0x00, 0xb6, 
  233.     0x04, 0x01, 0x02, 0x01, 0x00, 0x6b, 0x00, 0xc4, 0x02, 0x01, 0x00, 0x4c, 0x00, 0xa8, 0x14, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x8a, 
  234.     0x00, 0xc5, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd0, 0x00, 0x5c, 0x00, 0xd1, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb7, 0x00, 0x7b, 0x02, 0x01, 0x00, 0x1d, 
  235.     0x02, 0x01, 0x00, 0x0d, 0x00, 0x2d, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd2, 0x00, 0xd3, 0x04, 0x01, 0x02, 0x01, 0x00, 0x3d, 0x00, 0xc6, 
  236.     0x02, 0x01, 0x00, 0x6c, 0x00, 0xa9, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9a, 0x00, 0xb8, 0x00, 0xd4, 0x04, 0x01, 0x02, 0x01, 0x00, 0x8b, 
  237.     0x00, 0x4d, 0x02, 0x01, 0x00, 0xc7, 0x00, 0x7c, 0x44, 0x01, 0x22, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd5, 0x00, 0x5d, 
  238.     0x04, 0x01, 0x02, 0x01, 0x00, 0xe0, 0x00, 0x0e, 0x00, 0xe1, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1e, 0x00, 0xe2, 0x02, 0x01, 0x00, 0xaa, 0x00, 0x2e, 
  239.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb9, 0x00, 0x9b, 0x02, 0x01, 0x00, 0xe3, 0x00, 0xd6, 0x04, 0x01, 0x02, 0x01, 0x00, 0x6d, 0x00, 0x3e, 
  240.     0x02, 0x01, 0x00, 0xc8, 0x00, 0x8c, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe4, 0x00, 0x4e, 0x02, 0x01, 0x00, 0xd7, 0x00, 0x7d, 
  241.     0x04, 0x01, 0x02, 0x01, 0x00, 0xe5, 0x00, 0xba, 0x02, 0x01, 0x00, 0xab, 0x00, 0x5e, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xc9, 0x00, 0x9c, 
  242.     0x02, 0x01, 0x00, 0xf1, 0x00, 0x1f, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf0, 0x00, 0x6e, 0x00, 0xf2, 0x02, 0x01, 0x00, 0x2f, 0x00, 0xe6, 
  243.     0x26, 0x01, 0x12, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd8, 0x00, 0xf3, 0x02, 0x01, 0x00, 0x3f, 0x00, 0xf4, 0x06, 0x01, 0x02, 0x01, 
  244.     0x00, 0x4f, 0x02, 0x01, 0x00, 0x8d, 0x00, 0xd9, 0x02, 0x01, 0x00, 0xbb, 0x00, 0xca, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xac, 0x00, 0xe7, 
  245.     0x02, 0x01, 0x00, 0x7e, 0x00, 0xf5, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9d, 0x00, 0x5f, 0x02, 0x01, 0x00, 0xe8, 0x00, 0x8e, 0x02, 0x01, 
  246.     0x00, 0xf6, 0x00, 0xcb, 0x22, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x0f, 0x00, 0xae, 0x00, 0x6f, 0x02, 0x01, 
  247.     0x00, 0xbc, 0x00, 0xda, 0x04, 0x01, 0x02, 0x01, 0x00, 0xad, 0x00, 0xf7, 0x02, 0x01, 0x00, 0x7f, 0x00, 0xe9, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  248.     0x00, 0x9e, 0x00, 0xcc, 0x02, 0x01, 0x00, 0xf8, 0x00, 0x8f, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdb, 0x00, 0xbd, 0x02, 0x01, 0x00, 0xea, 0x00, 0xf9, 
  249.     0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9f, 0x00, 0xdc, 0x02, 0x01, 0x00, 0xcd, 0x00, 0xeb, 0x04, 0x01, 0x02, 0x01, 0x00, 0xbe, 
  250.     0x00, 0xfa, 0x02, 0x01, 0x00, 0xaf, 0x00, 0xdd, 0x0e, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xec, 0x00, 0xce, 0x00, 0xfb, 0x04, 0x01, 
  251.     0x02, 0x01, 0x00, 0xbf, 0x00, 0xed, 0x02, 0x01, 0x00, 0xde, 0x00, 0xfc, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xcf, 0x00, 0xfd, 0x00, 0xee, 
  252.     0x04, 0x01, 0x02, 0x01, 0x00, 0xdf, 0x00, 0xfe, 0x02, 0x01, 0x00, 0xef, 0x00, 0xff, 
  253. };
  254.  
  255. const byte hufftbl_16[][2]={
  256.     0x02, 0x01, 0x00, 0x00, 0x06, 0x01, 0x02, 0x01, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 0x2a, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  257.     0x00, 0x20, 0x00, 0x02, 0x02, 0x01, 0x00, 0x21, 0x00, 0x12, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x22, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 
  258.     0x02, 0x01, 0x00, 0x31, 0x00, 0x13, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 
  259.     0x00, 0x41, 0x06, 0x01, 0x02, 0x01, 0x00, 0x14, 0x02, 0x01, 0x00, 0x33, 0x00, 0x42, 0x04, 0x01, 0x02, 0x01, 0x00, 0x24, 0x00, 0x50, 0x02, 0x01, 
  260.     0x00, 0x43, 0x00, 0x34, 0x8a, 0x01, 0x28, 0x01, 0x10, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x05, 0x00, 0x15, 0x00, 0x51, 0x04, 0x01, 
  261.     0x02, 0x01, 0x00, 0x52, 0x00, 0x25, 0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x35, 0x00, 0x53, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 
  262.     0x00, 0x60, 0x00, 0x06, 0x00, 0x61, 0x02, 0x01, 0x00, 0x16, 0x00, 0x62, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x26, 0x00, 0x54, 0x02, 0x01, 
  263.     0x00, 0x45, 0x00, 0x63, 0x04, 0x01, 0x02, 0x01, 0x00, 0x36, 0x00, 0x70, 0x00, 0x71, 0x28, 0x01, 0x12, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0x17, 
  264.     0x02, 0x01, 0x00, 0x07, 0x02, 0x01, 0x00, 0x55, 0x00, 0x64, 0x04, 0x01, 0x02, 0x01, 0x00, 0x72, 0x00, 0x27, 0x04, 0x01, 0x02, 0x01, 0x00, 0x46, 
  265.     0x00, 0x65, 0x00, 0x73, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x37, 0x02, 0x01, 0x00, 0x56, 0x00, 0x08, 0x02, 0x01, 0x00, 0x80, 0x00, 0x81, 
  266.     0x06, 0x01, 0x02, 0x01, 0x00, 0x18, 0x02, 0x01, 0x00, 0x74, 0x00, 0x47, 0x02, 0x01, 0x00, 0x82, 0x02, 0x01, 0x00, 0x28, 0x00, 0x66, 0x18, 0x01, 
  267.     0x0e, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x83, 0x00, 0x38, 0x02, 0x01, 0x00, 0x75, 0x00, 0x84, 0x04, 0x01, 0x02, 0x01, 0x00, 0x48, 
  268.     0x00, 0x90, 0x00, 0x91, 0x06, 0x01, 0x02, 0x01, 0x00, 0x19, 0x02, 0x01, 0x00, 0x09, 0x00, 0x76, 0x02, 0x01, 0x00, 0x92, 0x00, 0x29, 0x0e, 0x01, 
  269.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x85, 0x00, 0x58, 0x02, 0x01, 0x00, 0x93, 0x00, 0x39, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa0, 0x00, 0x0a, 
  270.     0x00, 0x1a, 0x08, 0x01, 0x02, 0x01, 0x00, 0xa2, 0x02, 0x01, 0x00, 0x67, 0x02, 0x01, 0x00, 0x57, 0x00, 0x49, 0x06, 0x01, 0x02, 0x01, 0x00, 0x94, 
  271.     0x02, 0x01, 0x00, 0x77, 0x00, 0x86, 0x02, 0x01, 0x00, 0xa1, 0x02, 0x01, 0x00, 0x68, 0x00, 0x95, 0xdc, 0x01, 0x7e, 0x01, 0x32, 0x01, 0x1a, 0x01, 
  272.     0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x2a, 0x02, 0x01, 0x00, 0x59, 0x00, 0x3a, 0x02, 0x01, 0x00, 0xa3, 0x02, 0x01, 0x00, 0x87, 0x00, 0x78, 
  273.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa4, 0x00, 0x4a, 0x02, 0x01, 0x00, 0x96, 0x00, 0x69, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb0, 0x00, 0x0b, 
  274.     0x00, 0xb1, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1b, 0x00, 0xb2, 0x02, 0x01, 0x00, 0x2b, 0x02, 0x01, 0x00, 0xa5, 0x00, 0x5a, 0x06, 0x01, 
  275.     0x02, 0x01, 0x00, 0xb3, 0x02, 0x01, 0x00, 0xa6, 0x00, 0x6a, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb4, 0x00, 0x4b, 0x02, 0x01, 0x00, 0x0c, 0x00, 0xc1, 
  276.     0x1e, 0x01, 0x0e, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb5, 0x00, 0xc2, 0x00, 0x2c, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa7, 0x00, 0xc3, 
  277.     0x02, 0x01, 0x00, 0x6b, 0x00, 0xc4, 0x08, 0x01, 0x02, 0x01, 0x00, 0x1d, 0x04, 0x01, 0x02, 0x01, 0x00, 0x88, 0x00, 0x97, 0x00, 0x3b, 0x04, 0x01, 
  278.     0x02, 0x01, 0x00, 0xd1, 0x00, 0xd2, 0x02, 0x01, 0x00, 0x2d, 0x00, 0xd3, 0x12, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1e, 0x00, 0x2e, 
  279.     0x00, 0xe2, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x79, 0x00, 0x98, 0x00, 0xc0, 0x02, 0x01, 0x00, 0x1c, 0x02, 0x01, 0x00, 0x89, 0x00, 0x5b, 
  280.     0x0e, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x3c, 0x02, 0x01, 0x00, 0x7a, 0x00, 0xb6, 0x04, 0x01, 0x02, 0x01, 0x00, 0x4c, 0x00, 0x99, 0x02, 0x01, 
  281.     0x00, 0xa8, 0x00, 0x8a, 0x06, 0x01, 0x02, 0x01, 0x00, 0x0d, 0x02, 0x01, 0x00, 0xc5, 0x00, 0x5c, 0x04, 0x01, 0x02, 0x01, 0x00, 0x3d, 0x00, 0xc6, 
  282.     0x02, 0x01, 0x00, 0x6c, 0x00, 0x9a, 0x58, 0x01, 0x56, 0x01, 0x24, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x8b, 0x00, 0x4d, 
  283.     0x02, 0x01, 0x00, 0xc7, 0x00, 0x7c, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd5, 0x00, 0x5d, 0x02, 0x01, 0x00, 0xe0, 0x00, 0x0e, 0x08, 0x01, 0x02, 0x01, 
  284.     0x00, 0xe3, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd0, 0x00, 0xb7, 0x00, 0x7b, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa9, 0x00, 0xb8, 0x00, 0xd4, 
  285.     0x02, 0x01, 0x00, 0xe1, 0x02, 0x01, 0x00, 0xaa, 0x00, 0xb9, 0x18, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9b, 0x00, 0xd6, 
  286.     0x00, 0x6d, 0x02, 0x01, 0x00, 0x3e, 0x00, 0xc8, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x8c, 0x00, 0xe4, 0x00, 0x4e, 0x04, 0x01, 0x02, 0x01, 
  287.     0x00, 0xd7, 0x00, 0xe5, 0x02, 0x01, 0x00, 0xba, 0x00, 0xab, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9c, 0x00, 0xe6, 0x04, 0x01, 0x02, 0x01, 
  288.     0x00, 0x6e, 0x00, 0xd8, 0x02, 0x01, 0x00, 0x8d, 0x00, 0xbb, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe7, 0x00, 0x9d, 0x02, 0x01, 0x00, 0xe8, 
  289.     0x00, 0x8e, 0x04, 0x01, 0x02, 0x01, 0x00, 0xcb, 0x00, 0xbc, 0x00, 0x9e, 0x00, 0xf1, 0x02, 0x01, 0x00, 0x1f, 0x02, 0x01, 0x00, 0x0f, 0x00, 0x2f, 
  290.     0x42, 0x01, 0x38, 0x01, 0x02, 0x01, 0x00, 0xf2, 0x34, 0x01, 0x32, 0x01, 0x14, 0x01, 0x08, 0x01, 0x02, 0x01, 0x00, 0xbd, 0x02, 0x01, 0x00, 0x5e, 
  291.     0x02, 0x01, 0x00, 0x7d, 0x00, 0xc9, 0x06, 0x01, 0x02, 0x01, 0x00, 0xca, 0x02, 0x01, 0x00, 0xac, 0x00, 0x7e, 0x04, 0x01, 0x02, 0x01, 0x00, 0xda, 
  292.     0x00, 0xad, 0x00, 0xcc, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0xae, 0x02, 0x01, 0x00, 0xdb, 0x00, 0xdc, 0x02, 0x01, 0x00, 0xcd, 0x00, 0xbe, 
  293.     0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xeb, 0x00, 0xed, 0x00, 0xee, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd9, 0x00, 0xea, 0x00, 0xe9, 
  294.     0x02, 0x01, 0x00, 0xde, 0x04, 0x01, 0x02, 0x01, 0x00, 0xdd, 0x00, 0xec, 0x00, 0xce, 0x00, 0x3f, 0x00, 0xf0, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf3, 
  295.     0x00, 0xf4, 0x02, 0x01, 0x00, 0x4f, 0x02, 0x01, 0x00, 0xf5, 0x00, 0x5f, 0x0a, 0x01, 0x02, 0x01, 0x00, 0xff, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf6, 
  296.     0x00, 0x6f, 0x02, 0x01, 0x00, 0xf7, 0x00, 0x7f, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x8f, 0x02, 0x01, 0x00, 0xf8, 0x00, 0xf9, 0x04, 0x01, 
  297.     0x02, 0x01, 0x00, 0x9f, 0x00, 0xfa, 0x00, 0xaf, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xfb, 0x00, 0xbf, 0x02, 0x01, 0x00, 0xfc, 0x00, 0xcf, 
  298.     0x04, 0x01, 0x02, 0x01, 0x00, 0xfd, 0x00, 0xdf, 0x02, 0x01, 0x00, 0xfe, 0x00, 0xef, 
  299. };
  300.  
  301. const byte hufftbl_24[][2]={
  302.     0x3c, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x10, 0x02, 0x01, 0x00, 0x01, 0x00, 0x11, 0x0e, 0x01, 0x06, 0x01, 0x04, 0x01, 
  303.     0x02, 0x01, 0x00, 0x20, 0x00, 0x02, 0x00, 0x21, 0x02, 0x01, 0x00, 0x12, 0x02, 0x01, 0x00, 0x22, 0x02, 0x01, 0x00, 0x30, 0x00, 0x03, 0x0e, 0x01, 
  304.     0x04, 0x01, 0x02, 0x01, 0x00, 0x31, 0x00, 0x13, 0x04, 0x01, 0x02, 0x01, 0x00, 0x32, 0x00, 0x23, 0x04, 0x01, 0x02, 0x01, 0x00, 0x40, 0x00, 0x04, 
  305.     0x00, 0x41, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x14, 0x00, 0x33, 0x02, 0x01, 0x00, 0x42, 0x00, 0x24, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 
  306.     0x00, 0x43, 0x00, 0x34, 0x00, 0x51, 0x06, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x50, 0x00, 0x05, 0x00, 0x15, 0x02, 0x01, 0x00, 0x52, 0x00, 0x25, 
  307.     0xfa, 0x01, 0x62, 0x01, 0x22, 0x01, 0x12, 0x01, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x44, 0x00, 0x53, 0x02, 0x01, 0x00, 0x35, 0x02, 0x01, 
  308.     0x00, 0x60, 0x00, 0x06, 0x04, 0x01, 0x02, 0x01, 0x00, 0x61, 0x00, 0x16, 0x02, 0x01, 0x00, 0x62, 0x00, 0x26, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  309.     0x00, 0x54, 0x00, 0x45, 0x02, 0x01, 0x00, 0x63, 0x00, 0x36, 0x04, 0x01, 0x02, 0x01, 0x00, 0x71, 0x00, 0x55, 0x02, 0x01, 0x00, 0x64, 0x00, 0x46, 
  310.     0x20, 0x01, 0x0e, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x72, 0x02, 0x01, 0x00, 0x27, 0x00, 0x37, 0x02, 0x01, 0x00, 0x73, 0x04, 0x01, 0x02, 0x01, 
  311.     0x00, 0x70, 0x00, 0x07, 0x00, 0x17, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x65, 0x00, 0x56, 0x04, 0x01, 0x02, 0x01, 0x00, 0x80, 0x00, 0x08, 
  312.     0x00, 0x81, 0x04, 0x01, 0x02, 0x01, 0x00, 0x74, 0x00, 0x47, 0x02, 0x01, 0x00, 0x18, 0x00, 0x82, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  313.     0x00, 0x28, 0x00, 0x66, 0x02, 0x01, 0x00, 0x83, 0x00, 0x38, 0x04, 0x01, 0x02, 0x01, 0x00, 0x75, 0x00, 0x57, 0x02, 0x01, 0x00, 0x84, 0x00, 0x48, 
  314.     0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x91, 0x00, 0x19, 0x02, 0x01, 0x00, 0x92, 0x00, 0x76, 0x04, 0x01, 0x02, 0x01, 0x00, 0x67, 0x00, 0x29, 
  315.     0x02, 0x01, 0x00, 0x85, 0x00, 0x58, 0x5c, 0x01, 0x22, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x93, 0x00, 0x39, 0x02, 0x01, 
  316.     0x00, 0x94, 0x00, 0x49, 0x04, 0x01, 0x02, 0x01, 0x00, 0x77, 0x00, 0x86, 0x02, 0x01, 0x00, 0x68, 0x00, 0xa1, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  317.     0x00, 0xa2, 0x00, 0x2a, 0x02, 0x01, 0x00, 0x95, 0x00, 0x59, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa3, 0x00, 0x3a, 0x02, 0x01, 0x00, 0x87, 0x02, 0x01, 
  318.     0x00, 0x78, 0x00, 0x4a, 0x16, 0x01, 0x0c, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xa4, 0x00, 0x96, 0x04, 0x01, 0x02, 0x01, 0x00, 0x69, 0x00, 0xb1, 
  319.     0x02, 0x01, 0x00, 0x1b, 0x00, 0xa5, 0x06, 0x01, 0x02, 0x01, 0x00, 0xb2, 0x02, 0x01, 0x00, 0x5a, 0x00, 0x2b, 0x02, 0x01, 0x00, 0x88, 0x00, 0xb3, 
  320.     0x10, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x90, 0x02, 0x01, 0x00, 0x09, 0x00, 0xa0, 0x02, 0x01, 0x00, 0x97, 0x00, 0x79, 0x04, 0x01, 
  321.     0x02, 0x01, 0x00, 0xa6, 0x00, 0x6a, 0x00, 0xb4, 0x0c, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x1a, 0x02, 0x01, 0x00, 0x0a, 0x00, 0xb0, 0x02, 0x01, 
  322.     0x00, 0x3b, 0x02, 0x01, 0x00, 0x0b, 0x00, 0xc0, 0x04, 0x01, 0x02, 0x01, 0x00, 0x4b, 0x00, 0xc1, 0x02, 0x01, 0x00, 0x98, 0x00, 0x89, 0x43, 0x01, 
  323.     0x22, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x1c, 0x00, 0xb5, 0x02, 0x01, 0x00, 0x5b, 0x00, 0xc2, 0x04, 0x01, 0x02, 0x01, 
  324.     0x00, 0x2c, 0x00, 0xa7, 0x02, 0x01, 0x00, 0x7a, 0x00, 0xc3, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x3c, 0x02, 0x01, 0x00, 0x0c, 0x00, 0xd0, 
  325.     0x02, 0x01, 0x00, 0xb6, 0x00, 0x6b, 0x04, 0x01, 0x02, 0x01, 0x00, 0xc4, 0x00, 0x4c, 0x02, 0x01, 0x00, 0x99, 0x00, 0xa8, 0x10, 0x01, 0x08, 0x01, 
  326.     0x04, 0x01, 0x02, 0x01, 0x00, 0x8a, 0x00, 0xc5, 0x02, 0x01, 0x00, 0x5c, 0x00, 0xd1, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb7, 0x00, 0x7b, 0x02, 0x01, 
  327.     0x00, 0x1d, 0x00, 0xd2, 0x09, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x2d, 0x00, 0xd3, 0x02, 0x01, 0x00, 0x3d, 0x00, 0xc6, 0x55, 0xfa, 0x04, 0x01, 
  328.     0x02, 0x01, 0x00, 0x6c, 0x00, 0xa9, 0x02, 0x01, 0x00, 0x9a, 0x00, 0xd4, 0x20, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xb8, 
  329.     0x00, 0x8b, 0x02, 0x01, 0x00, 0x4d, 0x00, 0xc7, 0x04, 0x01, 0x02, 0x01, 0x00, 0x7c, 0x00, 0xd5, 0x02, 0x01, 0x00, 0x5d, 0x00, 0xe1, 0x08, 0x01, 
  330.     0x04, 0x01, 0x02, 0x01, 0x00, 0x1e, 0x00, 0xe2, 0x02, 0x01, 0x00, 0xaa, 0x00, 0xb9, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9b, 0x00, 0xe3, 0x02, 0x01, 
  331.     0x00, 0xd6, 0x00, 0x6d, 0x14, 0x01, 0x0a, 0x01, 0x06, 0x01, 0x02, 0x01, 0x00, 0x3e, 0x02, 0x01, 0x00, 0x2e, 0x00, 0x4e, 0x02, 0x01, 0x00, 0xc8, 
  332.     0x00, 0x8c, 0x04, 0x01, 0x02, 0x01, 0x00, 0xe4, 0x00, 0xd7, 0x04, 0x01, 0x02, 0x01, 0x00, 0x7d, 0x00, 0xab, 0x00, 0xe5, 0x0a, 0x01, 0x04, 0x01, 
  333.     0x02, 0x01, 0x00, 0xba, 0x00, 0x5e, 0x02, 0x01, 0x00, 0xc9, 0x02, 0x01, 0x00, 0x9c, 0x00, 0x6e, 0x08, 0x01, 0x02, 0x01, 0x00, 0xe6, 0x02, 0x01, 
  334.     0x00, 0x0d, 0x02, 0x01, 0x00, 0xe0, 0x00, 0x0e, 0x04, 0x01, 0x02, 0x01, 0x00, 0xd8, 0x00, 0x8d, 0x02, 0x01, 0x00, 0xbb, 0x00, 0xca, 0x4a, 0x01, 
  335.     0x02, 0x01, 0x00, 0xff, 0x40, 0x01, 0x3a, 0x01, 0x20, 0x01, 0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xac, 0x00, 0xe7, 0x02, 0x01, 
  336.     0x00, 0x7e, 0x00, 0xd9, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9d, 0x00, 0xe8, 0x02, 0x01, 0x00, 0x8e, 0x00, 0xcb, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 
  337.     0x00, 0xbc, 0x00, 0xda, 0x02, 0x01, 0x00, 0xad, 0x00, 0xe9, 0x04, 0x01, 0x02, 0x01, 0x00, 0x9e, 0x00, 0xcc, 0x02, 0x01, 0x00, 0xdb, 0x00, 0xbd, 
  338.     0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xea, 0x00, 0xae, 0x02, 0x01, 0x00, 0xdc, 0x00, 0xcd, 0x04, 0x01, 0x02, 0x01, 0x00, 0xeb, 
  339.     0x00, 0xbe, 0x02, 0x01, 0x00, 0xdd, 0x00, 0xec, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xce, 0x00, 0xed, 0x02, 0x01, 0x00, 0xde, 0x00, 0xee, 
  340.     0x00, 0x0f, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf0, 0x00, 0x1f, 0x00, 0xf1, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf2, 0x00, 0x2f, 0x02, 0x01, 0x00, 0xf3, 
  341.     0x00, 0x3f, 0x12, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf4, 0x00, 0x4f, 0x02, 0x01, 0x00, 0xf5, 0x00, 0x5f, 0x04, 0x01, 0x02, 0x01, 
  342.     0x00, 0xf6, 0x00, 0x6f, 0x02, 0x01, 0x00, 0xf7, 0x02, 0x01, 0x00, 0x7f, 0x00, 0x8f, 0x0a, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xf8, 0x00, 0xf9, 
  343.     0x04, 0x01, 0x02, 0x01, 0x00, 0x9f, 0x00, 0xaf, 0x00, 0xfa, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0xfb, 0x00, 0xbf, 0x02, 0x01, 0x00, 0xfc, 
  344.     0x00, 0xcf, 0x04, 0x01, 0x02, 0x01, 0x00, 0xfd, 0x00, 0xdf, 0x02, 0x01, 0x00, 0xfe, 0x00, 0xef,
  345.  
  346.  
  347. };
  348.  
  349. static const int hufftbl_24_shortcut[16]={
  350.     487, 470, 398, 397,
  351.     251, 160, 96, 63,
  352.     37, 24, 16, 11,
  353.     8, 7, 5, 4
  354. };
  355.  
  356. /*
  357. const byte hufftbl_32[][2]={
  358.     0x02, 0x01, 0x00, 0x00, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x08, 0x00, 0x04, 0x02, 0x01, 0x00, 0x01, 0x00, 0x02, 0x08, 0x01, 0x04, 0x01, 
  359.     0x02, 0x01, 0x00, 0x0c, 0x00, 0x0a, 0x02, 0x01, 0x00, 0x03, 0x00, 0x06, 0x06, 0x01, 0x02, 0x01, 0x00, 0x09, 0x02, 0x01, 0x00, 0x05, 0x00, 0x07, 
  360.     0x04, 0x01, 0x02, 0x01, 0x00, 0x0e, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x0f, 0x00, 0x0b, 
  361. };
  362.  
  363. const byte hufftbl_33[][2]={
  364.     0x10, 0x01, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x02, 0x00, 0x03, 0x04, 0x01, 0x02, 0x01, 0x00, 0x04, 
  365.     0x00, 0x05, 0x02, 0x01, 0x00, 0x06, 0x00, 0x07, 0x08, 0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x08, 0x00, 0x09, 0x02, 0x01, 0x00, 0x0a, 0x00, 0x0b, 
  366.     0x04, 0x01, 0x02, 0x01, 0x00, 0x0c, 0x00, 0x0d, 0x02, 0x01, 0x00, 0x0e, 0x00, 0x0f, 
  367. };
  368. */
  369.  
  370. // These are for count1 decoding; they're value/bit instead of tree form
  371.  
  372. const byte hufftbl_32[64][2]={
  373.     11,6,                            // 000000 -> 11
  374.     15,6,                            // 000001 -> 15
  375.     13,6,                            // 000010 -> 13
  376.     14,6,                            // 000011 -> 14
  377.     7, 6,                            // 000100 -> 7
  378.     6, 6,                            // 000101 -> 5
  379.  
  380.     9, 5,    9, 5,                    // 00011 -> 9
  381.     6, 5,    6, 5,                    // 00100 -> 6
  382.     3, 5,    3, 5,                    // 00101 -> 3
  383.     10,5,    10,5,                    // 00110 -> 10
  384.     12,5,    12,5,                    // 00111 -> 12
  385.  
  386.     2, 4,    2, 4,    2, 4,    2, 4,    // 0100 -> 2
  387.     1, 4,    1, 4,    1, 4,    1, 4,    // 0101 -> 1
  388.     4, 4,    4, 4,    4, 4,    4, 4,    // 0110 -> 4
  389.     8, 4,    8, 4,    8, 4,    8, 4,    // 0111 -> 8
  390.  
  391.     0, 1,    0, 1,    0, 1,    0, 1,    // 1 -> 0
  392.     0, 1,    0, 1,    0, 1,    0, 1,
  393.     0, 1,    0, 1,    0, 1,    0, 1,
  394.     0, 1,    0, 1,    0, 1,    0, 1,
  395.     0, 1,    0, 1,    0, 1,    0, 1,
  396.     0, 1,    0, 1,    0, 1,    0, 1,
  397.     0, 1,    0, 1,    0, 1,    0, 1,
  398.     0, 1,    0, 1,    0, 1,    0, 1,
  399. };
  400.  
  401. const signed char hufftbl_33[256][4] = {
  402.     {  1,  1,  1,  1 }, {  1,  1,  1, -1 }, {  1,  1, -1,  1 }, {  1,  1, -1, -1 },
  403.     {  1, -1,  1,  1 }, {  1, -1,  1, -1 }, {  1, -1, -1,  1 }, {  1, -1, -1, -1 },
  404.     { -1,  1,  1,  1 }, { -1,  1,  1, -1 }, { -1,  1, -1,  1 }, { -1,  1, -1, -1 },
  405.     { -1, -1,  1,  1 }, { -1, -1,  1, -1 }, { -1, -1, -1,  1 }, { -1, -1, -1, -1 },
  406.     {  1,  1,  1,  0 }, {  1,  1,  1,  0 }, {  1,  1, -1,  0 }, {  1,  1, -1,  0 },
  407.     {  1, -1,  1,  0 }, {  1, -1,  1,  0 }, {  1, -1, -1,  0 }, {  1, -1, -1,  0 },
  408.     { -1,  1,  1,  0 }, { -1,  1,  1,  0 }, { -1,  1, -1,  0 }, { -1,  1, -1,  0 },
  409.     { -1, -1,  1,  0 }, { -1, -1,  1,  0 }, { -1, -1, -1,  0 }, { -1, -1, -1,  0 },
  410.     {  1,  1,  0,  1 }, {  1,  1,  0,  1 }, {  1,  1,  0, -1 }, {  1,  1,  0, -1 },
  411.     {  1, -1,  0,  1 }, {  1, -1,  0,  1 }, {  1, -1,  0, -1 }, {  1, -1,  0, -1 },
  412.     { -1,  1,  0,  1 }, { -1,  1,  0,  1 }, { -1,  1,  0, -1 }, { -1,  1,  0, -1 },
  413.     { -1, -1,  0,  1 }, { -1, -1,  0,  1 }, { -1, -1,  0, -1 }, { -1, -1,  0, -1 },
  414.     {  1,  1,  0,  0 }, {  1,  1,  0,  0 }, {  1,  1,  0,  0 }, {  1,  1,  0,  0 },
  415.     {  1, -1,  0,  0 }, {  1, -1,  0,  0 }, {  1, -1,  0,  0 }, {  1, -1,  0,  0 },
  416.     { -1,  1,  0,  0 }, { -1,  1,  0,  0 }, { -1,  1,  0,  0 }, { -1,  1,  0,  0 },
  417.     { -1, -1,  0,  0 }, { -1, -1,  0,  0 }, { -1, -1,  0,  0 }, { -1, -1,  0,  0 },
  418.     {  1,  0,  1,  1 }, {  1,  0,  1,  1 }, {  1,  0,  1, -1 }, {  1,  0,  1, -1 },
  419.     {  1,  0, -1,  1 }, {  1,  0, -1,  1 }, {  1,  0, -1, -1 }, {  1,  0, -1, -1 },
  420.     { -1,  0,  1,  1 }, { -1,  0,  1,  1 }, { -1,  0,  1, -1 }, { -1,  0,  1, -1 },
  421.     { -1,  0, -1,  1 }, { -1,  0, -1,  1 }, { -1,  0, -1, -1 }, { -1,  0, -1, -1 },
  422.     {  1,  0,  1,  0 }, {  1,  0,  1,  0 }, {  1,  0,  1,  0 }, {  1,  0,  1,  0 },
  423.     {  1,  0, -1,  0 }, {  1,  0, -1,  0 }, {  1,  0, -1,  0 }, {  1,  0, -1,  0 },
  424.     { -1,  0,  1,  0 }, { -1,  0,  1,  0 }, { -1,  0,  1,  0 }, { -1,  0,  1,  0 },
  425.     { -1,  0, -1,  0 }, { -1,  0, -1,  0 }, { -1,  0, -1,  0 }, { -1,  0, -1,  0 },
  426.     {  1,  0,  0,  1 }, {  1,  0,  0,  1 }, {  1,  0,  0,  1 }, {  1,  0,  0,  1 },
  427.     {  1,  0,  0, -1 }, {  1,  0,  0, -1 }, {  1,  0,  0, -1 }, {  1,  0,  0, -1 },
  428.     { -1,  0,  0,  1 }, { -1,  0,  0,  1 }, { -1,  0,  0,  1 }, { -1,  0,  0,  1 },
  429.     { -1,  0,  0, -1 }, { -1,  0,  0, -1 }, { -1,  0,  0, -1 }, { -1,  0,  0, -1 },
  430.     {  1,  0,  0,  0 }, {  1,  0,  0,  0 }, {  1,  0,  0,  0 }, {  1,  0,  0,  0 },
  431.     {  1,  0,  0,  0 }, {  1,  0,  0,  0 }, {  1,  0,  0,  0 }, {  1,  0,  0,  0 },
  432.     { -1,  0,  0,  0 }, { -1,  0,  0,  0 }, { -1,  0,  0,  0 }, { -1,  0,  0,  0 },
  433.     { -1,  0,  0,  0 }, { -1,  0,  0,  0 }, { -1,  0,  0,  0 }, { -1,  0,  0,  0 },
  434.     {  0,  1,  1,  1 }, {  0,  1,  1,  1 }, {  0,  1,  1, -1 }, {  0,  1,  1, -1 },
  435.     {  0,  1, -1,  1 }, {  0,  1, -1,  1 }, {  0,  1, -1, -1 }, {  0,  1, -1, -1 },
  436.     {  0, -1,  1,  1 }, {  0, -1,  1,  1 }, {  0, -1,  1, -1 }, {  0, -1,  1, -1 },
  437.     {  0, -1, -1,  1 }, {  0, -1, -1,  1 }, {  0, -1, -1, -1 }, {  0, -1, -1, -1 },
  438.     {  0,  1,  1,  0 }, {  0,  1,  1,  0 }, {  0,  1,  1,  0 }, {  0,  1,  1,  0 },
  439.     {  0,  1, -1,  0 }, {  0,  1, -1,  0 }, {  0,  1, -1,  0 }, {  0,  1, -1,  0 },
  440.     {  0, -1,  1,  0 }, {  0, -1,  1,  0 }, {  0, -1,  1,  0 }, {  0, -1,  1,  0 },
  441.     {  0, -1, -1,  0 }, {  0, -1, -1,  0 }, {  0, -1, -1,  0 }, {  0, -1, -1,  0 },
  442.     {  0,  1,  0,  1 }, {  0,  1,  0,  1 }, {  0,  1,  0,  1 }, {  0,  1,  0,  1 },
  443.     {  0,  1,  0, -1 }, {  0,  1,  0, -1 }, {  0,  1,  0, -1 }, {  0,  1,  0, -1 },
  444.     {  0, -1,  0,  1 }, {  0, -1,  0,  1 }, {  0, -1,  0,  1 }, {  0, -1,  0,  1 },
  445.     {  0, -1,  0, -1 }, {  0, -1,  0, -1 }, {  0, -1,  0, -1 }, {  0, -1,  0, -1 },
  446.     {  0,  1,  0,  0 }, {  0,  1,  0,  0 }, {  0,  1,  0,  0 }, {  0,  1,  0,  0 },
  447.     {  0,  1,  0,  0 }, {  0,  1,  0,  0 }, {  0,  1,  0,  0 }, {  0,  1,  0,  0 },
  448.     {  0, -1,  0,  0 }, {  0, -1,  0,  0 }, {  0, -1,  0,  0 }, {  0, -1,  0,  0 },
  449.     {  0, -1,  0,  0 }, {  0, -1,  0,  0 }, {  0, -1,  0,  0 }, {  0, -1,  0,  0 },
  450.     {  0,  0,  1,  1 }, {  0,  0,  1,  1 }, {  0,  0,  1,  1 }, {  0,  0,  1,  1 },
  451.     {  0,  0,  1, -1 }, {  0,  0,  1, -1 }, {  0,  0,  1, -1 }, {  0,  0,  1, -1 },
  452.     {  0,  0, -1,  1 }, {  0,  0, -1,  1 }, {  0,  0, -1,  1 }, {  0,  0, -1,  1 },
  453.     {  0,  0, -1, -1 }, {  0,  0, -1, -1 }, {  0,  0, -1, -1 }, {  0,  0, -1, -1 },
  454.     {  0,  0,  1,  0 }, {  0,  0,  1,  0 }, {  0,  0,  1,  0 }, {  0,  0,  1,  0 },
  455.     {  0,  0,  1,  0 }, {  0,  0,  1,  0 }, {  0,  0,  1,  0 }, {  0,  0,  1,  0 },
  456.     {  0,  0, -1,  0 }, {  0,  0, -1,  0 }, {  0,  0, -1,  0 }, {  0,  0, -1,  0 },
  457.     {  0,  0, -1,  0 }, {  0,  0, -1,  0 }, {  0,  0, -1,  0 }, {  0,  0, -1,  0 },
  458.     {  0,  0,  0,  1 }, {  0,  0,  0,  1 }, {  0,  0,  0,  1 }, {  0,  0,  0,  1 },
  459.     {  0,  0,  0,  1 }, {  0,  0,  0,  1 }, {  0,  0,  0,  1 }, {  0,  0,  0,  1 },
  460.     {  0,  0,  0, -1 }, {  0,  0,  0, -1 }, {  0,  0,  0, -1 }, {  0,  0,  0, -1 },
  461.     {  0,  0,  0, -1 }, {  0,  0,  0, -1 }, {  0,  0,  0, -1 }, {  0,  0,  0, -1 },
  462.     {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 },
  463.     {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 },
  464.     {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 },
  465.     {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 }, {  0,  0,  0,  0 },
  466. };
  467.  
  468. static const struct hufftab_t {
  469.     int treelen;
  470.     int xlen, ylen;
  471.     int linbits;
  472.     const byte (*val)[2];
  473. } tables[]={
  474.     {   7,  2,  2,  0, hufftbl_1 },
  475.     {  17,  3,  3,  0, hufftbl_2 },
  476.     {  17,  3,  3,  0, hufftbl_3 },
  477.     {   0,  0,  0,  0, NULL },
  478.     {  31,  4,  4,  0, hufftbl_5 },
  479.     {  31,  4,  4,  0, hufftbl_6 },
  480.     {  71,  6,  6,  0, hufftbl_7 },
  481.     {  71,  6,  6,  0, hufftbl_8 },
  482.     {  71,  6,  6,  0, hufftbl_9 },
  483.     { 127,  8,  8,  0, hufftbl_10 },
  484.     { 127,  8,  8,  0, hufftbl_11 },
  485.     { 127,  8,  8,  0, hufftbl_12 },
  486.     { 511, 16, 16,  0, hufftbl_13 },
  487.     {   0,  0,  0,  0, NULL },
  488.     { 511, 16, 16,  0, hufftbl_15 },
  489.     { 511, 16, 16,  1, hufftbl_16 },
  490.     { 511, 16, 16,  2, hufftbl_16 },
  491.     { 511, 16, 16,  3, hufftbl_16 },
  492.     { 511, 16, 16,  4, hufftbl_16 },
  493.     { 511, 16, 16,  6, hufftbl_16 },
  494.     { 511, 16, 16,  8, hufftbl_16 },
  495.     { 511, 16, 16, 10, hufftbl_16 },
  496.     { 511, 16, 16, 13, hufftbl_16 },
  497.     { 512, 16, 16,  4, hufftbl_24 },
  498.     { 512, 16, 16,  5, hufftbl_24 },
  499.     { 512, 16, 16,  6, hufftbl_24 },
  500.     { 512, 16, 16,  7, hufftbl_24 },
  501.     { 512, 16, 16,  8, hufftbl_24 },
  502.     { 512, 16, 16,  9, hufftbl_24 },
  503.     { 512, 16, 16, 11, hufftbl_24 },
  504.     { 512, 16, 16, 13, hufftbl_24 },
  505. };
  506.  
  507. #define MXOFF (250)
  508.  
  509. //unsigned long dmask = 1 << (4*8-1);
  510.  
  511. static const byte bitcnts[16]={ 8, 7, 7, 6, 7, 6, 6, 5, 7, 6, 6, 5, 6, 5, 5, 4 };
  512. static const byte bitcnts2[16]={ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
  513.  
  514. int AMPDecoder::L3_GetHuffmanCount1_32(long *is, int i, int bit_threshold) {
  515.  
  516.     int point;
  517.     int y;
  518.  
  519.     /* Lookup in Huffman table. */
  520.  
  521.     while(i<=18*32-4 && tellbits() > bit_threshold) {
  522.         point = peekbits2(6);
  523.  
  524.         if (point >= 32) {
  525.             is[0] = is[1] = is[2] = is[3] = 0;
  526.             skipbit();
  527.         } else if (point >= 16) {
  528.             static int tbl[8]={ 0, 0, 0, 0, 3, 2, 0, 1 };
  529.  
  530.             y = 1;
  531.             if (point & 2)
  532.                 y = -1;
  533.  
  534.             skipbits(5);
  535.  
  536.             is[0] = is[1] = is[2] = is[3] = 0;
  537.             is[tbl[point>>2]] = y;
  538.  
  539.         } else {
  540.             y = hufftbl_32[point][0];
  541.             skipbits(hufftbl_32[point][1]);
  542.  
  543.             is[0] = is[1] = is[2] = is[3] = 0;
  544.  
  545.             if (y&8) {
  546.                 is[0] = 1;
  547.                 if (getflag())
  548.                     is[0] = -1;
  549.             }
  550.             if (y&4) {
  551.                 is[1] = 1;
  552.                 if (getflag())
  553.                     is[1] = -1;
  554.             }
  555.             if (y&2) {
  556.                 is[2] = 1;
  557.                 if (getflag())
  558.                     is[2] = -1;
  559.             }
  560.             if (y&1) {
  561.                 is[3] = 1;
  562.                 if (getflag())
  563.                     is[3] = -1;
  564.             }
  565.         }
  566.  
  567.         is += 4;
  568.         i += 4;
  569.     }
  570.  
  571.     return i;
  572. }
  573.  
  574. int AMPDecoder::L3_GetHuffmanCount1_33(long *is, int i, int bit_threshold) {
  575.     int y;
  576.  
  577.     while(i<=18*32-4 && tellbits() > bit_threshold) {
  578.         const signed char *tblptr;
  579.  
  580.         y = peekbits(8);
  581.         skipbits(bitcnts[y>>4]);
  582.  
  583.         tblptr = &hufftbl_33[y][0];
  584.  
  585.         is[0] = tblptr[0];
  586.         is[1] = tblptr[1];
  587.         is[2] = tblptr[2];
  588.         is[3] = tblptr[3];
  589.  
  590.         is += 4;
  591.         i += 4;
  592.     }
  593.  
  594.     return i;
  595. }
  596.  
  597. void AMPDecoder::L3_GetHuffmanBig(int table_id, long *is, int count) {
  598.  
  599.     const struct hufftab_t *h = &tables[table_id - 1];
  600.     int point;
  601.     int error;
  602.     int i;
  603.     int delta;
  604.  
  605.     if (h->val == NULL)
  606.         return;
  607.     
  608.     // Extract all huffman codes.
  609.  
  610.     _RPT2(0,"Decoding %ld values: table %d\n", count, table_id);
  611.  
  612.     if (table_id == 1) {
  613.         for(; count>0; count-=2) {
  614.             int v;
  615.  
  616.             v = peekbits(5);
  617.             skipbits(hufftbl_1_fast[v].bits);
  618.  
  619.             is[0] = hufftbl_1_fast[v].x;
  620.             is[1] = hufftbl_1_fast[v].y;
  621.             is+=2;
  622.         }
  623.     } else if (table_id == 2) {
  624.         for(; count>0; count-=2) {
  625.             int v;
  626.  
  627.             v = peekbits(5);
  628.             if (v < 4) {
  629.                 v = peekbits(8);
  630.                 skipbits(hufftbl_2_3_hi[v].bits);
  631.  
  632.                 is[0] = hufftbl_2_3_hi[v].x;
  633.                 is[1] = hufftbl_2_3_hi[v].y;
  634.             } else {
  635.                 skipbits(hufftbl_2_lo[v-4].bits);
  636.  
  637.                 is[0] = hufftbl_2_lo[v-4].x;
  638.                 is[1] = hufftbl_2_lo[v-4].y;
  639.             }
  640.             is+=2;
  641.         }
  642.     } else if (table_id == 3) {
  643.         for(; count>0; count-=2) {
  644.             int v;
  645.  
  646.             v = peekbits(5);
  647.             if (v < 4) {
  648.                 v = peekbits(8);
  649.                 skipbits(hufftbl_2_3_hi[v].bits);
  650.  
  651.                 is[0] = hufftbl_2_3_hi[v].x;
  652.                 is[1] = hufftbl_2_3_hi[v].y;
  653.             } else {
  654.                 skipbits(hufftbl_3_lo[v-4].bits);
  655.  
  656.                 is[0] = hufftbl_3_lo[v-4].x;
  657.                 is[1] = hufftbl_3_lo[v-4].y;
  658.             }
  659.             is+=2;
  660.         }
  661.     } else if (table_id < 24)
  662.         for(; count>0; count-=2) {
  663.  
  664.             /* Lookup in Huffman table. */
  665.  
  666.             point = 0;
  667.             error = 1;
  668.             do {
  669.                 if (h->val[point][0]==0) {   /*end of tree*/
  670.                     is[0] = h->val[point][1] >> 4;
  671.                     is[1] = h->val[point][1] & 0xf;
  672.                     
  673.                     error = 0;
  674.                     break;
  675.                 } 
  676.                 if (getflag())
  677.                     point += h->val[point][1];
  678.                 else
  679.                     point += h->val[point][0];
  680.             } while (point < h->treelen);
  681.  
  682.             /* Check for error. */
  683.             
  684.             if (error) { /* set x and y to a medium value as a simple concealment */
  685.         //        printf("Illegal Huffman code in data.\n");
  686.                 is[0] = (h->xlen-1 << 1);
  687.                 is[1] = (h->ylen-1 << 1);
  688.             }
  689.                     
  690.             /* x and y are reversed in the test bitstream.
  691.                 Reverse x and y here to make test bitstream work. */
  692.                 
  693.             if (h->linbits)
  694.                 if ((h->xlen-1) == is[0]) 
  695.                     is[0] += getbits(h->linbits);
  696.  
  697.             if (is[0])
  698.                 if (getflag()) is[0] = -is[0];
  699.  
  700.             if (h->linbits)      
  701.                 if ((h->ylen-1) == is[1])
  702.                     is[1] += getbits(h->linbits);
  703.  
  704.             if (is[1])
  705.                 if (getflag()) is[1] = -is[1];
  706.  
  707.             is += 2;
  708.         }
  709.     else
  710.         for(; count>0; count-=2) {
  711.  
  712.             // Lookup in Huffman table.
  713.             //
  714.             // Table 24 has some chained jumps (distance MXOFF).
  715.  
  716.             point = hufftbl_24_shortcut[getbits(4)];
  717.             for(;;) {
  718.                 if (h->val[point][0]==0) {   /*end of tree*/
  719.                     is[0] = h->val[point][1] >> 4;
  720.                     is[1] = h->val[point][1] & 0xf;
  721.                     break;
  722.                 } 
  723.                 if (getflag())
  724.                     point += delta = h->val[point][1];
  725.                 else
  726.                     point += delta = h->val[point][0];
  727.             }
  728.                                 
  729.             /* x and y are reversed in the test bitstream.
  730.                 Reverse x and y here to make test bitstream work. */
  731.                 
  732.             if (h->linbits)
  733.                 if (15 == is[0]) 
  734.                     is[0] += getbits(h->linbits);
  735.  
  736.             if (is[0])
  737.                 if (getflag()) is[0] = -is[0];
  738.  
  739.             if (h->linbits)      
  740.                 if (15 == is[1])
  741.                     is[1] += getbits(h->linbits);
  742.  
  743.             if (is[1])
  744.                 if (getflag()) is[1] = -is[1];
  745.  
  746.             is += 2;
  747.         }
  748. }
  749.  
  750.