bliss: Add generated Huffman codes to the repository
authorTobias Brunner <tobias@strongswan.org>
Tue, 17 Feb 2015 15:47:29 +0000 (16:47 +0100)
committerTobias Brunner <tobias@strongswan.org>
Mon, 2 Mar 2015 11:05:07 +0000 (12:05 +0100)
While these files are generated they don't really change and are not
architecture dependant.  The previous solution prevented cross-compilation
from the repository as `bliss_huffman` was built for the target system but
was then executed on the build host to create the source files, which
naturally was bound to fail.

The `recreate-bliss-huffman` make target can be used inside the bliss
directory to update the source files if needed.

Fixes #812.

src/libstrongswan/plugins/bliss/.gitignore
src/libstrongswan/plugins/bliss/Makefile.am
src/libstrongswan/plugins/bliss/bliss_huffman_code_1.c [new file with mode: 0644]
src/libstrongswan/plugins/bliss/bliss_huffman_code_3.c [new file with mode: 0644]
src/libstrongswan/plugins/bliss/bliss_huffman_code_4.c [new file with mode: 0644]

index f1ba4e2..7c4a040 100644 (file)
@@ -1,4 +1 @@
 bliss_huffman
-bliss_huffman_code_1.c
-bliss_huffman_code_3.c
-bliss_huffman_code_4.c
index 75dc92e..e2aaaf5 100644 (file)
@@ -27,9 +27,6 @@ libbliss_la_SOURCES = \
        bliss_sampler.h bliss_sampler.c
 libbliss_la_LIBADD = libbliss-params.la
 
-CLEANFILES = \
-       bliss_huffman_code_1.c bliss_huffman_code_3.c bliss_huffman_code_4.c
-
 if MONOLITHIC
 noinst_LTLIBRARIES += libstrongswan-bliss.la
 else
@@ -48,14 +45,10 @@ noinst_PROGRAMS = bliss_huffman
 bliss_huffman_SOURCES = bliss_huffman.c
 bliss_huffman_LDADD = -lm libbliss-params.la
 
-bliss_huffman_code_1.c :       bliss_huffman bliss_huffman_code.h
+recreate-bliss-huffman :       bliss_huffman bliss_huffman_code.h
        $(AM_V_GEN) \
-       ./bliss_huffman 1 8 > $@ 2>/dev/null
-
-bliss_huffman_code_3.c :       bliss_huffman bliss_huffman_code.h
+       ./bliss_huffman 1  8 > $(srcdir)/bliss_huffman_code_1.c 2>/dev/null
        $(AM_V_GEN) \
-       ./bliss_huffman 3 16 > $@ 2>/dev/null
-
-bliss_huffman_code_4.c :       bliss_huffman bliss_huffman_code.h
+       ./bliss_huffman 3 16 > $(srcdir)/bliss_huffman_code_3.c 2>/dev/null
        $(AM_V_GEN) \
