net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements.

Message ID 20240112134821.2067-1-madhuker.mythri@oracle.com (mailing list archive)
State Rejected, archived
Delegated to: Ferruh Yigit
Headers
Series net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements. |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/iol-broadcom-Performance success Performance Testing PASS
ci/intel-Testing success Testing PASS
ci/iol-compile-amd64-testing success Testing PASS
ci/intel-Functional success Functional PASS
ci/iol-abi-testing success Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/github-robot: build success github build: passed
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS

Commit Message

Madhuker Mythri Jan. 12, 2024, 1:48 p.m. UTC
  From: Madhuker Mythri <madhuker.mythri@oracle.com>

When multiple queues configured, internally RSS will be enabled and thus TAP BPF RSS byte-code will be loaded on to the Kernel using BPF system calls.

Here, the problem is loading the existing BPF byte-code to the Kernel-5.15 and above versions throws errors, i.e: Kernel BPF verifier not accepted this existing BPF byte-code and system calls return error code "-7" as follows:
------------------------
rss_add_actions(): Failed to load BPF section l3_l4 (7): Argument list too long
------------------------

RCA:  These errors started coming after from the Kernel-5.15 version, in which lots of new BPF verification restrictions were added for safe execution of byte-code on to the Kernel, due to which existing BPF program verification does not pass.
Here are the major BPF verifier restrictions observed:
1) Need to use new BPF maps structure.
2) Kernel SKB data pointer access not allowed, instead use the BPF helper functions.
3) Undefined loops were not allowed(which are bounded by a variable value).
4) unreachable instructions(like: undefined array access).

After addressing all these Kernel BPF verifier restrictions able to load the BPF byte-code onto the Kernel successfully.

Verified with the latest DPDK-23.11 code, using the python extracted
BPF instructions able to load sucessfully on to the Kernel tap device.

Bugzilla Id: 1329

Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com>
---
 drivers/net/tap/bpf/Makefile          |    6 +-
 drivers/net/tap/bpf/bpf_api.h         |  276 ---
 drivers/net/tap/bpf/bpf_elf.h         |   53 -
 drivers/net/tap/bpf/tap_bpf_program.c |  233 +--
 drivers/net/tap/tap_bpf_api.c         |    5 +-
 drivers/net/tap/tap_bpf_insns.h       | 2300 ++++++++++++++-----------
 6 files changed, 1416 insertions(+), 1457 deletions(-)
 delete mode 100644 drivers/net/tap/bpf/bpf_api.h
 delete mode 100644 drivers/net/tap/bpf/bpf_elf.h
  

Comments

Stephen Hemminger Jan. 12, 2024, 4:40 p.m. UTC | #1
On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

> From: Madhuker Mythri <madhuker.mythri@oracle.com>
> 
> When multiple queues configured, internally RSS will be enabled and thus TAP BPF RSS byte-code will be loaded on to the Kernel using BPF system calls.
> 
> Here, the problem is loading the existing BPF byte-code to the Kernel-5.15 and above versions throws errors, i.e: Kernel BPF verifier not accepted this existing BPF byte-code and system calls return error code "-7" as follows:
> ------------------------
> rss_add_actions(): Failed to load BPF section l3_l4 (7): Argument list too long
> ------------------------
> 
> RCA:  These errors started coming after from the Kernel-5.15 version, in which lots of new BPF verification restrictions were added for safe execution of byte-code on to the Kernel, due to which existing BPF program verification does not pass.
> Here are the major BPF verifier restrictions observed:
> 1) Need to use new BPF maps structure.
> 2) Kernel SKB data pointer access not allowed, instead use the BPF helper functions.
> 3) Undefined loops were not allowed(which are bounded by a variable value).
> 4) unreachable instructions(like: undefined array access).
> 
> After addressing all these Kernel BPF verifier restrictions able to load the BPF byte-code onto the Kernel successfully.
> 
> Verified with the latest DPDK-23.11 code, using the python extracted
> BPF instructions able to load sucessfully on to the Kernel tap device.
> 
> Bugzilla Id: 1329
> 
> Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com>

The DPDK practice is to keep patches as followons of original thread.
Please use --msg-id option for reply.
Also put v2 in the mail.

The BPF program doesn't have to meet all the requirements of DPDK checkpatch
since it doesn't use EAL, but it should follow conventions. For example:

$ ./devtools/checkpatches.sh ~/Downloads/tap-bpf.mbox 

### [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements.

WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#92: 
When multiple queues configured, internally RSS will be enabled and thus TAP BPF RSS byte-code will be loaded on to the Kernel using BPF system calls.

WARNING:TYPO_SPELLING: 'sucessfully' may be misspelled - perhaps 'successfully'?
#109: 
BPF instructions able to load sucessfully on to the Kernel tap device.
                              ^^^^^^^^^^^

...

WARNING:BRACES: braces {} are not necessary for single statement blocks
#659: FILE: drivers/net/tap/bpf/tap_bpf_program.c:120:
+	if (rsskey == NULL) {
 		return TC_ACT_OK;
 	}

ERROR:ELSE_AFTER_BRACE: else should follow close brace '}'
#769: FILE: drivers/net/tap/bpf/tap_bpf_program.c:156:
+		}
+		else {

CHECK:BRACES: Unbalanced braces around else statement
#769: FILE: drivers/net/tap/bpf/tap_bpf_program.c:156:
+		else {

ERROR:SPACING: space required before the open parenthesis '('
#790: FILE: drivers/net/tap/bpf/tap_bpf_program.c:168:
+		if(k == hash)

CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#807: FILE: drivers/net/tap/bpf/tap_bpf_program.c:176:
 
+}

total: 2 errors, 7 warnings, 2 checks, 3314 lines checked

0/1 valid patch
  
Stephen Hemminger Jan. 12, 2024, 4:41 p.m. UTC | #2
On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

> -	queue = rsskey->queues[(hash % rsskey->nb_queues) &
> -				       (TAP_MAX_QUEUES - 1)];
> -	skb->cb[1] = QUEUE_OFFSET + queue;
> -	/* printt(">>>>> rss_l3_l4 hash=0x%x queue=%u\n", hash, queue); */
> +	hash = (hash % rsskey->nb_queues) & (TAP_MAX_QUEUES - 1);
> +#pragma clang loop unroll(full)
> +	for (k = 0; k < TAP_MAX_QUEUES; k++) {
> +		if(k == hash)
> +			queue = rsskey->queues[k];
> +	}
>  

Why introduce another loop here. Original code was fine
and bounded.
  
Stephen Hemminger Jan. 12, 2024, 4:42 p.m. UTC | #3
On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

> 2) Kernel SKB data pointer access not allowed, instead use the BPF helper functions.

This is not true, many of the current kernel BPF examples uses skb pointer.
  
Stephen Hemminger Jan. 12, 2024, 4:43 p.m. UTC | #4
On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

