[dpdk-dev] [PATCH v1 2/3] net/tap: add eBPF instructions

Ophir Munk ophirmu at mellanox.com
Sun Dec 17 13:21:54 CET 2017


The C source file (tap_bpf_insns.c) includes eBPF "assembly
instructions" in the format of an array of struct bpf_insns.
This array is passed to the kernel for execution in BPF system call.
The C language source file (tap_bpf_program.c) from which the
"assembly instructions" were generated is included in TAP source tree,
however it does not take part in dpdk compilation.
TAP documentation details the process of eBPF "assembly instructions"
generation.

Signed-off-by: Ophir Munk <ophirmu at mellanox.com>
---
 drivers/net/tap/Makefile          |    1 +
 drivers/net/tap/tap_bpf_insns.c   | 5427 +++++++++++++++++++++++++++++++++++++
 drivers/net/tap/tap_bpf_program.c |  321 +++
 drivers/net/tap/tap_bpf_shared.h  |   40 +
 drivers/net/tap/tap_flow.c        |   11 +-
 5 files changed, 5799 insertions(+), 1 deletion(-)
 create mode 100644 drivers/net/tap/tap_bpf_insns.c
 create mode 100644 drivers/net/tap/tap_bpf_program.c
 create mode 100644 drivers/net/tap/tap_bpf_shared.h

diff --git a/drivers/net/tap/Makefile b/drivers/net/tap/Makefile
index 9afae5e..c334d90 100644
--- a/drivers/net/tap/Makefile
+++ b/drivers/net/tap/Makefile
@@ -59,6 +59,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += rte_eth_tap.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap_flow.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap_netlink.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap_tcmsgs.c
+SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap_bpf_insns.c
 
 include $(RTE_SDK)/mk/rte.lib.mk
 