-       ./bliss_huffman 4 32 > $@ 2>/dev/null
+       ./bliss_huffman 4 32 > $(srcdir)/bliss_huffman_code_4.c 2>/dev/null
diff --git a/src/libstrongswan/plugins/bliss/bliss_huffman_code_1.c b/src/libstrongswan/plugins/bliss/bliss_huffman_code_1.c
new file mode 100644 (file)
index 0000000..1bf433f
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2014 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * Optimum Huffman code for BLISS-X signatures
+ *
+ * This file has been automatically generated by the bliss_huffman utility
+ * Do not edit manually!
+ */
+
+/*
+ * Design: sigma = 215
+ *
+ *   i  p_z1[i]
+ *   0  0.7662277087816564         0 ..  256
+ *   1  0.2165251006508514       256 ..  512
+ *   2  0.0168930510015114       512 ..  768
+ *   3  0.0003522302274478       768 .. 1024
+ *   4  0.0000019067136680      1024 .. 1280
+ *   5  0.0000000026239598      1280 .. 1536
+ *   6  0.0000000000009052      1536 .. 1792
+ *   7  0.0000000000000001      1792 .. 2047
+ *
+ *   k  p_z2[k]  dx = 1024
+ *  -1  0.0086781953089156   -1535.5 .. -511.5
+ *   0  0.9826436093821688    -511.5 ..  511.5
+ *   1  0.0086781953089156     511.5 .. 1535.5
+ *
+ *  (i, k)  p
+ *  (0,-1)  0.0066494737079101
+ *  (0, 0)  0.7529287613658361
+ *  (0, 1)  0.0066494737079101
+ *
+ *  (1,-1)  0.0018790471127307
+ *  (1, 0)  0.2127670064253900
+ *  (1, 1)  0.0018790471127307
+ *
+ *  (2,-1)  0.0001466011959546
+ *  (2, 0)  0.0165998486096022
+ *  (2, 1)  0.0001466011959546
+ *
+ *  (3,-1)  0.0000030567227075
+ *  (3, 0)  0.0003461167820328
+ *  (3, 1)  0.0000030567227075
+ *
+ *  (4,-1)  0.0000000165468336
+ *  (4, 0)  0.0000018736200007
+ *  (4, 1)  0.0000000165468336
+ *
+ *  (5,-1)  0.0000000000227712
+ *  (5, 0)  0.0000000025784174
+ *  (5, 1)  0.0000000000227712
+ *
+ *  (6,-1)  0.0000000000000079
+ *  (6, 0)  0.0000000000008895
+ *  (6, 1)  0.0000000000000079
+ *
+ *  (7,-1)  0.0000000000000000
+ *  (7, 0)  0.0000000000000001
+ *  (7, 1)  0.0000000000000000
+ *
+ *  p_sum   0.9999999999999998
+ *
+ * entropy = 1.0195 bits/tuple (521 bits)
+ */
+
+#include "bliss_huffman_code.h"
+
+static bliss_huffman_code_node_t nodes[] = {
+       {   1,   2,  -1 },  /*   0: */
+       {  -1,  -1,   1 },  /*   1: (0, 0)  1 bit  */
+       {   3,   4,  -1 },  /*   2: */
+       {  -1,  -1,   4 },  /*   3: (1, 0)  2 bits */
+       {   5,  46,  -1 },  /*   4: */
+       {   6,  45,  -1 },  /*   5: */
+       {   7,   8,  -1 },  /*   6: */
+       {  -1,  -1,   0 },  /*   7: (0,-1)  5 bits */
+       {   9,  44,  -1 },  /*   8: */
+       {  10,  11,  -1 },  /*   9: */
+       {  -1,  -1,   3 },  /*  10: (1,-1)  7 bits */
+       {  12,  13,  -1 },  /*  11: */
+       {  -1,  -1,  10 },  /*  12: (3, 0)  8 bits */
+       {  14,  29,  -1 },  /*  13: */
+       {  15,  22,  -1 },  /*  14: */
+       {  16,  19,  -1 },  /*  15: */
+       {  17,  18,  -1 },  /*  16: */
+       {  -1,  -1,   8 },  /*  17: (2, 1) 12 bits */
+       {  -1,  -1,   6 },  /*  18: (2,-1) 12 bits */
+       {  20,  21,  -1 },  /*  19: */
+       {  -1,  -1,  11 },  /*  20: (3, 1) 12 bits */
+       {  -1,  -1,   9 },  /*  21: (3,-1) 12 bits */
+       {  23,  26,  -1 },  /*  22: */
+       {  24,  25,  -1 },  /*  23: */
+       {  -1,  -1,  13 },  /*  24: (4, 0) 12 bits */
+       {  -1,  -1,  14 },  /*  25: (4, 1) 12 bits */
+       {  27,  28,  -1 },  /*  26: */
+       {  -1,  -1,  12 },  /*  27: (4,-1) 12 bits */
+       {  -1,  -1,  16 },  /*  28: (5, 0) 12 bits */
+       {  30,  37,  -1 },  /*  29: */
+       {  31,  34,  -1 },  /*  30: */
+       {  32,  33,  -1 },  /*  31: */
+       {  -1,  -1,  17 },  /*  32: (5, 1) 12 bits */
+       {  -1,  -1,  15 },  /*  33: (5,-1) 12 bits */
+       {  35,  36,  -1 },  /*  34: */
+       {  -1,  -1,  19 },  /*  35: (6, 0) 12 bits */
+       {  -1,  -1,  20 },  /*  36: (6, 1) 12 bits */
+       {  38,  41,  -1 },  /*  37: */
+       {  39,  40,  -1 },  /*  38: */
+       {  -1,  -1,  18 },  /*  39: (6,-1) 12 bits */
+       {  -1,  -1,  22 },  /*  40: (7, 0) 12 bits */
+       {  42,  43,  -1 },  /*  41: */
+       {  -1,  -1,  23 },  /*  42: (7, 1) 12 bits */
+       {  -1,  -1,  21 },  /*  43: (7,-1) 12 bits */
+       {  -1,  -1,   5 },  /*  44: (1, 1)  6 bits */
+       {  -1,  -1,   2 },  /*  45: (0, 1)  4 bits */
+       {  -1,  -1,   7 },  /*  46: (2, 0)  3 bits */
+};
+
+static bliss_huffman_code_tuple_t tuples[] = {
+       {    24,  5 },  /*   0: (0,-1) 11000 */
+       {     0,  1 },  /*   1: (0, 0) 0 */
+       {    13,  4 },  /*   2: (0, 1) 1101 */
+
+       {   100,  7 },  /*   3: (1,-1) 1100100 */
+       {     2,  2 },  /*   4: (1, 0) 10 */
+       {    51,  6 },  /*   5: (1, 1) 110011 */
+
+       {  3249, 12 },  /*   6: (2,-1) 110010110001 */
+       {     7,  3 },  /*   7: (2, 0) 111 */
+       {  3248, 12 },  /*   8: (2, 1) 110010110000 */
+
+       {  3251, 12 },  /*   9: (3,-1) 110010110011 */
+       {   202,  8 },  /*  10: (3, 0) 11001010 */
+       {  3250, 12 },  /*  11: (3, 1) 110010110010 */
+
+       {  3254, 12 },  /*  12: (4,-1) 110010110110 */
+       {  3252, 12 },  /*  13: (4, 0) 110010110100 */
+       {  3253, 12 },  /*  14: (4, 1) 110010110101 */
+
+       {  3257, 12 },  /*  15: (5,-1) 110010111001 */
+       {  3255, 12 },  /*  16: (5, 0) 110010110111 */
+       {  3256, 12 },  /*  17: (5, 1) 110010111000 */
+
+       {  3260, 12 },  /*  18: (6,-1) 110010111100 */
+       {  3258, 12 },  /*  19: (6, 0) 110010111010 */
+       {  3259, 12 },  /*  20: (6, 1) 110010111011 */
+
+       {  3263, 12 },  /*  21: (7,-1) 110010111111 */
+       {  3261, 12 },  /*  22: (7, 0) 110010111101 */
+       {  3262, 12 },  /*  23: (7, 1) 110010111110 */
+};
+
+/* code_length = 1.3189 bits/tuple (676 bits) */
+
+bliss_huffman_code_t bliss_huffman_code_1 = {
+       .n_z1 = 8,
+       .n_z2 = 2,
+       .tuples = tuples,
+       .nodes  = nodes
+};
diff --git a/src/libstrongswan/plugins/bliss/bliss_huffman_code_3.c b/src/libstrongswan/plugins/bliss/bliss_huffman_code_3.c
new file mode 100644 (file)
index 0000000..37a8084
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2014 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * Optimum Huffman code for BLISS-X signatures
+ *
+ * This file has been automatically generated by the bliss_huffman utility
+ * Do not edit manually!
+ */
+
+/*
+ * Design: sigma = 250
+ *
+ *   i  p_z1[i]
+ *   0  0.6941647250930416         0 ..  256
+ *   1  0.2652752755116807       256 ..  512
+ *   2  0.0384337021454129       512 ..  768
+ *   3  0.0020842622589255       768 .. 1024
+ *   4  0.0000417294572050      1024 .. 1280
+ *   5  0.0000003047309681      1280 .. 1536
+ *   6  0.0000000008027661      1536 .. 1760
+ *
+ *   k  p_z2[k]  dx = 512
+ *  -3  0.0000001543959154   -1791.5 ..-1279.5
+ *  -2  0.0010701394583782   -1279.5 .. -767.5
+ *  -1  0.1523201563502276    -767.5 .. -255.5
+ *   0  0.6932190995909575    -255.5 ..  255.5
+ *   1  0.1523201563502276     255.5 ..  767.5
+ *   2  0.0010701394583782     767.5 .. 1279.5
+ *   3  0.0000001543959154    1279.5 .. 1791.5
+ *
+ *  (i, k)  p
+ *  (0,-3)  0.0000001071761982
+ *  (0,-2)  0.0007428530629363
+ *  (0,-1)  0.1057352794589848
+ *  (0, 0)  0.4812082456968029
+ *  (0, 1)  0.1057352794589848
+ *  (0, 2)  0.0007428530629363
+ *  (0, 3)  0.0000001071761982
+ *
+ *  (1,-3)  0.0000000409574190
+ *  (1,-2)  0.0002838815396572
+ *  (1,-1)  0.0404067714417889
+ *  (1, 0)  0.1838938876339505
+ *  (1, 1)  0.0404067714417889
+ *  (1, 2)  0.0002838815396572
+ *  (1, 3)  0.0000000409574190
+ *
+ *  (2,-3)  0.0000000059340066
+ *  (2,-2)  0.0000411294211974
+ *  (2,-1)  0.0058542275199074
+ *  (2, 0)  0.0266429763951902
+ *  (2, 1)  0.0058542275199074
+ *  (2, 2)  0.0000411294211974
+ *  (2, 3)  0.0000000059340066
+ *
+ *  (3,-3)  0.0000000003218016
+ *  (3,-2)  0.0000022304512849
+ *  (3,-1)  0.0003174751531544
+ *  (3, 0)  0.0014448504064437
+ *  (3, 1)  0.0003174751531544
+ *  (3, 2)  0.0000022304512849
+ *  (3, 3)  0.0000000003218016
+ *
+ *  (4,-3)  0.0000000000064429
+ *  (4,-2)  0.0000000446563387
+ *  (4,-1)  0.0000063562374459
+ *  (4, 0)  0.0000289276567501
+ *  (4, 1)  0.0000063562374459
+ *  (4, 2)  0.0000000446563387
+ *  (4, 3)  0.0000000000064429
+ *
+ *  (5,-3)  0.0000000000000470
+ *  (5,-2)  0.0000000003261046
+ *  (5,-1)  0.0000000464166687
+ *  (5, 0)  0.0000002112453273
+ *  (5, 1)  0.0000000464166687
+ *  (5, 2)  0.0000000003261046
+ *  (5, 3)  0.0000000000000470
+ *
+ *  (6,-3)  0.0000000000000001
+ *  (6,-2)  0.0000000000008591
+ *  (6,-1)  0.0000000001222775
+ *  (6, 0)  0.0000000005564928
+ *  (6, 1)  0.0000000001222775
+ *  (6, 2)  0.0000000000008591
+ *  (6, 3)  0.0000000000000001
+ *
+ *  p_sum   0.9999999999999999
+ *
+ * entropy = 2.2879 bits/tuple (1171 bits)
+ */
+
+#include "bliss_huffman_code.h"
+
+static bliss_huffman_code_node_t nodes[] = {
+       {   1,  96,  -1 },  /*   0: */
+       {   2,  93,  -1 },  /*   1: */
+       {   3,   4,  -1 },  /*   2: */
+       {  -1,  -1,  10 },  /*   3: (1, 0)  3 bits */
+       {   5,   8,  -1 },  /*   4: */
+       {   6,   7,  -1 },  /*   5: */
+       {  -1,  -1,  11 },  /*   6: (1, 1)  5 bits */
+       {  -1,  -1,   9 },  /*   7: (1,-1)  5 bits */
+       {   9,  10,  -1 },  /*   8: */
+       {  -1,  -1,  17 },  /*   9: (2, 0)  5 bits */
+       {  11,  92,  -1 },  /*  10: */
+       {  12,  13,  -1 },  /*  11: */
+       {  -1,  -1,  16 },  /*  12: (2,-1)  7 bits */
+       {  14,  89,  -1 },  /*  13: */
+       {  15,  16,  -1 },  /*  14: */
+       {  -1,  -1,  24 },  /*  15: (3, 0)  9 bits */
+       {  17,  86,  -1 },  /*  16: */
+       {  18,  85,  -1 },  /*  17: */
+       {  19,  20,  -1 },  /*  18: */
+       {  -1,  -1,   8 },  /*  19: (1,-2) 12 bits */
+       {  21,  84,  -1 },  /*  20: */
+       {  22,  53,  -1 },  /*  21: */
+       {  23,  38,  -1 },  /*  22: */
+       {  24,  31,  -1 },  /*  23: */
+       {  25,  28,  -1 },  /*  24: */
+       {  26,  27,  -1 },  /*  25: */
+       {  -1,  -1,  15 },  /*  26: (2,-2) 18 bits */
+       {  -1,  -1,  31 },  /*  27: (4, 0) 18 bits */
+       {  29,  30,  -1 },  /*  28: */
+       {  -1,  -1,  32 },  /*  29: (4, 1) 18 bits */
+       {  -1,  -1,  30 },  /*  30: (4,-1) 18 bits */
+       {  32,  35,  -1 },  /*  31: */
+       {  33,  34,  -1 },  /*  32: */
+       {  -1,  -1,  26 },  /*  33: (3, 2) 18 bits */
+       {  -1,  -1,  22 },  /*  34: (3,-2) 18 bits */
+       {  36,  37,  -1 },  /*  35: */
+       {  -1,  -1,  38 },  /*  36: (5, 0) 18 bits */
+       {  -1,  -1,   6 },  /*  37: (0, 3) 18 bits */
+       {  39,  46,  -1 },  /*  38: */
+       {  40,  43,  -1 },  /*  39: */
+       {  41,  42,  -1 },  /*  40: */
+       {  -1,  -1,   0 },  /*  41: (0,-3) 18 bits */
+       {  -1,  -1,  39 },  /*  42: (5, 1) 18 bits */
+       {  44,  45,  -1 },  /*  43: */
+       {  -1,  -1,  37 },  /*  44: (5,-1) 18 bits */
+       {  -1,  -1,  33 },  /*  45: (4, 2) 18 bits */
+       {  47,  50,  -1 },  /*  46: */
+       {  48,  49,  -1 },  /*  47: */
+       {  -1,  -1,  29 },  /*  48: (4,-2) 18 bits */
+       {  -1,  -1,  13 },  /*  49: (1, 3) 18 bits */
+       {  51,  52,  -1 },  /*  50: */
+       {  -1,  -1,   7 },  /*  51: (1,-3) 18 bits */
+       {  -1,  -1,  20 },  /*  52: (2, 3) 18 bits */
+       {  54,  69,  -1 },  /*  53: */
+       {  55,  62,  -1 },  /*  54: */
+       {  56,  59,  -1 },  /*  55: */
+       {  57,  58,  -1 },  /*  56: */
+       {  -1,  -1,  14 },  /*  57: (2,-3) 18 bits */
+       {  -1,  -1,  45 },  /*  58: (6, 0) 18 bits */
+       {  60,  61,  -1 },  /*  59: */
+       {  -1,  -1,  40 },  /*  60: (5, 2) 18 bits */
+       {  -1,  -1,  36 },  /*  61: (5,-2) 18 bits */
+       {  63,  66,  -1 },  /*  62: */
+       {  64,  65,  -1 },  /*  63: */
+       {  -1,  -1,  27 },  /*  64: (3, 3) 18 bits */
+       {  -1,  -1,  21 },  /*  65: (3,-3) 18 bits */
+       {  67,  68,  -1 },  /*  66: */
+       {  -1,  -1,  46 },  /*  67: (6, 1) 18 bits */
+       {  -1,  -1,  44 },  /*  68: (6,-1) 18 bits */
+       {  70,  77,  -1 },  /*  69: */
+       {  71,  74,  -1 },  /*  70: */
+       {  72,  73,  -1 },  /*  71: */
+       {  -1,  -1,  34 },  /*  72: (4, 3) 18 bits */
+       {  -1,  -1,  28 },  /*  73: (4,-3) 18 bits */
+       {  75,  76,  -1 },  /*  74: */
+       {  -1,  -1,  47 },  /*  75: (6, 2) 18 bits */
+       {  -1,  -1,  43 },  /*  76: (6,-2) 18 bits */
+       {  78,  81,  -1 },  /*  77: */
+       {  79,  80,  -1 },  /*  78: */
+       {  -1,  -1,  41 },  /*  79: (5, 3) 18 bits */
+       {  -1,  -1,  35 },  /*  80: (5,-3) 18 bits */
+       {  82,  83,  -1 },  /*  81: */
+       {  -1,  -1,  48 },  /*  82: (6, 3) 18 bits */
+       {  -1,  -1,  42 },  /*  83: (6,-3) 18 bits */
+       {  -1,  -1,  19 },  /*  84: (2, 2) 13 bits */
+       {  -1,  -1,  25 },  /*  85: (3, 1) 11 bits */
+       {  87,  88,  -1 },  /*  86: */
+       {  -1,  -1,  23 },  /*  87: (3,-1) 11 bits */
+       {  -1,  -1,  12 },  /*  88: (1, 2) 11 bits */
+       {  90,  91,  -1 },  /*  89: */
+       {  -1,  -1,   5 },  /*  90: (0, 2)  9 bits */
+       {  -1,  -1,   1 },  /*  91: (0,-2)  9 bits */
+       {  -1,  -1,  18 },  /*  92: (2, 1)  6 bits */
+       {  94,  95,  -1 },  /*  93: */
+       {  -1,  -1,   4 },  /*  94: (0, 1)  3 bits */
+       {  -1,  -1,   2 },  /*  95: (0,-1)  3 bits */
+       {  -1,  -1,   3 },  /*  96: (0, 0)  1 bit  */
+};
+
+static bliss_huffman_code_tuple_t tuples[] = {
+       { 59976, 18 },  /*   0: (0,-3) 001110101001001000 */
+       {   119,  9 },  /*   1: (0,-2) 001110111 */
+       {     3,  3 },  /*   2: (0,-1) 011 */
+       {     1,  1 },  /*   3: (0, 0) 1 */
+       {     2,  3 },  /*   4: (0, 1) 010 */
+       {   118,  9 },  /*   5: (0, 2) 001110110 */
+       { 59975, 18 },  /*   6: (0, 3) 001110101001000111 */
+
+       { 59982, 18 },  /*   7: (1,-3) 001110101001001110 */
+       {   936, 12 },  /*   8: (1,-2) 001110101000 */
+       {     5,  5 },  /*   9: (1,-1) 00101 */
+       {     0,  3 },  /*  10: (1, 0) 000 */
+       {     4,  5 },  /*  11: (1, 1) 00100 */
+       {   471, 11 },  /*  12: (1, 2) 00111010111 */
+       { 59981, 18 },  /*  13: (1, 3) 001110101001001101 */
+
+       { 59984, 18 },  /*  14: (2,-3) 001110101001010000 */
+       { 59968, 18 },  /*  15: (2,-2) 001110101001000000 */
+       {    28,  7 },  /*  16: (2,-1) 0011100 */
+       {     6,  5 },  /*  17: (2, 0) 00110 */
+       {    15,  6 },  /*  18: (2, 1) 001111 */
+       {  1875, 13 },  /*  19: (2, 2) 0011101010011 */
+       { 59983, 18 },  /*  20: (2, 3) 001110101001001111 */
+
+       { 59989, 18 },  /*  21: (3,-3) 001110101001010101 */
+       { 59973, 18 },  /*  22: (3,-2) 001110101001000101 */
+       {   470, 11 },  /*  23: (3,-1) 00111010110 */
+       {   116,  9 },  /*  24: (3, 0) 001110100 */
+       {   469, 11 },  /*  25: (3, 1) 00111010101 */
+       { 59972, 18 },  /*  26: (3, 2) 001110101001000100 */
+       { 59988, 18 },  /*  27: (3, 3) 001110101001010100 */
+
+       { 59993, 18 },  /*  28: (4,-3) 001110101001011001 */
+       { 59980, 18 },  /*  29: (4,-2) 001110101001001100 */
+       { 59971, 18 },  /*  30: (4,-1) 001110101001000011 */
+       { 59969, 18 },  /*  31: (4, 0) 001110101001000001 */
+       { 59970, 18 },  /*  32: (4, 1) 001110101001000010 */
+       { 59979, 18 },  /*  33: (4, 2) 001110101001001011 */
+       { 59992, 18 },  /*  34: (4, 3) 001110101001011000 */
+
+       { 59997, 18 },  /*  35: (5,-3) 001110101001011101 */
+       { 59987, 18 },  /*  36: (5,-2) 001110101001010011 */
+       { 59978, 18 },  /*  37: (5,-1) 001110101001001010 */
+       { 59974, 18 },  /*  38: (5, 0) 001110101001000110 */
+       { 59977, 18 },  /*  39: (5, 1) 001110101001001001 */
+       { 59986, 18 },  /*  40: (5, 2) 001110101001010010 */
+       { 59996, 18 },  /*  41: (5, 3) 001110101001011100 */
+
+       { 59999, 18 },  /*  42: (6,-3) 001110101001011111 */
+       { 59995, 18 },  /*  43: (6,-2) 001110101001011011 */
+       { 59991, 18 },  /*  44: (6,-1) 001110101001010111 */
+       { 59985, 18 },  /*  45: (6, 0) 001110101001010001 */
+       { 59990, 18 },  /*  46: (6, 1) 001110101001010110 */
+       { 59994, 18 },  /*  47: (6, 2) 001110101001011010 */
+       { 59998, 18 },  /*  48: (6, 3) 001110101001011110 */
+};
+
+/* code_length = 2.3227 bits/tuple (1190 bits) */
+
+bliss_huffman_code_t bliss_huffman_code_3 = {
+       .n_z1 = 7,
+       .n_z2 = 4,
+       .tuples = tuples,
+       .nodes  = nodes
+};
diff --git a/src/libstrongswan/plugins/bliss/bliss_huffman_code_4.c b/src/libstrongswan/plugins/bliss/bliss_huffman_code_4.c
new file mode 100644 (file)
index 0000000..c4f709c
--- /dev/null
@@ -0,0 +1,435 @@
+/*
+ * Copyright (C) 2014 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * Optimum Huffman code for BLISS-X signatures
+ *
+ * This file has been automatically generated by the bliss_huffman utility
+ * Do not edit manually!
+ */
+
+/*
+ * Design: sigma = 271
+ *
+ *   i  p_z1[i]
+ *   0  0.6551621276225426         0 ..  256
+ *   1  0.2859860850630749       256 ..  512
+ *   2  0.0542541135599810       512 ..  768
+ *   3  0.0044399624814222       768 .. 1024
+ *   4  0.0001553928373912      1024 .. 1280
+ *   5  0.0000023066278552      1280 .. 1536
+ *   6  0.0000000118077330      1536 .. 1613
+ *
+ *   k  p_z2[k]  dx = 256
+ *  -6  0.0000001026458579   -1663.5 ..-1407.5
+ *  -5  0.0000106295703648   -1407.5 ..-1151.5
+ *  -4  0.0004651193817805   -1151.5 .. -895.5
+ *  -3  0.0086670703658387    -895.5 .. -639.5
+ *  -2  0.0693723939195647    -639.5 .. -383.5
+ *  -1  0.2404908493690626    -383.5 .. -127.5
+ *   0  0.3619876694950614    -127.5 ..  127.5
+ *   1  0.2404908493690626     127.5 ..  383.5
+ *   2  0.0693723939195647     383.5 ..  639.5
+ *   3  0.0086670703658387     639.5 ..  895.5
+ *   4  0.0004651193817805     895.5 .. 1151.5
+ *   5  0.0000106295703648    1151.5 .. 1407.5
+ *   6  0.0000001026458579    1407.5 .. 1663.5
+ *
+ *  (i, k)  p
+ *  (0,-6)  0.0000000672496787
+ *  (0,-5)  0.0000069640919359
+ *  (0,-4)  0.0003047286037658
+ *  (0,-3)  0.0056783362611372
+ *  (0,-2)  0.0454501651986111
+ *  (0,-1)  0.1575604965463875
+ *  (0, 0)  0.2371606117195102
+ *  (0, 1)  0.1575604965463875
+ *  (0, 2)  0.0454501651986111
+ *  (0, 3)  0.0056783362611372
+ *  (0, 4)  0.0003047286037658
+ *  (0, 5)  0.0000069640919359
+ *  (0, 6)  0.0000000672496787
+ *
+ *  (1,-6)  0.0000000293552870
+ *  (1,-5)  0.0000030399092145
+ *  (1,-4)  0.0001330176710824
+ *  (1,-3)  0.0024786615228924
+ *  (1,-2)  0.0198395393485098
+ *  (1,-1)  0.0687770365045519
+ *  (1, 0)  0.1035234364399989
+ *  (1, 1)  0.0687770365045519
+ *  (1, 2)  0.0198395393485098
+ *  (1, 3)  0.0024786615228924
+ *  (1, 4)  0.0001330176710824
+ *  (1, 5)  0.0000030399092145
+ *  (1, 6)  0.0000000293552870
+ *
+ *  (2,-6)  0.0000000055689600
+ *  (2,-5)  0.0000005766979177
+ *  (2,-4)  0.0000252346397581
+ *  (2,-3)  0.0004702242198606
+ *  (2,-2)  0.0037637377376398
+ *  (2,-1)  0.0130476178518054
+ *  (2, 0)  0.0196393201280979
+ *  (2, 1)  0.0130476178518054
+ *  (2, 2)  0.0037637377376398
+ *  (2, 3)  0.0004702242198606
+ *  (2, 4)  0.0000252346397581
+ *  (2, 5)  0.0000005766979177
+ *  (2, 6)  0.0000000055689600
+ *
+ *  (3,-6)  0.0000000004557438
+ *  (3,-5)  0.0000000471948936
+ *  (3,-4)  0.0000020651126045
+ *  (3,-3)  0.0000384814672482
+ *  (3,-2)  0.0003080108262493
+ *  (3,-1)  0.0010677703483240
+ *  (3, 0)  0.0016072116712955
+ *  (3, 1)  0.0010677703483240
+ *  (3, 2)  0.0003080108262493
+ *  (3, 3)  0.0000384814672482
+ *  (3, 4)  0.0000020651126045
+ *  (3, 5)  0.0000000471948936
+ *  (3, 6)  0.0000000004557438
+ *
+ *  (4,-6)  0.0000000000159504
+ *  (4,-5)  0.0000000016517591
+ *  (4,-4)  0.0000000722762205
+ *  (4,-3)  0.0000013468006560
+ *  (4,-2)  0.0000107799731278
+ *  (4,-1)  0.0000373705554501
+ *  (4, 0)  0.0000562502910635
+ *  (4, 1)  0.0000373705554501
+ *  (4, 2)  0.0000107799731278
+ *  (4, 3)  0.0000013468006560
+ *  (4, 4)  0.0000000722762205
+ *  (4, 5)  0.0000000016517591
+ *  (4, 6)  0.0000000000159504
+ *
+ *  (5,-6)  0.0000000000002368
+ *  (5,-5)  0.0000000000245185
+ *  (5,-4)  0.0000000010728573
+ *  (5,-3)  0.0000000199917059
+ *  (5,-2)  0.0000001600162962
+ *  (5,-1)  0.0000005547228921
+ *  (5, 0)  0.0000008349708417
+ *  (5, 1)  0.0000005547228921
+ *  (5, 2)  0.0000001600162962
+ *  (5, 3)  0.0000000199917059
+ *  (5, 4)  0.0000000010728573
+ *  (5, 5)  0.0000000000245185
+ *  (5, 6)  0.0000000000002368
+ *
+ *  (6,-6)  0.0000000000000012
+ *  (6,-5)  0.0000000000001255
+ *  (6,-4)  0.0000000000054920
+ *  (6,-3)  0.0000000001023385
+ *  (6,-2)  0.0000000008191307
+ *  (6,-1)  0.0000000028396517
+ *  (6, 0)  0.0000000042742538
+ *  (6, 1)  0.0000000028396517
+ *  (6, 2)  0.0000000008191307
+ *  (6, 3)  0.0000000001023385
+ *  (6, 4)  0.0000000000054920
+ *  (6, 5)  0.0000000000001255
+ *  (6, 6)  0.0000000000000012
+ *
+ *  p_sum   1.0000000000000011
+ *
+ * entropy = 3.3640 bits/tuple (1722 bits)
+ */
+
+#include "bliss_huffman_code.h"
+
+static bliss_huffman_code_node_t nodes[] = {
+       {   1, 160,  -1 },  /*   0: */
+       {   2,   5,  -1 },  /*   1: */
+       {   3,   4,  -1 },  /*   2: */
+       {  -1,  -1,   7 },  /*   3: (0, 1)  3 bits */
+       {  -1,  -1,   5 },  /*   4: (0,-1)  3 bits */
+       {   6, 157,  -1 },  /*   5: */
+       {   7, 156,  -1 },  /*   6: */
+       {   8,  11,  -1 },  /*   7: */
+       {   9,  10,  -1 },  /*   8: */
+       {  -1,  -1,  17 },  /*   9: (1,-2)  6 bits */
+       {  -1,  -1,  32 },  /*  10: (2, 0)  6 bits */
+       {  12, 155,  -1 },  /*  11: */
+       {  13,  18,  -1 },  /*  12: */
+       {  14,  15,  -1 },  /*  13: */
+       {  -1,  -1,   3 },  /*  14: (0,-3)  8 bits */
+       {  16,  17,  -1 },  /*  15: */
+       {  -1,  -1,  22 },  /*  16: (1, 3)  9 bits */
+       {  -1,  -1,  16 },  /*  17: (1,-3)  9 bits */
+       {  19, 154,  -1 },  /*  18: */
+       {  20,  23,  -1 },  /*  19: */
+       {  21,  22,  -1 },  /*  20: */
+       {  -1,  -1,  46 },  /*  21: (3, 1) 10 bits */
+       {  -1,  -1,  44 },  /*  22: (3,-1) 10 bits */
+       {  24, 151,  -1 },  /*  23: */
+       {  25,  88,  -1 },  /*  24: */
+       {  26,  57,  -1 },  /*  25: */
+       {  27,  42,  -1 },  /*  26: */
+       {  28,  35,  -1 },  /*  27: */
+       {  29,  32,  -1 },  /*  28: */
+       {  30,  31,  -1 },  /*  29: */
+       {  -1,  -1,   2 },  /*  30: (0,-4) 16 bits */
+       {  -1,  -1,  23 },  /*  31: (1, 4) 16 bits */
+       {  33,  34,  -1 },  /*  32: */
+       {  -1,  -1,  15 },  /*  33: (1,-4) 16 bits */
+       {  -1,  -1,  58 },  /*  34: (4, 0) 16 bits */
+       {  36,  39,  -1 },  /*  35: */
+       {  37,  38,  -1 },  /*  36: */
+       {  -1,  -1,  48 },  /*  37: (3, 3) 16 bits */
+       {  -1,  -1,  42 },  /*  38: (3,-3) 16 bits */
+       {  40,  41,  -1 },  /*  39: */
+       {  -1,  -1,  59 },  /*  40: (4, 1) 16 bits */
+       {  -1,  -1,  57 },  /*  41: (4,-1) 16 bits */
+       {  43,  50,  -1 },  /*  42: */
+       {  44,  47,  -1 },  /*  43: */
+       {  45,  46,  -1 },  /*  44: */
+       {  -1,  -1,  36 },  /*  45: (2, 4) 16 bits */
+       {  -1,  -1,  28 },  /*  46: (2,-4) 16 bits */
+       {  48,  49,  -1 },  /*  47: */
+       {  -1,  -1,  60 },  /*  48: (4, 2) 16 bits */
+       {  -1,  -1,  56 },  /*  49: (4,-2) 16 bits */
+       {  51,  54,  -1 },  /*  50: */
+       {  52,  53,  -1 },  /*  51: */
+       {  -1,  -1,  11 },  /*  52: (0, 5) 16 bits */
+       {  -1,  -1,   1 },  /*  53: (0,-5) 16 bits */
+       {  55,  56,  -1 },  /*  54: */
+       {  -1,  -1,  24 },  /*  55: (1, 5) 16 bits */
+       {  -1,  -1,  14 },  /*  56: (1,-5) 16 bits */
+       {  58,  73,  -1 },  /*  57: */
+       {  59,  66,  -1 },  /*  58: */
+       {  60,  63,  -1 },  /*  59: */
+       {  61,  62,  -1 },  /*  60: */
+       {  -1,  -1,  49 },  /*  61: (3, 4) 16 bits */
+       {  -1,  -1,  41 },  /*  62: (3,-4) 16 bits */
+       {  64,  65,  -1 },  /*  63: */
+       {  -1,  -1,  61 },  /*  64: (4, 3) 16 bits */
+       {  -1,  -1,  55 },  /*  65: (4,-3) 16 bits */
+       {  67,  70,  -1 },  /*  66: */
+       {  68,  69,  -1 },  /*  67: */
+       {  -1,  -1,  71 },  /*  68: (5, 0) 16 bits */
+       {  -1,  -1,  37 },  /*  69: (2, 5) 16 bits */
+       {  71,  72,  -1 },  /*  70: */
+       {  -1,  -1,  27 },  /*  71: (2,-5) 16 bits */
+       {  -1,  -1,  72 },  /*  72: (5, 1) 16 bits */
+       {  74,  81,  -1 },  /*  73: */
+       {  75,  78,  -1 },  /*  74: */
+       {  76,  77,  -1 },  /*  75: */
+       {  -1,  -1,  70 },  /*  76: (5,-1) 16 bits */
+       {  -1,  -1,  73 },  /*  77: (5, 2) 16 bits */
+       {  79,  80,  -1 },  /*  78: */
+       {  -1,  -1,  69 },  /*  79: (5,-2) 16 bits */
+       {  -1,  -1,  62 },  /*  80: (4, 4) 16 bits */
+       {  82,  85,  -1 },  /*  81: */
+       {  83,  84,  -1 },  /*  82: */
+       {  -1,  -1,  54 },  /*  83: (4,-4) 16 bits */
+       {  -1,  -1,  12 },  /*  84: (0, 6) 16 bits */
+       {  86,  87,  -1 },  /*  85: */
+       {  -1,  -1,   0 },  /*  86: (0,-6) 16 bits */
+       {  -1,  -1,  50 },  /*  87: (3, 5) 16 bits */
+       {  89, 120,  -1 },  /*  88: */
+       {  90, 105,  -1 },  /*  89: */
+       {  91,  98,  -1 },  /*  90: */
+       {  92,  95,  -1 },  /*  91: */
+       {  93,  94,  -1 },  /*  92: */
+       {  -1,  -1,  40 },  /*  93: (3,-5) 16 bits */
+       {  -1,  -1,  25 },  /*  94: (1, 6) 16 bits */
+       {  96,  97,  -1 },  /*  95: */
+       {  -1,  -1,  13 },  /*  96: (1,-6) 16 bits */
+       {  -1,  -1,  74 },  /*  97: (5, 3) 16 bits */
+       {  99, 102,  -1 },  /*  98: */
+       { 100, 101,  -1 },  /*  99: */
+       {  -1,  -1,  68 },  /* 100: (5,-3) 16 bits */
+       {  -1,  -1,  38 },  /* 101: (2, 6) 16 bits */
+       { 103, 104,  -1 },  /* 102: */
+       {  -1,  -1,  26 },  /* 103: (2,-6) 16 bits */
+       {  -1,  -1,  84 },  /* 104: (6, 0) 16 bits */
+       { 106, 113,  -1 },  /* 105: */
+       { 107, 110,  -1 },  /* 106: */
+       { 108, 109,  -1 },  /* 107: */
+       {  -1,  -1,  85 },  /* 108: (6, 1) 16 bits */
+       {  -1,  -1,  83 },  /* 109: (6,-1) 16 bits */
+       { 111, 112,  -1 },  /* 110: */
+       {  -1,  -1,  63 },  /* 111: (4, 5) 16 bits */
+       {  -1,  -1,  53 },  /* 112: (4,-5) 16 bits */
+       { 114, 117,  -1 },  /* 113: */
+       { 115, 116,  -1 },  /* 114: */
+       {  -1,  -1,  75 },  /* 115: (5, 4) 16 bits */
+       {  -1,  -1,  67 },  /* 116: (5,-4) 16 bits */
+       { 118, 119,  -1 },  /* 117: */
+       {  -1,  -1,  86 },  /* 118: (6, 2) 16 bits */
+       {  -1,  -1,  82 },  /* 119: (6,-2) 16 bits */
+       { 121, 136,  -1 },  /* 120: */
+       { 122, 129,  -1 },  /* 121: */
+       { 123, 126,  -1 },  /* 122: */
+       { 124, 125,  -1 },  /* 123: */
+       {  -1,  -1,  51 },  /* 124: (3, 6) 16 bits */
+       {  -1,  -1,  39 },  /* 125: (3,-6) 16 bits */
+       { 127, 128,  -1 },  /* 126: */
+       {  -1,  -1,  87 },  /* 127: (6, 3) 16 bits */
+       {  -1,  -1,  81 },  /* 128: (6,-3) 16 bits */
+       { 130, 133,  -1 },  /* 129: */
+       { 131, 132,  -1 },  /* 130: */
+       {  -1,  -1,  76 },  /* 131: (5, 5) 16 bits */
+       {  -1,  -1,  66 },  /* 132: (5,-5) 16 bits */
+       { 134, 135,  -1 },  /* 133: */
+       {  -1,  -1,  64 },  /* 134: (4, 6) 16 bits */
+       {  -1,  -1,  52 },  /* 135: (4,-6) 16 bits */
+       { 137, 144,  -1 },  /* 136: */
+       { 138, 141,  -1 },  /* 137: */
+       { 139, 140,  -1 },  /* 138: */
+       {  -1,  -1,  88 },  /* 139: (6, 4) 16 bits */
+       {  -1,  -1,  80 },  /* 140: (6,-4) 16 bits */
+       { 142, 143,  -1 },  /* 141: */
+       {  -1,  -1,  77 },  /* 142: (5, 6) 16 bits */
+       {  -1,  -1,  65 },  /* 143: (5,-6) 16 bits */
+       { 145, 148,  -1 },  /* 144: */
+       { 146, 147,  -1 },  /* 145: */
+       {  -1,  -1,  89 },  /* 146: (6, 5) 16 bits */
+       {  -1,  -1,  79 },  /* 147: (6,-5) 16 bits */
+       { 149, 150,  -1 },  /* 148: */
+       {  -1,  -1,  90 },  /* 149: (6, 6) 16 bits */
+       {  -1,  -1,  78 },  /* 150: (6,-6) 16 bits */
+       { 152, 153,  -1 },  /* 151: */
+       {  -1,  -1,  29 },  /* 152: (2,-3) 11 bits */
+       {  -1,  -1,  47 },  /* 153: (3, 2) 11 bits */
+       {  -1,  -1,  34 },  /* 154: (2, 2)  8 bits */
+       {  -1,  -1,  33 },  /* 155: (2, 1)  6 bits */
+       {  -1,  -1,  20 },  /* 156: (1, 1)  4 bits */
+       { 158, 159,  -1 },  /* 157: */
+       {  -1,  -1,  18 },  /* 158: (1,-1)  4 bits */
+       {  -1,  -1,   8 },  /* 159: (0, 2)  4 bits */
+       { 161, 162,  -1 },  /* 160: */
+       {  -1,  -1,   6 },  /* 161: (0, 0)  2 bits */
+       { 163, 164,  -1 },  /* 162: */
+       {  -1,  -1,  19 },  /* 163: (1, 0)  3 bits */
+       { 165, 166,  -1 },  /* 164: */
+       {  -1,  -1,   4 },  /* 165: (0,-2)  4 bits */
+       { 167, 180,  -1 },  /* 166: */
+       { 168, 169,  -1 },  /* 167: */
+       {  -1,  -1,  31 },  /* 168: (2,-1)  6 bits */
+       { 170, 179,  -1 },  /* 169: */
+       { 171, 172,  -1 },  /* 170: */
+       {  -1,  -1,  30 },  /* 171: (2,-2)  8 bits */
+       { 173, 174,  -1 },  /* 172: */
+       {  -1,  -1,  45 },  /* 173: (3, 0)  9 bits */
+       { 175, 178,  -1 },  /* 174: */
+       { 176, 177,  -1 },  /* 175: */
+       {  -1,  -1,  43 },  /* 176: (3,-2) 11 bits */
+       {  -1,  -1,  10 },  /* 177: (0, 4) 11 bits */
+       {  -1,  -1,  35 },  /* 178: (2, 3) 10 bits */
+       {  -1,  -1,   9 },  /* 179: (0, 3)  7 bits */
+       {  -1,  -1,  21 },  /* 180: (1, 2)  5 bits */
+};
+
+static bliss_huffman_code_tuple_t tuples[] = {
+       { 19102, 16 },  /*   0: (0,-6) 0100101010011110 */
+       { 19085, 16 },  /*   1: (0,-5) 0100101010001101 */
+       { 19072, 16 },  /*   2: (0,-4) 0100101010000000 */
+       {    72,  8 },  /*   3: (0,-3) 01001000 */
+       {    14,  4 },  /*   4: (0,-2) 1110 */
+       {     1,  3 },  /*   5: (0,-1) 001 */
+       {     2,  2 },  /*   6: (0, 0) 10 */
+       {     0,  3 },  /*   7: (0, 1) 000 */
+       {     7,  4 },  /*   8: (0, 2) 0111 */
+       {   123,  7 },  /*   9: (0, 3) 1111011 */
+       {  1965, 11 },  /*  10: (0, 4) 11110101101 */
+       { 19084, 16 },  /*  11: (0, 5) 0100101010001100 */
+       { 19101, 16 },  /*  12: (0, 6) 0100101010011101 */
+
+       { 19106, 16 },  /*  13: (1,-6) 0100101010100010 */
+       { 19087, 16 },  /*  14: (1,-5) 0100101010001111 */
+       { 19074, 16 },  /*  15: (1,-4) 0100101010000010 */
+       {   147,  9 },  /*  16: (1,-3) 010010011 */
+       {    16,  6 },  /*  17: (1,-2) 010000 */
+       {     6,  4 },  /*  18: (1,-1) 0110 */
+       {     6,  3 },  /*  19: (1, 0) 110 */
+       {     5,  4 },  /*  20: (1, 1) 0101 */
+       {    31,  5 },  /*  21: (1, 2) 11111 */
+       {   146,  9 },  /*  22: (1, 3) 010010010 */
+       { 19073, 16 },  /*  23: (1, 4) 0100101010000001 */
+       { 19086, 16 },  /*  24: (1, 5) 0100101010001110 */
+       { 19105, 16 },  /*  25: (1, 6) 0100101010100001 */
+
+       { 19110, 16 },  /*  26: (2,-6) 0100101010100110 */
+       { 19094, 16 },  /*  27: (2,-5) 0100101010010110 */
+       { 19081, 16 },  /*  28: (2,-4) 0100101010001001 */
+       {   598, 11 },  /*  29: (2,-3) 01001010110 */
+       {   244,  8 },  /*  30: (2,-2) 11110100 */
+       {    60,  6 },  /*  31: (2,-1) 111100 */
+       {    17,  6 },  /*  32: (2, 0) 010001 */
+       {    19,  6 },  /*  33: (2, 1) 010011 */
+       {    75,  8 },  /*  34: (2, 2) 01001011 */
+       {   983, 10 },  /*  35: (2, 3) 1111010111 */
+       { 19080, 16 },  /*  36: (2, 4) 0100101010001000 */
+       { 19093, 16 },  /*  37: (2, 5) 0100101010010101 */
+       { 19109, 16 },  /*  38: (2, 6) 0100101010100101 */
+
+       { 19121, 16 },  /*  39: (3,-6) 0100101010110001 */
+       { 19104, 16 },  /*  40: (3,-5) 0100101010100000 */
+       { 19089, 16 },  /*  41: (3,-4) 0100101010010001 */
+       { 19077, 16 },  /*  42: (3,-3) 0100101010000101 */
+       {  1964, 11 },  /*  43: (3,-2) 11110101100 */
+       {   297, 10 },  /*  44: (3,-1) 0100101001 */
+       {   490,  9 },  /*  45: (3, 0) 111101010 */
+       {   296, 10 },  /*  46: (3, 1) 0100101000 */
+       {   599, 11 },  /*  47: (3, 2) 01001010111 */
+       { 19076, 16 },  /*  48: (3, 3) 0100101010000100 */
+       { 19088, 16 },  /*  49: (3, 4) 0100101010010000 */
+       { 19103, 16 },  /*  50: (3, 5) 0100101010011111 */
+       { 19120, 16 },  /*  51: (3, 6) 0100101010110000 */
+
+       { 19127, 16 },  /*  52: (4,-6) 0100101010110111 */
+       { 19115, 16 },  /*  53: (4,-5) 0100101010101011 */
+       { 19100, 16 },  /*  54: (4,-4) 0100101010011100 */
+       { 19091, 16 },  /*  55: (4,-3) 0100101010010011 */
+       { 19083, 16 },  /*  56: (4,-2) 0100101010001011 */
+       { 19079, 16 },  /*  57: (4,-1) 0100101010000111 */
+       { 19075, 16 },  /*  58: (4, 0) 0100101010000011 */
+       { 19078, 16 },  /*  59: (4, 1) 0100101010000110 */
+       { 19082, 16 },  /*  60: (4, 2) 0100101010001010 */
+       { 19090, 16 },  /*  61: (4, 3) 0100101010010010 */
+       { 19099, 16 },  /*  62: (4, 4) 0100101010011011 */
+       { 19114, 16 },  /*  63: (4, 5) 0100101010101010 */
+       { 19126, 16 },  /*  64: (4, 6) 0100101010110110 */
+
+       { 19131, 16 },  /*  65: (5,-6) 0100101010111011 */
+       { 19125, 16 },  /*  66: (5,-5) 0100101010110101 */
+       { 19117, 16 },  /*  67: (5,-4) 0100101010101101 */
+       { 19108, 16 },  /*  68: (5,-3) 0100101010100100 */
+       { 19098, 16 },  /*  69: (5,-2) 0100101010011010 */
+       { 19096, 16 },  /*  70: (5,-1) 0100101010011000 */
+       { 19092, 16 },  /*  71: (5, 0) 0100101010010100 */
+       { 19095, 16 },  /*  72: (5, 1) 0100101010010111 */
+       { 19097, 16 },  /*  73: (5, 2) 0100101010011001 */
+       { 19107, 16 },  /*  74: (5, 3) 0100101010100011 */
+       { 19116, 16 },  /*  75: (5, 4) 0100101010101100 */
+       { 19124, 16 },  /*  76: (5, 5) 0100101010110100 */
+       { 19130, 16 },  /*  77: (5, 6) 0100101010111010 */
+
+       { 19135, 16 },  /*  78: (6,-6) 0100101010111111 */
+       { 19133, 16 },  /*  79: (6,-5) 0100101010111101 */
+       { 19129, 16 },  /*  80: (6,-4) 0100101010111001 */
+       { 19123, 16 },  /*  81: (6,-3) 0100101010110011 */
+       { 19119, 16 },  /*  82: (6,-2) 0100101010101111 */
+       { 19113, 16 },  /*  83: (6,-1) 0100101010101001 */
+       { 19111, 16 },  /*  84: (6, 0) 0100101010100111 */
+       { 19112, 16 },  /*  85: (6, 1) 0100101010101000 */
+       { 19118, 16 },  /*  86: (6, 2) 0100101010101110 */
+       { 19122, 16 },  /*  87: (6, 3) 0100101010110010 */
+       { 19128, 16 },  /*  88: (6, 4) 0100101010111000 */
+       { 19132, 16 },  /*  89: (6, 5) 0100101010111100 */
+       { 19134, 16 },  /*  90: (6, 6) 0100101010111110 */
+};
+
+/* code_length = 3.3967 bits/tuple (1740 bits) */
+
+bliss_huffman_code_t bliss_huffman_code_4 = {
+       .n_z1 = 7,
+       .n_z2 = 7,
+       .tuples = tuples,
+       .nodes  = nodes
+};