> +	if (bpf_skb_load_bytes_relative(skb, 0, &nh, sizeof(nh), BPF_HDR_START_NET))
> +		return TC_ACT_OK;
> +	if (nh.iph.version == 4) {

Using IP header bytes, instead of ether header protocol (in skb->proto)
is changing functionality and wrong. You don't want to be seeing some other
protocol (not IPv4 or IPv6) that just happened to have the 4 in that nibble.

Original code was fine.
  
Stephen Hemminger Jan. 12, 2024, 4:46 p.m. UTC | #5
On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

>  		struct ipv4_l3_l4_tuple v4_tuple = {
> -			.src_addr = IPv4(*(src_dst_addr + 0),
> -					*(src_dst_addr + 1),
> -					*(src_dst_addr + 2),
> -					*(src_dst_addr + 3)),
> -			.dst_addr = IPv4(*(src_dst_addr + 4),
> -					*(src_dst_addr + 5),
> -					*(src_dst_addr + 6),
> -					*(src_dst_addr + 7)),
> +			.src_addr = bpf_ntohl(nh.iph.saddr),
> +			.dst_addr = bpf_ntohl(nh.iph.daddr),

Not sure this is correct.
The RSS calculation (Toeplitz) expects that data is in network
byte order. See app/test/test_thash.c for example.
  
Madhuker Mythri Jan. 13, 2024, 5:50 p.m. UTC | #6
With the original code BPF verifier throws error, due to undefined array access and thus could failed to load the BPF instructions onto the Kernel.
For safe execution on the Kernel, the array access with such undefined value throws error.

So, came up with this loop which has Max-queues as limit.

Thanks,
Madhuker,

-----Original Message-----
From: Stephen Hemminger <stephen@networkplumber.org> 
Sent: 12 January 2024 22:12
To: Madhuker Mythri <madhuker.mythri@oracle.com>
Cc: dev@dpdk.org; ferruh.yigit@amd.com
Subject: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements.

On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

> -	queue = rsskey->queues[(hash % rsskey->nb_queues) &
> -				       (TAP_MAX_QUEUES - 1)];
> -	skb->cb[1] = QUEUE_OFFSET + queue;
> -	/* printt(">>>>> rss_l3_l4 hash=0x%x queue=%u\n", hash, queue); */
> +	hash = (hash % rsskey->nb_queues) & (TAP_MAX_QUEUES - 1); #pragma 
> +clang loop unroll(full)
> +	for (k = 0; k < TAP_MAX_QUEUES; k++) {
> +		if(k == hash)
> +			queue = rsskey->queues[k];
> +	}
>  

Why introduce another loop here. Original code was fine and bounded.
  
Madhuker Mythri Jan. 13, 2024, 5:52 p.m. UTC | #7
That's true, SKB pointer access denied and throws error.
So, I have to replace with this BPF helper functions.


-----Original Message-----
From: Stephen Hemminger <stephen@networkplumber.org> 
Sent: 12 January 2024 22:12
To: Madhuker Mythri <madhuker.mythri@oracle.com>
Cc: dev@dpdk.org; ferruh.yigit@amd.com
Subject: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements.

On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

> 2) Kernel SKB data pointer access not allowed, instead use the BPF helper functions.

This is not true, many of the current kernel BPF examples uses skb pointer.
  
Madhuker Mythri Jan. 13, 2024, 5:55 p.m. UTC | #8
Even, in the original code the IP-address converted to host-order from network byte order.
Now, I just replaced with BPF API's to convert to host-order.

-----Original Message-----
From: Stephen Hemminger <stephen@networkplumber.org> 
Sent: 12 January 2024 22:17
To: Madhuker Mythri <madhuker.mythri@oracle.com>
Cc: dev@dpdk.org; ferruh.yigit@amd.com
Subject: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements.

On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

>  		struct ipv4_l3_l4_tuple v4_tuple = {
> -			.src_addr = IPv4(*(src_dst_addr + 0),
> -					*(src_dst_addr + 1),
> -					*(src_dst_addr + 2),
> -					*(src_dst_addr + 3)),
> -			.dst_addr = IPv4(*(src_dst_addr + 4),
> -					*(src_dst_addr + 5),
> -					*(src_dst_addr + 6),
> -					*(src_dst_addr + 7)),
> +			.src_addr = bpf_ntohl(nh.iph.saddr),
> +			.dst_addr = bpf_ntohl(nh.iph.daddr),

Not sure this is correct.
The RSS calculation (Toeplitz) expects that data is in network byte order. See app/test/test_thash.c for example.
  
Stephen Hemminger Jan. 13, 2024, 6:05 p.m. UTC | #9
On Sat, 13 Jan 2024 17:50:19 +0000
Madhuker Mythri <madhuker.mythri@oracle.com> wrote:

> With the original code BPF verifier throws error, due to undefined array access and thus could failed to load the BPF instructions onto the Kernel.
> For safe execution on the Kernel, the array access with such undefined value throws error.
> 
> So, came up with this loop which has Max-queues as limit.
> 
> Thanks,
> Madhuker,

It does not for me.
  
Stephen Hemminger Jan. 13, 2024, 6:06 p.m. UTC | #10
On Sat, 13 Jan 2024 17:52:34 +0000
Madhuker Mythri <madhuker.mythri@oracle.com> wrote:

> That's true, SKB pointer access denied and throws error.
> So, I have to replace with this BPF helper functions.

It does not for me using current Debian kernel.
You may have enabled something else.
  
Madhuker Mythri Jan. 16, 2024, 5:43 a.m. UTC | #11
Hi Stephen,

Yes, I found that the Kernel we use has more Verification added for safe execution:
https://blogs.oracle.com/linux/post/bpf-in-depth-the-bpf-bytecode-and-the-bpf-verifier

Here they mentioned about SKB pointer direct access, math on pointer and array with undefined access is denied on BPF code.

Thanks,
Madhuker.

-----Original Message-----
From: Stephen Hemminger <stephen@networkplumber.org> 
Sent: 13 January 2024 23:36
To: Madhuker Mythri <madhuker.mythri@oracle.com>
Cc: dev@dpdk.org; ferruh.yigit@amd.com
Subject: Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements.

On Sat, 13 Jan 2024 17:52:34 +0000
Madhuker Mythri <madhuker.mythri@oracle.com> wrote:

> That's true, SKB pointer access denied and throws error.
> So, I have to replace with this BPF helper functions.

It does not for me using current Debian kernel.
You may have enabled something else.
  
Stephen Hemminger Jan. 16, 2024, 4:40 p.m. UTC | #12
On Tue, 16 Jan 2024 05:43:00 +0000
Madhuker Mythri <madhuker.mythri@oracle.com> wrote:

> Hi Stephen,
> 
> Yes, I found that the Kernel we use has more Verification added for safe execution:
> https://blogs.oracle.com/linux/post/bpf-in-depth-the-bpf-bytecode-and-the-bpf-verifier
> 
> Here they mentioned about SKB pointer direct access, math on pointer and array with undefined access is denied on BPF code.
> 
> Thanks,
> Madhuker.

Most of your changes, make sense and should be merged.
But the custom verifier changes do not need to be added.
The DPDK upstream project is not targeted at supporting custom vendor API modifications.
  
Stephen Hemminger Jan. 16, 2024, 4:43 p.m. UTC | #13
On Sat, 13 Jan 2024 17:50:19 +0000
Madhuker Mythri <madhuker.mythri@oracle.com> wrote:

> With the original code BPF verifier throws error, due to undefined array access and thus could failed to load the BPF instructions onto the Kernel.
> For safe execution on the Kernel, the array access with such undefined value throws error.
> 
> So, came up with this loop which has Max-queues as limit.
> 
> Thanks,
> Madhuker,

The result of x & 15 is always going to be less than 16.
The Oracle BPF verifier modifications are junk if it can figure that out.
  
Stephen Hemminger Jan. 17, 2024, 3:25 a.m. UTC | #14
On Tue, 16 Jan 2024 05:43:00 +0000
Madhuker Mythri <madhuker.mythri@oracle.com> wrote:

> Hi Stephen,
> 
> Yes, I found that the Kernel we use has more Verification added for safe execution:
> https://blogs.oracle.com/linux/post/bpf-in-depth-the-bpf-bytecode-and-the-bpf-verifier
> 
> Here they mentioned about SKB pointer direct access, math on pointer and array with undefined access is denied on BPF code.

Have you tried running Cilium? I would expect those custom changes would break that
  
Madhuker Mythri Jan. 17, 2024, 4:19 p.m. UTC | #15
No, I did not run with Cilium.

Thanks,
Madhuker.

-----Original Message-----
From: Stephen Hemminger <stephen@networkplumber.org> 
Sent: 17 January 2024 08:56
To: Madhuker Mythri <madhuker.mythri@oracle.com>
Cc: dev@dpdk.org; ferruh.yigit@amd.com
Subject: Re: [External] : Re: [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements.

On Tue, 16 Jan 2024 05:43:00 +0000
Madhuker Mythri <madhuker.mythri@oracle.com> wrote:

> Hi Stephen,
> 
> Yes, I found that the Kernel we use has more Verification added for safe execution:
> https://blogs.oracle.com/linux/post/bpf-in-depth-the-bpf-bytecode-and-the-bpf-verifier
> 
> Here they mentioned about SKB pointer direct access, math on pointer and array with undefined access is denied on BPF code.

Have you tried running Cilium? I would expect those custom changes would break that
  
Stephen Hemminger Feb. 7, 2024, 6:55 p.m. UTC | #16
On Fri, 12 Jan 2024 19:18:21 +0530
madhuker.mythri@oracle.com wrote:

> +struct  {
> +	__uint(type,       BPF_MAP_TYPE_HASH);
> +	__type(key,  __u32);
> +	__type(value,     struct rss_key);
> +	__uint(max_entries,      256);
> +} map_keys SEC(".maps");
>  

Overall this patch is a big step forward in getting TAP BPF going again.
But using the new BTF maps won't work with how the tap device is
loading the BPF program. Getting BTF to work requires more steps and
is best done by using libbpf. With this part of your version current
kernels will give type mismatch in verifier since the type information
for map_keys is not loaded.

See my followon RFC for what libbpf integration looks like.
Ends up being a deeper rewrite.
  

Patch

diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile
index 9efeeb1bc7..218aeaac45 100644
--- a/drivers/net/tap/bpf/Makefile
+++ b/drivers/net/tap/bpf/Makefile
@@ -6,14 +6,16 @@  CLANG=clang
 CLANG_OPTS=-O2
 TARGET=../tap_bpf_insns.h
 
+CLANG_BPF_SYS_INCLUDES ?= $(shell $(CLANG) -v -E - </dev/null 2>&1 \
+	| sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }')
+
 all: $(TARGET)
 
 clean:
 	rm tap_bpf_program.o $(TARGET)
 
 tap_bpf_program.o: tap_bpf_program.c
-	$(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \
-	llc -march=bpf -filetype=obj -o $@
+	$(CLANG) $(CLANG_OPTS) $(CLANG_BPF_SYS_INCLUDES) -target bpf -c $< -g -o $@
 
 $(TARGET): tap_bpf_program.o
 	python3 bpf_extract.py -stap_bpf_program.c -o $@ $<
diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h
deleted file mode 100644
index 2638a8a4ac..0000000000
--- a/drivers/net/tap/bpf/bpf_api.h
+++ /dev/null
@@ -1,276 +0,0 @@ 
-/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
-
-#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 "bpf_elf.h"
-
-/** libbpf pin type. */
-enum libbpf_pin_type {
-	LIBBPF_PIN_NONE,
-	/* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */
-	LIBBPF_PIN_BY_NAME,
-};
-
-/** Type helper macros. */
-
-#define __uint(name, val) int (*name)[val]
-#define __type(name, val) typeof(val) *name
-#define __array(name, val) typeof(val) *name[]
-
-/** 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 usable 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/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h
deleted file mode 100644
index ea8a11c95c..0000000000
--- a/drivers/net/tap/bpf/bpf_elf.h
+++ /dev/null
@@ -1,53 +0,0 @@ 
-/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
-#ifndef __BPF_ELF__
-#define __BPF_ELF__
-
-#include <asm/types.h>
-
-/* Note:
- *
- * Below ELF section names and bpf_elf_map structure definition
- * are not (!) kernel ABI. It's rather a "contract" between the
- * application and the BPF loader in tc. For compatibility, the
- * section names should stay as-is. Introduction of aliases, if
- * needed, are a possibility, though.
- */
-
-/* ELF section names, etc */
-#define ELF_SECTION_LICENSE	"license"
-#define ELF_SECTION_MAPS	"maps"
-#define ELF_SECTION_PROG	"prog"
-#define ELF_SECTION_CLASSIFIER	"classifier"
-#define ELF_SECTION_ACTION	"action"
-
-#define ELF_MAX_MAPS		64
-#define ELF_MAX_LICENSE_LEN	128
-
-/* Object pinning settings */
-#define PIN_NONE		0
-#define PIN_OBJECT_NS		1
-#define PIN_GLOBAL_NS		2
-
-/* ELF map definition */
-struct bpf_elf_map {
-	__u32 type;
-	__u32 size_key;
-	__u32 size_value;
-	__u32 max_elem;
-	__u32 flags;
-	__u32 id;
-	__u32 pinning;
-	__u32 inner_id;
-	__u32 inner_idx;
-};
-
-#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val)		\
-	struct ____btf_map_##name {				\
-		type_key key;					\
-		type_val value;					\
-	};							\
-	struct ____btf_map_##name				\
-	    __attribute__ ((section(".maps." #name), used))	\
-	    ____btf_map_##name = { }
-
-#endif /* __BPF_ELF__ */
diff --git a/drivers/net/tap/bpf/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c
index f05aed021c..00f224f734 100644
--- a/drivers/net/tap/bpf/tap_bpf_program.c
+++ b/drivers/net/tap/bpf/tap_bpf_program.c
@@ -2,67 +2,42 @@ 
  * Copyright 2017 Mellanox Technologies, Ltd
  */
 
-#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 "bpf_api.h"
-#include "bpf_elf.h"
+#include <linux/udp.h>
+#include <linux/bpf.h>
+#include <bpf/bpf_helpers.h>
+#include <bpf/bpf_tracing.h>
+#include <bpf/bpf_endian.h>
+#include <linux/pkt_cls.h>
 #include "../tap_rss.h"
 
-/** Create IPv4 address */
-#define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
-		(((b) & 0xff) << 16) | \
-		(((c) & 0xff) << 8)  | \
-		((d) & 0xff))
-
-#define PORT(a, b) ((__u16)(((a) & 0xff) << 8) | \
-		((b) & 0xff))
-
 /*
  * The queue number is offset by a unique QUEUE_OFFSET, to distinguish
  * packets that have gone through this rule (skb->cb[1] != 0) from others.
  */
 #define QUEUE_OFFSET		0x7cafe800
-#define PIN_GLOBAL_NS		2
 
-#define KEY_IDX			0
-#define BPF_MAP_ID_KEY	1
+#define IP_MF		0x2000		/** IP header Flags **/
+#define IP_OFFSET	0x1FFF		/** IP header fragment offset **/
 
-struct vlan_hdr {
-	__be16 proto;
-	__be16 tci;
-};
 
-struct bpf_elf_map __attribute__((section("maps"), used))
-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  {
+	__uint(type,       BPF_MAP_TYPE_HASH);
+	__type(key,  __u32);
+	__type(value,     struct rss_key);
+	__uint(max_entries,      256);
+} map_keys SEC(".maps");
 
-__section("cls_q") int
-match_q(struct __sk_buff *skb)
+SEC("cls_q")
+int match_q(struct __sk_buff *skb)
 {
 	__u32 queue = skb->cb[1];
-	/* queue is set by tap_flow_bpf_cls_q() before load */
 	volatile __u32 q = 0xdeadbeef;
 	__u32 match_queue = QUEUE_OFFSET + q;
 
-	/* printt("match_q$i() queue = %d\n", queue); */
-
 	if (queue != match_queue)
 		return TC_ACT_OK;
 
@@ -71,7 +46,6 @@  match_q(struct __sk_buff *skb)
 	return TC_ACT_UNSPEC;
 }
 
-
 struct ipv4_l3_l4_tuple {
 	__u32    src_addr;
 	__u32    dst_addr;
@@ -86,6 +60,16 @@  struct ipv6_l3_l4_tuple {
 	__u16       sport;
 } __attribute__((packed));
 
+struct neth {
+	struct iphdr iph;
+	struct udphdr udph;
+} __attribute__((packed));
+
+struct net6h {
+	struct ipv6hdr ip6h;
+	struct udphdr udph;
+} __attribute__((packed));
+
 static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
 	0xd1, 0x81, 0xc6, 0x2c,
 	0xf7, 0xf4, 0xdb, 0x5b,
@@ -99,18 +83,18 @@  static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
 	0x2a, 0xdc, 0x1f, 0xfc,
 };
 
-static __u32  __attribute__((always_inline))
-rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key,
-		__u8 input_len)
+static __u64  __attribute__((always_inline))
+rte_softrss_be(const __u32 *input_tuple, __u8 input_len)
 {
-	__u32 i, j, hash = 0;
-#pragma unroll
+	__u32 i, j;
+	__u64 hash = 0;
+#pragma clang loop unroll(full)
 	for (j = 0; j < input_len; j++) {
-#pragma unroll
+#pragma clang loop unroll(full)
 		for (i = 0; i < 32; i++) {
 			if (input_tuple[j] & (1U << (31 - i))) {
 				hash ^= ((const __u32 *)def_rss_key)[j] << i |
-				(__u32)((uint64_t)
+				(__u32)((__u64)
 				(((const __u32 *)def_rss_key)[j + 1])
 					>> (32 - i));
 			}
@@ -119,137 +103,76 @@  rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key,
 	return hash;
 }
 
-static int __attribute__((always_inline))
+SEC("l3_l4")
+int __attribute__((always_inline))
 rss_l3_l4(struct __sk_buff *skb)
 {
-	void *data_end = (void *)(long)skb->data_end;
-	void *data = (void *)(long)skb->data;
-	__u16 proto = (__u16)skb->protocol;
+	struct neth nh;
+	struct net6h n6h;
 	__u32 key_idx = 0xdeadbeef;
-	__u32 hash;
+	__u64 hash;
 	struct rss_key *rsskey;
-	__u64 off = ETH_HLEN;
-	int j;
-	__u8 *key = 0;
+	int j, k, ret;
 	__u32 len;
 	__u32 queue = 0;
-	bool mf = 0;
-	__u16 frag_off = 0;
 
-	rsskey = map_lookup_elem(&map_keys, &key_idx);
-	if (!rsskey) {
-		printt("hash(): rss key is not configured\n");
+	rsskey = bpf_map_lookup_elem(&map_keys, &key_idx);
+	if (rsskey == NULL) {
 		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 (proto == htons(ETH_P_IP)) {
-		if (data + off + sizeof(struct iphdr) + sizeof(__u32)
-			> data_end)
-			return TC_ACT_OK;
-
-		__u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr);
-		__u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off);
-		__u8 *prot_addr = data + off + offsetof(struct iphdr, protocol);
-		__u8 *src_dst_port = data + off + sizeof(struct iphdr);
+	if (bpf_skb_load_bytes_relative(skb, 0, &nh, sizeof(nh), BPF_HDR_START_NET))
+		return TC_ACT_OK;
+	if (nh.iph.version == 4) {
 		struct ipv4_l3_l4_tuple v4_tuple = {
-			.src_addr = IPv4(*(src_dst_addr + 0),
-					*(src_dst_addr + 1),
-					*(src_dst_addr + 2),
-					*(src_dst_addr + 3)),
-			.dst_addr = IPv4(*(src_dst_addr + 4),
-					*(src_dst_addr + 5),
-					*(src_dst_addr + 6),
-					*(src_dst_addr + 7)),
+			.src_addr = bpf_ntohl(nh.iph.saddr),
+			.dst_addr = bpf_ntohl(nh.iph.daddr),
 			.sport = 0,
 			.dport = 0,
 		};
-		/** Fetch the L4-payer port numbers only in-case of TCP/UDP
-		 ** and also if the packet is not fragmented. Since fragmented
-		 ** chunks do not have L4 TCP/UDP header.
-		 **/
-		if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) {
-			frag_off = PORT(*(frag_off_addr + 0),
-					*(frag_off_addr + 1));
-			mf = frag_off & 0x2000;
-			frag_off = frag_off & 0x1fff;
-			if (mf == 0 && frag_off == 0) {
-				v4_tuple.sport = PORT(*(src_dst_port + 0),
-						*(src_dst_port + 1));
-				v4_tuple.dport = PORT(*(src_dst_port + 2),
-						*(src_dst_port + 3));
+		if (nh.iph.protocol == IPPROTO_UDP || nh.iph.protocol == IPPROTO_TCP) {
+			/** Is IP fragmented **/
+			if ((nh.iph.frag_off & bpf_htons(IP_MF | IP_OFFSET)) == 0) {
+				v4_tuple.sport = bpf_ntohs(nh.udph.source);
+				v4_tuple.dport = bpf_ntohs(nh.udph.dest);
 			}
 		}
-		__u8 input_len = sizeof(v4_tuple) / sizeof(__u32);
-		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3))
-			input_len--;
-		hash = rte_softrss_be((__u32 *)&v4_tuple, key, 3);
-	} else if (proto == htons(ETH_P_IPV6)) {
-		if (data + off + sizeof(struct ipv6hdr) +
-					sizeof(__u32) > data_end)
-			return TC_ACT_OK;
-		__u8 *src_dst_addr = data + off +
-					offsetof(struct ipv6hdr, saddr);
-		__u8 *src_dst_port = data + off +
-					sizeof(struct ipv6hdr);
-		__u8 *next_hdr = data + off +
-					offsetof(struct ipv6hdr, nexthdr);
-
+		hash = rte_softrss_be((__u32 *)&v4_tuple, 3);
+	} else if (nh.iph.version == 6) {
 		struct ipv6_l3_l4_tuple v6_tuple;
-		for (j = 0; j < 4; j++)
-			*((uint32_t *)&v6_tuple.src_addr + j) =
-				__builtin_bswap32(*((uint32_t *)
-						src_dst_addr + j));
-		for (j = 0; j < 4; j++)
-			*((uint32_t *)&v6_tuple.dst_addr + j) =
-				__builtin_bswap32(*((uint32_t *)
-						src_dst_addr + 4 + j));
-
-		/** Fetch the L4 header port-numbers only if next-header
-		 * is TCP/UDP **/
-		if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) {
-			v6_tuple.sport = PORT(*(src_dst_port + 0),
-				      *(src_dst_port + 1));
-			v6_tuple.dport = PORT(*(src_dst_port + 2),
-				      *(src_dst_port + 3));
-		} else {
+		if (bpf_skb_load_bytes_relative(skb, 0, &n6h, sizeof(n6h), BPF_HDR_START_NET))
+			return TC_ACT_OK;
+#pragma clang loop unroll(full)
+		for (j = 0; j < 4; j++) {
+			*((__u32 *)&v6_tuple.src_addr + j) =
+							bpf_ntohl(n6h.ip6h.saddr.in6_u.u6_addr32[j]);
+			*((__u32 *)&v6_tuple.dst_addr + j) =
+							bpf_ntohl(n6h.ip6h.daddr.in6_u.u6_addr32[j]);
+		}
+		if (n6h.ip6h.nexthdr == IPPROTO_UDP || n6h.ip6h.nexthdr == IPPROTO_UDP) {
+			v6_tuple.sport = bpf_ntohs(n6h.udph.source);
+			v6_tuple.dport = bpf_ntohs(n6h.udph.dest);
+		}
+		else {
 			v6_tuple.sport = 0;
 			v6_tuple.dport = 0;
 		}
-
-		__u8 input_len = sizeof(v6_tuple) / sizeof(__u32);
-		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3))
-			input_len--;
-		hash = rte_softrss_be((__u32 *)&v6_tuple, key, 9);
+		hash = rte_softrss_be((__u32 *)&v6_tuple, 9);
 	} else {
 		return TC_ACT_PIPE;
 	}
 
-	queue = rsskey->queues[(hash % rsskey->nb_queues) &
-				       (TAP_MAX_QUEUES - 1)];
-	skb->cb[1] = QUEUE_OFFSET + queue;
-	/* printt(">>>>> rss_l3_l4 hash=0x%x queue=%u\n", hash, queue); */
+	hash = (hash % rsskey->nb_queues) & (TAP_MAX_QUEUES - 1);
+#pragma clang loop unroll(full)
+	for (k = 0; k < TAP_MAX_QUEUES; k++) {
+		if(k == hash)
+			queue = rsskey->queues[k];
+	}
 
-	return TC_ACT_RECLASSIFY;
-}
+	skb->cb[1] = (__u32)(QUEUE_OFFSET + queue);
 
-#define RSS(L)						\
-	__section(#L) int				\
-		L ## _hash(struct __sk_buff *skb)	\
-	{						\
-		return rss_ ## L (skb);			\
-	}
+	return TC_ACT_RECLASSIFY;
 
-RSS(l3_l4)
+}
 
-BPF_LICENSE("Dual BSD/GPL");
+char _license[] SEC("license") = "Dual BSD/GPL";
diff --git a/drivers/net/tap/tap_bpf_api.c b/drivers/net/tap/tap_bpf_api.c
index 15283f8917..7e13d4b8b6 100644
--- a/drivers/net/tap/tap_bpf_api.c
+++ b/drivers/net/tap/tap_bpf_api.c
@@ -48,8 +48,9 @@  int tap_flow_bpf_cls_q(__u32 queue_idx)
  */
 int tap_flow_bpf_calc_l3_l4_hash(__u32 key_idx, int map_fd)
 {
-	l3_l4_hash_insns[4].imm = key_idx;
-	l3_l4_hash_insns[9].imm = map_fd;
+	l3_l4_hash_insns[1].imm = key_idx;
+	l3_l4_hash_insns[6].imm = map_fd;
+	l3_l4_hash_insns[6].src_reg = 1;
 
 	return bpf_load(BPF_PROG_TYPE_SCHED_ACT,
 		(struct bpf_insn *)l3_l4_hash_insns,
diff --git a/drivers/net/tap/tap_bpf_insns.h b/drivers/net/tap/tap_bpf_insns.h
index 53fa76c4e6..523dfe7656 100644
--- a/drivers/net/tap/tap_bpf_insns.h
+++ b/drivers/net/tap/tap_bpf_insns.h
@@ -24,395 +24,411 @@  static struct bpf_insn cls_q_insns[] = {
 };
 
 static struct bpf_insn l3_l4_hash_insns[] = {
-	{0xbf,    7,    1,        0, 0x00000000},
-	{0x61,    6,    7,       16, 0x00000000},
-	{0x61,    8,    7,       76, 0x00000000},
-	{0x61,    9,    7,       80, 0x00000000},
+	{0xbf,    6,    1,        0, 0x00000000},
 	{0x18,    1,    0,        0, 0xdeadbeef},
 	{0x00,    0,    0,        0, 0x00000000},
-	{0x63,   10,    1,       -4, 0x00000000},
+	{0x63,   10,    1,      -84, 0x00000000},
 	{0xbf,    2,   10,        0, 0x00000000},
-	{0x07,    2,    0,        0, 0xfffffffc},
+	{0x07,    2,    0,        0, 0xffffffac},
 	{0x18,    1,    0,        0, 0x00000000},
 	{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,     1680, 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,    8,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x00000012},
-	{0x2d,    1,    9,     1670, 0x00000000},
-	{0xb7,    1,    0,        0, 0x00000012},
-	{0x69,    6,    8,       16, 0x00000000},
-	{0xbf,    7,    2,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x0000ffff},
-	{0x7b,   10,    7,      -56, 0x00000000},
-	{0x15,    6,    0,      443, 0x0000dd86},
-	{0xb7,    7,    0,        0, 0x00000003},
-	{0x55,    6,    0,     1662, 0x00000008},
-	{0x0f,    8,    1,        0, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    8,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x00000018},
-	{0x2d,    1,    9,     1657, 0x00000000},
+	{0xbf,    7,    0,        0, 0x00000000},
+	{0xb7,    8,    0,        0, 0x00000000},
+	{0x15,    7,    0,     2064, 0x00000000},
+	{0xbf,    3,   10,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0xffffffe0},
+	{0xbf,    1,    6,        0, 0x00000000},
+	{0xb7,    2,    0,        0, 0x00000000},
+	{0xb7,    4,    0,        0, 0x0000001c},
+	{0xb7,    5,    0,        0, 0x00000001},
+	{0x85,    0,    0,        0, 0x00000044},
+	{0x55,    0,    0,     2056, 0x00000000},
+	{0x71,    1,   10,      -32, 0x00000000},
+	{0x77,    1,    0,        0, 0x00000004},
+	{0x15,    1,    0,      503, 0x00000006},
+	{0xb7,    8,    0,        0, 0x00000003},
+	{0x55,    1,    0,     2051, 0x00000004},
 	{0xb7,    1,    0,        0, 0x00000000},
-	{0x71,    3,    8,       12, 0x00000000},
-	{0x71,    2,    8,        9, 0x00000000},
+	{0x61,    4,   10,      -20, 0x00000000},
+	{0xdc,    4,    0,        0, 0x00000040},
+	{0xc7,    4,    0,        0, 0x00000020},
+	{0x71,    2,   10,      -23, 0x00000000},
 	{0x15,    2,    0,        1, 0x00000011},
-	{0x55,    2,    0,       21, 0x00000006},
-	{0x71,    2,    8,        7, 0x00000000},
-	{0x71,    4,    8,        6, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000008},
-	{0x57,    5,    0,        0, 0x00001f00},
-	{0x4f,    5,    2,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x4f,    4,    5,        0, 0x00000000},
-	{0x55,    4,    0,       12, 0x00000000},
-	{0xbf,    2,    8,        0, 0x00000000},
-	{0x07,    2,    0,        0, 0x00000014},
-	{0x71,    4,    2,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000018},
-	{0x71,    1,    2,        1, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000010},
-	{0x4f,    1,    4,        0, 0x00000000},
-	{0x71,    4,    2,        3, 0x00000000},
-	{0x4f,    1,    4,        0, 0x00000000},
-	{0x71,    2,    2,        2, 0x00000000},
-	{0x67,    2,    0,        0, 0x00000008},
-	{0x4f,    1,    2,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000038},
-	{0xc7,    4,    0,        0, 0x00000038},
+	{0x55,    2,    0,        5, 0x00000006},
+	{0x69,    2,   10,      -26, 0x00000000},
+	{0x57,    2,    0,        0, 0x0000ff3f},
+	{0x55,    2,    0,        2, 0x00000000},
+	{0x61,    1,   10,      -12, 0x00000000},
+	{0xdc,    1,    0,        0, 0x00000020},
 	{0xb7,    2,    0,        0, 0x00000000},
+	{0xb7,    5,    0,        0, 0x00000000},
 	{0x65,    4,    0,        1, 0xffffffff},
-	{0xb7,    7,    0,        0, 0x2cc681d1},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x598d03a2},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb31a0745},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x66340e8a},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xcc681d15},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x98d03a2b},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x31a07456},
-	{0x71,    4,    8,       13, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
+	{0xb7,    5,    0,        0, 0x2cc681d1},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x40000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6340e8ad},
+	{0xa7,    5,    0,        0, 0x598d03a2},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000038},
-	{0xc7,    3,    0,        0, 0x00000038},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc681d15b},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x20000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xb31a0745},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
+	{0x57,    3,    0,        0, 0x10000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d03a2b7},
+	{0xa7,    5,    0,        0, 0x66340e8a},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
+	{0x57,    3,    0,        0, 0x08000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xcc681d15},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x04000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x98d03a2b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x02000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x31a07456},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x01000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6340e8ad},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00800000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xc681d15b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00400000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x8d03a2b7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00200000},
 	{0x15,    3,    0,        1, 0x00000000},
 	{0xa7,    5,    0,        0, 0x1a07456f},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
