* [dpdk-dev] [RFC 2/2] net/tap: add eBPF instructions
2017-11-30 8:01 [dpdk-dev] [RFC 1/2] net/tap: add eBPF to TAP device Ophir Munk
@ 2017-11-30 8:01 ` Ophir Munk
2017-11-30 16:54 ` Stephen Hemminger
2017-11-30 16:47 ` [dpdk-dev] [RFC 1/2] net/tap: add eBPF to TAP device Stephen Hemminger
2017-12-05 7:53 ` Pascal Mazon
2 siblings, 1 reply; 11+ messages in thread
From: Ophir Munk @ 2017-11-30 8:01 UTC (permalink / raw)
To: dev; +Cc: Thomas Monjalon, Olga Shern, Pascal Mazon, Ophir Munk
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@mellanox.com>
Signed-off-by: Pascal Mazon <pascal.mazon@6wind.com>
---
drivers/net/tap/Makefile | 1 +
drivers/net/tap/tap_bpf_api.h | 276 ++
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 +-
6 files changed, 6075 insertions(+), 1 deletion(-)
create mode 100644 drivers/net/tap/tap_bpf_api.h
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_api.h b/drivers/net/tap/tap_bpf_api.h
new file mode 100644
index 0000000..0328dd8
--- /dev/null
+++ b/drivers/net/tap/tap_bpf_api.h
@@ -0,0 +1,276 @@
+/*******************************************************************************
+
+ Copyright (C) 2015 Daniel Borkmann <daniel@iogearbox.net>
+
+ Copied from iproute2's include/bpf_api.h, available at:
+ https://git.kernel.org/pub/scm/linux/kernel/git/shemminger/iproute2.git
+
+ This file is licensed under GNU General Public License (GPL) v2.
+
+ The full GNU General Public License is included in this distribution in
+ the file called "LICENSE.GPL".
+
+*******************************************************************************/
+
+
+#ifndef __BPF_API__
+#define __BPF_API__
+
+/* Note:
+ *
+ * This file can be included into eBPF kernel programs. It contains
+ * a couple of useful helper functions, map/section ABI (bpf_elf.h),
+ * misc macros and some eBPF specific LLVM built-ins.
+ */
+
+#include <stdint.h>
+
+#include <linux/pkt_cls.h>
+#include <linux/bpf.h>
+#include <linux/filter.h>
+
+#include <asm/byteorder.h>
+
+#include "tap_bpf_elf.h"
+
+/** Misc macros. */
+
+#ifndef __stringify
+# define __stringify(X) #X
+#endif
+
+#ifndef __maybe_unused
+# define __maybe_unused __attribute__((__unused__))
+#endif
+
+#ifndef offsetof
+# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
+#endif
+
+#ifndef likely
+# define likely(X) __builtin_expect(!!(X), 1)
+#endif
+
+#ifndef unlikely
+# define unlikely(X) __builtin_expect(!!(X), 0)
+#endif
+
+#ifndef htons
+# define htons(X) __constant_htons((X))
+#endif
+
+#ifndef ntohs
+# define ntohs(X) __constant_ntohs((X))
+#endif
+
+#ifndef htonl
+# define htonl(X) __constant_htonl((X))
+#endif
+
+#ifndef ntohl
+# define ntohl(X) __constant_ntohl((X))
+#endif
+
+#ifndef __inline__
+# define __inline__ __attribute__((always_inline))
+#endif
+
+/** Section helper macros. */
+
+#ifndef __section
+# define __section(NAME) \
+ __attribute__((section(NAME), used))
+#endif
+
+#ifndef __section_tail
+# define __section_tail(ID, KEY) \
+ __section(__stringify(ID) "/" __stringify(KEY))
+#endif
+
+#ifndef __section_xdp_entry
+# define __section_xdp_entry \
+ __section(ELF_SECTION_PROG)
+#endif
+
+#ifndef __section_cls_entry
+# define __section_cls_entry \
+ __section(ELF_SECTION_CLASSIFIER)
+#endif
+
+#ifndef __section_act_entry
+# define __section_act_entry \
+ __section(ELF_SECTION_ACTION)
+#endif
+
+#ifndef __section_lwt_entry
+# define __section_lwt_entry \
+ __section(ELF_SECTION_PROG)
+#endif
+
+#ifndef __section_license
+# define __section_license \
+ __section(ELF_SECTION_LICENSE)
+#endif
+
+#ifndef __section_maps
+# define __section_maps \
+ __section(ELF_SECTION_MAPS)
+#endif
+
+/** Declaration helper macros. */
+
+#ifndef BPF_LICENSE
+# define BPF_LICENSE(NAME) \
+ char ____license[] __section_license = NAME
+#endif
+
+/** Classifier helper */
+
+#ifndef BPF_H_DEFAULT
+# define BPF_H_DEFAULT -1
+#endif
+
+/** BPF helper functions for tc. Individual flags are in linux/bpf.h */
+
+#ifndef __BPF_FUNC
+# define __BPF_FUNC(NAME, ...) \
+ (* NAME)(__VA_ARGS__)__maybe_unused
+#endif
+
+#ifndef BPF_FUNC
+# define BPF_FUNC(NAME, ...) \
+ __BPF_FUNC(NAME, __VA_ARGS__) = (void *)BPF_FUNC_##NAME
+#endif
+
+/* Map access/manipulation */
+static void *BPF_FUNC(map_lookup_elem, void *map, const void *key);
+static int BPF_FUNC(map_update_elem, void *map, const void *key,
+ const void *value, uint32_t flags);
+static int BPF_FUNC(map_delete_elem, void *map, const void *key);
+
+/* Time access */
+static uint64_t BPF_FUNC(ktime_get_ns);
+
+/* Debugging */
+
+/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless
+ * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved.
+ * It would require ____fmt to be made const, which generates a reloc
+ * entry (non-map).
+ */
+static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...);
+
+#ifndef printt
+# define printt(fmt, ...) \
+ ({ \
+ char ____fmt[] = fmt; \
+ trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \
+ })
+#endif
+
+/* Random numbers */
+static uint32_t BPF_FUNC(get_prandom_u32);
+
+/* Tail calls */
+static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map,
+ uint32_t index);
+
+/* System helpers */
+static uint32_t BPF_FUNC(get_smp_processor_id);
+static uint32_t BPF_FUNC(get_numa_node_id);
+
+/* Packet misc meta data */
+static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb);
+static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index);
+
+static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb);
+static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb);
+static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb);
+
+/* Packet redirection */
+static int BPF_FUNC(redirect, int ifindex, uint32_t flags);
+static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex,
+ uint32_t flags);
+
+/* Packet manipulation */
+static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off,
+ void *to, uint32_t len);
+static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off,
+ const void *from, uint32_t len, uint32_t flags);
+
+static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off,
+ uint32_t from, uint32_t to, uint32_t flags);
+static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off,
+ uint32_t from, uint32_t to, uint32_t flags);
+static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size,
+ const void *to, uint32_t to_size, uint32_t seed);
+static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum);
+
+static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type);
+static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto,
+ uint32_t flags);
+static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen,
+ uint32_t flags);
+
+static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len);
+
+/* Event notification */
+static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map,
+ uint64_t index, const void *data, uint32_t size) =
+ (void *) BPF_FUNC_perf_event_output;
+
+/* Packet vlan encap/decap */
+static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto,
+ uint16_t vlan_tci);
+static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb);
+
+/* Packet tunnel encap/decap */
+static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb,
+ struct bpf_tunnel_key *to, uint32_t size, uint32_t flags);
+static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb,
+ const struct bpf_tunnel_key *from, uint32_t size,
+ uint32_t flags);
+
+static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb,
+ void *to, uint32_t size);
+static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb,
+ const void *from, uint32_t size);
+
+/** LLVM built-ins, mem*() routines work for constant size */
+
+#ifndef lock_xadd
+# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val))
+#endif
+
+#ifndef memset
+# define memset(s, c, n) __builtin_memset((s), (c), (n))
+#endif
+
+#ifndef memcpy
+# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n))
+#endif
+
+#ifndef memmove
+# define memmove(d, s, n) __builtin_memmove((d), (s), (n))
+#endif
+
+/* FIXME: __builtin_memcmp() is not yet fully useable unless llvm bug
+ * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also
+ * this one would generate a reloc entry (non-map), otherwise.
+ */
+#if 0
+#ifndef memcmp
+# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n))
+#endif
+#endif
+
+unsigned long long load_byte(void *skb, unsigned long long off)
+ asm ("llvm.bpf.load.byte");
+
+unsigned long long load_half(void *skb, unsigned long long off)
+ asm ("llvm.bpf.load.half");
+
+unsigned long long load_word(void *skb, unsigned long long off)
+ asm ("llvm.bpf.load.word");
+
+#endif /* __BPF_API__ */
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);
--
1.8.3.1
^ permalink raw reply [flat|nested] 11+ messages in thread