]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/isa-l/igzip/huff_codes.c
Import ceph 15.2.8
[ceph.git] / ceph / src / isa-l / igzip / huff_codes.c
index c8b2035d2976947c13f293ad44f88f1a4cf12027..7512af234548ead5295c660bb7f95c2ca0bf0c2c 100644 (file)
   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 {
@@ -624,6 +618,9 @@ struct slver isal_create_hufftables_subset_slver = { 0x0087, 0x01, 0x00 };
 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,
@@ -683,8 +680,8 @@ void isal_update_histogram_base(uint8_t * start_stream, int length,
        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;
@@ -703,8 +700,8 @@ void isal_update_histogram_base(uint8_t * start_stream, int length,
                                        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;
                                }
 
@@ -717,66 +714,32 @@ void isal_update_histogram_base(uint8_t * start_stream, int length,
                }
                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);
 
@@ -870,6 +833,44 @@ static inline uint32_t init_heap64(struct heap_tree *heap_space, uint64_t * hist
        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)
 {
@@ -929,6 +930,7 @@ static inline uint32_t fix_code_lens(struct heap_tree *heap_space, uint32_t root
                                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++)
@@ -941,6 +943,7 @@ static inline uint32_t fix_code_lens(struct heap_tree *heap_space, uint32_t root
                        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++)
@@ -969,8 +972,16 @@ gen_huff_code_lens(struct heap_tree *heap_space, uint32_t heap_size, uint32_t *
 
 }
 
-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;
@@ -1025,11 +1036,24 @@ static inline uint32_t set_dist_huff_codes(struct huff_code *codes, uint32_t * b
        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.*/
@@ -1066,9 +1090,19 @@ int create_huffman_header(struct BitBuf2 *header_bitbuf,
        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;
 
@@ -1211,8 +1245,15 @@ static inline uint32_t rl_encode(uint16_t * codes, uint32_t num_codes, uint64_t
        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++) {
@@ -1221,7 +1262,16 @@ void create_code_tables(uint16_t * code_table, uint8_t * code_length_table, uint
        }
 }
 
-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;
@@ -1251,8 +1301,16 @@ void create_packed_len_table(uint32_t * packed_table, struct huff_code *lit_len_
            (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;
@@ -1281,8 +1339,15 @@ void create_packed_dist_table(uint32_t * packed_table, uint32_t length,
        }
 }
 
-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;
@@ -1347,7 +1412,6 @@ int isal_create_hufftables(struct isal_hufftables *hufftables,
        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;
 
@@ -1387,7 +1451,7 @@ int isal_create_hufftables(struct isal_hufftables *hufftables,
        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;
@@ -1438,13 +1502,14 @@ int isal_create_hufftables_subset(struct isal_hufftables *hufftables,
        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);
@@ -1478,7 +1543,7 @@ int isal_create_hufftables_subset(struct isal_hufftables *hufftables,
        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;
@@ -1505,7 +1570,7 @@ int isal_create_hufftables_subset(struct isal_hufftables *hufftables,
        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;
@@ -1536,7 +1601,7 @@ void expand_hufftables_icf(struct hufftables_icf *hufftables)
        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)
 {
@@ -1605,21 +1670,25 @@ create_hufftables_icf(struct BitBuf2 *bb, struct hufftables_icf *hufftables,
                    (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;
 }