+	{0x57,    3,    0,        0, 0x00100000},
 	{0x15,    3,    0,        1, 0x00000000},
 	{0xa7,    5,    0,        0, 0x340e8ade},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
+	{0x57,    3,    0,        0, 0x00080000},
 	{0x15,    3,    0,        1, 0x00000000},
 	{0xa7,    5,    0,        0, 0x681d15bd},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd03a2b7b},
+	{0x57,    3,    0,        0, 0x00040000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd03a2b7b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
+	{0x57,    3,    0,        0, 0x00020000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xa07456f6},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00010000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa07456f6},
-	{0x71,    3,    8,       14, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
 	{0xa7,    5,    0,        0, 0x40e8aded},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000038},
-	{0xc7,    4,    0,        0, 0x00000038},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0x81d15bdb},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x03a2b7b7},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x07456f6f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x0e8adedf},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1d15bdbf},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3a2b7b7e},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x7456f6fd},
-	{0x71,    4,    8,       15, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe8adedfa},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000038},
-	{0xc7,    3,    0,        0, 0x00000038},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd15bdbf4},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00008000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x81d15bdb},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
+	{0x57,    3,    0,        0, 0x00004000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa2b7b7e9},
+	{0xa7,    5,    0,        0, 0x03a2b7b7},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
+	{0x57,    3,    0,        0, 0x00002000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x456f6fd3},
+	{0xa7,    5,    0,        0, 0x07456f6f},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
+	{0x57,    3,    0,        0, 0x00001000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8adedfa7},
+	{0xa7,    5,    0,        0, 0x0e8adedf},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
+	{0x57,    3,    0,        0, 0x00000800},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x15bdbf4f},
+	{0xa7,    5,    0,        0, 0x1d15bdbf},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
+	{0x57,    3,    0,        0, 0x00000400},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x2b7b7e9e},
+	{0xa7,    5,    0,        0, 0x3a2b7b7e},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x56f6fd3d},
-	{0x71,    3,    8,       16, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xadedfa7b},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000038},
-	{0xc7,    4,    0,        0, 0x00000038},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5bdbf4f7},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb7b7e9ef},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6f6fd3df},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xdedfa7bf},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xbdbf4f7f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x7b7e9eff},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf6fd3dff},
-	{0x71,    4,    8,       17, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
+	{0x57,    3,    0,        0, 0x00000200},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xedfa7bfe},
+	{0xa7,    5,    0,        0, 0x7456f6fd},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000038},
-	{0xc7,    3,    0,        0, 0x00000038},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdbf4f7fc},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000100},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xe8adedfa},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd15bdbf4},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb7e9eff9},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xa2b7b7e9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000020},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6fd3dff2},
+	{0xa7,    5,    0,        0, 0x456f6fd3},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdfa7bfe5},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x8adedfa7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000008},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbf4f7fca},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7e9eff94},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfd3dff28},
-	{0x71,    3,    8,       18, 0x00000000},
+	{0xa7,    5,    0,        0, 0x15bdbf4f},
+	{0x61,    3,   10,      -16, 0x00000000},
+	{0xbf,    0,    4,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000004},
+	{0x15,    0,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2b7b7e9e},
+	{0xdc,    3,    0,        0, 0x00000040},
+	{0xbf,    0,    4,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000002},
+	{0x15,    0,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x56f6fd3d},
+	{0xc7,    3,    0,        0, 0x00000020},
 	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfa7bfe51},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x67,    6,    0,        0, 0x00000038},