diff --git a/drivers/net/tap/tap_bpf_insns.c b/drivers/net/tap/tap_bpf_insns.c
new file mode 100644
index 0000000..951d037
--- /dev/null
+++ b/drivers/net/tap/tap_bpf_insns.c
@@ -0,0 +1,5427 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright 2017 6WIND S.A.
+ *   Copyright 2017 Mellanox.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *     * Neither the name of 6WIND S.A. nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <asm/types.h>
+#include <unistd.h>
+#include <string.h>
+#include <linux/in.h>
+#include <linux/if.h>
+#include <linux/if_ether.h>
+#include <linux/ip.h>
+#include <linux/ipv6.h>
+#include <linux/if_tunnel.h>
+#include <linux/filter.h>
+#include <linux/bpf.h>
+
+#include "tap_bpf_shared.h"
+
+#define ERROR                   0
+
+/*
+ * The queue number is offset by 1, to distinguish packets that have
+ * gone through this rule (skb->cb[1] != 0) from others.
+ */
+#define QUEUE_OFFSET 1
+
+#define INV_KEY_IDX 0xdeadbeef
+
+/*
+ *
+ * __section("maps")
+ * struct bpf_elf_map map_keys = {
+ *	.type           =       BPF_MAP_TYPE_HASH,
+ *	.id             =       BPF_MAP_ID_KEY,
+ *	.size_key       =       sizeof(__u32),
+ *	.size_value     =       sizeof(struct rss_key),
+ *	.max_elem       =       256,
+ *	.pinning        =       PIN_GLOBAL_NS,
+ * };
+ */
+
+/*
+ * struct bpf_insn {
+ *	__u8    code;           opcode
+ *	__u8    dst_reg:4;      dest register
+ *	__u8    src_reg:4;      source register
+ *	__s16   off;            signed offset
+ *	__s32   imm;            signed immediate constant
+ * };
+ */
+
+/*
+ * The next bpf_insn array matches cls_q section
+ * see tap_bpf_program.c file
+ *
+ * __section("cls_q") int
+ * match_q (struct __sk_buff *skb)
+ * {
+ *	__u32 queue = skb->cb[1];
+ *	volatile __u32 q = INV_KEY_IDX;
+ *	__u32 match_queue = QUEUE_OFFSET + q;
+ *
+ *	if (queue != match_queue)
+ *		return TC_ACT_OK;
+ *	return TC_ACT_UNSPEC;
+ *
+ * }
+ */
+
+static struct bpf_insn cls_q_insns[] = {
+	{0x61,  1,  1,  52, 0x00000000},
+	{0x18,  2,  0,   0, 0xdeadbeef},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x63, 10,  2,  -4, 0x00000000},
+	{0x61,  2, 10,  -4, 0x00000000},
+	{0x07,  2,  0,   0, 0x00000001},
+	{0x67,  2,  0,   0, 0x00000020},
+	{0x77,  2,  0,   0, 0x00000020},
+	{0xb7,  0,  0,   0, 0xffffffff},
+	{0x1d,  1,  2,   1, 0x00000000},
+	{0xb7,  0,  0,   0, 0x00000000},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+
+#define CLS_Q_INSNS_CNT \
+	(sizeof(cls_q_insns) / sizeof(cls_q_insns[0]))
+
+/**
+ * Load BPF program (section cls_q) into the kernel and return a bpf fd
+ *
+ * @param queue_idx
+ *   Queue index matching packet cb
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_cls_q_insns(__u32 queue_idx)
+{
+	cls_q_insns[1].imm = queue_idx;
+
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)cls_q_insns,
+		CLS_Q_INSNS_CNT,
+		"GPL", 0);
+}
+
+/*
+ * The next bpf_insn array matches tailing section
+ * see tap_bpf_program.c file
+ *
+ * __section("tailing") int
+ * tail(struct __sk_buff *skb)
+ * {
+ *	skb_change_tail(skb, skb->len + sizeof(__u32), 0);
+ *
+ * return TC_ACT_UNSPEC;
+ * }
+ */
+
+static struct bpf_insn tailing_insns[] = {
+	{0x61,  2,  1,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0x00000004},
+	{0xb7,  3,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000026},
+	{0x18,  0,  0,   0, 0xffffffff},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+
+#define TAILING_INSNS_CNT \
+	(sizeof(tailing_insns) / sizeof(tailing_insns[0]))
+
+/**
+ * Load BPF program (section tailing) into the kernel and return a bpf fd.
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_tailing_insns(void)
+{
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)tailing_insns,
+		TAILING_INSNS_CNT,
+		"GPL", 0);
+}
+
+/*
+ * The next bpf_insn array matches hash_pending section
+ * see tap_bpf_program.c file
+ *
+ * __section("hash_appending") int
+ * append_hash(struct __sk_buff *skb)
+ * {
+ *	__u32 hash = skb->cb[0];
+ *
+ *	skb_store_bytes(skb, skb->len - sizeof(hash), &hash, sizeof(hash), 0);
+ *
+ *	return TC_ACT_PIPE;
+ * }
+ */
+
+static struct bpf_insn hash_appending_insns[] = {
+	{0x61,  2,  1,  48, 0x00000000},
+	{0x63, 10,  2,  -4, 0x00000000},
+	{0x61,  2,  1,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0xfffffffc},
+	{0xbf,  3, 10,   0, 0x00000000},
+	{0x07,  3,  0,   0, 0xfffffffc},
+	{0xb7,  4,  0,   0, 0x00000004},
+	{0xb7,  5,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000009},
+	{0xb7,  0,  0,   0, 0x00000003},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+
+#define HASH_APPENDING_INSNS_CNT \
+	(sizeof(hash_appending_insns) / sizeof(hash_appending_insns[0]))
+
+/**
+ * Load BPF program into the kernel and return a bpf fd.
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_hash_appending_insns(void)
+{
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)hash_appending_insns,
+		HASH_APPENDING_INSNS_CNT,
+		"GPL", 0);
+}
+
+/*
+ * The next bpf_insn array matches queue_setting section
+ * see tap_bpf_program.c file
+ *
+ * static void __attribute__((always_inline))
+ * __section("queue_setting") int
+ * set_queue(struct __sk_buff *skb)
+ * {
+ *	__u32 key_idx = INV_KEY_IDX;
+ *	__u64 hash = skb->cb[0];
+ *	 struct rss_key *rsskey;
+ *	 __u32 queue = 0;
+ *
+ *	rsskey = map_lookup_elem(&map_keys, &key_idx);
+ *	if (rsskey && rsskey->nb_queues <= TAP_MAX_QUEUES)
+ *		queue = rsskey->queues[(hash % rsskey->nb_queues) &
+ *				       (TAP_MAX_QUEUES - 1)];
+ *
+ *	skb->cb[1] = QUEUE_OFFSET + queue;
+ *
+ *	return TC_ACT_RECLASSIFY;
+ * }
+ */
+
+static struct bpf_insn queue_setting_insns[] = {
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0x18,  1,  0,   0, 0xdeadbeef},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x63, 10,  1,  -4, 0x00000000},
+	{0x61,  7,  6,  48, 0x00000000},
+	{0xbf,  2, 10,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0xfffffffc},
+	{0x18,  1,  1,   0, 0xffffffff},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000001},
+	{0xb7,  1,  0,   0, 0x00000001},
+	{0x15,  0,  0,  13, 0x00000000},
+	{0x61,  2,  0, 200, 0x00000000},
+	{0x25,  2,  0,  11, 0x00000010},
+	{0x67,  7,  0,   0, 0x00000020},
+	{0x77,  7,  0,   0, 0x00000020},
+	{0xbf,  1,  7,   0, 0x00000000},
+	{0x3f,  1,  2,   0, 0x00000000},
+	{0x2f,  1,  2,   0, 0x00000000},
+	{0x1f,  7,  1,   0, 0x00000000},
+	{0x57,  7,  0,   0, 0x0000000f},
+	{0x67,  7,  0,   0, 0x00000002},
+	{0x0f,  0,  7,   0, 0x00000000},
+	{0x61,  1,  0, 136, 0x00000000},
+	{0x07,  1,  0,   0, 0x00000001},
+	{0x63,  6,  1,  52, 0x00000000},
+	{0xb7,  0,  0,   0, 0x00000001},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+
+#define QUEUE_SETTING_INSNS_CNT \
+	(sizeof(queue_setting_insns) / sizeof(queue_setting_insns[0]))
+
+/**
+ * Load BPF program (section queue_setting) into the kernel and return a bpf fd
+ *
+ * @param queue_idx
+ *   Queue index matching packet cb
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_queue_setting_insns(__u32 queue_idx)
+{
+	queue_setting_insns[1].imm = queue_idx;
+
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)queue_setting_insns,
+		QUEUE_SETTING_INSNS_CNT,
+		"GPL", 0);
+}
+
+/*
+ * The next bpf_insn array matches l2_src_hash section
+ * see tap_bpf_program.c file
+ *
+ * #define HASH(L)						\
+ *	__section(#L) int				\
+ *		L ## _hash(struct __sk_buff *skb)	\
+ *	{						\
+ *		return hash(skb, HASH_FIELD_ ## L);	\
+ *	}
+ *
+ * HASH(L2_SRC)
+ */
+
+
+static struct bpf_insn l2_src_hash_insns[] = {
+	{0xbf,  7,  1,   0, 0x00000000},
+	{0x61,  6,  7,  16, 0x00000000},
+	{0x61,  9,  7,  76, 0x00000000},
+	{0x61,  8,  7,  80, 0x00000000},
+	{0x18,  1,  0,   0, 0xdeadbeef},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x63, 10,  1,  -4, 0x00000000},
+	{0x61,  1,  7,  48, 0x00000000},
+	{0x7b, 10,  1, -56, 0x00000000},
+	{0xbf,  2, 10,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0xfffffffc},
+	{0x18,  1,  1,   0, 0xffffffff},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000001},
+	{0x55,  0,  0,  21, 0x00000000},
+	{0xb7,  1,  0,   0, 0x00000a64},
+	{0x6b, 10,  1, -16, 0x00000000},
+	{0x18,  1,  0,   0, 0x69666e6f},
+	{0x00,  0,  0,   0, 0x65727567},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x6e207369},
+	{0x00,  0,  0,   0, 0x6320746f},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x20737372},
+	{0x00,  0,  0,   0, 0x2079656b},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x203a2928},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x73, 10,  7, -14, 0x00000000},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000023},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0x05,  0,  0, 543, 0x00000000},
+	{0xb7,  1,  0,   0, 0x0000000e},
+	{0x61,  2,  7,  20, 0x00000000},
+	{0x15,  2,  0,  10, 0x00000000},
+	{0x61,  2,  7,  28, 0x00000000},
+	{0x55,  2,  0,   8, 0x0000a888},
+	{0xbf,  2,  7,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0x00000012},
+	{0x2d,  1,  8, 533, 0x00000000},
+	{0xb7,  1,  0,   0, 0x00000012},
+	{0x69,  6,  9,  16, 0x00000000},
+	{0xbf,  7,  2,   0, 0x00000000},
+	{0x61,  2,  0, 128, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0xb7,  4,  0,   0, 0x00000000},
+	{0x1d,  3,  4,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000006},
+	{0x57,  2,  0,   0, 0x00000002},
+	{0x15,  2,  0, 508, 0x00000000},
+	{0x7b, 10,  7, -64, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0x0000000c},
+	{0x2d,  1,  8, 517, 0x00000000},
+	{0x71,  1,  0,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000018},
+	{0x71,  6,  0,   1, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000010},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   2, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000008},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   3, 0x00000000},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  5,  9,   6, 0x00000000},
+	{0x67,  5,  0,   0, 0x00000038},
+	{0xc7,  5,  0,   0, 0x00000038},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0xb7,  3,  0,   0, 0xffffffff},
+	{0xb7,  4,  0,   0, 0x00000000},
+	{0x6d,  5,  3,   1, 0x00000000},
+	{0xbf,  4,  6,   0, 0x00000000},
+	{0x79,  1, 10, -56, 0x00000000},
+	{0xaf,  4,  1,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000001},
+	{0x71,  7,  0,   4, 0x00000000},
+	{0xbf,  1,  7,   0, 0x00000000},
+	{0x77,  1,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003f},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x57,  7,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  7,   0, 0x00000000},
+	{0x71,  5,  9,   7, 0x00000000},
+	{0x67,  5,  0,   0, 0x00000038},
+	{0xc7,  5,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  5,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  7,  0,   5, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003f},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x57,  7,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  7,   0, 0x00000000},
+	{0x71,  5,  9,   8, 0x00000000},
+	{0x67,  5,  0,   0, 0x00000038},
+	{0xc7,  5,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  5,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  7,  0,   6, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003f},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x57,  7,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  7,   0, 0x00000000},
+	{0x71,  5,  9,   9, 0x00000000},
+	{0x67,  5,  0,   0, 0x00000038},
+	{0xc7,  5,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  5,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  7,  0,   7, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003f},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x57,  7,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  7,   0, 0x00000000},
+	{0x71,  5,  9,  10, 0x00000000},
+	{0x67,  5,  0,   0, 0x00000038},
+	{0xc7,  5,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  5,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  7,  0,   8, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003f},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x57,  7,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  7,   0, 0x00000000},
+	{0x71,  5,  9,  11, 0x00000000},
+	{0x67,  5,  0,   0, 0x00000038},
+	{0xc7,  5,  0,   0, 0x00000038},
+	{0x6d,  5,  3,   1, 0x00000000},
+	{0xbf,  2,  1,   0, 0x00000000},
+	{0xaf,  4,  2,   0, 0x00000000},
+	{0x71,  2,  0,   9, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000007},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  5,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000039},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000006},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  5,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003a},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000005},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  5,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003b},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000004},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  5,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003c},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000003},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  5,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003d},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000002},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  5,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003e},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x77,  2,  0,   0, 0x00000001},
+	{0x57,  2,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  2,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003f},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x79,  1, 10, -64, 0x00000000},
+	{0x63,  1,  4,  48, 0x00000000},
+	{0x18,  1,  0,   0, 0x25203d20},
+	{0x00,  0,  0,   0, 0x000a2964},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x20782520},
+	{0x00,  0,  0,   0, 0x66666f28},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x6168203a},
+	{0x00,  0,  0,   0, 0x3d206873},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x29642528},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000020},
+	{0xb7,  3,  0,   0, 0x00000001},
+	{0xb7,  5,  0,   0, 0x00000006},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0x05,  0,  0,  13, 0x00000000},
+	{0x57,  6,  0,   0, 0x0000ffff},
+	{0x15,  6,  0,   7, 0x0000dd86},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x55,  6,  0,  10, 0x00000008},
+	{0x0f,  9,  1,   0, 0x00000000},
+	{0x07,  9,  0,   0, 0x00000014},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x2d,  9,  8,   6, 0x00000000},
+	{0x05,  0,  0,   4, 0x00000000},
+	{0x0f,  9,  1,   0, 0x00000000},
+	{0x07,  9,  0,   0, 0x00000028},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x2d,  9,  8,   1, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0xbf,  0,  7,   0, 0x00000000},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+
+#define L2_SRC_HASH_INSNS_CNT \
+	(sizeof(l2_src_hash_insns) / sizeof(l2_src_hash_insns[0]))
+
+/**
+ * Load BPF program (section l2_src_hash) into the kernel and return a bpf fd.
+ *
+ * @param key_idx
+ *   RSS MAP key index
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_l2_src_hash_insns(__u32 key_idx)
+{
+	l2_src_hash_insns[4].imm = key_idx;
+
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)l2_src_hash_insns,
+		L2_SRC_HASH_INSNS_CNT,
+		"GPL", 0);
+}
+
+/*
+ * The next bpf_insn array matches l2_dst_hash section
+ * see tap_bpf_program.c file
+ *
+ * HASH(L2_DST)
+ */
+
+static struct bpf_insn l2_dst_hash_insns[] = {
+	{0xbf,  7,  1,   0, 0x00000000},
+	{0x61,  6,  7,  16, 0x00000000},
+	{0x61,  9,  7,  76, 0x00000000},
+	{0x61,  8,  7,  80, 0x00000000},
+	{0x18,  1,  0,   0, 0xdeadbeef},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x63, 10,  1,  -4, 0x00000000},
+	{0x61,  1,  7,  48, 0x00000000},
+	{0x7b, 10,  1, -56, 0x00000000},
+	{0xbf,  2, 10,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0xfffffffc},
+	{0x18,  1,  1,   0, 0xffffffff},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000001},
+	{0x55,  0,  0,  21, 0x00000000},
+	{0xb7,  1,  0,   0, 0x00000a64},
+	{0x6b, 10,  1, -16, 0x00000000},
+	{0x18,  1,  0,   0, 0x69666e6f},
+	{0x00,  0,  0,   0, 0x65727567},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x6e207369},
+	{0x00,  0,  0,   0, 0x6320746f},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x20737372},
+	{0x00,  0,  0,   0, 0x2079656b},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x203a2928},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x73, 10,  7, -14, 0x00000000},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000023},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0x05,  0,  0, 538, 0x00000000},
+	{0xb7,  1,  0,   0, 0x0000000e},
+	{0x61,  2,  7,  20, 0x00000000},
+	{0x15,  2,  0,  10, 0x00000000},
+	{0x61,  2,  7,  28, 0x00000000},
+	{0x55,  2,  0,   8, 0x0000a888},
+	{0xbf,  2,  7,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0x00000012},
+	{0x2d,  1,  8, 528, 0x00000000},
+	{0xb7,  1,  0,   0, 0x00000012},
+	{0x69,  6,  9,  16, 0x00000000},
+	{0xbf,  7,  2,   0, 0x00000000},
+	{0x71,  2,  0, 128, 0x00000000},
+	{0x57,  2,  0,   0, 0x00000001},
+	{0x15,  2,  0, 508, 0x00000000},
+	{0xbf,  5,  7,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0x00000006},
+	{0x2d,  1,  8, 517, 0x00000000},
+	{0x71,  1,  0,   1, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000010},
+	{0x71,  6,  0,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000018},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   2, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000008},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   3, 0x00000000},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  3,  9,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000038},
+	{0xc7,  3,  0,   0, 0x00000038},
+	{0xb7,  2,  0,   0, 0xffffffff},
+	{0xb7,  4,  0,   0, 0x00000000},
+	{0xbf,  7,  5,   0, 0x00000000},
+	{0x6d,  3,  2,   1, 0x00000000},
+	{0xbf,  4,  6,   0, 0x00000000},
+	{0x79,  1, 10, -56, 0x00000000},
+	{0xaf,  4,  1,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000001},
+	{0x71,  5,  0,   4, 0x00000000},
+	{0xbf,  1,  5,   0, 0x00000000},
+	{0x77,  1,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003f},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0x71,  3,  9,   1, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000038},
+	{0xc7,  3,  0,   0, 0x00000038},
+	{0xb7,  5,  0,   0, 0x00000000},
+	{0x6d,  3,  2,   1, 0x00000000},
+	{0xbf,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  5,  0,   5, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003f},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0x71,  3,  9,   2, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000038},
+	{0xc7,  3,  0,   0, 0x00000038},
+	{0xb7,  5,  0,   0, 0x00000000},
+	{0x6d,  3,  2,   1, 0x00000000},
+	{0xbf,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  5,  0,   6, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003f},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0x71,  3,  9,   3, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000038},
+	{0xc7,  3,  0,   0, 0x00000038},
+	{0xb7,  5,  0,   0, 0x00000000},
+	{0x6d,  3,  2,   1, 0x00000000},
+	{0xbf,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  5,  0,   7, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003f},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0x71,  3,  9,   4, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000038},
+	{0xc7,  3,  0,   0, 0x00000038},
+	{0xb7,  5,  0,   0, 0x00000000},
+	{0x6d,  3,  2,   1, 0x00000000},
+	{0xbf,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  5,  0,   8, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  3,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  5,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003f},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0x71,  3,  9,   5, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000038},
+	{0xc7,  3,  0,   0, 0x00000038},
+	{0xb7,  5,  0,   0, 0x00000000},
+	{0x6d,  3,  2,   1, 0x00000000},
+	{0xbf,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x71,  2,  0,   9, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  5,  2,   0, 0x00000000},
+	{0x77,  5,  0,   0, 0x00000007},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0xbf,  5,  3,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x00000039},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0xbf,  5,  2,   0, 0x00000000},
+	{0x77,  5,  0,   0, 0x00000006},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0xbf,  5,  3,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003a},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0xbf,  5,  2,   0, 0x00000000},
+	{0x77,  5,  0,   0, 0x00000005},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0xbf,  5,  3,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003b},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0xbf,  5,  2,   0, 0x00000000},
+	{0x77,  5,  0,   0, 0x00000004},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0xbf,  5,  3,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003c},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0xbf,  5,  2,   0, 0x00000000},
+	{0x77,  5,  0,   0, 0x00000003},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0xbf,  5,  3,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003d},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0xbf,  5,  2,   0, 0x00000000},
+	{0x77,  5,  0,   0, 0x00000002},
+	{0x57,  5,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  5,   0, 0x00000000},
+	{0xbf,  5,  3,   0, 0x00000000},
+	{0x67,  5,  0,   0, 0x0000003e},
+	{0xc7,  5,  0,   0, 0x0000003f},
+	{0x5f,  5,  1,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x77,  2,  0,   0, 0x00000001},
+	{0x57,  2,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  2,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003f},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x63,  7,  4,  48, 0x00000000},
+	{0x18,  1,  0,   0, 0x25203d20},
+	{0x00,  0,  0,   0, 0x000a2964},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x20782520},
+	{0x00,  0,  0,   0, 0x66666f28},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x6168203a},
+	{0x00,  0,  0,   0, 0x3d206873},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x29642528},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000020},
+	{0xb7,  3,  0,   0, 0x00000000},
+	{0xb7,  5,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0x05,  0,  0,  13, 0x00000000},
+	{0x57,  6,  0,   0, 0x0000ffff},
+	{0x15,  6,  0,   7, 0x0000dd86},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x55,  6,  0,  10, 0x00000008},
+	{0x0f,  9,  1,   0, 0x00000000},
+	{0x07,  9,  0,   0, 0x00000014},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x2d,  9,  8,   6, 0x00000000},
+	{0x05,  0,  0,   4, 0x00000000},
+	{0x0f,  9,  1,   0, 0x00000000},
+	{0x07,  9,  0,   0, 0x00000028},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x2d,  9,  8,   1, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0xbf,  0,  7,   0, 0x00000000},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+#define L2_DST_HASH_INSNS_CNT \
+	(sizeof(l2_dst_hash_insns) / sizeof(l2_dst_hash_insns[0]))
+
+/**
+ * Load BPF program (section l2_dst_hash) into the kernel and return a bpf fd.
+ *
+ * @param key_idx
+ *   RSS MAP key index
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_l2_dst_hash_insns(__u32 key_idx)
+{
+	l2_dst_hash_insns[4].imm = key_idx;
+
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)l2_dst_hash_insns,
+		L2_DST_HASH_INSNS_CNT,
+		"GPL", 0);
+}
+
+/*
+ * The next bpf_insn array matches l3_dst_hash section
+ * see tap_bpf_program.c file
+ *
+ *  HASH(L3_DST)
+ */
+
+
+static struct bpf_insn l3_dst_hash_insns[] = {
+	{0xbf,  7,  1,   0, 0x00000000},
+	{0x61,  6,  7,  16, 0x00000000},
+	{0x61,  9,  7,  76, 0x00000000},
+	{0x61,  8,  7,  80, 0x00000000},
+	{0x18,  1,  0,   0, 0xdeadbeef},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x63, 10,  1,  -4, 0x00000000},
+	{0x61,  1,  7,  48, 0x00000000},
+	{0x7b, 10,  1, -56, 0x00000000},
+	{0xbf,  2, 10,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0xfffffffc},
+	{0x18,  1,  1,   0, 0xffffffff},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000001},
+	{0x55,  0,  0,  21, 0x00000000},
+	{0xb7,  1,  0,   0, 0x00000a64},
+	{0x6b, 10,  1, -16, 0x00000000},
+	{0x18,  1,  0,   0, 0x69666e6f},
+	{0x00,  0,  0,   0, 0x65727567},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x6e207369},
+	{0x00,  0,  0,   0, 0x6320746f},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x20737372},
+	{0x00,  0,  0,   0, 0x2079656b},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x203a2928},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x73, 10,  7, -14, 0x00000000},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000023},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0x05,  0,  0, 1689, 0x00000000},
+	{0xb7,  5,  0,   0, 0x0000000e},
+	{0x61,  1,  7,  20, 0x00000000},
+	{0x15,  1,  0,  10, 0x00000000},
+	{0x61,  1,  7,  28, 0x00000000},
+	{0x55,  1,  0,   8, 0x0000a888},
+	{0xbf,  2,  7,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0x00000012},
+	{0x2d,  1,  8, 1679, 0x00000000},
+	{0xb7,  5,  0,   0, 0x00000012},
+	{0x69,  6,  9,  16, 0x00000000},
+	{0xbf,  7,  2,   0, 0x00000000},
+	{0x61,  1,  0, 128, 0x00000000},
+	{0xbf,  3,  1,   0, 0x00000000},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0x1d,  3,  2,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000006},
+	{0x7b, 10,  7, -64, 0x00000000},
+	{0xbf,  3,  1,   0, 0x00000000},
+	{0x57,  3,  0,   0, 0x00000002},
+	{0x1d,  3,  2,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000006},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x0000ffff},
+	{0x15,  6,  0, 355, 0x0000dd86},
+	{0x55,  6,  0, 1661, 0x00000008},
+	{0x0f,  9,  5,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  2,  9,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0x00000014},
+	{0x2d,  2,  8, 1656, 0x00000000},
+	{0xbf,  2,  1,   0, 0x00000000},
+	{0x57,  2,  0,   0, 0x00000004},
+	{0xb7,  3,  0,   0, 0x00000000},
+	{0x1d,  2,  3,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000004},
+	{0x57,  1,  0,   0, 0x00000008},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x15,  1,  0, 1648, 0x00000000},
+	{0x71,  1,  0,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000018},
+	{0x71,  6,  0,   1, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000010},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   2, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000008},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   3, 0x00000000},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x71,  7,  8,  16, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0xb7,  3,  0,   0, 0xffffffff},
+	{0xb7,  4,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  4,  6,   0, 0x00000000},
+	{0x79,  1, 10, -56, 0x00000000},
+	{0xaf,  4,  1,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000001},
+	{0x71,  9,  0,   4, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x77,  1,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  17, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   5, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  18, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   6, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  19, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  2,  1,   0, 0x00000000},
+	{0xaf,  4,  2,   0, 0x00000000},
+	{0x71,  2,  0,   7, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000007},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000039},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000006},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003a},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000005},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003b},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000004},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003c},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000003},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003d},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000002},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003e},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x77,  2,  0,   0, 0x00000001},
+	{0x57,  2,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  2,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x79,  1, 10, -64, 0x00000000},
+	{0x63,  1,  4,  48, 0x00000000},
+	{0x18,  1,  0,   0, 0x25203d20},
+	{0x00,  0,  0,   0, 0x000a2964},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x20782520},
+	{0x00,  0,  0,   0, 0x66666f28},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x6168203a},
+	{0x00,  0,  0,   0, 0x3d206873},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x29642528},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0x07,  5,  0,   0, 0x00000010},
+	{0x05,  0,  0, 1301, 0x00000000},
+	{0x0f,  9,  5,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  2,  9,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0x00000028},
+	{0x2d,  2,  8, 1302, 0x00000000},
+	{0xbf,  2,  1,   0, 0x00000000},
+	{0x57,  2,  0,   0, 0x00000004},
+	{0xb7,  3,  0,   0, 0x00000000},
+	{0x1d,  2,  3,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000010},
+	{0x57,  1,  0,   0, 0x00000008},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x15,  1,  0, 1294, 0x00000000},
+	{0x71,  1,  0,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000018},
+	{0x71,  6,  0,   1, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000010},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   2, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000008},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   3, 0x00000000},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x71,  7,  8,  24, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0xb7,  3,  0,   0, 0xffffffff},
+	{0xb7,  4,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  4,  6,   0, 0x00000000},
+	{0x79,  1, 10, -56, 0x00000000},
+	{0xaf,  4,  1,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000001},
+	{0x71,  9,  0,   4, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x77,  1,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  25, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   5, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  26, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   6, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  27, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   7, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  28, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   8, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  29, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   9, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  30, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  10, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  31, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  11, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  32, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  12, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  33, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  13, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  34, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  14, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  35, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  15, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  36, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  16, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  37, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  17, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  38, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  18, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  39, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  2,  1,   0, 0x00000000},
+	{0xaf,  4,  2,   0, 0x00000000},
+	{0x71,  2,  0,  19, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000007},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000039},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000006},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003a},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000005},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003b},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000004},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003c},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000003},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003d},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000002},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003e},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x77,  2,  0,   0, 0x00000001},
+	{0x57,  2,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  2,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x79,  1, 10, -64, 0x00000000},
+	{0x63,  1,  4,  48, 0x00000000},
+	{0x18,  1,  0,   0, 0x25203d20},
+	{0x00,  0,  0,   0, 0x000a2964},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x20782520},
+	{0x00,  0,  0,   0, 0x66666f28},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x6168203a},
+	{0x00,  0,  0,   0, 0x3d206873},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x29642528},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0x07,  5,  0,   0, 0x00000018},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0xb7,  2,  0,   0, 0x00000020},
+	{0xb7,  3,  0,   0, 0x00000003},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0xbf,  0,  7,   0, 0x00000000},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+
+#define L3_DST_HASH_INSNS_CNT \
+	(sizeof(l3_dst_hash_insns) / sizeof(l3_dst_hash_insns[0]))
+
+/**
+ * Load BPF program (section l3_dst_hash) into the kernel and return a bpf fd.
+ *
+ * @param queue_idx
+ *   RSS MAP key index
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_l3_dst_hash_insns(__u32 key_idx)
+{
+	l3_dst_hash_insns[4].imm = key_idx;
+
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)l3_dst_hash_insns,
+		L3_DST_HASH_INSNS_CNT,
+		"GPL", 0);
+}
+
+/*
+ * The next bpf_insn array matches l3_src_hash section
+ * see tap_bpf_program.c file
+ *
+ * HASH(L3_SRC)
+ */
+
+static struct bpf_insn l3_src_hash_insns[] = {
+	{0xbf,  7,  1,   0, 0x00000000},
+	{0x61,  6,  7,  16, 0x00000000},
+	{0x61,  9,  7,  76, 0x00000000},
+	{0x61,  8,  7,  80, 0x00000000},
+	{0x18,  1,  0,   0, 0xdeadbeef},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x63, 10,  1,  -4, 0x00000000},
+	{0x61,  1,  7,  48, 0x00000000},
+	{0x7b, 10,  1, -56, 0x00000000},
+	{0xbf,  2, 10,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0xfffffffc},
+	{0x18,  1,  1,   0, 0xffffffff},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000001},
+	{0x55,  0,  0,  21, 0x00000000},
+	{0xb7,  1,  0,   0, 0x00000a64},
+	{0x6b, 10,  1, -16, 0x00000000},
+	{0x18,  1,  0,   0, 0x69666e6f},
+	{0x00,  0,  0,   0, 0x65727567},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x6e207369},
+	{0x00,  0,  0,   0, 0x6320746f},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x20737372},
+	{0x00,  0,  0,   0, 0x2079656b},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x203a2928},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x73, 10,  7, -14, 0x00000000},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000023},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0x05,  0,  0, 1679, 0x00000000},
+	{0xb7,  5,  0,   0, 0x0000000e},
+	{0x61,  1,  7,  20, 0x00000000},
+	{0x15,  1,  0,  10, 0x00000000},
+	{0x61,  1,  7,  28, 0x00000000},
+	{0x55,  1,  0,   8, 0x0000a888},
+	{0xbf,  2,  7,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0x00000012},
+	{0x2d,  1,  8, 1669, 0x00000000},
+	{0xb7,  5,  0,   0, 0x00000012},
+	{0x69,  6,  9,  16, 0x00000000},
+	{0xbf,  7,  2,   0, 0x00000000},
+	{0x61,  1,  0, 128, 0x00000000},
+	{0xbf,  3,  1,   0, 0x00000000},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0x1d,  3,  2,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000006},
+	{0xbf,  3,  1,   0, 0x00000000},
+	{0x57,  3,  0,   0, 0x00000002},
+	{0x1d,  3,  2,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000006},
+	{0x7b, 10,  7, -64, 0x00000000},
+	{0x57,  6,  0,   0, 0x0000ffff},
+	{0x15,  6,  0, 351, 0x0000dd86},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x55,  6,  0, 1651, 0x00000008},
+	{0x0f,  9,  5,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  2,  9,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0x00000014},
+	{0x2d,  2,  8, 1646, 0x00000000},
+	{0x57,  1,  0,   0, 0x00000004},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x15,  1,  0, 1643, 0x00000000},
+	{0x71,  1,  0,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000018},
+	{0x71,  6,  0,   1, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000010},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   2, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000008},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   3, 0x00000000},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x71,  7,  8,  12, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0xb7,  3,  0,   0, 0xffffffff},
+	{0xb7,  4,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  4,  6,   0, 0x00000000},
+	{0x79,  1, 10, -56, 0x00000000},
+	{0xaf,  4,  1,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000001},
+	{0x71,  9,  0,   4, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x77,  1,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  13, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   5, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  14, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   6, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  15, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  2,  1,   0, 0x00000000},
+	{0xaf,  4,  2,   0, 0x00000000},
+	{0x71,  2,  0,   7, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000007},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000039},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000006},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003a},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000005},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003b},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000004},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003c},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000003},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003d},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000002},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003e},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x77,  2,  0,   0, 0x00000001},
+	{0x57,  2,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  2,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x79,  1, 10, -64, 0x00000000},
+	{0x63,  1,  4,  48, 0x00000000},
+	{0x18,  1,  0,   0, 0x25203d20},
+	{0x00,  0,  0,   0, 0x000a2964},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x20782520},
+	{0x00,  0,  0,   0, 0x66666f28},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x6168203a},
+	{0x00,  0,  0,   0, 0x3d206873},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x29642528},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0x07,  5,  0,   0, 0x0000000c},
+	{0x05,  0,  0, 1296, 0x00000000},
+	{0x0f,  9,  5,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  2,  9,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0x00000028},
+	{0x2d,  2,  8, 1297, 0x00000000},
+	{0x57,  1,  0,   0, 0x00000004},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x15,  1,  0, 1294, 0x00000000},
+	{0x71,  1,  0,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000018},
+	{0x71,  6,  0,   1, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000010},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   2, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000008},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0x71,  1,  0,   3, 0x00000000},
+	{0x4f,  6,  1,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x71,  7,  8,   8, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0xb7,  3,  0,   0, 0xffffffff},
+	{0xb7,  4,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  4,  6,   0, 0x00000000},
+	{0x79,  1, 10, -56, 0x00000000},
+	{0xaf,  4,  1,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000001},
+	{0x71,  9,  0,   4, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x77,  1,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,   9, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   5, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  10, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   6, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  11, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   7, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  12, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   8, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  13, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,   9, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  14, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  10, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  15, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  11, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  16, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  12, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  17, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  13, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  18, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  14, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  19, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  15, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  20, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  16, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  21, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  17, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  22, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  6,  0,   0, 0x00000000},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x71,  9,  0,  18, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000007},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x00000039},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000006},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003a},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000005},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003b},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000004},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003c},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000003},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003d},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000002},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0xbf,  6,  7,   0, 0x00000000},
+	{0x67,  6,  0,   0, 0x0000003e},
+	{0xc7,  6,  0,   0, 0x0000003f},
+	{0x5f,  6,  1,   0, 0x00000000},
+	{0xaf,  4,  6,   0, 0x00000000},
+	{0xbf,  6,  9,   0, 0x00000000},
+	{0x77,  6,  0,   0, 0x00000001},
+	{0x57,  6,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  6,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  8,  23, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  2,  1,   0, 0x00000000},
+	{0xaf,  4,  2,   0, 0x00000000},
+	{0x71,  2,  0,  19, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000007},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000039},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000006},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003a},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000005},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003b},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000004},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003c},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000003},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003d},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000002},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003e},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x77,  2,  0,   0, 0x00000001},
+	{0x57,  2,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  2,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x79,  1, 10, -64, 0x00000000},
+	{0x63,  1,  4,  48, 0x00000000},
+	{0x18,  1,  0,   0, 0x25203d20},
+	{0x00,  0,  0,   0, 0x000a2964},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x20782520},
+	{0x00,  0,  0,   0, 0x66666f28},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x6168203a},
+	{0x00,  0,  0,   0, 0x3d206873},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x29642528},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0x07,  5,  0,   0, 0x00000008},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000020},
+	{0xb7,  3,  0,   0, 0x00000002},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0xbf,  0,  7,   0, 0x00000000},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+
+#define L3_SRC_HASH_INSNS_CNT \
+	(sizeof(l3_src_hash_insns) / sizeof(l3_src_hash_insns[0]))
+
+/**
+ * Load BPF program (section l3_src_hash) into the kernel and return a bpf fd.
+ *
+ * @param queue_idx
+ *   RSS MAP key index
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_l3_src_hash_insns(__u32 key_idx)
+{
+	l3_src_hash_insns[4].imm = key_idx;
+
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)l3_src_hash_insns,
+		L3_SRC_HASH_INSNS_CNT,
+		"GPL", 0);
+}
+
+/*
+ * The next bpf_insn array matches l4_src_hash section
+ * see tap_bpf_program.c file
+ *
+ * HASH(L4_SRC)
+ */
+
+static struct bpf_insn l4_src_hash_insns[] = {
+	{0xbf,  6,  1,   0, 0x00000000},
+	{0x61,  8,  6,  16, 0x00000000},
+	{0x61,  9,  6,  76, 0x00000000},
+	{0x61,  1,  6,  80, 0x00000000},
+	{0x7b, 10,  1, -56, 0x00000000},
+	{0x18,  1,  0,   0, 0xdeadbeef},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x63, 10,  1,  -4, 0x00000000},
+	{0x61,  7,  6,  48, 0x00000000},
+	{0xbf,  2, 10,   0, 0x00000000},
+	{0x07,  2,  0,   0, 0xfffffffc},
+	{0x18,  1,  1,   0, 0xffffffff},
+	{0x00,  0,  0,   0, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000001},
+	{0x55,  0,  0,  21, 0x00000000},
+	{0xb7,  1,  0,   0, 0x00000a64},
+	{0x6b, 10,  1, -16, 0x00000000},
+	{0x18,  1,  0,   0, 0x69666e6f},
+	{0x00,  0,  0,   0, 0x65727567},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x6e207369},
+	{0x00,  0,  0,   0, 0x6320746f},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x20737372},
+	{0x00,  0,  0,   0, 0x2079656b},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x203a2928},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0x73, 10,  7, -14, 0x00000000},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000023},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0x05,  0,  0, 272, 0x00000000},
+	{0xb7,  4,  0,   0, 0x0000000e},
+	{0x61,  1,  6,  20, 0x00000000},
+	{0x15,  1,  0,  11, 0x00000000},
+	{0x61,  1,  6,  28, 0x00000000},
+	{0x55,  1,  0,   9, 0x0000a888},
+	{0xbf,  2,  7,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0x00000012},
+	{0x79,  3, 10, -56, 0x00000000},
+	{0x2d,  1,  3, 261, 0x00000000},
+	{0xb7,  4,  0,   0, 0x00000012},
+	{0x69,  8,  9,  16, 0x00000000},
+	{0xbf,  7,  2,   0, 0x00000000},
+	{0x61,  1,  0, 128, 0x00000000},
+	{0xbf,  3,  1,   0, 0x00000000},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0x1d,  3,  2,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000006},
+	{0xbf,  3,  1,   0, 0x00000000},
+	{0x57,  3,  0,   0, 0x00000002},
+	{0x1d,  3,  2,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000006},
+	{0x57,  8,  0,   0, 0x0000ffff},
+	{0x15,  8,  0,  24, 0x0000dd86},
+	{0xbf,  5,  7,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x55,  8,  0, 243, 0x00000008},
+	{0xbf,  2,  9,   0, 0x00000000},
+	{0x0f,  2,  4,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x07,  3,  0,   0, 0x00000014},
+	{0x79,  8, 10, -56, 0x00000000},
+	{0x2d,  3,  8, 236, 0x00000000},
+	{0xbf,  7,  4,   0, 0x00000000},
+	{0xbf,  4,  1,   0, 0x00000000},
+	{0x57,  4,  0,   0, 0x00000004},
+	{0xb7,  3,  0,   0, 0x00000000},
+	{0x1d,  4,  3,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000004},
+	{0xbf,  4,  1,   0, 0x00000000},
+	{0x57,  4,  0,   0, 0x00000008},
+	{0x1d,  4,  3,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000004},
+	{0xbf,  4,  7,   0, 0x00000000},
+	{0x07,  4,  0,   0, 0x00000014},
+	{0x07,  2,  0,   0, 0x00000009},
+	{0x05,  0,  0,  21, 0x00000000},
+	{0xbf,  5,  7,   0, 0x00000000},
+	{0xbf,  2,  9,   0, 0x00000000},
+	{0x0f,  2,  4,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x07,  3,  0,   0, 0x00000028},
+	{0x79,  8, 10, -56, 0x00000000},
+	{0x2d,  3,  8, 214, 0x00000000},
+	{0xbf,  7,  4,   0, 0x00000000},
+	{0xbf,  4,  1,   0, 0x00000000},
+	{0x57,  4,  0,   0, 0x00000004},
+	{0xb7,  3,  0,   0, 0x00000000},
+	{0x1d,  4,  3,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000010},
+	{0xbf,  4,  1,   0, 0x00000000},
+	{0x57,  4,  0,   0, 0x00000008},
+	{0x1d,  4,  3,   1, 0x00000000},
+	{0x07,  0,  0,   0, 0x00000010},
+	{0xbf,  4,  7,   0, 0x00000000},
+	{0x07,  4,  0,   0, 0x00000028},
+	{0x07,  2,  0,   0, 0x00000006},
+	{0x71,  2,  2,   0, 0x00000000},
+	{0x15,  2,  0,   2, 0x00000011},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x55,  2,  0, 197, 0x00000006},
+	{0x57,  1,  0,   0, 0x00000010},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0x15,  1,  0, 194, 0x00000000},
+	{0xbf,  3,  9,   0, 0x00000000},
+	{0x0f,  3,  4,   0, 0x00000000},
+	{0xb7,  7,  0,   0, 0x00000000},
+	{0xbf,  1,  3,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0x00000002},
+	{0x79,  2, 10, -56, 0x00000000},
+	{0x2d,  1,  2, 187, 0x00000000},
+	{0x7b, 10,  4, -56, 0x00000000},
+	{0x71,  1,  0,   1, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000010},
+	{0x71,  8,  0,   0, 0x00000000},
+	{0x67,  8,  0,   0, 0x00000018},
+	{0x4f,  8,  1,   0, 0x00000000},
+	{0x71,  1,  0,   2, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000008},
+	{0x4f,  8,  1,   0, 0x00000000},
+	{0x71,  1,  0,   3, 0x00000000},
+	{0x4f,  8,  1,   0, 0x00000000},
+	{0x71,  7,  3,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  2,  0,   0, 0x00000000},
+	{0xb7,  1,  0,   0, 0xffffffff},
+	{0xb7,  4,  0,   0, 0x00000000},
+	{0x6d,  7,  1,   1, 0x00000000},
+	{0xbf,  4,  8,   0, 0x00000000},
+	{0xaf,  4,  5,   0, 0x00000000},
+	{0x67,  8,  0,   0, 0x00000001},
+	{0x71,  9,  0,   4, 0x00000000},
+	{0xbf,  1,  9,   0, 0x00000000},
+	{0x77,  1,  0,   0, 0x00000007},
+	{0x4f,  1,  8,   0, 0x00000000},
+	{0xbf,  8,  7,   0, 0x00000000},
+	{0x67,  8,  0,   0, 0x00000039},
+	{0xc7,  8,  0,   0, 0x0000003f},
+	{0x5f,  8,  1,   0, 0x00000000},
+	{0xaf,  4,  8,   0, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x77,  8,  0,   0, 0x00000006},
+	{0x57,  8,  0,   0, 0x00000001},
+	{0x4f,  1,  8,   0, 0x00000000},
+	{0xbf,  8,  7,   0, 0x00000000},
+	{0x67,  8,  0,   0, 0x0000003a},
+	{0xc7,  8,  0,   0, 0x0000003f},
+	{0x5f,  8,  1,   0, 0x00000000},
+	{0xaf,  4,  8,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x77,  8,  0,   0, 0x00000005},
+	{0x57,  8,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  8,   0, 0x00000000},
+	{0xbf,  8,  7,   0, 0x00000000},
+	{0x67,  8,  0,   0, 0x0000003b},
+	{0xc7,  8,  0,   0, 0x0000003f},
+	{0x5f,  8,  1,   0, 0x00000000},
+	{0xaf,  4,  8,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x77,  8,  0,   0, 0x00000004},
+	{0x57,  8,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  8,   0, 0x00000000},
+	{0xbf,  8,  7,   0, 0x00000000},
+	{0x67,  8,  0,   0, 0x0000003c},
+	{0xc7,  8,  0,   0, 0x0000003f},
+	{0x5f,  8,  1,   0, 0x00000000},
+	{0xaf,  4,  8,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x77,  8,  0,   0, 0x00000003},
+	{0x57,  8,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  8,   0, 0x00000000},
+	{0xbf,  8,  7,   0, 0x00000000},
+	{0x67,  8,  0,   0, 0x0000003d},
+	{0xc7,  8,  0,   0, 0x0000003f},
+	{0x5f,  8,  1,   0, 0x00000000},
+	{0xaf,  4,  8,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x77,  8,  0,   0, 0x00000002},
+	{0x57,  8,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  8,   0, 0x00000000},
+	{0xbf,  8,  7,   0, 0x00000000},
+	{0x67,  8,  0,   0, 0x0000003e},
+	{0xc7,  8,  0,   0, 0x0000003f},
+	{0x5f,  8,  1,   0, 0x00000000},
+	{0xaf,  4,  8,   0, 0x00000000},
+	{0xbf,  8,  9,   0, 0x00000000},
+	{0x77,  8,  0,   0, 0x00000001},
+	{0x57,  8,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  8,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x57,  9,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  9,   0, 0x00000000},
+	{0x71,  7,  3,   1, 0x00000000},
+	{0x67,  7,  0,   0, 0x00000038},
+	{0xc7,  7,  0,   0, 0x00000038},
+	{0xb7,  3,  0,   0, 0xffffffff},
+	{0x6d,  7,  3,   1, 0x00000000},
+	{0xbf,  2,  1,   0, 0x00000000},
+	{0xaf,  4,  2,   0, 0x00000000},
+	{0x71,  2,  0,   5, 0x00000000},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000007},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x00000039},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000006},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003a},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000005},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003b},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000004},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003c},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000003},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003d},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0xbf,  3,  2,   0, 0x00000000},
+	{0x77,  3,  0,   0, 0x00000002},
+	{0x57,  3,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  3,   0, 0x00000000},
+	{0xbf,  3,  7,   0, 0x00000000},
+	{0x67,  3,  0,   0, 0x0000003e},
+	{0xc7,  3,  0,   0, 0x0000003f},
+	{0x5f,  3,  1,   0, 0x00000000},
+	{0xaf,  4,  3,   0, 0x00000000},
+	{0x77,  2,  0,   0, 0x00000001},
+	{0x57,  2,  0,   0, 0x00000001},
+	{0x67,  1,  0,   0, 0x00000001},
+	{0x4f,  1,  2,   0, 0x00000000},
+	{0x67,  7,  0,   0, 0x0000003f},
+	{0xc7,  7,  0,   0, 0x0000003f},
+	{0x5f,  7,  1,   0, 0x00000000},
+	{0xaf,  4,  7,   0, 0x00000000},
+	{0x63,  6,  4,  48, 0x00000000},
+	{0x18,  1,  0,   0, 0x25203d20},
+	{0x00,  0,  0,   0, 0x000a2964},
+	{0x7b, 10,  1, -24, 0x00000000},
+	{0x18,  1,  0,   0, 0x20782520},
+	{0x00,  0,  0,   0, 0x66666f28},
+	{0x7b, 10,  1, -32, 0x00000000},
+	{0x18,  1,  0,   0, 0x6168203a},
+	{0x00,  0,  0,   0, 0x3d206873},
+	{0x7b, 10,  1, -40, 0x00000000},
+	{0x18,  1,  0,   0, 0x68736168},
+	{0x00,  0,  0,   0, 0x29642528},
+	{0x7b, 10,  1, -48, 0x00000000},
+	{0xbf,  1, 10,   0, 0x00000000},
+	{0x07,  1,  0,   0, 0xffffffd0},
+	{0xb7,  2,  0,   0, 0x00000020},
+	{0xb7,  3,  0,   0, 0x00000004},
+	{0x79,  5, 10, -56, 0x00000000},
+	{0x85,  0,  0,   0, 0x00000006},
+	{0xb7,  7,  0,   0, 0x00000003},
+	{0xbf,  0,  7,   0, 0x00000000},
+	{0x95,  0,  0,   0, 0x00000000},
+};
+
+#define L4_SRC_HASH_INSNS_CNT \
+	(sizeof(l4_src_hash_insns) / sizeof(l4_src_hash_insns[0]))
+
+/**
+ * Load BPF program (section l4_src_hash) into the kernel and return a bpf fd.
+ *
+ * @param queue_idx
+ *   RSS MAP key index
+ *
+ * @return
+ *   -1 if the BPF program couldn't be loaded. An fd (int) otherwise.
+ */
+int bpf_load_l4_src_hash_insns(__u32 key_idx)
+{
+	l4_src_hash_insns[4].imm = key_idx;
+
+	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
+		(struct bpf_insn *)l4_src_hash_insns,
+		L4_SRC_HASH_INSNS_CNT,
+		"GPL", 0);
+}
+
+#ifndef __NR_bpf
+# if defined(__i386__)
+#  define __NR_bpf 357
+# elif defined(__x86_64__)
+#  define __NR_bpf 321
+# elif defined(__aarch64__)
+#  define __NR_bpf 280
+# elif defined(__sparc__)
+#  define __NR_bpf 349
+# elif defined(__s390__)
+#  define __NR_bpf 351
+# else
+#  error __NR_bpf not defined. libbpf does not support your arch.
+# endif
+#endif
+
+static inline __u64 ptr_to_u64(const void *ptr)
+{
+	return (__u64)(unsigned long)ptr;
+}
+
+static inline int sys_bpf(enum bpf_cmd cmd, union bpf_attr *attr,
+			unsigned int size)
+{
+	return syscall(__NR_bpf, cmd, attr, size);
+}
+
+int bpf_load(enum bpf_prog_type type,
+		  const struct bpf_insn *insns,
+		  size_t insns_cnt,
+		  const char *license,
+		  __u32 kern_version)
+{
+	union bpf_attr attr;
+
+	bzero(&attr, sizeof(attr));
+	attr.prog_type = type;
+	attr.insn_cnt = (__u32)insns_cnt;
+	attr.insns = ptr_to_u64(insns);
+	attr.license = ptr_to_u64(license);
+	attr.log_buf = ptr_to_u64(NULL);
+	attr.log_level = 0;
+	attr.kern_version = kern_version;
+
+	return sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr));
+}
diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/tap_bpf_program.c
new file mode 100644
index 0000000..e1ae0c5
--- /dev/null
+++ b/drivers/net/tap/tap_bpf_program.c
@@ -0,0 +1,321 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright 2017 6WIND S.A.
+ *   Copyright 2017 Mellanox.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *     * Neither the name of 6WIND S.A. nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <asm/types.h>
+#include <linux/in.h>
+#include <linux/if.h>
+#include <linux/if_ether.h>
+#include <linux/ip.h>
+#include <linux/ipv6.h>
+#include <linux/if_tunnel.h>
+#include <linux/filter.h>
+#include <linux/bpf.h>
+
+/* BPF helper functions for our example. */
+#include "tap_bpf_api.h"
+#include "tap_bpf_shared.h"
+
+#define ERROR                   0
+
+/*
+ * The queue number is offset by 1, to distinguish packets that have
+ * gone through this rule (skb->cb[1] != 0) from others.
+ */
+#define QUEUE_OFFSET 1
+
+#define INV_KEY_IDX 0xdeadbeef
+
+struct vlan_hdr {
+	__be16 proto;
+	__be16 tci;
+};
+
+__section("maps")
+struct bpf_elf_map map_keys = {
+	.type           =       BPF_MAP_TYPE_HASH,
+	.id             =       BPF_MAP_ID_KEY,
+	.size_key       =       sizeof(__u32),
+	.size_value     =       sizeof(struct rss_key),
+	.max_elem       =       256,
+	.pinning        =       PIN_GLOBAL_NS,
+};
+
+__section("cls_q") int
+match_q(struct __sk_buff *skb)
+{
+	__u32 queue = skb->cb[1];
+	volatile __u32 q = INV_KEY_IDX;
+	__u32 match_queue = QUEUE_OFFSET + q;
+
+	/* printt("match_q$i() queue = %d\n", queue); */
+
+	if (queue != match_queue)
+		return TC_ACT_OK;
+	return TC_ACT_UNSPEC;
+}
+
+__section("tailing") int
+tail(struct __sk_buff *skb)
+{
+	skb_change_tail(skb, skb->len + sizeof(__u32), 0);
+
+	return TC_ACT_UNSPEC;
+}
+
+static void __attribute__((always_inline))
+toeplitz_hash(__u32 *hash, __u8 *key, __u32 *v, __u8 *data, __u8 data_len)
+{
+	u_int i, b;
+
+#pragma unroll
+	for (i = 0; i < data_len; i++) {
+#pragma unroll
+		for (b = 0; b < 8; b++) {
+			if (data[i] & (1 << (7 - b)))
+				*hash ^= *v;
+			*v <<= 1;
+			if (key[i + 4] & (1 << (7 - b)))
+				*v |= 1;
+		}
+	}
+}
+
+static int __attribute__((always_inline))
+hash(struct __sk_buff *skb, enum hash_field f)
+{
+	void *data_end = (void *)(long)skb->data_end;
+	void *data = (void *)(long)skb->data;
+	__u16 proto = (__u16)skb->protocol;
+	__u32 key_idx = INV_KEY_IDX;
+	__u32 hash = skb->cb[0];
+	struct rss_key *rsskey;
+	__u64 off = ETH_HLEN;
+	__u8 ip_proto = 0;
+	__u8 *key = 0;
+	__u32 v, len;
+
+	rsskey = map_lookup_elem(&map_keys, &key_idx);
+	if (!rsskey) {
+		printt("hash(): rss key is not configured\n");
+		return TC_ACT_OK;
+	}
+	key = (__u8 *)rsskey->key;
+
+	/* Get correct proto for 802.1ad */
+	if (skb->vlan_present && skb->vlan_proto == htons(ETH_P_8021AD)) {
+		if (data + ETH_ALEN * 2 + sizeof(struct vlan_hdr) +
+		    sizeof(proto) > data_end)
+			return TC_ACT_OK;
+		proto = *(__u16 *)(data + ETH_ALEN * 2 +
+				   sizeof(struct vlan_hdr));
+		off += sizeof(struct vlan_hdr);
+	}
+
+	if (rsskey->hash_fields & (1 << HASH_FIELD_L2_DST)) {
+		if (f == HASH_FIELD_L2_DST) {
+			v = (key[0] << 24) + (key[1] << 16) + (key[2] << 8) + key[3];
+			if (data + ETH_ALEN > data_end)
+				return TC_ACT_OK;
+			toeplitz_hash(&hash, key, &v, data, ETH_ALEN);
+			skb->cb[0] = hash;
+			printt("hash(%d): hash = %x (off = %d)\n",
+			       f, skb->cb[0], 0);
+			return TC_ACT_PIPE;
+		}
+		key += ETH_ALEN;
+	}
+	if (rsskey->hash_fields & (1 << HASH_FIELD_L2_SRC)) {
+		if (f == HASH_FIELD_L2_SRC) {
+			v = (key[0] << 24) + (key[1] << 16) + (key[2] << 8) + key[3];
+			if (data + ETH_ALEN * 2 > data_end)
+				return TC_ACT_OK;
+			toeplitz_hash(&hash, key, &v, data + ETH_ALEN, ETH_ALEN);
+			skb->cb[0] = hash;
+			printt("hash(%d): hash = %x (off = %d)\n",
+			       f, skb->cb[0], ETH_ALEN);
+			return TC_ACT_PIPE;
+		}
+		key += ETH_ALEN;
+	}
+
+	if (proto == htons(ETH_P_IP)) {
+		struct iphdr *ip;
+
+		if (data + off + sizeof(struct iphdr) > data_end)
+			return TC_ACT_OK;
+		ip = data + off;
+		ip_proto = ip->protocol;
+
+		if (rsskey->hash_fields & (1 << HASH_FIELD_L3_SRC)) {
+			if (f == HASH_FIELD_L3_SRC) {
+				v = (key[0] << 24) + (key[1] << 16) +
+					(key[2] << 8) + key[3];
+				toeplitz_hash(&hash, key, &v, data + off +
+					      offsetof(struct iphdr, saddr),
+					      sizeof(__u32));
+				skb->cb[0] = hash;
+				printt("hash(%d): hash = %x (off = %d)\n",
+				       f, skb->cb[0],
+				       off + offsetof(struct iphdr, saddr));
+				return TC_ACT_PIPE;
+			}
+			key += sizeof(__u32);
+		}
+		if (rsskey->hash_fields & (1 << HASH_FIELD_L3_DST)) {
+			if (f == HASH_FIELD_L3_DST) {
+				v = (key[0] << 24) + (key[1] << 16) +
+					(key[2] << 8) + key[3];
+				toeplitz_hash(&hash, key, &v, data + off +
+					      offsetof(struct iphdr, daddr),
+					      sizeof(__u32));
+				skb->cb[0] = hash;
+				printt("hash(%d): hash = %x (off = %d)\n",
+				       f, skb->cb[0],
+				       off + offsetof(struct iphdr, daddr));
+				return TC_ACT_PIPE;
+			}
+			key += sizeof(__u32);
+		}
+		off += sizeof(struct iphdr);
+	} else if (proto == htons(ETH_P_IPV6)) {
+		struct ipv6hdr *ip;
+
+		if (data + off + sizeof(struct ipv6hdr) > data_end)
+			return TC_ACT_OK;
+		ip = data + off;
+		ip_proto = ip->nexthdr;
+
+		if (rsskey->hash_fields & (1 << HASH_FIELD_L3_SRC)) {
+			if (f == HASH_FIELD_L3_SRC) {
+				v = (key[0] << 24) + (key[1] << 16) +
+					(key[2] << 8) + key[3];
+				toeplitz_hash(&hash, key, &v, data + off +
+					      offsetof(struct ipv6hdr, saddr),
+					      sizeof(struct in6_addr));
+				skb->cb[0] = hash;
+				printt("hash(%d): hash = %x (off = %d)\n",
+				       f, skb->cb[0],
+				       off + offsetof(struct ipv6hdr, saddr));
+				return TC_ACT_PIPE;
+			}
+			key += sizeof(struct in6_addr);
+		}
+		if (rsskey->hash_fields & (1 << HASH_FIELD_L3_DST)) {
+			if (f == HASH_FIELD_L3_DST) {
+				v = (key[0] << 24) + (key[1] << 16) +
+					(key[2] << 8) + key[3];
+				toeplitz_hash(&hash, key, &v, data + off +
+					      offsetof(struct ipv6hdr, daddr),
+					      sizeof(struct in6_addr));
+				skb->cb[0] = hash;
+				printt("hash(%d): hash = %x (off = %d)\n",
+				       f, skb->cb[0],
+				       off + offsetof(struct ipv6hdr, daddr));
+				return TC_ACT_PIPE;
+			}
+			key += sizeof(struct in6_addr);
+		}
+		off += sizeof(struct ipv6hdr);
+	} else {
+		/* Unknown protocol: stop hashing there */
+		return TC_ACT_PIPE;
+	}
+
+	/* Unknown ip_proto: stop hashing there */
+	if ((ip_proto == IPPROTO_TCP || ip_proto == IPPROTO_UDP) &&
+	    (rsskey->hash_fields & (1 << HASH_FIELD_L4_SRC)) &&
+	    (f == HASH_FIELD_L4_SRC)) {
+		v = (key[0] << 24) + (key[1] << 16) + (key[2] << 8) + key[3];
+		if (data + off + sizeof(__u16) > data_end)
+			return TC_ACT_OK;
+		toeplitz_hash(&hash, key, &v, data + off,
+			      sizeof(__u16));
+		skb->cb[0] = hash;
+		printt("hash(%d): hash = %x (off = %d)\n",
+		       f, skb->cb[0], off);
+		return TC_ACT_PIPE;
+	}
+
+	return TC_ACT_PIPE;
+}
+
+#define HASH(L)						\
+	__section(#L) int				\
+		L ## _hash(struct __sk_buff *skb)	\
+	{						\
+		return hash(skb, HASH_FIELD_ ## L);	\
+	}
+
+HASH(L2_DST)
+
+HASH(L2_SRC)
+
+HASH(L3_SRC)
+
+HASH(L3_DST)
+
+HASH(L4_SRC)
+
+__section("hash_appending") int
+append_hash(struct __sk_buff *skb)
+{
+	__u32 hash = skb->cb[0];
+
+	skb_store_bytes(skb, skb->len - sizeof(hash), &hash, sizeof(hash), 0);
+
+	return TC_ACT_PIPE;
+}
+
+__section("queue_setting") int
+set_queue(struct __sk_buff *skb)
+{
+	__u32 key_idx = INV_KEY_IDX;
+	__u64 hash = skb->cb[0];
+	 struct rss_key *rsskey;
+	 __u32 queue = 0;
+
+	rsskey = map_lookup_elem(&map_keys, &key_idx);
+	if (rsskey && rsskey->nb_queues <= TAP_MAX_QUEUES)
+		queue = rsskey->queues[(hash % rsskey->nb_queues) &
+				       (TAP_MAX_QUEUES - 1)];
+
+	skb->cb[1] = QUEUE_OFFSET + queue;
+
+	return TC_ACT_RECLASSIFY;
+}
+
+BPF_LICENSE("GPL");
diff --git a/drivers/net/tap/tap_bpf_shared.h b/drivers/net/tap/tap_bpf_shared.h
new file mode 100644
index 0000000..6895cf4
--- /dev/null
+++ b/drivers/net/tap/tap_bpf_shared.h
@@ -0,0 +1,40 @@
+#ifndef __BPF_SHARED__
+#define __BPF_SHARED__
+
+#define TAP_MAX_QUEUES 16
+
+enum hash_field {
+	HASH_FIELD_L2_DST,
+	HASH_FIELD_L2_SRC,
+	HASH_FIELD_L3_SRC,
+	HASH_FIELD_L3_DST,
+	HASH_FIELD_L4_SRC,
+};
+
+enum {
+	BPF_MAP_ID_KEY,
+	BPF_MAP_ID_SIMPLE,
+};
+
+struct rss_key {
+	__u32 key[32];
+	__u32 hash_fields;
+	__u32 key_size;
+	__u32 queues[TAP_MAX_QUEUES];
+	__u32 nb_queues;
+};
+
+int bpf_load_cls_q_insns(__u32 queue_idx);
+int bpf_load_tailing_insns(void);
+int bpf_load_hash_appending_insns(void);
+int bpf_load_queue_setting_insns(__u32 queue_idx);
+int bpf_load_l2_src_hash_insns(__u32 key_idx);
+int bpf_load_l2_dst_hash_insns(__u32 key_idx);
+int bpf_load_l3_dst_hash_insns(__u32 key_idx);
+int bpf_load_l3_src_hash_insns(__u32 key_idx);
+int bpf_load_l4_src_hash_insns(__u32 key_idx);
+
+int bpf_load(enum bpf_prog_type type, const struct bpf_insn *insns,
+		size_t insns_cnt, const char *license, __u32 kern_version);
+
+#endif /* __BPF_SHARED__ */
diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c
index 43bab7d..355f493 100644
--- a/drivers/net/tap/tap_flow.c
+++ b/drivers/net/tap/tap_flow.c
@@ -46,6 +46,8 @@
 #include <linux/bpf.h>
 #include <linux/tc_act/tc_bpf.h>
 
+#include <tap_bpf_shared.h>
+
 #ifndef HAVE_TC_FLOWER
 /*
  * For kernels < 4.2, this enum is not defined. Runtime checks will be made to
@@ -1673,7 +1675,9 @@ static int rss_enable(struct pmd_internals *pmd)
 			},
 		};
 
-		bpf_fd = 0;
+		bpf_fd = bpf_load_cls_q_insns(i);
+		if (bpf_fd == -1)
+			return -1;
 
 		rss_flow = rte_malloc(__func__, sizeof(struct rte_flow), 0);
 		if (!rss_flow) {
@@ -1708,6 +1712,11 @@ static int rss_enable(struct pmd_internals *pmd)
 		LIST_INSERT_HEAD(&pmd->rss_flows, rss_flow, next);
 	}
 
+	/* Add a rule that adds 4 bytes at packet's end to hold the hash */
+	bpf_fd = bpf_load_tailing_insns();
+	if (bpf_fd == -1)
+		return -1;
+
 	snprintf(annotation, sizeof(annotation), "%s:[%s]", BPF_PROGRAM,
 		 section);
 	rss_flow = rte_malloc(__func__, sizeof(struct rte_flow), 0);
-- 
2.7.4



More information about the dev mailing list