00001
00002 #include "huffman.h"
00003 const hufftable huff_compress = {
00004 {
00005 0x7, 0x1B, 0xC, 0x3, 0x1A, 0x3, 0x14, 0x4, 0x2, 0x2B, 0x23, 0x5D, 0x45, 0x6, 0x54, 0x5C, 0x5, 0xB6, 0x178, 0x4C, 0x9F, 0x9, 0x179, 0x1E, 0x9A, 0xB2, 0x26D, 0x166, 0x108, 0x137, 0x424, 0x1F, 0x12, 0x1, 0x16F, 0x2CE, 0xB5, 0x2CF, 0x425, 0x20D, 0x139, 0x2FE, 0x50, 0x2C4, 0x20F, 0x427, 0x10C, 0x2C5, 0x21E, 0x0, 0x2F5, 0x21F, 0x2C7, 0x51, 0x2D2, 0x2D3, 0x5F4, 0x40F, 0x13D, 0x2FB, 0x10, 0x201, 0x16E, 0x401, 0xA7, 0x9D, 0x2EE, 0x165, 0x2EF, 0x2CE, 0x5F5, 0x2CF, 0x2C2, 0x417, 0x82B, 0x17F, 0xB7, 0x88F, 0x2DB, 0x1C, 0x2C3, 0x2D7, 0x149, 0x2D0, 0x2F7, 0x2E4, 0x225, 0x173, 0x43A, 0x2F7, 0x2FC, 0x2E5, 0x205, 0x428, 0x877, 0x1, 0x856, 0x857, 0x411, 0x2BF, 0x5ED, 0x5FA, 0x827, 0x5FB, 0x161, 0x80F, 0x2C7, 0x2B7, 0x42F, 0x4D9, 0x86F, 0x85B, 0x5E8, 0x86B, 0x44D, 0x2B3, 0x15C, 0x80B, 0x5E9, 0x2BA, 0x2BB, 0x873, 0x5F2, 0x171, 0x893, 0x138, 0x2F3, 0x5F3, 0x55, 0x2A, 0x17D, 0xBA, 0x2D3, 0x5FE, 0x206, 0x29A, 0x29B, 0x83A, 0x83B, 0x889, 0x88B, 0x813, 0x89D, 0x89F, 0x5F0, 0x297, 0x160, 0x295, 0x811, 0x838, 0x839, 0x299, 0x2F9, 0x2D1, 0x2F1, 0x448, 0x2E1, 0x110, 0x871, 0x809, 0x158, 0x899, 0x869, 0x859, 0x9B1, 0x85D, 0x86D, 0x162, 0x2B5, 0x2C1, 0x412, 0x410, 0x80D, 0x2BD, 0x13C, 0x855, 0x5F1, 0x290, 0x291, 0x2F5, 0x2D8, 0x2D9, 0x2FD, 0x88D, 0x414, 0x82D, 0x2C8, 0x2C9, 0x2ED, 0x801, 0x81D, 0x84D, 0x84C, 0x81C, 0x800, 0x2EC, 0x166, 0x82C, 0x88C, 0x2FC, 0x16A, 0x2F4, 0x1D, 0x854, 0x2BC, 0x80C, 0x2C0, 0x2B4, 0x86C, 0x85C, 0x9B0, 0x858, 0x868, 0x898, 0x808, 0x870, 0x2E0, 0x2F0, 0x2D0, 0x2F8, 0x298, 0x5FF, 0x810, 0x294, 0x296, 0x89E, 0x89C, 0x812, 0x88A, 0x888, 0x20C, 0x2C6, 0x2D2, 0x2F2, 0x892, 0x872, 0x2D1, 0x80A, 0x2B2, 0x86A, 0x85A, 0x86E, 0x2B6, 0x2C6, 0x80E, 0x826, 0x2BE, 0x429, 0x876, 0x5EC, 0x2F6, 0x2D6, 0x2DA, 0x88E, 0x82A, 0x11},
00006 { 3, 5, 4, 4, 5, 5, 5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 9, 7, 8, 8, 9, 9, 8, 8, 10, 9, 9, 9, 11, 9, 5, 6, 9, 10, 8, 10, 11, 10, 9, 10, 9, 10, 10, 11, 9, 10, 10, 6, 10, 10, 10, 9, 10, 10, 11, 11, 9, 10, 9, 10, 9, 11, 10, 8, 12, 11, 12, 12, 11, 12, 10, 11, 12, 11, 10, 12, 12, 9, 10, 12, 11, 10, 12, 12, 10, 11, 11, 10, 10, 12, 10, 11, 12, 2, 12, 12, 11, 12, 11, 11, 12, 11, 11, 12, 12, 12, 11, 11, 12, 12, 11, 12, 11, 12, 11, 12, 11, 12, 12, 12, 11, 11, 12, 9, 12, 11, 7, 8, 11, 10, 12, 11, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 9, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 9, 12, 12, 11, 12, 12, 12, 12, 12, 12, 11, 12, 12, 11, 11, 12, 12, 9, 12, 11, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 11, 12, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 12, 12, 12, 12, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 12, 11, 12, 12, 12, 12, 12, 9 }
00007 };
00008
00009 const huffdecompresstable huff_decompress = {
00010 {
00011 {0x0, 6, 0x31},
00012 {0x400, 6, 0x21},
00013 {0x800, 9, 0x3C},
00014 {0x880, 9, 0xFF},
00015 {0x900, 8, 0x15},
00016 {0xA00, 7, 0x10},
00017 {0xC00, 7, 0xD},
00018 {0xE00, 9, 0x4F},
00019 {0xE80, 9, 0xCA},
00020 {0xF00, 9, 0x17},
00021 {0xF80, 9, 0x1F},
00022 {0x1000, 5, 0x8},
00023 {0x1800, 5, 0x5},
00024 {0x2000, 5, 0x7},
00025 {0x2800, 9, 0x2A},
00026 {0x2880, 9, 0x35},
00027 {0x2900, 12, 0xB1},
00028 {0x2910, 12, 0xB2},
00029 {0x2920, 11, 0x52},
00030 {0x2940, 12, 0xDF},
00031 {0x2950, 12, 0x93},
00032 {0x2960, 12, 0xE0},
00033 {0x2970, 12, 0x91},
00034 {0x2980, 12, 0xDC},
00035 {0x2990, 12, 0x97},
00036 {0x29A0, 12, 0x87},
00037 {0x29B0, 12, 0x88},
00038 {0x29C0, 10, 0x40},
00039 {0x2A00, 8, 0x81},
00040 {0x2B00, 11, 0xA0},
00041 {0x2B20, 12, 0xEE},
00042 {0x2B30, 12, 0x73},
00043 {0x2B40, 12, 0xCF},
00044 {0x2B50, 12, 0xA8},
00045 {0x2B60, 12, 0xF2},
00046 {0x2B70, 12, 0x6B},
00047 {0x2B80, 11, 0x74},
00048 {0x2BA0, 12, 0x77},
00049 {0x2BB0, 12, 0x78},
00050 {0x2BC0, 12, 0xCC},
00051 {0x2BD0, 12, 0xAD},
00052 {0x2BE0, 12, 0xF6},
00053 {0x2BF0, 12, 0x63},
00054 {0x2C00, 12, 0xCE},
00055 {0x2C10, 12, 0xA9},
00056 {0x2C20, 11, 0x68},
00057 {0x2C40, 11, 0xA7},
00058 {0x2C60, 12, 0xF3},
00059 {0x2C70, 12, 0x6A},
00060 {0x2C80, 12, 0xBA},
00061 {0x2C90, 12, 0xBB},
00062 {0x2CA0, 11, 0x43},
00063 {0x2CC0, 11, 0xC4},
00064 {0x2CE0, 12, 0x45},
00065 {0x2CF0, 12, 0x47},
00066 {0x2D00, 12, 0xDA},
00067 {0x2D10, 12, 0x99},
00068 {0x2D20, 12, 0xE8},
00069 {0x2D30, 12, 0x84},
00070 {0x2D40, 11, 0xC8},
00071 {0x2D60, 12, 0xFB},
00072 {0x2D70, 12, 0x51},
00073 {0x2D80, 12, 0xB4},
00074 {0x2D90, 12, 0xB5},
00075 {0x2DA0, 12, 0xFC},
00076 {0x2DB0, 12, 0x4E},
00077 {0x2DC0, 10, 0x4C},
00078 {0x2E00, 12, 0xD8},
00079 {0x2E10, 12, 0x9C},
00080 {0x2E20, 11, 0x7B},
00081 {0x2E40, 12, 0x55},
00082 {0x2E50, 12, 0x5B},
00083 {0x2E60, 11, 0x57},
00084 {0x2E80, 10, 0x83},
00085 {0x2EC0, 12, 0xC3},
00086 {0x2ED0, 12, 0xBC},
00087 {0x2EE0, 12, 0x42},
00088 {0x2EF0, 12, 0x44},
00089 {0x2F00, 12, 0xD9},
00090 {0x2F10, 12, 0x9A},
00091 {0x2F20, 12, 0xE9},
00092 {0x2F30, 12, 0x7E},
00093 {0x2F40, 12, 0xC9},
00094 {0x2F50, 12, 0xB3},
00095 {0x2F60, 12, 0xFA},
00096 {0x2F70, 12, 0x54},
00097 {0x2F80, 12, 0xDB},
00098 {0x2F90, 12, 0x98},
00099 {0x2FA0, 11, 0x82},
00100 {0x2FC0, 12, 0xC7},
00101 {0x2FD0, 12, 0xB6},
00102 {0x2FE0, 11, 0x4B},
00103 {0x3000, 4, 0x3},
00104 {0x4000, 2, 0x5F},
00105 {0x8000, 12, 0xC2},
00106 {0x8010, 12, 0xBD},
00107 {0x8020, 11, 0x3F},
00108 {0x8040, 10, 0x3D},
00109 {0x8080, 12, 0xD6},
00110 {0x8090, 12, 0x9F},
00111 {0x80A0, 12, 0xED},
00112 {0x80B0, 12, 0x75},
00113 {0x80C0, 12, 0xCD},
00114 {0x80D0, 12, 0xAC},
00115 {0x80E0, 12, 0xF4},
00116 {0x80F0, 12, 0x69},
00117 {0x8100, 12, 0xDE},
00118 {0x8110, 12, 0x94},
00119 {0x8120, 12, 0xE3},
00120 {0x8130, 12, 0x8D},
00121 {0x8140, 10, 0x5C},
00122 {0x8180, 10, 0x86},
00123 {0x81C0, 12, 0xC1},
00124 {0x81D0, 12, 0xBE},
00125 {0x81E0, 11, 0x39},
00126 {0x8200, 11, 0xAB},
00127 {0x8220, 11, 0x62},
00128 {0x8240, 11, 0xAA},
00129 {0x8260, 12, 0xF5},
00130 {0x8270, 12, 0x66},
00131 {0x8280, 11, 0xB8},
00132 {0x82A0, 12, 0xFE},
00133 {0x82B0, 12, 0x4A},
00134 {0x82C0, 12, 0xC5},
00135 {0x82D0, 12, 0xB9},
00136 {0x82E0, 11, 0x49},
00137 {0x8300, 10, 0xE6},
00138 {0x8340, 10, 0x27},
00139 {0x8380, 12, 0x95},
00140 {0x8390, 12, 0x96},
00141 {0x83A0, 12, 0x89},
00142 {0x83B0, 12, 0x8A},
00143 {0x83C0, 10, 0x2C},
00144 {0x8400, 9, 0x1C},
00145 {0x8480, 11, 0x1E},
00146 {0x84A0, 11, 0x26},
00147 {0x84C0, 12, 0xC0},
00148 {0x84D0, 12, 0xBF},
00149 {0x84E0, 11, 0x2D},
00150 {0x8500, 11, 0x5D},
00151 {0x8520, 11, 0xF7},
00152 {0x8540, 12, 0xCB},
00153 {0x8550, 12, 0xAF},
00154 {0x8560, 12, 0x60},
00155 {0x8570, 12, 0x61},
00156 {0x8580, 12, 0xD3},
00157 {0x8590, 12, 0xA3},
00158 {0x85A0, 12, 0xF0},
00159 {0x85B0, 12, 0x6F},
00160 {0x85C0, 12, 0xD1},
00161 {0x85D0, 12, 0xA5},
00162 {0x85E0, 11, 0x6C},
00163 {0x8600, 9, 0x2E},
00164 {0x8680, 12, 0xD4},
00165 {0x8690, 12, 0xA2},
00166 {0x86A0, 12, 0xEF},
00167 {0x86B0, 12, 0x71},
00168 {0x86C0, 12, 0xD0},
00169 {0x86D0, 12, 0xA6},
00170 {0x86E0, 12, 0xF1},
00171 {0x86F0, 12, 0x6E},
00172 {0x8700, 12, 0xD7},
00173 {0x8710, 12, 0x9E},
00174 {0x8720, 12, 0xEB},
00175 {0x8730, 12, 0x79},
00176 {0x8740, 11, 0x58},
00177 {0x8760, 12, 0xF8},
00178 {0x8770, 12, 0x5E},
00179 {0x8780, 10, 0x30},
00180 {0x87C0, 10, 0x33},
00181 {0x8800, 9, 0x9D},
00182 {0x8880, 12, 0xE5},
00183 {0x8890, 12, 0x8B},
00184 {0x88A0, 12, 0xE4},
00185 {0x88B0, 12, 0x8C},
00186 {0x88C0, 12, 0xC6},
00187 {0x88D0, 12, 0xB7},
00188 {0x88E0, 12, 0xFD},
00189 {0x88F0, 12, 0x4D},
00190 {0x8900, 11, 0x9B},
00191 {0x8920, 12, 0xEA},
00192 {0x8930, 12, 0x7C},
00193 {0x8940, 10, 0x56},
00194 {0x8980, 12, 0xD5},
00195 {0x8990, 12, 0xA1},
00196 {0x89A0, 11, 0x72},
00197 {0x89C0, 12, 0xE2},
00198 {0x89D0, 12, 0x8E},
00199 {0x89E0, 12, 0xE1},
00200 {0x89F0, 12, 0x8F},
00201 {0x8A00, 7, 0xC},
00202 {0x8C00, 6, 0xA},
00203 {0x9000, 5, 0x20},
00204 {0x9800, 7, 0x13},
00205 {0x9A00, 8, 0x18},
00206 {0x9B00, 12, 0xD2},
00207 {0x9B10, 12, 0xA4},
00208 {0x9B20, 11, 0x6D},
00209 {0x9B40, 10, 0x1A},
00210 {0x9B80, 9, 0x1D},
00211 {0x9C00, 9, 0x7D},
00212 {0x9C80, 9, 0x28},
00213 {0x9D00, 8, 0x41},
00214 {0x9E00, 9, 0xAE},
00215 {0x9E80, 9, 0x3A},
00216 {0x9F00, 8, 0x14},
00217 {0xA000, 5, 0x6},
00218 {0xA800, 7, 0xE},
00219 {0xAA00, 7, 0x80},
00220 {0xAC00, 6, 0x9},
00221 {0xB000, 9, 0x92},
00222 {0xB080, 10, 0x48},
00223 {0xB0C0, 10, 0x50},
00224 {0xB100, 10, 0x2B},
00225 {0xB140, 10, 0x2F},
00226 {0xB180, 10, 0xE7},
00227 {0xB1C0, 10, 0x34},
00228 {0xB200, 8, 0x19},
00229 {0xB300, 9, 0x1B},
00230 {0xB380, 10, 0x23},
00231 {0xB3C0, 10, 0x25},
00232 {0xB400, 10, 0x53},
00233 {0xB440, 10, 0xEC},
00234 {0xB480, 10, 0x36},
00235 {0xB4C0, 10, 0x37},
00236 {0xB500, 8, 0x24},
00237 {0xB600, 8, 0x11},
00238 {0xB700, 9, 0x3E},
00239 {0xB780, 9, 0x22},
00240 {0xB800, 7, 0xF},
00241 {0xBA00, 7, 0xB},
00242 {0xBC00, 9, 0x12},
00243 {0xBC80, 9, 0x16},
00244 {0xBD00, 11, 0x70},
00245 {0xBD20, 11, 0x76},
00246 {0xBD40, 10, 0x32},
00247 {0xBD80, 11, 0xF9},
00248 {0xBDA0, 11, 0x64},
00249 {0xBDC0, 10, 0x59},
00250 {0xBE00, 11, 0x90},
00251 {0xBE20, 11, 0xB0},
00252 {0xBE40, 11, 0x7A},
00253 {0xBE60, 11, 0x7F},
00254 {0xBE80, 11, 0x38},
00255 {0xBEA0, 11, 0x46},
00256 {0xBEC0, 10, 0x3B},
00257 {0xBF00, 10, 0x5A},
00258 {0xBF40, 11, 0x65},
00259 {0xBF60, 11, 0x67},
00260 {0xBF80, 10, 0x29},
00261 {0xBFC0, 11, 0x85},
00262 {0xBFE0, 11, 0xDD},
00263 {0xC000, 4, 0x2},
00264 {0xD000, 5, 0x4},
00265 {0xD800, 5, 0x1},
00266 {0xE000, 3, 0x0}
00267 }
00268 };