-	{0xc7,    6,    0,        0, 0x00000038},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xadedfa7b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    5,        0, 0x00000000},
-	{0xa7,    4,    0,        0, 0xf4f7fca2},
-	{0x6d,    2,    6,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x5bdbf4f7},
+	{0x6d,    2,    3,        1, 0x00000000},
 	{0xbf,    4,    5,        0, 0x00000000},
 	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
+	{0x57,    5,    0,        0, 0x40000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xb7b7e9ef},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x20000000},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xe9eff945},
+	{0xa7,    4,    0,        0, 0x6f6fd3df},
 	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
+	{0x57,    5,    0,        0, 0x10000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xdedfa7bf},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x08000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xbdbf4f7f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x04000000},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd3dff28a},
+	{0xa7,    4,    0,        0, 0x7b7e9eff},
 	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
+	{0x57,    5,    0,        0, 0x02000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xf6fd3dff},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x01000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xedfa7bfe},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00800000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xdbf4f7fc},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00400000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xb7e9eff9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00200000},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa7bfe514},
+	{0xa7,    4,    0,        0, 0x6fd3dff2},
 	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
+	{0x57,    5,    0,        0, 0x00100000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xdfa7bfe5},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00080000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xbf4f7fca},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00040000},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x4f7fca28},
+	{0xa7,    4,    0,        0, 0x7e9eff94},
 	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
