OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**********************************************************************/
-#include <immintrin.h>
-#include <stdint.h>
-#include <string.h>
-#include <assert.h>
-#include "igzip_lib.h"
#include "huff_codes.h"
#include "huffman.h"
-#include "bitbuf2.h"
#include "flatten_ll.h"
/* The order code length codes are written in the dynamic code header. This is
static const uint8_t code_length_code_order[] =
{ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
-const uint32_t len_code_extra_bits[] = {
+static const uint32_t len_code_extra_bits[] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x2,
0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4,
0x5, 0x5, 0x5, 0x5, 0x0
};
-const uint32_t dist_code_extra_bits[] = {
+static const uint32_t dist_code_extra_bits[] = {
0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x2, 0x2,
0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x6, 0x6,
0x7, 0x7, 0x8, 0x8, 0x9, 0x9, 0xa, 0xa,
0xb, 0xb, 0xc, 0xc, 0xd, 0xd
};
-struct hufftables_icf static_hufftables = {
+static struct hufftables_icf static_hufftables = {
.lit_len_table = {
- {.code_and_extra = 0x00c,.length2 = 0x8},
- {.code_and_extra = 0x08c,.length2 = 0x8},
- {.code_and_extra = 0x04c,.length2 = 0x8},
- {.code_and_extra = 0x0cc,.length2 = 0x8},
- {.code_and_extra = 0x02c,.length2 = 0x8},
- {.code_and_extra = 0x0ac,.length2 = 0x8},
- {.code_and_extra = 0x06c,.length2 = 0x8},
- {.code_and_extra = 0x0ec,.length2 = 0x8},
- {.code_and_extra = 0x01c,.length2 = 0x8},
- {.code_and_extra = 0x09c,.length2 = 0x8},
- {.code_and_extra = 0x05c,.length2 = 0x8},
- {.code_and_extra = 0x0dc,.length2 = 0x8},
- {.code_and_extra = 0x03c,.length2 = 0x8},
- {.code_and_extra = 0x0bc,.length2 = 0x8},
- {.code_and_extra = 0x07c,.length2 = 0x8},
- {.code_and_extra = 0x0fc,.length2 = 0x8},
- {.code_and_extra = 0x002,.length2 = 0x8},
- {.code_and_extra = 0x082,.length2 = 0x8},
- {.code_and_extra = 0x042,.length2 = 0x8},
- {.code_and_extra = 0x0c2,.length2 = 0x8},
- {.code_and_extra = 0x022,.length2 = 0x8},
- {.code_and_extra = 0x0a2,.length2 = 0x8},
- {.code_and_extra = 0x062,.length2 = 0x8},
- {.code_and_extra = 0x0e2,.length2 = 0x8},
- {.code_and_extra = 0x012,.length2 = 0x8},
- {.code_and_extra = 0x092,.length2 = 0x8},
- {.code_and_extra = 0x052,.length2 = 0x8},
- {.code_and_extra = 0x0d2,.length2 = 0x8},
- {.code_and_extra = 0x032,.length2 = 0x8},
- {.code_and_extra = 0x0b2,.length2 = 0x8},
- {.code_and_extra = 0x072,.length2 = 0x8},
- {.code_and_extra = 0x0f2,.length2 = 0x8},
- {.code_and_extra = 0x00a,.length2 = 0x8},
- {.code_and_extra = 0x08a,.length2 = 0x8},
- {.code_and_extra = 0x04a,.length2 = 0x8},
- {.code_and_extra = 0x0ca,.length2 = 0x8},
- {.code_and_extra = 0x02a,.length2 = 0x8},
- {.code_and_extra = 0x0aa,.length2 = 0x8},
- {.code_and_extra = 0x06a,.length2 = 0x8},
- {.code_and_extra = 0x0ea,.length2 = 0x8},
- {.code_and_extra = 0x01a,.length2 = 0x8},
- {.code_and_extra = 0x09a,.length2 = 0x8},
- {.code_and_extra = 0x05a,.length2 = 0x8},
- {.code_and_extra = 0x0da,.length2 = 0x8},
- {.code_and_extra = 0x03a,.length2 = 0x8},
- {.code_and_extra = 0x0ba,.length2 = 0x8},
- {.code_and_extra = 0x07a,.length2 = 0x8},
- {.code_and_extra = 0x0fa,.length2 = 0x8},
- {.code_and_extra = 0x006,.length2 = 0x8},
- {.code_and_extra = 0x086,.length2 = 0x8},
- {.code_and_extra = 0x046,.length2 = 0x8},
- {.code_and_extra = 0x0c6,.length2 = 0x8},
- {.code_and_extra = 0x026,.length2 = 0x8},
- {.code_and_extra = 0x0a6,.length2 = 0x8},
- {.code_and_extra = 0x066,.length2 = 0x8},
- {.code_and_extra = 0x0e6,.length2 = 0x8},
- {.code_and_extra = 0x016,.length2 = 0x8},
- {.code_and_extra = 0x096,.length2 = 0x8},
- {.code_and_extra = 0x056,.length2 = 0x8},
- {.code_and_extra = 0x0d6,.length2 = 0x8},
- {.code_and_extra = 0x036,.length2 = 0x8},
- {.code_and_extra = 0x0b6,.length2 = 0x8},
- {.code_and_extra = 0x076,.length2 = 0x8},
- {.code_and_extra = 0x0f6,.length2 = 0x8},
- {.code_and_extra = 0x00e,.length2 = 0x8},
- {.code_and_extra = 0x08e,.length2 = 0x8},
- {.code_and_extra = 0x04e,.length2 = 0x8},
- {.code_and_extra = 0x0ce,.length2 = 0x8},
- {.code_and_extra = 0x02e,.length2 = 0x8},
- {.code_and_extra = 0x0ae,.length2 = 0x8},
- {.code_and_extra = 0x06e,.length2 = 0x8},
- {.code_and_extra = 0x0ee,.length2 = 0x8},
- {.code_and_extra = 0x01e,.length2 = 0x8},
- {.code_and_extra = 0x09e,.length2 = 0x8},
- {.code_and_extra = 0x05e,.length2 = 0x8},
- {.code_and_extra = 0x0de,.length2 = 0x8},
- {.code_and_extra = 0x03e,.length2 = 0x8},
- {.code_and_extra = 0x0be,.length2 = 0x8},
- {.code_and_extra = 0x07e,.length2 = 0x8},
- {.code_and_extra = 0x0fe,.length2 = 0x8},
- {.code_and_extra = 0x001,.length2 = 0x8},
- {.code_and_extra = 0x081,.length2 = 0x8},
- {.code_and_extra = 0x041,.length2 = 0x8},
- {.code_and_extra = 0x0c1,.length2 = 0x8},
- {.code_and_extra = 0x021,.length2 = 0x8},
- {.code_and_extra = 0x0a1,.length2 = 0x8},
- {.code_and_extra = 0x061,.length2 = 0x8},
- {.code_and_extra = 0x0e1,.length2 = 0x8},
- {.code_and_extra = 0x011,.length2 = 0x8},
- {.code_and_extra = 0x091,.length2 = 0x8},
- {.code_and_extra = 0x051,.length2 = 0x8},
- {.code_and_extra = 0x0d1,.length2 = 0x8},
- {.code_and_extra = 0x031,.length2 = 0x8},
- {.code_and_extra = 0x0b1,.length2 = 0x8},
- {.code_and_extra = 0x071,.length2 = 0x8},
- {.code_and_extra = 0x0f1,.length2 = 0x8},
- {.code_and_extra = 0x009,.length2 = 0x8},
- {.code_and_extra = 0x089,.length2 = 0x8},
- {.code_and_extra = 0x049,.length2 = 0x8},
- {.code_and_extra = 0x0c9,.length2 = 0x8},
- {.code_and_extra = 0x029,.length2 = 0x8},
- {.code_and_extra = 0x0a9,.length2 = 0x8},
- {.code_and_extra = 0x069,.length2 = 0x8},
- {.code_and_extra = 0x0e9,.length2 = 0x8},
- {.code_and_extra = 0x019,.length2 = 0x8},
- {.code_and_extra = 0x099,.length2 = 0x8},
- {.code_and_extra = 0x059,.length2 = 0x8},
- {.code_and_extra = 0x0d9,.length2 = 0x8},
- {.code_and_extra = 0x039,.length2 = 0x8},
- {.code_and_extra = 0x0b9,.length2 = 0x8},
- {.code_and_extra = 0x079,.length2 = 0x8},
- {.code_and_extra = 0x0f9,.length2 = 0x8},
- {.code_and_extra = 0x005,.length2 = 0x8},
- {.code_and_extra = 0x085,.length2 = 0x8},
- {.code_and_extra = 0x045,.length2 = 0x8},
- {.code_and_extra = 0x0c5,.length2 = 0x8},
- {.code_and_extra = 0x025,.length2 = 0x8},
- {.code_and_extra = 0x0a5,.length2 = 0x8},
- {.code_and_extra = 0x065,.length2 = 0x8},
- {.code_and_extra = 0x0e5,.length2 = 0x8},
- {.code_and_extra = 0x015,.length2 = 0x8},
- {.code_and_extra = 0x095,.length2 = 0x8},
- {.code_and_extra = 0x055,.length2 = 0x8},
- {.code_and_extra = 0x0d5,.length2 = 0x8},
- {.code_and_extra = 0x035,.length2 = 0x8},
- {.code_and_extra = 0x0b5,.length2 = 0x8},
- {.code_and_extra = 0x075,.length2 = 0x8},
- {.code_and_extra = 0x0f5,.length2 = 0x8},
- {.code_and_extra = 0x00d,.length2 = 0x8},
- {.code_and_extra = 0x08d,.length2 = 0x8},
- {.code_and_extra = 0x04d,.length2 = 0x8},
- {.code_and_extra = 0x0cd,.length2 = 0x8},
- {.code_and_extra = 0x02d,.length2 = 0x8},
- {.code_and_extra = 0x0ad,.length2 = 0x8},
- {.code_and_extra = 0x06d,.length2 = 0x8},
- {.code_and_extra = 0x0ed,.length2 = 0x8},
- {.code_and_extra = 0x01d,.length2 = 0x8},
- {.code_and_extra = 0x09d,.length2 = 0x8},
- {.code_and_extra = 0x05d,.length2 = 0x8},
- {.code_and_extra = 0x0dd,.length2 = 0x8},
- {.code_and_extra = 0x03d,.length2 = 0x8},
- {.code_and_extra = 0x0bd,.length2 = 0x8},
- {.code_and_extra = 0x07d,.length2 = 0x8},
- {.code_and_extra = 0x0fd,.length2 = 0x8},
- {.code_and_extra = 0x013,.length2 = 0x9},
- {.code_and_extra = 0x113,.length2 = 0x9},
- {.code_and_extra = 0x093,.length2 = 0x9},
- {.code_and_extra = 0x193,.length2 = 0x9},
- {.code_and_extra = 0x053,.length2 = 0x9},
- {.code_and_extra = 0x153,.length2 = 0x9},
- {.code_and_extra = 0x0d3,.length2 = 0x9},
- {.code_and_extra = 0x1d3,.length2 = 0x9},
- {.code_and_extra = 0x033,.length2 = 0x9},
- {.code_and_extra = 0x133,.length2 = 0x9},
- {.code_and_extra = 0x0b3,.length2 = 0x9},
- {.code_and_extra = 0x1b3,.length2 = 0x9},
- {.code_and_extra = 0x073,.length2 = 0x9},
- {.code_and_extra = 0x173,.length2 = 0x9},
- {.code_and_extra = 0x0f3,.length2 = 0x9},
- {.code_and_extra = 0x1f3,.length2 = 0x9},
- {.code_and_extra = 0x00b,.length2 = 0x9},
- {.code_and_extra = 0x10b,.length2 = 0x9},
- {.code_and_extra = 0x08b,.length2 = 0x9},
- {.code_and_extra = 0x18b,.length2 = 0x9},
- {.code_and_extra = 0x04b,.length2 = 0x9},
- {.code_and_extra = 0x14b,.length2 = 0x9},
- {.code_and_extra = 0x0cb,.length2 = 0x9},
- {.code_and_extra = 0x1cb,.length2 = 0x9},
- {.code_and_extra = 0x02b,.length2 = 0x9},
- {.code_and_extra = 0x12b,.length2 = 0x9},
- {.code_and_extra = 0x0ab,.length2 = 0x9},
- {.code_and_extra = 0x1ab,.length2 = 0x9},
- {.code_and_extra = 0x06b,.length2 = 0x9},
- {.code_and_extra = 0x16b,.length2 = 0x9},
- {.code_and_extra = 0x0eb,.length2 = 0x9},
- {.code_and_extra = 0x1eb,.length2 = 0x9},
- {.code_and_extra = 0x01b,.length2 = 0x9},
- {.code_and_extra = 0x11b,.length2 = 0x9},
- {.code_and_extra = 0x09b,.length2 = 0x9},
- {.code_and_extra = 0x19b,.length2 = 0x9},
- {.code_and_extra = 0x05b,.length2 = 0x9},
- {.code_and_extra = 0x15b,.length2 = 0x9},
- {.code_and_extra = 0x0db,.length2 = 0x9},
- {.code_and_extra = 0x1db,.length2 = 0x9},
- {.code_and_extra = 0x03b,.length2 = 0x9},
- {.code_and_extra = 0x13b,.length2 = 0x9},
- {.code_and_extra = 0x0bb,.length2 = 0x9},
- {.code_and_extra = 0x1bb,.length2 = 0x9},
- {.code_and_extra = 0x07b,.length2 = 0x9},
- {.code_and_extra = 0x17b,.length2 = 0x9},
- {.code_and_extra = 0x0fb,.length2 = 0x9},
- {.code_and_extra = 0x1fb,.length2 = 0x9},
- {.code_and_extra = 0x007,.length2 = 0x9},
- {.code_and_extra = 0x107,.length2 = 0x9},
- {.code_and_extra = 0x087,.length2 = 0x9},
- {.code_and_extra = 0x187,.length2 = 0x9},
- {.code_and_extra = 0x047,.length2 = 0x9},
- {.code_and_extra = 0x147,.length2 = 0x9},
- {.code_and_extra = 0x0c7,.length2 = 0x9},
- {.code_and_extra = 0x1c7,.length2 = 0x9},
- {.code_and_extra = 0x027,.length2 = 0x9},
- {.code_and_extra = 0x127,.length2 = 0x9},
- {.code_and_extra = 0x0a7,.length2 = 0x9},
- {.code_and_extra = 0x1a7,.length2 = 0x9},
- {.code_and_extra = 0x067,.length2 = 0x9},
- {.code_and_extra = 0x167,.length2 = 0x9},
- {.code_and_extra = 0x0e7,.length2 = 0x9},
- {.code_and_extra = 0x1e7,.length2 = 0x9},
- {.code_and_extra = 0x017,.length2 = 0x9},
- {.code_and_extra = 0x117,.length2 = 0x9},
- {.code_and_extra = 0x097,.length2 = 0x9},
- {.code_and_extra = 0x197,.length2 = 0x9},
- {.code_and_extra = 0x057,.length2 = 0x9},
- {.code_and_extra = 0x157,.length2 = 0x9},
- {.code_and_extra = 0x0d7,.length2 = 0x9},
- {.code_and_extra = 0x1d7,.length2 = 0x9},
- {.code_and_extra = 0x037,.length2 = 0x9},
- {.code_and_extra = 0x137,.length2 = 0x9},
- {.code_and_extra = 0x0b7,.length2 = 0x9},
- {.code_and_extra = 0x1b7,.length2 = 0x9},
- {.code_and_extra = 0x077,.length2 = 0x9},
- {.code_and_extra = 0x177,.length2 = 0x9},
- {.code_and_extra = 0x0f7,.length2 = 0x9},
- {.code_and_extra = 0x1f7,.length2 = 0x9},
- {.code_and_extra = 0x00f,.length2 = 0x9},
- {.code_and_extra = 0x10f,.length2 = 0x9},
- {.code_and_extra = 0x08f,.length2 = 0x9},
- {.code_and_extra = 0x18f,.length2 = 0x9},
- {.code_and_extra = 0x04f,.length2 = 0x9},
- {.code_and_extra = 0x14f,.length2 = 0x9},
- {.code_and_extra = 0x0cf,.length2 = 0x9},
- {.code_and_extra = 0x1cf,.length2 = 0x9},
- {.code_and_extra = 0x02f,.length2 = 0x9},
- {.code_and_extra = 0x12f,.length2 = 0x9},
- {.code_and_extra = 0x0af,.length2 = 0x9},
- {.code_and_extra = 0x1af,.length2 = 0x9},
- {.code_and_extra = 0x06f,.length2 = 0x9},
- {.code_and_extra = 0x16f,.length2 = 0x9},
- {.code_and_extra = 0x0ef,.length2 = 0x9},
- {.code_and_extra = 0x1ef,.length2 = 0x9},
- {.code_and_extra = 0x01f,.length2 = 0x9},
- {.code_and_extra = 0x11f,.length2 = 0x9},
- {.code_and_extra = 0x09f,.length2 = 0x9},
- {.code_and_extra = 0x19f,.length2 = 0x9},
- {.code_and_extra = 0x05f,.length2 = 0x9},
- {.code_and_extra = 0x15f,.length2 = 0x9},
- {.code_and_extra = 0x0df,.length2 = 0x9},
- {.code_and_extra = 0x1df,.length2 = 0x9},
- {.code_and_extra = 0x03f,.length2 = 0x9},
- {.code_and_extra = 0x13f,.length2 = 0x9},
- {.code_and_extra = 0x0bf,.length2 = 0x9},
- {.code_and_extra = 0x1bf,.length2 = 0x9},
- {.code_and_extra = 0x07f,.length2 = 0x9},
- {.code_and_extra = 0x17f,.length2 = 0x9},
- {.code_and_extra = 0x0ff,.length2 = 0x9},
- {.code_and_extra = 0x1ff,.length2 = 0x9},
- {.code_and_extra = 0x000,.length2 = 0x7},
- {.code_and_extra = 0x040,.length2 = 0x7},
- {.code_and_extra = 0x020,.length2 = 0x7},
- {.code_and_extra = 0x060,.length2 = 0x7},
- {.code_and_extra = 0x010,.length2 = 0x7},
- {.code_and_extra = 0x050,.length2 = 0x7},
- {.code_and_extra = 0x030,.length2 = 0x7},
- {.code_and_extra = 0x070,.length2 = 0x7},
- {.code_and_extra = 0x008,.length2 = 0x7},
- {.code_and_extra = 0x048,.length2 = 0x7},
- {.code_and_extra = 0x028,.length2 = 0x7},
- {.code_and_extra = 0x068,.length2 = 0x7},
- {.code_and_extra = 0x018,.length2 = 0x7},
- {.code_and_extra = 0x058,.length2 = 0x7},
- {.code_and_extra = 0x038,.length2 = 0x7},
- {.code_and_extra = 0x078,.length2 = 0x7},
- {.code_and_extra = 0x004,.length2 = 0x7},
- {.code_and_extra = 0x044,.length2 = 0x7},
- {.code_and_extra = 0x024,.length2 = 0x7},
- {.code_and_extra = 0x064,.length2 = 0x7},
- {.code_and_extra = 0x014,.length2 = 0x7},
- {.code_and_extra = 0x054,.length2 = 0x7},
- {.code_and_extra = 0x034,.length2 = 0x7},
- {.code_and_extra = 0x074,.length2 = 0x7},
- {.code_and_extra = 0x003,.length2 = 0x8},
- {.code_and_extra = 0x083,.length2 = 0x8},
- {.code_and_extra = 0x043,.length2 = 0x8},
- {.code_and_extra = 0x0c3,.length2 = 0x8},
- {.code_and_extra = 0x023,.length2 = 0x8},
- {.code_and_extra = 0x0a3,.length2 = 0x8},
- {.code_and_extra = 0x063,.length2 = 0x8},
- {.code_and_extra = 0x0e3,.length2 = 0x8},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0},
- {.code_and_extra = 0x000,.length2 = 0x0}},
+ {{{.code_and_extra = 0x00c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x08c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x04c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0cc,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x02c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ac,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x06c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ec,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x01c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x09c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x05c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0dc,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x03c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0bc,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x07c,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0fc,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x002,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x082,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x042,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0c2,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x022,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0a2,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x062,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0e2,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x012,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x092,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x052,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0d2,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x032,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0b2,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x072,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0f2,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x00a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x08a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x04a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ca,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x02a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0aa,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x06a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ea,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x01a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x09a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x05a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0da,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x03a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ba,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x07a,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0fa,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x006,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x086,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x046,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0c6,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x026,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0a6,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x066,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0e6,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x016,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x096,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x056,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0d6,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x036,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0b6,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x076,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0f6,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x00e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x08e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x04e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ce,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x02e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ae,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x06e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ee,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x01e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x09e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x05e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0de,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x03e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0be,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x07e,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0fe,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x001,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x081,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x041,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0c1,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x021,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0a1,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x061,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0e1,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x011,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x091,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x051,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0d1,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x031,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0b1,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x071,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0f1,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x009,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x089,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x049,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0c9,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x029,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0a9,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x069,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0e9,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x019,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x099,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x059,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0d9,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x039,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0b9,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x079,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0f9,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x005,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x085,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x045,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0c5,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x025,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0a5,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x065,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0e5,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x015,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x095,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x055,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0d5,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x035,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0b5,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x075,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0f5,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x00d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x08d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x04d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0cd,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x02d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ad,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x06d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0ed,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x01d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x09d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x05d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0dd,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x03d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0bd,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x07d,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0fd,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x013,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x113,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x093,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x193,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x053,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x153,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0d3,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1d3,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x033,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x133,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0b3,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1b3,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x073,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x173,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0f3,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1f3,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x00b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x10b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x08b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x18b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x04b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x14b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0cb,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1cb,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x02b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x12b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0ab,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1ab,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x06b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x16b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0eb,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1eb,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x01b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x11b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x09b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x19b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x05b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x15b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0db,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1db,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x03b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x13b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0bb,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1bb,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x07b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x17b,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0fb,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1fb,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x007,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x107,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x087,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x187,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x047,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x147,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0c7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1c7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x027,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x127,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0a7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1a7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x067,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x167,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0e7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1e7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x017,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x117,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x097,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x197,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x057,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x157,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0d7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1d7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x037,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x137,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0b7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1b7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x077,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x177,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0f7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1f7,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x00f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x10f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x08f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x18f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x04f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x14f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0cf,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1cf,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x02f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x12f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0af,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1af,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x06f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x16f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0ef,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1ef,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x01f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x11f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x09f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x19f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x05f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x15f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0df,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1df,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x03f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x13f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0bf,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1bf,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x07f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x17f,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x0ff,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x1ff,.length2 = 0x9}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x040,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x020,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x060,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x010,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x050,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x030,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x070,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x008,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x048,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x028,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x068,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x018,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x058,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x038,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x078,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x004,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x044,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x024,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x064,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x014,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x054,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x034,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x074,.length2 = 0x7}}},
+ {{{.code_and_extra = 0x003,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x083,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x043,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0c3,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x023,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0a3,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x063,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x0e3,.length2 = 0x8}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}}},
.dist_table = {
- {.code_and_extra = 0x000,.length2 = 0x5},
- {.code_and_extra = 0x010,.length2 = 0x5},
- {.code_and_extra = 0x008,.length2 = 0x5},
- {.code_and_extra = 0x018,.length2 = 0x5},
- {.code_and_extra = 0x10004,.length2 = 0x5},
- {.code_and_extra = 0x10014,.length2 = 0x5},
- {.code_and_extra = 0x2000c,.length2 = 0x5},
- {.code_and_extra = 0x2001c,.length2 = 0x5},
- {.code_and_extra = 0x30002,.length2 = 0x5},
- {.code_and_extra = 0x30012,.length2 = 0x5},
- {.code_and_extra = 0x4000a,.length2 = 0x5},
- {.code_and_extra = 0x4001a,.length2 = 0x5},
- {.code_and_extra = 0x50006,.length2 = 0x5},
- {.code_and_extra = 0x50016,.length2 = 0x5},
- {.code_and_extra = 0x6000e,.length2 = 0x5},
- {.code_and_extra = 0x6001e,.length2 = 0x5},
- {.code_and_extra = 0x70001,.length2 = 0x5},
- {.code_and_extra = 0x70011,.length2 = 0x5},
- {.code_and_extra = 0x80009,.length2 = 0x5},
- {.code_and_extra = 0x80019,.length2 = 0x5},
- {.code_and_extra = 0x90005,.length2 = 0x5},
- {.code_and_extra = 0x90015,.length2 = 0x5},
- {.code_and_extra = 0xa000d,.length2 = 0x5},
- {.code_and_extra = 0xa001d,.length2 = 0x5},
- {.code_and_extra = 0xb0003,.length2 = 0x5},
- {.code_and_extra = 0xb0013,.length2 = 0x5},
- {.code_and_extra = 0xc000b,.length2 = 0x5},
- {.code_and_extra = 0xc001b,.length2 = 0x5},
- {.code_and_extra = 0xd0007,.length2 = 0x5},
- {.code_and_extra = 0xd0017,.length2 = 0x5},
- {.code_and_extra = 0x000,.length2 = 0x0}}
+ {{{.code_and_extra = 0x000,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x010,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x008,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x018,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x10004,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x10014,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x2000c,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x2001c,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x30002,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x30012,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x4000a,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x4001a,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x50006,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x50016,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x6000e,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x6001e,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x70001,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x70011,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x80009,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x80019,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x90005,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x90015,.length2 = 0x5}}},
+ {{{.code_and_extra = 0xa000d,.length2 = 0x5}}},
+ {{{.code_and_extra = 0xa001d,.length2 = 0x5}}},
+ {{{.code_and_extra = 0xb0003,.length2 = 0x5}}},
+ {{{.code_and_extra = 0xb0013,.length2 = 0x5}}},
+ {{{.code_and_extra = 0xc000b,.length2 = 0x5}}},
+ {{{.code_and_extra = 0xc001b,.length2 = 0x5}}},
+ {{{.code_and_extra = 0xd0007,.length2 = 0x5}}},
+ {{{.code_and_extra = 0xd0017,.length2 = 0x5}}},
+ {{{.code_and_extra = 0x000,.length2 = 0x0}}}}
};
struct slver {
extern uint32_t build_huff_tree(struct heap_tree *heap, uint64_t heap_size, uint64_t node_ptr);
extern void build_heap(uint64_t * heap, uint64_t heap_size);
+static uint32_t convert_dist_to_dist_sym(uint32_t dist);
+static uint32_t convert_length_to_len_sym(uint32_t length);
+
static const uint8_t bitrev8[0x100] = {
0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
end_stream = start_stream + length;
memset(last_seen, 0, sizeof(histogram->hash_table)); /* Initialize last_seen to be 0. */
for (current = start_stream; current < end_stream - 3; current++) {
- literal = *(uint32_t *) current;
- hash = compute_hash(literal) & HASH_MASK;
+ literal = load_u32(current);
+ hash = compute_hash(literal) & LVL0_HASH_MASK;
seen = last_seen[hash];
last_seen[hash] = (current - start_stream) & 0xFFFF;
dist = (current - start_stream - seen) & 0xFFFF;
end = end_stream - 3;
next_hash++;
for (; next_hash < end; next_hash++) {
- literal = *(uint32_t *) next_hash;
- hash = compute_hash(literal) & HASH_MASK;
+ literal = load_u32(next_hash);
+ hash = compute_hash(literal) & LVL0_HASH_MASK;
last_seen[hash] = (next_hash - start_stream) & 0xFFFF;
}
}
lit_len_histogram[literal & 0xFF] += 1;
}
- literal = literal >> 8;
- hash = compute_hash(literal) & HASH_MASK;
- seen = last_seen[hash];
- last_seen[hash] = (current - start_stream) & 0xFFFF;
- dist = (current - start_stream - seen) & 0xFFFF;
- if (dist < D) {
- match_length = compare258(current - dist, current, end_stream - current);
- if (match_length >= SHORTEST_MATCH) {
- dist_histogram[convert_dist_to_dist_sym(dist)] += 1;
- lit_len_histogram[convert_length_to_len_sym(match_length)] += 1;
- lit_len_histogram[256] += 1;
- return;
- }
- } else
- lit_len_histogram[literal & 0xFF] += 1;
- lit_len_histogram[(literal >> 8) & 0xFF] += 1;
- lit_len_histogram[(literal >> 16) & 0xFF] += 1;
+
+ for (; current < end_stream; current++)
+ lit_len_histogram[*current] += 1;
+
lit_len_histogram[256] += 1;
return;
}
-uint32_t convert_dist_to_dist_sym(uint32_t dist)
+/**
+ * @brief Returns the deflate symbol value for a look back distance.
+ */
+static uint32_t convert_dist_to_dist_sym(uint32_t dist)
{
assert(dist <= 32768 && dist > 0);
- if (dist <= 2)
- return dist - 1;
- else if (dist <= 4)
- return 0 + (dist - 1) / 1;
- else if (dist <= 8)
- return 2 + (dist - 1) / 2;
- else if (dist <= 16)
- return 4 + (dist - 1) / 4;
- else if (dist <= 32)
- return 6 + (dist - 1) / 8;
- else if (dist <= 64)
- return 8 + (dist - 1) / 16;
- else if (dist <= 128)
- return 10 + (dist - 1) / 32;
- else if (dist <= 256)
- return 12 + (dist - 1) / 64;
- else if (dist <= 512)
- return 14 + (dist - 1) / 128;
- else if (dist <= 1024)
- return 16 + (dist - 1) / 256;
- else if (dist <= 2048)
- return 18 + (dist - 1) / 512;
- else if (dist <= 4096)
- return 20 + (dist - 1) / 1024;
- else if (dist <= 8192)
- return 22 + (dist - 1) / 2048;
- else if (dist <= 16384)
- return 24 + (dist - 1) / 4096;
- else if (dist <= 32768)
- return 26 + (dist - 1) / 8192;
- else
- return ~0; /* ~0 is an invalid distance code */
-
+ if (dist <= 32768) {
+ uint32_t msb = dist > 4 ? bsr(dist - 1) - 2 : 0;
+ return (msb * 2) + ((dist - 1) >> msb);
+ } else {
+ return ~0;
+ }
}
-uint32_t convert_length_to_len_sym(uint32_t length)
+/**
+ * @brief Returns the deflate symbol value for a repeat length.
+ */
+static uint32_t convert_length_to_len_sym(uint32_t length)
{
assert(length > 2 && length < 259);
return heap_size;
}
+static inline uint32_t init_heap64_semi_complete(struct heap_tree *heap_space,
+ uint64_t * histogram, uint64_t hist_size,
+ uint64_t complete_start)
+{
+ uint32_t heap_size, i;
+
+ memset(heap_space, 0, sizeof(struct heap_tree));
+
+ heap_size = 0;
+ for (i = 0; i < complete_start; i++) {
+ if (histogram[i] != 0)
+ heap_space->heap[++heap_size] = ((histogram[i]) << FREQ_SHIFT) | i;
+ }
+
+ for (; i < hist_size; i++)
+ heap_space->heap[++heap_size] = ((histogram[i]) << FREQ_SHIFT) | i;
+
+ // make sure heap has at least two elements in it
+ if (heap_size < 2) {
+ if (heap_size == 0) {
+ heap_space->heap[1] = 1ULL << FREQ_SHIFT;
+ heap_space->heap[2] = (1ULL << FREQ_SHIFT) | 1;
+ heap_size = 2;
+ } else {
+ // heap size == 1
+ if (histogram[0] == 0)
+ heap_space->heap[2] = 1ULL << FREQ_SHIFT;
+ else
+ heap_space->heap[2] = (1ULL << FREQ_SHIFT) | 1;
+ heap_size = 2;
+ }
+ }
+
+ build_heap(heap_space->heap, heap_size);
+
+ return heap_size;
+}
+
static inline uint32_t init_heap64_complete(struct heap_tree *heap_space, uint64_t * histogram,
uint64_t hist_size)
{
code_len--;
}
+ bl_count[0] = 0;
for (i = 1; i <= code_len; i++)
bl_count[i] = code_len_count[i];
for (; i <= max_code_len; i++)
for (; code_len_count[k] == 0; k++) ;
}
} else {
+ bl_count[0] = 0;
for (i = 1; i <= code_len; i++)
bl_count[i] = code_len_count[i];
for (; i <= max_code_len; i++)
}
-inline uint32_t set_huff_codes(struct huff_code *huff_code_table, int table_length,
- uint32_t * count)
+/**
+ * @brief Determines the code each element of a deflate compliant huffman tree and stores
+ * it in a lookup table
+ * @requires table has been initialized to already contain the code length for each element.
+ * @param table: A lookup table used to store the codes.
+ * @param table_length: The length of table.
+ * @param count: a histogram representing the number of occurences of codes of a given length
+ */
+static inline uint32_t set_huff_codes(struct huff_code *huff_code_table, int table_length,
+ uint32_t * count)
{
/* Uses the algorithm mentioned in the deflate standard, Rfc 1951. */
int i;
return max_code;
}
-int create_huffman_header(struct BitBuf2 *header_bitbuf,
- struct huff_code *lookup_table,
- struct rl_code *huffman_rep,
- uint16_t huffman_rep_length, uint32_t end_of_block,
- uint32_t hclen, uint32_t hlit, uint32_t hdist)
+/**
+ * @brief Creates the header for run length encoded huffman trees.
+ * @param header: the output header.
+ * @param lookup_table: a huffman lookup table.
+ * @param huffman_rep: a run length encoded huffman tree.
+ * @extra_bits: extra bits associated with the corresponding spot in huffman_rep
+ * @param huffman_rep_length: the length of huffman_rep.
+ * @param end_of_block: Value determining whether end of block header is produced or not;
+ * 0 corresponds to not end of block and all other inputs correspond to end of block.
+ * @param hclen: Length of huffman code for huffman codes minus 4.
+ * @param hlit: Length of literal/length table minus 257.
+ * @parm hdist: Length of distance table minus 1.
+ */
+static int create_huffman_header(struct BitBuf2 *header_bitbuf,
+ struct huff_code *lookup_table,
+ struct rl_code *huffman_rep,
+ uint16_t huffman_rep_length, uint32_t end_of_block,
+ uint32_t hclen, uint32_t hlit, uint32_t hdist)
{
/* hlit, hdist, hclen are as defined in the deflate standard, head is the
* first three deflate header bits.*/
return bit_count;
}
-inline int create_header(struct BitBuf2 *header_bitbuf, struct rl_code *huffman_rep,
- uint32_t length, uint64_t * histogram, uint32_t hlit,
- uint32_t hdist, uint32_t end_of_block)
+/**
+ * @brief Creates the dynamic huffman deflate header.
+ * @returns Returns the length of header in bits.
+ * @requires This function requires header is large enough to store the whole header.
+ * @param header: The output header.
+ * @param lit_huff_table: A literal/length code huffman lookup table.\
+ * @param dist_huff_table: A distance huffman code lookup table.
+ * @param end_of_block: Value determining whether end of block header is produced or not;
+ * 0 corresponds to not end of block and all other inputs correspond to end of block.
+ */
+static inline int create_header(struct BitBuf2 *header_bitbuf, struct rl_code *huffman_rep,
+ uint32_t length, uint64_t * histogram, uint32_t hlit,
+ uint32_t hdist, uint32_t end_of_block)
{
int i;
return (uint32_t) (pout - out);
}
-void create_code_tables(uint16_t * code_table, uint8_t * code_length_table, uint32_t length,
- struct huff_code *hufftable)
+/**
+ * @brief Creates a two table representation of huffman codes.
+ * @param code_table: output table containing the code
+ * @param code_size_table: output table containing the code length
+ * @param length: the lenght of hufftable
+ * @param hufftable: a huffman lookup table
+ */
+static void create_code_tables(uint16_t * code_table, uint8_t * code_length_table,
+ uint32_t length, struct huff_code *hufftable)
{
int i;
for (i = 0; i < length; i++) {
}
}
-void create_packed_len_table(uint32_t * packed_table, struct huff_code *lit_len_hufftable)
+/**
+ * @brief Creates a packed representation of length huffman codes.
+ * @details In packed_table, bits 32:8 contain the extra bits appended to the huffman
+ * code and bits 8:0 contain the code length.
+ * @param packed_table: the output table
+ * @param length: the length of lit_len_hufftable
+ * @param lit_len_hufftable: a literal/length huffman lookup table
+ */
+static void create_packed_len_table(uint32_t * packed_table,
+ struct huff_code *lit_len_hufftable)
{
int i, count = 0;
uint16_t extra_bits;
(lit_len_hufftable[LIT_LEN - 1].length);
}
-void create_packed_dist_table(uint32_t * packed_table, uint32_t length,
- struct huff_code *dist_hufftable)
+/**
+ * @brief Creates a packed representation of distance huffman codes.
+ * @details In packed_table, bits 32:8 contain the extra bits appended to the huffman
+ * code and bits 8:0 contain the code length.
+ * @param packed_table: the output table
+ * @param length: the length of lit_len_hufftable
+ * @param dist_hufftable: a distance huffman lookup table
+ */
+static void create_packed_dist_table(uint32_t * packed_table, uint32_t length,
+ struct huff_code *dist_hufftable)
{
int i, count = 0;
uint16_t extra_bits;
}
}
-int are_hufftables_useable(struct huff_code *lit_len_hufftable,
- struct huff_code *dist_hufftable)
+/**
+ * @brief Checks to see if the hufftable is usable by igzip
+ *
+ * @param lit_len_hufftable: literal/length huffman code
+ * @param dist_hufftable: distance huffman code
+ * @returns Returns 0 if the table is usable
+ */
+static int are_hufftables_useable(struct huff_code *lit_len_hufftable,
+ struct huff_code *dist_hufftable)
{
int max_lit_code_len = 0, max_len_code_len = 0, max_dist_code_len = 0;
int dist_extra_bits = 0, len_extra_bits = 0;
uint16_t *dcodes = hufftables->dcodes;
uint8_t *lit_table_sizes = hufftables->lit_table_sizes;
uint8_t *dcodes_sizes = hufftables->dcodes_sizes;
- uint8_t *deflate_hdr = hufftables->deflate_hdr;
uint64_t *lit_len_histogram = histogram->lit_len_histogram;
uint64_t *dist_histogram = histogram->dist_histogram;
create_packed_len_table(len_table, lit_huff_table);
create_packed_dist_table(dist_table, IGZIP_DIST_TABLE_SIZE, dist_huff_table);
- set_buf(&header_bitbuf, deflate_hdr, sizeof(deflate_hdr));
+ set_buf(&header_bitbuf, hufftables->deflate_hdr, sizeof(hufftables->deflate_hdr));
init(&header_bitbuf);
hlit = max_lit_len_sym - 256;
uint16_t *dcodes = hufftables->dcodes;
uint8_t *lit_table_sizes = hufftables->lit_table_sizes;
uint8_t *dcodes_sizes = hufftables->dcodes_sizes;
- uint8_t *deflate_hdr = hufftables->deflate_hdr;
uint64_t *lit_len_histogram = histogram->lit_len_histogram;
uint64_t *dist_histogram = histogram->dist_histogram;
memset(hufftables, 0, sizeof(struct isal_hufftables));
- heap_size = init_heap64(&heap_space, lit_len_histogram, LIT_LEN);
+ heap_size =
+ init_heap64_semi_complete(&heap_space, lit_len_histogram, LIT_LEN,
+ ISAL_DEF_LIT_SYMBOLS);
gen_huff_code_lens(&heap_space, heap_size, code_len_count,
(struct huff_code *)lit_huff_table, LIT_LEN, MAX_DEFLATE_CODE_LEN);
max_lit_len_sym = set_huff_codes(lit_huff_table, LIT_LEN, code_len_count);
create_packed_len_table(len_table, lit_huff_table);
create_packed_dist_table(dist_table, IGZIP_DIST_TABLE_SIZE, dist_huff_table);
- set_buf(&header_bitbuf, deflate_hdr, sizeof(deflate_hdr));
+ set_buf(&header_bitbuf, hufftables->deflate_hdr, sizeof(hufftables->deflate_hdr));
init(&header_bitbuf);
hlit = max_lit_len_sym - 256;
return 0;
}
-void expand_hufftables_icf(struct hufftables_icf *hufftables)
+static void expand_hufftables_icf(struct hufftables_icf *hufftables)
{
uint32_t i, eb, j, k, len, code;
struct huff_code orig[21], *p_code;
dist_codes[DIST_LEN].length = 0;
}
-void
+uint64_t
create_hufftables_icf(struct BitBuf2 *bb, struct hufftables_icf *hufftables,
struct isal_mod_hist *hist, uint32_t end_of_block)
{
(static_d_codes[i].length + dist_code_extra_bits[i]) * d_hist[i];
}
- expand_hufftables_icf(hufftables);
-
- num_cl_tokens =
- rl_encode(combined_table, max_ll_code + max_d_code + 2, cl_counts, cl_tokens);
+ if (static_compressed_len > compressed_len) {
+ num_cl_tokens = rl_encode(combined_table, max_ll_code + max_d_code + 2,
+ cl_counts, cl_tokens);
- /* Create header */
- create_header(bb, cl_tokens, num_cl_tokens, cl_counts, max_ll_code - 256, max_d_code,
- end_of_block);
- compressed_len += 8 * buffer_used(bb) + bb->m_bit_count;
+ /* Create header */
+ create_header(bb, cl_tokens, num_cl_tokens, cl_counts, max_ll_code - 256,
+ max_d_code, end_of_block);
+ compressed_len += 8 * buffer_used(bb) + bb->m_bit_count;
+ }
- if (static_compressed_len < compressed_len) {
+ /* Substitute in static block since it creates smaller block */
+ if (static_compressed_len <= compressed_len) {
memcpy(hufftables, &static_hufftables, sizeof(struct hufftables_icf));
- expand_hufftables_icf(hufftables);
memcpy(bb, &bb_tmp, sizeof(struct BitBuf2));
end_of_block = end_of_block ? 1 : 0;
write_bits(bb, 0x2 | end_of_block, 3);
+ compressed_len = static_compressed_len;
}
+
+ expand_hufftables_icf(hufftables);
+ return compressed_len;
}