+	{0x57,    5,    0,        0, 0x00020000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xfd3dff28},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00010000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xfa7bfe51},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00008000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xf4f7fca2},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00004000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xe9eff945},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00002000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xd3dff28a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00001000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xa7bfe514},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000800},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x9eff9450},
+	{0xa7,    4,    0,        0, 0x4f7fca28},
 	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
+	{0x57,    5,    0,        0, 0x00000400},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0x9eff9450},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000200},
 	{0x15,    5,    0,        1, 0x00000000},
 	{0xa7,    4,    0,        0, 0x3dff28a0},
-	{0x71,    5,    8,       19, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000100},
+	{0x15,    5,    0,        1, 0x00000000},
 	{0xa7,    4,    0,        0, 0x7bfe5141},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000038},
-	{0xc7,    3,    0,        0, 0x00000038},
-	{0xbf,    7,    4,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf7fca283},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    7,    4,        0, 0x00000000},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xeff94506},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xdff28a0c},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xbfe51418},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x7fca2831},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xff945063},
-	{0xbf,    3,    5,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xff28a0c6},
-	{0x57,    5,    0,        0, 0x00000001},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000080},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xf7fca283},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000040},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xeff94506},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000020},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xdff28a0c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000010},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xbfe51418},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000008},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xfe51418c},
-	{0xbf,    4,    1,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000020},
-	{0xc7,    4,    0,        0, 0x00000020},
-	{0xbf,    3,    7,        0, 0x00000000},
-	{0xa7,    3,    0,        0, 0xfca28319},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    3,    7,        0, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7fca2831},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xff945063},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xff28a0c6},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xfe51418c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    3,        0, 0x00000000},
+	{0xbf,    5,    1,        0, 0x00000000},
+	{0x67,    5,    0,        0, 0x00000020},
+	{0xc7,    5,    0,        0, 0x00000020},
+	{0x18,    0,    0,        0, 0xfca28319},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0xaf,    3,    0,        0, 0x00000000},
+	{0x6d,    2,    5,        1, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x40000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf9450633},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xf9450633},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x20000000},
-	{0x79,    6,   10,      -56, 0x00000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf28a0c67},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xf28a0c67},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x10000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe51418ce},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xe51418ce},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x08000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xca28319d},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xca28319d},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x04000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9450633b},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x9450633b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x02000000},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -423,16 +439,20 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x51418ced},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00800000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xa28319db},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xa28319db},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00400000},
 	{0x15,    2,    0,        1, 0x00000000},
 	{0xa7,    3,    0,        0, 0x450633b6},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00200000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8a0c676c},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x8a0c676c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00100000},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -447,16 +467,20 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x50633b63},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00020000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xa0c676c6},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xa0c676c6},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00010000},
 	{0x15,    2,    0,        1, 0x00000000},
 	{0xa7,    3,    0,        0, 0x418ced8d},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00008000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8319db1a},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x8319db1a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00004000},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -479,12 +503,16 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x633b6347},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000200},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xc676c68f},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xc676c68f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000100},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8ced8d1f},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x8ced8d1f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000080},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -499,12 +527,16 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x676c68fa},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000010},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xced8d1f4},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xced8d1f4},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000008},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9db1a3e9},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x9db1a3e9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000004},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -514,1078 +546,1336 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0x15,    2,    0,        1, 0x00000000},
 	{0xa7,    3,    0,        0, 0x76c68fa5},
 	{0x57,    1,    0,        0, 0x00000001},
-	{0x15,    1,    0,     1194, 0x00000000},
-	{0xa7,    3,    0,        0, 0xed8d1f4a},
-	{0x05,    0,    0,     1192, 0x00000000},
-	{0x0f,    8,    1,        0, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    8,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x0000002c},
-	{0x2d,    1,    9,     1216, 0x00000000},
-	{0x61,    2,    8,        8, 0x00000000},
-	{0xdc,    2,    0,        0, 0x00000040},
-	{0xc7,    2,    0,        0, 0x00000020},
-	{0x71,    3,    8,        6, 0x00000000},
-	{0x15,    3,    0,        2, 0x00000011},
+	{0x15,    1,    0,     1482, 0x00000000},
+	{0x18,    1,    0,        0, 0xed8d1f4a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0x05,    0,    0,     1478, 0x00000000},
+	{0xbf,    3,   10,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0xffffffb0},
+	{0xbf,    1,    6,        0, 0x00000000},
+	{0xb7,    2,    0,        0, 0x00000000},
+	{0xb7,    4,    0,        0, 0x00000030},
+	{0xb7,    5,    0,        0, 0x00000001},
+	{0x85,    0,    0,        0, 0x00000044},
+	{0x55,    0,    0,     1542, 0x00000000},
+	{0xb7,    2,    0,        0, 0x00000000},
+	{0x61,    4,   10,      -72, 0x00000000},
+	{0xdc,    4,    0,        0, 0x00000040},
+	{0xc7,    4,    0,        0, 0x00000020},
+	{0x71,    3,   10,      -74, 0x00000000},
 	{0xb7,    1,    0,        0, 0x00000000},
-	{0x55,    3,    0,       12, 0x00000006},
-	{0xbf,    3,    8,        0, 0x00000000},
-	{0x07,    3,    0,        0, 0x00000028},
-	{0x71,    4,    3,        0, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000018},
-	{0x71,    1,    3,        1, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000010},
-	{0x4f,    1,    4,        0, 0x00000000},
-	{0x71,    4,    3,        3, 0x00000000},
-	{0x4f,    1,    4,        0, 0x00000000},
-	{0x71,    3,    3,        2, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000008},
-	{0x4f,    1,    3,        0, 0x00000000},
-	{0xbf,    4,    2,        0, 0x00000000},
-	{0x77,    4,    0,        0, 0x0000001f},
-	{0x57,    4,    0,        0, 0x2cc681d1},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x55,    3,    0,        2, 0x00000011},
+	{0x61,    1,   10,      -40, 0x00000000},
+	{0xdc,    1,    0,        0, 0x00000020},
+	{0xb7,    5,    0,        0, 0x00000000},
+	{0x65,    4,    0,        1, 0xffffffff},
+	{0xb7,    5,    0,        0, 0x2cc681d1},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x40000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x598d03a2},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x598d03a2},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb31a0745},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xb31a0745},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x10000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x66340e8a},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x66340e8a},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xcc681d15},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xcc681d15},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x98d03a2b},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x98d03a2b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x02000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x31a07456},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x31a07456},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x01000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x6340e8ad},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6340e8ad},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xc681d15b},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xc681d15b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x8d03a2b7},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x8d03a2b7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00200000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x1a07456f},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1a07456f},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00100000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x340e8ade},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x340e8ade},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00080000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x681d15bd},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x681d15bd},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd03a2b7b},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd03a2b7b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa07456f6},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xa07456f6},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00010000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x40e8aded},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x40e8aded},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x81d15bdb},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x81d15bdb},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00004000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x03a2b7b7},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x03a2b7b7},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00002000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x07456f6f},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x07456f6f},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00001000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x0e8adedf},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x0e8adedf},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000800},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x1d15bdbf},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1d15bdbf},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000400},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x3a2b7b7e},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3a2b7b7e},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000200},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x7456f6fd},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7456f6fd},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xe8adedfa},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xe8adedfa},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd15bdbf4},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd15bdbf4},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa2b7b7e9},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xa2b7b7e9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000020},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x456f6fd3},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x456f6fd3},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x8adedfa7},
-	{0xbf,    3,    2,        0, 0x00000000},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x8adedfa7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000008},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x15bdbf4f},
-	{0x61,    3,    8,       12, 0x00000000},
-	{0xbf,    5,    2,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x2b7b7e9e},
+	{0xa7,    5,    0,        0, 0x15bdbf4f},
+	{0x61,    3,   10,      -68, 0x00000000},
+	{0xbf,    0,    4,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000004},
+	{0x15,    0,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2b7b7e9e},
 	{0xdc,    3,    0,        0, 0x00000040},
-	{0xbf,    5,    2,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x56f6fd3d},
+	{0xbf,    0,    4,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000002},
+	{0x15,    0,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x56f6fd3d},
 	{0xc7,    3,    0,        0, 0x00000020},
-	{0x57,    2,    0,        0, 0x00000001},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xadedfa7b},
-	{0xb7,    2,    0,        0, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0x5bdbf4f7},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xadedfa7b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
+	{0xa7,    4,    0,        0, 0x5bdbf4f7},
 	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x40000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xb7b7e9ef},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x20000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x6f6fd3df},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x10000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xdedfa7bf},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x08000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xbdbf4f7f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x04000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7b7e9eff},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x02000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xf6fd3dff},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x01000000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xedfa7bfe},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00800000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xdbf4f7fc},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00400000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xb7e9eff9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00200000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x6fd3dff2},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00100000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xdfa7bfe5},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00080000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xbf4f7fca},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00040000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7e9eff94},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00020000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xfd3dff28},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00010000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xfa7bfe51},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00008000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xf4f7fca2},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00004000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xe9eff945},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00002000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xd3dff28a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00001000},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xa7bfe514},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000800},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x4f7fca28},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000400},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0x9eff9450},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000200},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x3dff28a0},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000100},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7bfe5141},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000080},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xf7fca283},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000040},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xeff94506},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000020},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xdff28a0c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000010},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xbfe51418},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000008},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7fca2831},
+	{0x61,    5,   10,      -64, 0x00000000},
+	{0xbf,    0,    3,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000004},
+	{0x15,    0,    0,        3, 0x00000000},
+	{0x18,    0,    0,        0, 0xff945063},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    0,        0, 0x00000000},
+	{0xdc,    5,    0,        0, 0x00000040},
+	{0xbf,    0,    3,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000002},
+	{0x15,    0,    0,        3, 0x00000000},
+	{0x18,    0,    0,        0, 0xff28a0c6},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    0,        0, 0x00000000},
+	{0xc7,    5,    0,        0, 0x00000020},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xfe51418c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    4,    3,        0, 0x00000000},
+	{0x18,    0,    0,        0, 0xfca28319},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0xaf,    3,    0,        0, 0x00000000},
+	{0x6d,    2,    5,        1, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x40000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb7b7e9ef},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xf9450633},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x20000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6f6fd3df},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xf28a0c67},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x10000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdedfa7bf},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xe51418ce},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x08000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbdbf4f7f},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xca28319d},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x04000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7b7e9eff},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x9450633b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x02000000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf6fd3dff},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x28a0c676},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x01000000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xedfa7bfe},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x51418ced},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00800000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdbf4f7fc},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xa28319db},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00400000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb7e9eff9},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x450633b6},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00200000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6fd3dff2},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x8a0c676c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00100000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdfa7bfe5},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x1418ced8},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00080000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbf4f7fca},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x28319db1},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00040000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7e9eff94},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x50633b63},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00020000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfd3dff28},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xa0c676c6},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00010000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfa7bfe51},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x418ced8d},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00008000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf4f7fca2},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x8319db1a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00004000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe9eff945},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x0633b634},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd3dff28a},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x0c676c68},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa7bfe514},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x18ced8d1},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4f7fca28},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x319db1a3},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x9eff9450},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x633b6347},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3dff28a0},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xc676c68f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000100},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7bfe5141},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x8ced8d1f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf7fca283},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x19db1a3e},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xeff94506},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x33b6347d},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdff28a0c},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0x676c68fa},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbfe51418},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xced8d1f4},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7fca2831},
-	{0x61,    4,    8,       16, 0x00000000},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000004},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xff945063},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x9db1a3e9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    4,        0, 0x00000000},
+	{0x61,    4,   10,      -60, 0x00000000},
+	{0xbf,    0,    5,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000004},
+	{0x15,    0,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x3b6347d2},
 	{0xdc,    4,    0,        0, 0x00000040},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000002},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xff28a0c6},
+	{0xbf,    0,    5,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000002},
+	{0x15,    0,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x76c68fa5},
 	{0xc7,    4,    0,        0, 0x00000020},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfe51418c},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0xfca28319},
+	{0x57,    5,    0,        0, 0x00000001},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0xed8d1f4a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    5,        0, 0x00000000},
+	{0x18,    5,    0,        0, 0xdb1a3e94},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xbf,    0,    3,        0, 0x00000000},
+	{0xaf,    0,    5,        0, 0x00000000},
 	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf9450633},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xb6347d28},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x20000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf28a0c67},
+	{0xa7,    0,    0,        0, 0x6c68fa51},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe51418ce},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd8d1f4a3},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xca28319d},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xb1a3e946},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x04000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9450633b},
+	{0xa7,    0,    0,        0, 0x6347d28d},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x28a0c676},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xc68fa51a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x51418ced},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x8d1f4a35},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00800000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa28319db},
+	{0xa7,    0,    0,        0, 0x1a3e946b},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00400000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x450633b6},
+	{0xa7,    0,    0,        0, 0x347d28d7},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00200000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8a0c676c},
+	{0xa7,    0,    0,        0, 0x68fa51ae},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1418ced8},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd1f4a35c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x28319db1},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xa3e946b9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00040000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x50633b63},
+	{0xa7,    0,    0,        0, 0x47d28d73},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa0c676c6},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x8fa51ae7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00010000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x418ced8d},
+	{0xa7,    0,    0,        0, 0x1f4a35cf},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00008000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8319db1a},
+	{0xa7,    0,    0,        0, 0x3e946b9e},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00004000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x0633b634},
+	{0xa7,    0,    0,        0, 0x7d28d73c},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x0c676c68},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xfa51ae78},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x18ced8d1},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xf4a35cf1},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x319db1a3},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xe946b9e3},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x633b6347},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd28d73c7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc676c68f},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xa51ae78e},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000100},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8ced8d1f},
+	{0xa7,    0,    0,        0, 0x4a35cf1c},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x19db1a3e},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x946b9e38},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000040},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x33b6347d},
+	{0xa7,    0,    0,        0, 0x28d73c71},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000020},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x676c68fa},
+	{0xa7,    0,    0,        0, 0x51ae78e3},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xced8d1f4},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xa35cf1c6},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000008},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9db1a3e9},
-	{0x61,    3,    8,       20, 0x00000000},
+	{0xa7,    0,    0,        0, 0x46b9e38d},
+	{0x61,    3,   10,      -56, 0x00000000},
 	{0xbf,    5,    4,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3b6347d2},
+	{0x15,    5,    0,        3, 0x00000000},
+	{0x18,    5,    0,        0, 0x8d73c71b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    5,        0, 0x00000000},
 	{0xdc,    3,    0,        0, 0x00000040},
 	{0xbf,    5,    4,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000002},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x76c68fa5},
+	{0xa7,    0,    0,        0, 0x1ae78e36},
 	{0xc7,    3,    0,        0, 0x00000020},
 	{0x57,    4,    0,        0, 0x00000001},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xed8d1f4a},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdb1a3e94},
+	{0xa7,    0,    0,        0, 0x35cf1c6c},
+	{0xbf,    5,    0,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6b9e38d9},
 	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    5,    0,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x40000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb6347d28},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xd73c71b2},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x20000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6c68fa51},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xae78e364},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x10000000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd8d1f4a3},
+	{0xa7,    5,    0,        0, 0x5cf1c6c9},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x08000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb1a3e946},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xb9e38d92},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x04000000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6347d28d},
+	{0xa7,    5,    0,        0, 0x73c71b25},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x02000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc68fa51a},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xe78e364b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x01000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d1f4a35},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xcf1c6c96},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00800000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1a3e946b},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x9e38d92c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00400000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x347d28d7},
+	{0xa7,    5,    0,        0, 0x3c71b259},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00200000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x68fa51ae},
+	{0xa7,    5,    0,        0, 0x78e364b2},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00100000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd1f4a35c},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xf1c6c964},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00080000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa3e946b9},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xe38d92c9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00040000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x47d28d73},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xc71b2593},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00020000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8fa51ae7},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x8e364b27},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00010000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1f4a35cf},
+	{0xa7,    5,    0,        0, 0x1c6c964e},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00008000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3e946b9e},
+	{0xa7,    5,    0,        0, 0x38d92c9c},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00004000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7d28d73c},
+	{0xa7,    5,    0,        0, 0x71b25938},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfa51ae78},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xe364b270},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf4a35cf1},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xc6c964e0},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe946b9e3},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x8d92c9c0},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd28d73c7},
+	{0xa7,    5,    0,        0, 0x1b259380},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa51ae78e},
+	{0xa7,    5,    0,        0, 0x364b2700},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000100},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4a35cf1c},
+	{0xa7,    5,    0,        0, 0x6c964e01},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x946b9e38},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xd92c9c03},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x28d73c71},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xb2593807},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x51ae78e3},
+	{0xa7,    5,    0,        0, 0x64b2700f},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa35cf1c6},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xc964e01e},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000008},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x46b9e38d},
-	{0x61,    4,    8,       24, 0x00000000},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000004},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d73c71b},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x92c9c03d},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
+	{0x61,    4,   10,      -52, 0x00000000},
+	{0xbf,    0,    3,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000004},
+	{0x15,    0,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2593807a},
 	{0xdc,    4,    0,        0, 0x00000040},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000002},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1ae78e36},
+	{0xbf,    0,    3,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000002},
+	{0x15,    0,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x4b2700f4},
 	{0xc7,    4,    0,        0, 0x00000020},
 	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x35cf1c6c},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6b9e38d9},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x964e01e8},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0xbf,    0,    5,        0, 0x00000000},
+	{0xa7,    0,    0,        0, 0x2c9c03d1},
 	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    0,    5,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x40000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd73c71b2},
+	{0xa7,    0,    0,        0, 0x593807a3},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xae78e364},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xb2700f46},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x10000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5cf1c6c9},
+	{0xa7,    0,    0,        0, 0x64e01e8d},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb9e38d92},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xc9c03d1a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x73c71b25},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x93807a35},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x02000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe78e364b},
+	{0xa7,    0,    0,        0, 0x2700f46b},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x01000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xcf1c6c96},
+	{0xa7,    0,    0,        0, 0x4e01e8d6},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9e38d92c},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x9c03d1ad},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00400000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3c71b259},
+	{0xa7,    0,    0,        0, 0x3807a35b},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00200000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x78e364b2},
+	{0xa7,    0,    0,        0, 0x700f46b6},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf1c6c964},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xe01e8d6c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe38d92c9},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xc03d1ad9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc71b2593},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x807a35b3},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00020000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8e364b27},
+	{0xa7,    0,    0,        0, 0x00f46b66},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00010000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1c6c964e},
+	{0xa7,    0,    0,        0, 0x01e8d6cc},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00008000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x38d92c9c},
+	{0xa7,    0,    0,        0, 0x03d1ad99},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00004000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x71b25938},
+	{0xa7,    0,    0,        0, 0x07a35b32},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00002000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe364b270},
+	{0xa7,    0,    0,        0, 0x0f46b665},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00001000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc6c964e0},
+	{0xa7,    0,    0,        0, 0x1e8d6cca},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000800},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8d92c9c0},
+	{0xa7,    0,    0,        0, 0x3d1ad994},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000400},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1b259380},
+	{0xa7,    0,    0,        0, 0x7a35b328},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x364b2700},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xf46b6651},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6c964e01},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xe8d6cca2},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd92c9c03},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd1ad9944},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb2593807},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xa35b3289},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000020},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x64b2700f},
+	{0xa7,    0,    0,        0, 0x46b66512},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc964e01e},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x8d6cca25},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000008},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x92c9c03d},
-	{0x61,    3,    8,       28, 0x00000000},
+	{0xa7,    0,    0,        0, 0x1ad9944a},
+	{0x61,    3,   10,      -48, 0x00000000},
 	{0xbf,    5,    4,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000004},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x2593807a},
+	{0xa7,    0,    0,        0, 0x35b32894},
 	{0xdc,    3,    0,        0, 0x00000040},
 	{0xbf,    5,    4,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000002},
 	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x4b2700f4},
+	{0xa7,    0,    0,        0, 0x6b665129},
 	{0xc7,    3,    0,        0, 0x00000020},
 	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x964e01e8},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xa7,    5,    0,        0, 0x2c9c03d1},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xd6cca253},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    4,        0, 0x00000000},
+	{0x18,    4,    0,        0, 0xad9944a7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xbf,    5,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    5,    0,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x40000000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x593807a3},
+	{0xa7,    5,    0,        0, 0x5b32894f},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x20000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb2700f46},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xb665129f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x10000000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x64e01e8d},
+	{0xa7,    5,    0,        0, 0x6cca253e},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x08000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc9c03d1a},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xd9944a7d},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x04000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x93807a35},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xb32894fb},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x02000000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x2700f46b},
+	{0xa7,    5,    0,        0, 0x665129f6},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x01000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4e01e8d6},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xcca253ec},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00800000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x9c03d1ad},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x9944a7d9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00400000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3807a35b},
+	{0xa7,    5,    0,        0, 0x32894fb2},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00200000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x700f46b6},
+	{0xa7,    5,    0,        0, 0x65129f65},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00100000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe01e8d6c},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xca253eca},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00080000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc03d1ad9},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x944a7d95},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00040000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x807a35b3},
+	{0xa7,    5,    0,        0, 0x2894fb2a},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00020000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x00f46b66},
+	{0xa7,    5,    0,        0, 0x5129f655},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00010000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x01e8d6cc},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xa253ecab},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00008000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x03d1ad99},
+	{0xa7,    5,    0,        0, 0x44a7d956},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00004000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x07a35b32},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x894fb2ac},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x0f46b665},
+	{0xa7,    5,    0,        0, 0x129f6558},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1e8d6cca},
+	{0xa7,    5,    0,        0, 0x253ecab1},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3d1ad994},
+	{0xa7,    5,    0,        0, 0x4a7d9563},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7a35b328},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x94fb2ac7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf46b6651},
+	{0xa7,    5,    0,        0, 0x29f6558f},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000100},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe8d6cca2},
+	{0xa7,    5,    0,        0, 0x53ecab1e},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd1ad9944},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0xa7d9563d},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa35b3289},
+	{0xa7,    5,    0,        0, 0x4fb2ac7a},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x46b66512},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    4,    0,        0, 0x9f6558f5},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    4,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d6cca25},
+	{0xa7,    5,    0,        0, 0x3ecab1ea},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000008},
 	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1ad9944a},
-	{0x61,    4,    8,       32, 0x00000000},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000004},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x35b32894},
+	{0xa7,    5,    0,        0, 0x7d9563d5},
+	{0x61,    4,   10,      -44, 0x00000000},
+	{0xbf,    0,    3,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000004},
+	{0x15,    0,    0,        3, 0x00000000},
+	{0x18,    0,    0,        0, 0xfb2ac7ab},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    0,        0, 0x00000000},
 	{0xdc,    4,    0,        0, 0x00000040},
-	{0xbf,    6,    3,        0, 0x00000000},
-	{0x57,    6,    0,        0, 0x00000002},
-	{0x15,    6,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6b665129},
+	{0xbf,    0,    3,        0, 0x00000000},
+	{0x57,    0,    0,        0, 0x00000002},
+	{0x15,    0,    0,        3, 0x00000000},
+	{0x18,    0,    0,        0, 0xf6558f56},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    0,        0, 0x00000000},
 	{0xc7,    4,    0,        0, 0x00000020},
 	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd6cca253},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xa7,    7,    0,        0, 0xad9944a7},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xecab1eac},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    5,    3,        0, 0x00000000},
+	{0x18,    3,    0,        0, 0xd9563d59},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xbf,    0,    5,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    0,    5,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5b32894f},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xb2ac7ab2},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x20000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb665129f},
+	{0xa7,    0,    0,        0, 0x6558f564},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6cca253e},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xcab1eac8},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd9944a7d},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x9563d590},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x04000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb32894fb},
+	{0xa7,    0,    0,        0, 0x2ac7ab20},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x02000000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x665129f6},
+	{0xa7,    0,    0,        0, 0x558f5641},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xcca253ec},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xab1eac83},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00800000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9944a7d9},
+	{0xa7,    0,    0,        0, 0x563d5906},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x32894fb2},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xac7ab20c},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00200000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x65129f65},
+	{0xa7,    0,    0,        0, 0x58f56418},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xca253eca},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xb1eac831},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00080000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x944a7d95},
+	{0xa7,    0,    0,        0, 0x63d59063},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x2894fb2a},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xc7ab20c7},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5129f655},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x8f56418f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00010000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa253ecab},
+	{0xa7,    0,    0,        0, 0x1eac831e},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00008000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x44a7d956},
+	{0xa7,    0,    0,        0, 0x3d59063c},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00004000},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x894fb2ac},
+	{0xa7,    0,    0,        0, 0x7ab20c78},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x129f6558},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xf56418f0},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x253ecab1},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xeac831e1},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x4a7d9563},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xd59063c2},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x94fb2ac7},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xab20c784},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000200},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x29f6558f},
+	{0xa7,    0,    0,        0, 0x56418f09},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x53ecab1e},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xac831e12},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000080},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa7d9563d},
+	{0xa7,    0,    0,        0, 0x59063c25},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x4fb2ac7a},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xb20c784b},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000020},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9f6558f5},
+	{0xa7,    0,    0,        0, 0x6418f097},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3ecab1ea},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0xc831e12f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x9063c25f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
 	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x7d9563d5},
-	{0x61,    3,    8,       36, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xfb2ac7ab},
-	{0xdc,    3,    0,        0, 0x00000040},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf6558f56},
-	{0xc7,    3,    0,        0, 0x00000020},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xecab1eac},
-	{0xbf,    4,    7,        0, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd9563d59},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    4,    7,        0, 0x00000000},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb2ac7ab2},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x79,    6,   10,      -56, 0x00000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x6558f564},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xcab1eac8},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x9563d590},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x2ac7ab20},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x558f5641},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x01000000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xab1eac83},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x563d5906},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xac7ab20c},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x58f56418},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb1eac831},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x63d59063},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xc7ab20c7},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x8f56418f},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x1eac831e},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x3d59063c},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x7ab20c78},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xf56418f0},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xeac831e1},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd59063c2},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xab20c784},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x56418f09},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xac831e12},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x59063c25},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb20c784b},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x6418f097},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xc831e12f},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x9063c25f},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x20c784be},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x418f097c},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x831e12f9},
-	{0xbf,    5,    1,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
+	{0xa7,    0,    0,        0, 0x20c784be},
 	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    0,    0,        0, 0x418f097c},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        3, 0x00000000},
+	{0x18,    3,    0,        0, 0x831e12f9},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    0,    3,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000020},
+	{0xc7,    4,    0,        0, 0x00000020},
+	{0xbf,    3,    0,        0, 0x00000000},
 	{0xa7,    3,    0,        0, 0x063c25f3},
-	{0x6d,    2,    5,        1, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    3,    0,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x40000000},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -1604,12 +1894,16 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x63c25f3f},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x04000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xc784be7f},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xc784be7f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x02000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8f097cff},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x8f097cff},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x01000000},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -1624,20 +1918,28 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x784be7f8},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00200000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf097cff0},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xf097cff0},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00100000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe12f9fe0},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xe12f9fe0},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00080000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xc25f3fc1},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xc25f3fc1},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00040000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x84be7f83},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x84be7f83},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00020000},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -1656,8 +1958,10 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x4be7f83f},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00002000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x97cff07f},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x97cff07f},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00001000},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -1668,32 +1972,44 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x5f3fc1fd},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000400},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xbe7f83fb},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xbe7f83fb},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000200},
 	{0x15,    2,    0,        1, 0x00000000},
 	{0xa7,    3,    0,        0, 0x7cff07f7},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000100},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf9fe0fee},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xf9fe0fee},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000080},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf3fc1fdc},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xf3fc1fdc},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000040},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe7f83fb8},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xe7f83fb8},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000020},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xcff07f70},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xcff07f70},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000010},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9fe0fee1},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0x9fe0fee1},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000008},
 	{0x15,    2,    0,        1, 0x00000000},
@@ -1704,40 +2020,86 @@  static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xa7,    3,    0,        0, 0x7f83fb85},
 	{0xbf,    2,    1,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000002},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xff07f70a},
+	{0x15,    2,    0,        3, 0x00000000},
+	{0x18,    2,    0,        0, 0xff07f70a},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    2,        0, 0x00000000},
 	{0x57,    1,    0,        0, 0x00000001},
-	{0x15,    1,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xfe0fee15},
-	{0x71,    1,    0,      201, 0x00000000},
+	{0x15,    1,    0,        3, 0x00000000},
+	{0x18,    1,    0,        0, 0xfe0fee15},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xaf,    3,    1,        0, 0x00000000},
+	{0x71,    1,    7,      201, 0x00000000},
 	{0x67,    1,    0,        0, 0x00000008},
-	{0x71,    2,    0,      200, 0x00000000},
+	{0x71,    2,    7,      200, 0x00000000},
 	{0x4f,    1,    2,        0, 0x00000000},
-	{0x71,    2,    0,      202, 0x00000000},
+	{0x71,    2,    7,      202, 0x00000000},
 	{0x67,    2,    0,        0, 0x00000010},
-	{0x71,    4,    0,      203, 0x00000000},
+	{0x71,    4,    7,      203, 0x00000000},
 	{0x67,    4,    0,        0, 0x00000018},
 	{0x4f,    4,    2,        0, 0x00000000},
 	{0x4f,    4,    1,        0, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000020},
-	{0x77,    3,    0,        0, 0x00000020},
 	{0x9f,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x0000000f},
-	{0x67,    3,    0,        0, 0x00000002},
-	{0x0f,    0,    3,        0, 0x00000000},
-	{0x71,    1,    0,      137, 0x00000000},
+	{0x65,    3,    0,        5, 0x00000007},
+	{0x65,    3,    0,        9, 0x00000003},
+	{0x65,    3,    0,       16, 0x00000001},
+	{0x15,    3,    0,       27, 0x00000000},
+	{0x07,    7,    0,        0, 0x0000008c},
+	{0x05,    0,    0,       40, 0x00000000},
+	{0x65,    3,    0,        8, 0x0000000b},
+	{0x65,    3,    0,       14, 0x00000009},
+	{0x15,    3,    0,       24, 0x00000008},
+	{0x07,    7,    0,        0, 0x000000ac},
+	{0x05,    0,    0,       35, 0x00000000},
+	{0x65,    3,    0,       13, 0x00000005},
+	{0x15,    3,    0,       22, 0x00000004},
+	{0x07,    7,    0,        0, 0x0000009c},
+	{0x05,    0,    0,       31, 0x00000000},
+	{0x65,    3,    0,       12, 0x0000000d},
+	{0x15,    3,    0,       20, 0x0000000c},
+	{0x07,    7,    0,        0, 0x000000bc},
+	{0x05,    0,    0,       27, 0x00000000},
+	{0x15,    3,    0,       19, 0x00000002},
+	{0x07,    7,    0,        0, 0x00000094},
+	{0x05,    0,    0,       24, 0x00000000},
+	{0x15,    3,    0,       18, 0x0000000a},
+	{0x07,    7,    0,        0, 0x000000b4},
+	{0x05,    0,    0,       21, 0x00000000},
+	{0x15,    3,    0,       17, 0x00000006},
+	{0x07,    7,    0,        0, 0x000000a4},
+	{0x05,    0,    0,       18, 0x00000000},
+	{0x15,    3,    0,       16, 0x0000000e},
+	{0x07,    7,    0,        0, 0x000000c4},
+	{0x05,    0,    0,       15, 0x00000000},
+	{0x07,    7,    0,        0, 0x00000088},
+	{0x05,    0,    0,       13, 0x00000000},
+	{0x07,    7,    0,        0, 0x000000a8},
+	{0x05,    0,    0,       11, 0x00000000},
+	{0x07,    7,    0,        0, 0x00000098},
+	{0x05,    0,    0,        9, 0x00000000},
+	{0x07,    7,    0,        0, 0x000000b8},
+	{0x05,    0,    0,        7, 0x00000000},
+	{0x07,    7,    0,        0, 0x00000090},
+	{0x05,    0,    0,        5, 0x00000000},
+	{0x07,    7,    0,        0, 0x000000b0},
+	{0x05,    0,    0,        3, 0x00000000},
+	{0x07,    7,    0,        0, 0x000000a0},
+	{0x05,    0,    0,        1, 0x00000000},
+	{0x07,    7,    0,        0, 0x000000c0},
+	{0x71,    1,    7,        1, 0x00000000},
 	{0x67,    1,    0,        0, 0x00000008},
-	{0x71,    2,    0,      136, 0x00000000},
+	{0x71,    2,    7,        0, 0x00000000},
 	{0x4f,    1,    2,        0, 0x00000000},
-	{0x71,    2,    0,      138, 0x00000000},
+	{0x71,    2,    7,        2, 0x00000000},
 	{0x67,    2,    0,        0, 0x00000010},
-	{0x71,    3,    0,      139, 0x00000000},
+	{0x71,    3,    7,        3, 0x00000000},
 	{0x67,    3,    0,        0, 0x00000018},
 	{0x4f,    3,    2,        0, 0x00000000},
 	{0x4f,    3,    1,        0, 0x00000000},
 	{0x07,    3,    0,        0, 0x7cafe800},
 	{0x63,    6,    3,       52, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000001},
-	{0xbf,    0,    7,        0, 0x00000000},
+	{0xb7,    8,    0,        0, 0x00000001},
+	{0xbf,    0,    8,        0, 0x00000000},
 	{0x95,    0,    0,        0, 0x00000000},
 };