DPDK patches and discussions
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>
Subject: [RFC v3] tap: rework the BPF header parsing
Date: Fri, 12 Jan 2024 09:53:10 -0800	[thread overview]
Message-ID: <20240112175347.126080-1-stephen@networkplumber.org> (raw)
In-Reply-To: <20240112134821.2067-1-madhuker.mythri@oracle.com>

Cleanup the header parsing.
  - bpf load helpers
  - split IPv4 and IPv6 into seperate functions
  - drop incorrect VLAN header parsing
  - simplify the check for Ipv4 fragments
  - support IPv4 options
  - support IPv6 extension headers
  - fix the handling of L3 only hash
  - allow using non-default key
  - use standard network header structs
  - use temporary variables to avoid so many casts
  - stick to kernel data types (ie __u32)
  - fix support for non-default key

  - use new BPF map format based off of BTF
  - use system BPF headers and helpers

This is based of the BPF map work in earlier patch
from Madhuker Mythri <madhuker.mythri@oracle.com>

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
This is still work in progress.
Needs more testing.
Not sure it is worth splitting into smaller patches.

 drivers/net/tap/bpf/Makefile          |   14 +-
 drivers/net/tap/bpf/bpf_api.h         |  276 ---
 drivers/net/tap/bpf/bpf_elf.h         |   53 -
 drivers/net/tap/bpf/tap_bpf_program.c |  346 ++-
 drivers/net/tap/tap_bpf_api.c         |    5 +-
 drivers/net/tap/tap_bpf_insns.h       | 3288 +++++++++++++------------
 drivers/net/tap/tap_flow.c            |   43 +
 7 files changed, 1920 insertions(+), 2105 deletions(-)
 delete mode 100644 drivers/net/tap/bpf/bpf_api.h
 delete mode 100644 drivers/net/tap/bpf/bpf_elf.h

diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile
index 9efeeb1bc704..20a51f1ef4e1 100644
--- a/drivers/net/tap/bpf/Makefile
+++ b/drivers/net/tap/bpf/Makefile
@@ -2,9 +2,14 @@
 # This file is not built as part of normal DPDK build.
 # It is used to generate the eBPF code for TAP RSS.
 
-CLANG=clang
-CLANG_OPTS=-O2
-TARGET=../tap_bpf_insns.h
+CLANG = clang
+CLANG_OPTS = -g -O2 -Wall -Wextra -target bpf
+
+TARGET = ../tap_bpf_insns.h
+
+# Get Clang's default includes on this system.
+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)
 
@@ -12,8 +17,7 @@ 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) -c $< -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 2638a8a4ac9a..000000000000
--- 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 ea8a11c95c0f..000000000000
--- 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 f05aed021c30..0842fb437c4e 100644
--- a/drivers/net/tap/bpf/tap_bpf_program.c
+++ b/drivers/net/tap/bpf/tap_bpf_program.c
@@ -2,58 +2,36 @@
  * 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 "../tap_rss.h"
+#include <linux/pkt_cls.h>
+#include <linux/bpf.h>
 
-/** Create IPv4 address */
-#define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
-		(((b) & 0xff) << 16) | \
-		(((c) & 0xff) << 8)  | \
-		((d) & 0xff))
+#include <bpf/bpf_helpers.h>
+#include <bpf/bpf_endian.h>
 
-#define PORT(a, b) ((__u16)(((a) & 0xff) << 8) | \
-		((b) & 0xff))
+#include "../tap_rss.h"
 
 /*
  * 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
-
-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,
-};
-
-__section("cls_q") int
+
+#define IP_MF		0x2000		/** IP header Flags **/
+#define IP_OFFSET	0x1FFF		/** IP header fragment offset **/
+
+struct {
+	__uint(type, BPF_MAP_TYPE_HASH);
+	__type(key, __u32);
+	__type(value, struct rss_key);
+	__uint(max_entries, 256);
+} map_keys SEC(".maps");
+
+SEC("cls_q") int
 match_q(struct __sk_buff *skb)
 {
 	__u32 queue = skb->cb[1];
@@ -71,7 +49,6 @@ match_q(struct __sk_buff *skb)
 	return TC_ACT_UNSPEC;
 }
 
-
 struct ipv4_l3_l4_tuple {
 	__u32    src_addr;
 	__u32    dst_addr;
@@ -80,176 +57,187 @@ struct ipv4_l3_l4_tuple {
 } __attribute__((packed));
 
 struct ipv6_l3_l4_tuple {
-	__u8        src_addr[16];
-	__u8        dst_addr[16];
+	__u32       src_addr[4];
+	__u32       dst_addr[4];
 	__u16       dport;
 	__u16       sport;
 } __attribute__((packed));
 
-static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
-	0xd1, 0x81, 0xc6, 0x2c,
-	0xf7, 0xf4, 0xdb, 0x5b,
-	0x19, 0x83, 0xa2, 0xfc,
-	0x94, 0x3e, 0x1a, 0xdb,
-	0xd9, 0x38, 0x9e, 0x6b,
-	0xd1, 0x03, 0x9c, 0x2c,
-	0xa7, 0x44, 0x99, 0xad,
-	0x59, 0x3d, 0x56, 0xd9,
-	0xf3, 0x25, 0x3c, 0x06,
-	0x2a, 0xdc, 0x1f, 0xfc,
-};
-
 static __u32  __attribute__((always_inline))
-rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key,
-		__u8 input_len)
+softrss_be(const __u32 *input_tuple, __u32 input_len, const void *rss_key)
 {
 	__u32 i, j, hash = 0;
+	const __u32 *key32 = rss_key;
+
 #pragma unroll
 	for (j = 0; j < input_len; j++) {
 #pragma unroll
 		for (i = 0; i < 32; i++) {
-			if (input_tuple[j] & (1U << (31 - i))) {
-				hash ^= ((const __u32 *)def_rss_key)[j] << i |
-				(__u32)((uint64_t)
-				(((const __u32 *)def_rss_key)[j + 1])
-					>> (32 - i));
-			}
+			if (input_tuple[j] & (1U << (31 - i)))
+				hash ^= key32[j] << i | key32[j + 1] >> (32 - i);
 		}
 	}
 	return hash;
 }
 
-static int __attribute__((always_inline))
-rss_l3_l4(struct __sk_buff *skb)
+static int
+parse_ipv4(struct __sk_buff *skb, const struct rss_key *rsskey, __u32 *hash)
 {
-	void *data_end = (void *)(long)skb->data_end;
-	void *data = (void *)(long)skb->data;
-	__u16 proto = (__u16)skb->protocol;
-	__u32 key_idx = 0xdeadbeef;
-	__u32 hash;
-	struct rss_key *rsskey;
-	__u64 off = ETH_HLEN;
-	int j;
-	__u8 *key = 0;
-	__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");
+	struct iphdr iph;
+	__u32 off = 0;
+
+	if (bpf_skb_load_bytes_relative(skb, off, &iph, sizeof(iph), BPF_HDR_START_NET))
 		return TC_ACT_OK;
+	off += iph.ihl * 4;
+
+	struct ipv4_l3_l4_tuple v4_tuple = {
+		.src_addr = bpf_ntohl(iph.saddr),
+		.dst_addr = bpf_ntohl(iph.daddr),
+	};
+
+	if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3)) {
+		*hash = softrss_be((__u32 *)&v4_tuple, 2, rsskey->key);
+		return TC_ACT_RECLASSIFY;
 	}
-	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)
+	/* Get ports for non-fragmented TCP/UDP */
+	if ( (iph.frag_off & bpf_htons(IP_MF | IP_OFFSET)) != 0 &&
+	     (iph.protocol == IPPROTO_UDP || iph.protocol == IPPROTO_TCP)) {
+		__u16 src_dst_port[2];
+
+		if (bpf_skb_load_bytes_relative(skb, off, &src_dst_port, sizeof(src_dst_port),
+						BPF_HDR_START_NET))
 			return TC_ACT_OK;
-		proto = *(__u16 *)(data + ETH_ALEN * 2 +
-				   sizeof(struct vlan_hdr));
-		off += sizeof(struct vlan_hdr);
+
+		v4_tuple.sport = bpf_ntohs(src_dst_port[0]);
+		v4_tuple.dport = bpf_ntohs(src_dst_port[1]);
 	}
 
-	if (proto == htons(ETH_P_IP)) {
-		if (data + off + sizeof(struct iphdr) + sizeof(__u32)
-			> data_end)
-			return TC_ACT_OK;
+	*hash = softrss_be((__u32 *)&v4_tuple, 3, rsskey->key);
 
-		__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);
-		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)),
-			.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));
-			}
-		}
-		__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);
-
-		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 {
-			v6_tuple.sport = 0;
-			v6_tuple.dport = 0;
+	return TC_ACT_RECLASSIFY;
+}
+
+/* parse ipv6 extended headers, update offset and return next proto */
+static int
+skip_ip6_ext(__u16 proto, struct __sk_buff *skb, __u32 *off, int *frag)
+{
+	struct ext_hdr {
+		__u8 next_hdr;
+		__u8 len;
+	} xh;
+	unsigned int i;
+
+	*frag = 0;
+
+#define MAX_EXT_HDRS 5
+#pragma unroll
+	for (i = 0; i < MAX_EXT_HDRS; i++) {
+		switch (proto) {
+		case IPPROTO_HOPOPTS:
+		case IPPROTO_ROUTING:
+		case IPPROTO_DSTOPTS:
+			if (bpf_skb_load_bytes_relative(skb, *off, &xh, sizeof(xh), BPF_HDR_START_NET))
+				return -1;
+
+			*off += (xh.len + 1) * 8;
+			proto = xh.next_hdr;
+			break;
+		case IPPROTO_FRAGMENT:
+			if (bpf_skb_load_bytes_relative(skb, *off, &xh, sizeof(xh), BPF_HDR_START_NET))
+				return -1;
+
+			*off += 8;
+			proto = xh.next_hdr;
+			*frag = 1;
+			return proto; /* this is always the last ext hdr */
+		case IPPROTO_NONE:
+			return 0;
+		default:
+			return proto;
 		}
+	}
 
-		__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);
-	} else {
-		return TC_ACT_PIPE;
+	/* too many extension headers give up */
+	return -1;
+}
+
+static int
+parse_ipv6(struct __sk_buff *skb, const struct rss_key *rsskey, __u32 *hash)
+{
+	struct ipv6_l3_l4_tuple v6_tuple = { };
+	struct ipv6hdr ip6h;
+	__u32 off = 0, j;
+	int proto, frag;
+
+	if (bpf_skb_load_bytes_relative(skb, off, &ip6h, sizeof(ip6h), BPF_HDR_START_NET))
+		return TC_ACT_OK;
+	off += sizeof(ip6h);
+
+#pragma unroll
+	for (j = 0; j < 4; j++) {
+		v6_tuple.src_addr[j] = bpf_ntohl(ip6h.saddr.in6_u.u6_addr32[j]);
+		v6_tuple.dst_addr[j] = bpf_ntohl(ip6h.daddr.in6_u.u6_addr32[j]);
 	}
 
-	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); */
+	if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3)) {
+		*hash = softrss_be((__u32 *)&v6_tuple, 8, rsskey->key);
+		return TC_ACT_RECLASSIFY;
+	}
+
+	proto = skip_ip6_ext(ip6h.nexthdr, skb, &off, &frag);
+	if (proto < 0)
+		return TC_ACT_OK;
+
+	/* Fetch the L4 header port-numbers only if next-header is TCP/UDP */
+	if (!frag && (proto == IPPROTO_UDP || proto == IPPROTO_TCP)) {
+		__u16 src_dst_port[2];
+
+		if (bpf_skb_load_bytes_relative(skb, off, &src_dst_port, sizeof(src_dst_port),
+						BPF_HDR_START_NET))
+			return TC_ACT_OK;
+
+		v6_tuple.sport = bpf_ntohs(src_dst_port[0]);
+		v6_tuple.dport = bpf_ntohs(src_dst_port[1]);
+	}
 
+	*hash = softrss_be((__u32 *)&v6_tuple, 9, rsskey->key);
 	return TC_ACT_RECLASSIFY;
 }
 
-#define RSS(L)						\
-	__section(#L) int				\
-		L ## _hash(struct __sk_buff *skb)	\
-	{						\
-		return rss_ ## L (skb);			\
+SEC("l3_l4") int
+rss_l3_l4(struct __sk_buff *skb)
+{
+	const struct rss_key *rsskey;
+	__be16 proto = skb->protocol;
+	__u32 key_idx = 0xdeadbeef;
+	__u32 hash;
+	int ret;
+
+	rsskey = bpf_map_lookup_elem(&map_keys, &key_idx);
+	if (!rsskey) {
+		bpf_printk("hash(): rss key is not configured\n");
+		return TC_ACT_OK;
 	}
 
-RSS(l3_l4)
+	if (proto == bpf_htons(ETH_P_IP))
+		ret = parse_ipv4(skb, rsskey, &hash);
+	else if (proto == bpf_htons(ETH_P_IPV6))
+		ret = parse_ipv6(skb, rsskey, &hash);
+	else
+		ret = TC_ACT_PIPE;
+
+	if (ret == TC_ACT_RECLASSIFY) {
+		if (rsskey->nb_queues == 0) {
+			bpf_printk("hash(): num queues is zero?\n");
+			return TC_ACT_OK;
+		}
+
+		__u32 queue = rsskey->queues[(hash % rsskey->nb_queues) & (TAP_MAX_QUEUES - 1)];
+		skb->cb[1] = QUEUE_OFFSET + queue;
+	}
+
+	return ret;
+}
 
-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 15283f8917ed..7e13d4b8b6ba 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 53fa76c4e6b0..4999195b1486 100644
--- a/drivers/net/tap/tap_bpf_insns.h
+++ b/drivers/net/tap/tap_bpf_insns.h
@@ -24,1720 +24,1828 @@ 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,    9,    1,        0, 0x00000000},
+	{0x61,    6,    9,       16, 0x00000000},
 	{0x18,    1,    0,        0, 0xdeadbeef},
 	{0x00,    0,    0,        0, 0x00000000},
-	{0x63,   10,    1,       -4, 0x00000000},
+	{0x63,   10,    1,      -32, 0x00000000},
 	{0xbf,    2,   10,        0, 0x00000000},
-	{0x07,    2,    0,        0, 0xfffffffc},
+	{0x07,    2,    0,        0, 0xffffffe0},
 	{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},
+	{0xbf,    7,    0,        0, 0x00000000},
+	{0x55,    7,    0,        6, 0x00000000},
+	{0x18,    1,    0,        0, 0x00000000},
+	{0x00,    0,    0,        0, 0x00000000},
 	{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},
+	{0xb7,    8,    0,        0, 0x00000000},
+	{0x05,    0,    0,      749, 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},
-	{0xb7,    1,    0,        0, 0x00000000},
-	{0x71,    3,    8,       12, 0x00000000},
-	{0x71,    2,    8,        9, 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},
+	{0x15,    6,    0,      704, 0x0000dd86},
+	{0xb7,    8,    0,        0, 0x00000003},
+	{0x55,    6,    0,      745, 0x00000008},
+	{0xb7,    8,    0,        0, 0x00000000},
+	{0xbf,    3,   10,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0xffffffe8},
+	{0xbf,    1,    9,        0, 0x00000000},
 	{0xb7,    2,    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},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6340e8ad},
-	{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},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d03a2b7},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1a07456f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x340e8ade},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{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},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{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},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa2b7b7e9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x456f6fd3},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8adedfa7},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x15bdbf4f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x2b7b7e9e},
-	{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},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xedfa7bfe},
-	{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},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb7e9eff9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6fd3dff2},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdfa7bfe5},
-	{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},
-	{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},
-	{0xbf,    4,    5,        0, 0x00000000},
-	{0xa7,    4,    0,        0, 0xf4f7fca2},
-	{0x6d,    2,    6,        1, 0x00000000},
-	{0xbf,    4,    5,        0, 0x00000000},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xe9eff945},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd3dff28a},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa7bfe514},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x4f7fca28},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x9eff9450},
-	{0xbf,    5,    3,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{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},
-	{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},
-	{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},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0xb7,    4,    0,        0, 0x00000014},
+	{0xb7,    5,    0,        0, 0x00000001},
+	{0x85,    0,    0,        0, 0x00000044},
+	{0x55,    0,    0,      699, 0x00000000},
+	{0x61,    8,   10,       -8, 0x00000000},
+	{0xdc,    8,    0,        0, 0x00000020},
+	{0x61,    6,   10,      -12, 0x00000000},
+	{0xdc,    6,    0,        0, 0x00000020},
+	{0x71,    1,    7,      128, 0x00000000},
+	{0x57,    1,    0,        0, 0x00000001},
+	{0x15,    1,    0,      731, 0x00000000},
+	{0xb7,    1,    0,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x40000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf9450633},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        6, 0x00000000},
+	{0x61,    1,    7,        0, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000001},
+	{0x61,    2,    7,        4, 0x00000000},
+	{0x77,    2,    0,        0, 0x0000001f},
+	{0x57,    2,    0,        0, 0x00000001},
+	{0x4f,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x20000000},
-	{0x79,    6,   10,      -56, 0x00000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf28a0c67},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000002},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001e},
+	{0x57,    3,    0,        0, 0x00000003},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x10000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe51418ce},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000003},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001d},
+	{0x57,    3,    0,        0, 0x00000007},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x08000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xca28319d},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000004},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001c},
+	{0x57,    3,    0,        0, 0x0000000f},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x04000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9450633b},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000005},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001b},
+	{0x57,    3,    0,        0, 0x0000001f},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x02000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x28a0c676},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000006},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001a},
+	{0x57,    3,    0,        0, 0x0000003f},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x01000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x51418ced},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000007},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000019},
+	{0x57,    3,    0,        0, 0x0000007f},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00800000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xa28319db},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000008},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000018},
+	{0x57,    3,    0,        0, 0x000000ff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00400000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x450633b6},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000009},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000017},
+	{0x57,    3,    0,        0, 0x000001ff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00200000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8a0c676c},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000a},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000016},
+	{0x57,    3,    0,        0, 0x000003ff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00100000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x1418ced8},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000b},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000015},
+	{0x57,    3,    0,        0, 0x000007ff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00080000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x28319db1},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000c},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000014},
+	{0x57,    3,    0,        0, 0x00000fff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00040000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x50633b63},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000d},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000013},
+	{0x57,    3,    0,        0, 0x00001fff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00020000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xa0c676c6},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000e},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000012},
+	{0x57,    3,    0,        0, 0x00003fff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00010000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x418ced8d},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000f},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000011},
+	{0x57,    3,    0,        0, 0x00007fff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00008000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8319db1a},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000010},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000010},
+	{0x57,    3,    0,        0, 0x0000ffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00004000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x0633b634},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000011},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000f},
+	{0x57,    3,    0,        0, 0x0001ffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00002000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x0c676c68},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000012},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000e},
+	{0x57,    3,    0,        0, 0x0003ffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00001000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x18ced8d1},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000013},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000d},
+	{0x57,    3,    0,        0, 0x0007ffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000800},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x319db1a3},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000014},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000c},
+	{0x57,    3,    0,        0, 0x000fffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000400},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x633b6347},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000015},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000b},
+	{0x57,    3,    0,        0, 0x001fffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000200},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xc676c68f},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000016},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000a},
+	{0x57,    3,    0,        0, 0x003fffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000100},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8ced8d1f},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000017},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000009},
+	{0x57,    3,    0,        0, 0x007fffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000080},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x19db1a3e},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000018},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000008},
+	{0x57,    3,    0,        0, 0x00ffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000040},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x33b6347d},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000019},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000007},
+	{0x57,    3,    0,        0, 0x01ffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000020},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x676c68fa},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001a},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000006},
+	{0x57,    3,    0,        0, 0x03ffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000010},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xced8d1f4},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001b},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000005},
+	{0x57,    3,    0,        0, 0x07ffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000008},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9db1a3e9},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001c},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000004},
+	{0x57,    3,    0,        0, 0x0fffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000004},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x3b6347d2},
-	{0xbf,    2,    1,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001d},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000003},
+	{0x57,    3,    0,        0, 0x1fffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
 	{0x57,    2,    0,        0, 0x00000002},
-	{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},
-	{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},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x598d03a2},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xb31a0745},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x66340e8a},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xcc681d15},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x98d03a2b},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x31a07456},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x6340e8ad},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xc681d15b},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x8d03a2b7},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x1a07456f},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x340e8ade},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x681d15bd},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd03a2b7b},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa07456f6},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x40e8aded},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x81d15bdb},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00004000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x03a2b7b7},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x07456f6f},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x0e8adedf},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x1d15bdbf},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x3a2b7b7e},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x7456f6fd},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xe8adedfa},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xd15bdbf4},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0xa2b7b7e9},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x456f6fd3},
-	{0xbf,    3,    2,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    4,    0,        0, 0x8adedfa7},
-	{0xbf,    3,    2,        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},
-	{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},
-	{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},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001e},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000002},
+	{0x57,    3,    0,        0, 0x3fffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000001},
+	{0x15,    6,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001f},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000001},
+	{0x57,    3,    0,        0, 0x7fffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    1,        0, 0x00000000},
+	{0xbf,    1,    2,        0, 0x00000000},
+	{0xbf,    3,    7,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0x00000004},
+	{0xbf,    2,    7,        0, 0x00000000},
+	{0x07,    2,    0,        0, 0x00000008},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000001},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001f},
+	{0x57,    5,    0,        0, 0x00000001},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000002},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001e},
+	{0x57,    5,    0,        0, 0x00000003},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000003},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001d},
+	{0x57,    5,    0,        0, 0x00000007},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000004},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001c},
+	{0x57,    5,    0,        0, 0x0000000f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000005},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001b},
+	{0x57,    5,    0,        0, 0x0000001f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x02000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf6fd3dff},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000006},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001a},
+	{0x57,    5,    0,        0, 0x0000003f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x01000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xedfa7bfe},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000007},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000019},
+	{0x57,    5,    0,        0, 0x0000007f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000008},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000018},
+	{0x57,    5,    0,        0, 0x000000ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00400000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb7e9eff9},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000009},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000017},
+	{0x57,    5,    0,        0, 0x000001ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000a},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000016},
+	{0x57,    5,    0,        0, 0x000003ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00100000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdfa7bfe5},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000b},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000015},
+	{0x57,    5,    0,        0, 0x000007ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00080000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xbf4f7fca},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000c},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000014},
+	{0x57,    5,    0,        0, 0x00000fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00040000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7e9eff94},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000d},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000013},
+	{0x57,    5,    0,        0, 0x00001fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000e},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000012},
+	{0x57,    5,    0,        0, 0x00003fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00010000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfa7bfe51},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000f},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000011},
+	{0x57,    5,    0,        0, 0x00007fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000010},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000010},
+	{0x57,    5,    0,        0, 0x0000ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00004000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe9eff945},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000011},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000f},
+	{0x57,    5,    0,        0, 0x0001ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd3dff28a},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000012},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000e},
+	{0x57,    5,    0,        0, 0x0003ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa7bfe514},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000013},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000d},
+	{0x57,    5,    0,        0, 0x0007ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4f7fca28},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000014},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000c},
+	{0x57,    5,    0,        0, 0x000fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x9eff9450},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000015},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000b},
+	{0x57,    5,    0,        0, 0x001fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000016},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000a},
+	{0x57,    5,    0,        0, 0x003fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000017},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000009},
+	{0x57,    5,    0,        0, 0x007fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf7fca283},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000018},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000008},
+	{0x57,    5,    0,        0, 0x00ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xeff94506},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000019},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000007},
+	{0x57,    5,    0,        0, 0x01ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xdff28a0c},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001a},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000006},
+	{0x57,    5,    0,        0, 0x03ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001b},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000005},
+	{0x57,    5,    0,        0, 0x07ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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},
-	{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},
-	{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},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf9450633},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf28a0c67},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe51418ce},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xca28319d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9450633b},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x28a0c676},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x51418ced},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa28319db},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x450633b6},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8a0c676c},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1418ced8},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x28319db1},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x50633b63},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa0c676c6},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x418ced8d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8319db1a},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00004000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x0633b634},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x0c676c68},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x18ced8d1},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x319db1a3},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x633b6347},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc676c68f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8ced8d1f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x19db1a3e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x33b6347d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x676c68fa},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xced8d1f4},
-	{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},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3b6347d2},
-	{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},
-	{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},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001c},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000004},
+	{0x57,    5,    0,        0, 0x0fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001d},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000003},
+	{0x57,    5,    0,        0, 0x1fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001e},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000002},
+	{0x57,    5,    0,        0, 0x3fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    1,        0, 0x00000000},
+	{0xbf,    1,    4,        0, 0x00000000},
+	{0x57,    8,    0,        0, 0x00000001},
+	{0x15,    8,    0,        8, 0x00000000},
+	{0x61,    3,    3,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x0000001f},
+	{0x61,    2,    2,        0, 0x00000000},
+	{0x77,    2,    0,        0, 0x00000001},
+	{0x57,    2,    0,        0, 0x7fffffff},
+	{0x4f,    3,    2,        0, 0x00000000},
+	{0xaf,    3,    1,        0, 0x00000000},
+	{0xbf,    1,    3,        0, 0x00000000},
+	{0x63,   10,    1,      -28, 0x00000000},
+	{0xb7,    8,    0,        0, 0x00000001},
+	{0x05,    0,    0,        6, 0x00000000},
+	{0xbf,    3,   10,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0xffffffe4},
+	{0xbf,    1,    9,        0, 0x00000000},
+	{0xbf,    2,    7,        0, 0x00000000},
+	{0x85,    0,    1,        0, 0xffffffff},
+	{0xbf,    8,    0,        0, 0x00000000},
+	{0xbf,    1,    8,        0, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000020},
+	{0x77,    1,    0,        0, 0x00000020},
+	{0x55,    1,    0,       33, 0x00000001},
+	{0x71,    2,    7,      201, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000008},
+	{0x71,    1,    7,      200, 0x00000000},
+	{0x4f,    2,    1,        0, 0x00000000},
+	{0x71,    3,    7,      202, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000010},
+	{0x71,    1,    7,      203, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000018},
+	{0x4f,    1,    3,        0, 0x00000000},
+	{0x4f,    1,    2,        0, 0x00000000},
+	{0x55,    1,    0,        4, 0x00000000},
+	{0x18,    1,    0,        0, 0x00000023},
+	{0x00,    0,    0,        0, 0x00000000},
+	{0xb7,    2,    0,        0, 0x0000001d},
+	{0x05,    0,    0,     -734, 0x00000000},
+	{0x61,    2,   10,      -28, 0x00000000},
+	{0x9f,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x0000000f},
+	{0x67,    2,    0,        0, 0x00000002},
+	{0x0f,    7,    2,        0, 0x00000000},
+	{0x71,    1,    7,      137, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000008},
+	{0x71,    2,    7,      136, 0x00000000},
+	{0x4f,    1,    2,        0, 0x00000000},
+	{0x71,    2,    7,      138, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000010},
+	{0x71,    3,    7,      139, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000018},
+	{0x4f,    3,    2,        0, 0x00000000},
+	{0x4f,    3,    1,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0x7cafe800},
+	{0x63,    9,    3,       52, 0x00000000},
+	{0xb7,    8,    0,        0, 0x00000001},
+	{0xbf,    0,    8,        0, 0x00000000},
+	{0x95,    0,    0,        0, 0x00000000},
+	{0x7b,   10,    9,      -40, 0x00000000},
+	{0xb7,    9,    0,        0, 0x00000000},
+	{0x69,    2,   10,      -18, 0x00000000},
+	{0x57,    2,    0,        0, 0x0000ff3f},
+	{0xb7,    1,    0,        0, 0x00000000},
+	{0x15,    2,    0,       18, 0x00000000},
+	{0x71,    2,   10,      -24, 0x00000000},
+	{0x71,    3,   10,      -15, 0x00000000},
+	{0x15,    3,    0,        1, 0x00000011},
+	{0x55,    3,    0,       14, 0x00000006},
+	{0x67,    2,    0,        0, 0x00000002},
+	{0x57,    2,    0,        0, 0x0000003c},
+	{0xbf,    3,   10,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0xffffffe4},
+	{0x79,    1,   10,      -40, 0x00000000},
+	{0xb7,    4,    0,        0, 0x00000004},
+	{0xb7,    5,    0,        0, 0x00000001},
+	{0x85,    0,    0,        0, 0x00000044},
+	{0x55,    0,    0,     1033, 0x00000000},
+	{0x69,    1,   10,      -26, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000010},
+	{0x69,    2,   10,      -28, 0x00000000},
+	{0x4f,    1,    2,        0, 0x00000000},
+	{0xdc,    1,    0,        0, 0x00000020},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x40000000},
+	{0x15,    2,    0,        6, 0x00000000},
+	{0x61,    9,    7,        0, 0x00000000},
+	{0x67,    9,    0,        0, 0x00000001},
+	{0x61,    2,    7,        4, 0x00000000},
+	{0x77,    2,    0,        0, 0x0000001f},
+	{0x57,    2,    0,        0, 0x00000001},
+	{0x4f,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x20000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000002},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001e},
+	{0x57,    3,    0,        0, 0x00000003},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x10000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000003},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001d},
+	{0x57,    3,    0,        0, 0x00000007},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x08000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000004},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001c},
+	{0x57,    3,    0,        0, 0x0000000f},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x04000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000005},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001b},
+	{0x57,    3,    0,        0, 0x0000001f},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x02000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000006},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000001a},
+	{0x57,    3,    0,        0, 0x0000003f},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x01000000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000007},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000019},
+	{0x57,    3,    0,        0, 0x0000007f},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00800000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000008},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000018},
+	{0x57,    3,    0,        0, 0x000000ff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00400000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000009},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000017},
+	{0x57,    3,    0,        0, 0x000001ff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00200000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000a},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000016},
+	{0x57,    3,    0,        0, 0x000003ff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00100000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000b},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000015},
+	{0x57,    3,    0,        0, 0x000007ff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00080000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000c},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000014},
+	{0x57,    3,    0,        0, 0x00000fff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00040000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000d},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000013},
+	{0x57,    3,    0,        0, 0x00001fff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00020000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000e},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000012},
+	{0x57,    3,    0,        0, 0x00003fff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00010000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000000f},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000011},
+	{0x57,    3,    0,        0, 0x00007fff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00008000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000010},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000010},
+	{0x57,    3,    0,        0, 0x0000ffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00004000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000011},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000f},
+	{0x57,    3,    0,        0, 0x0001ffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00002000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000012},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000e},
+	{0x57,    3,    0,        0, 0x0003ffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00001000},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000013},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000d},
+	{0x57,    3,    0,        0, 0x0007ffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000800},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000014},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000c},
+	{0x57,    3,    0,        0, 0x000fffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000400},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000015},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000b},
+	{0x57,    3,    0,        0, 0x001fffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000200},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000016},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x0000000a},
+	{0x57,    3,    0,        0, 0x003fffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000100},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000017},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000009},
+	{0x57,    3,    0,        0, 0x007fffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000080},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000018},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000008},
+	{0x57,    3,    0,        0, 0x00ffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000040},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000019},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000007},
+	{0x57,    3,    0,        0, 0x01ffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000020},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001a},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000006},
+	{0x57,    3,    0,        0, 0x03ffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000010},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001b},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000005},
+	{0x57,    3,    0,        0, 0x07ffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000008},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001c},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000004},
+	{0x57,    3,    0,        0, 0x0fffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000004},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001d},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000003},
+	{0x57,    3,    0,        0, 0x1fffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    2,    6,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000002},
+	{0x15,    2,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001e},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000002},
+	{0x57,    3,    0,        0, 0x3fffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000001},
+	{0x15,    6,    0,        8, 0x00000000},
+	{0x61,    2,    7,        0, 0x00000000},
+	{0x67,    2,    0,        0, 0x0000001f},
+	{0x61,    3,    7,        4, 0x00000000},
+	{0x77,    3,    0,        0, 0x00000001},
+	{0x57,    3,    0,        0, 0x7fffffff},
+	{0x4f,    2,    3,        0, 0x00000000},
+	{0xaf,    2,    9,        0, 0x00000000},
+	{0xbf,    9,    2,        0, 0x00000000},
+	{0xbf,    3,    7,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0x00000004},
+	{0xbf,    2,    7,        0, 0x00000000},
+	{0x07,    2,    0,        0, 0x00000008},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x40000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb6347d28},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000001},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001f},
+	{0x57,    5,    0,        0, 0x00000001},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x20000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6c68fa51},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000002},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001e},
+	{0x57,    5,    0,        0, 0x00000003},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x10000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd8d1f4a3},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000003},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001d},
+	{0x57,    5,    0,        0, 0x00000007},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x08000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb1a3e946},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000004},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001c},
+	{0x57,    5,    0,        0, 0x0000000f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x04000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x6347d28d},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000005},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001b},
+	{0x57,    5,    0,        0, 0x0000001f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x02000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc68fa51a},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000006},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001a},
+	{0x57,    5,    0,        0, 0x0000003f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x01000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d1f4a35},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000007},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000019},
+	{0x57,    5,    0,        0, 0x0000007f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00800000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1a3e946b},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000008},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000018},
+	{0x57,    5,    0,        0, 0x000000ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00400000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x347d28d7},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000009},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000017},
+	{0x57,    5,    0,        0, 0x000001ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00200000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x68fa51ae},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000a},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000016},
+	{0x57,    5,    0,        0, 0x000003ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00100000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd1f4a35c},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000b},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000015},
+	{0x57,    5,    0,        0, 0x000007ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00080000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa3e946b9},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000c},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000014},
+	{0x57,    5,    0,        0, 0x00000fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00040000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x47d28d73},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000d},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000013},
+	{0x57,    5,    0,        0, 0x00001fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00020000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8fa51ae7},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000e},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000012},
+	{0x57,    5,    0,        0, 0x00003fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00010000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1f4a35cf},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000f},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000011},
+	{0x57,    5,    0,        0, 0x00007fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00008000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3e946b9e},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000010},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000010},
+	{0x57,    5,    0,        0, 0x0000ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00004000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7d28d73c},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000011},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000f},
+	{0x57,    5,    0,        0, 0x0001ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xfa51ae78},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000012},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000e},
+	{0x57,    5,    0,        0, 0x0003ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf4a35cf1},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000013},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000d},
+	{0x57,    5,    0,        0, 0x0007ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe946b9e3},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000014},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000c},
+	{0x57,    5,    0,        0, 0x000fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd28d73c7},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000015},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000b},
+	{0x57,    5,    0,        0, 0x001fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa51ae78e},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000016},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000a},
+	{0x57,    5,    0,        0, 0x003fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000100},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4a35cf1c},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000017},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000009},
+	{0x57,    5,    0,        0, 0x007fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x946b9e38},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000018},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000008},
+	{0x57,    5,    0,        0, 0x00ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x28d73c71},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000019},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000007},
+	{0x57,    5,    0,        0, 0x01ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x51ae78e3},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001a},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000006},
+	{0x57,    5,    0,        0, 0x03ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa35cf1c6},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001b},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000005},
+	{0x57,    5,    0,        0, 0x07ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        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},
-	{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},
-	{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},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd73c71b2},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xae78e364},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5cf1c6c9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb9e38d92},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x73c71b25},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe78e364b},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xcf1c6c96},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9e38d92c},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3c71b259},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x78e364b2},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xf1c6c964},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe38d92c9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc71b2593},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8e364b27},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1c6c964e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x38d92c9c},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00004000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x71b25938},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xe364b270},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc6c964e0},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x8d92c9c0},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x1b259380},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x364b2700},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6c964e01},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd92c9c03},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb2593807},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x64b2700f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xc964e01e},
-	{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},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x15,    5,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x2593807a},
-	{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},
-	{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},
-	{0x6d,    2,    3,        1, 0x00000000},
-	{0xbf,    5,    7,        0, 0x00000000},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001c},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000004},
+	{0x57,    5,    0,        0, 0x0fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001d},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000003},
+	{0x57,    5,    0,        0, 0x1fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    8,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001e},
+	{0x61,    5,    2,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000002},
+	{0x57,    5,    0,        0, 0x3fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0x57,    8,    0,        0, 0x00000001},
+	{0x15,    8,    0,        8, 0x00000000},
+	{0x61,    3,    3,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x0000001f},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x77,    4,    0,        0, 0x00000001},
+	{0x57,    4,    0,        0, 0x7fffffff},
+	{0x4f,    3,    4,        0, 0x00000000},
+	{0xaf,    3,    9,        0, 0x00000000},
+	{0xbf,    9,    3,        0, 0x00000000},
+	{0xbf,    3,    7,        0, 0x00000000},
+	{0x07,    3,    0,        0, 0x0000000c},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x40000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x593807a3},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000001},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001f},
+	{0x57,    5,    0,        0, 0x00000001},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x20000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xb2700f46},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000002},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001e},
+	{0x57,    5,    0,        0, 0x00000003},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x10000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x64e01e8d},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000003},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001d},
+	{0x57,    5,    0,        0, 0x00000007},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x08000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc9c03d1a},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000004},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001c},
+	{0x57,    5,    0,        0, 0x0000000f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x04000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x93807a35},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000005},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001b},
+	{0x57,    5,    0,        0, 0x0000001f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x02000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x2700f46b},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000006},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000001a},
+	{0x57,    5,    0,        0, 0x0000003f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x01000000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x4e01e8d6},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000007},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000019},
+	{0x57,    5,    0,        0, 0x0000007f},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00800000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x9c03d1ad},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000008},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000018},
+	{0x57,    5,    0,        0, 0x000000ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00400000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3807a35b},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000009},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000017},
+	{0x57,    5,    0,        0, 0x000001ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00200000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x700f46b6},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000a},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000016},
+	{0x57,    5,    0,        0, 0x000003ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00100000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe01e8d6c},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000b},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000015},
+	{0x57,    5,    0,        0, 0x000007ff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00080000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xc03d1ad9},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000c},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000014},
+	{0x57,    5,    0,        0, 0x00000fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00040000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x807a35b3},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000d},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000013},
+	{0x57,    5,    0,        0, 0x00001fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00020000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x00f46b66},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000e},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000012},
+	{0x57,    5,    0,        0, 0x00003fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00010000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x01e8d6cc},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000000f},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000011},
+	{0x57,    5,    0,        0, 0x00007fff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00008000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x03d1ad99},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000010},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000010},
+	{0x57,    5,    0,        0, 0x0000ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00004000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x07a35b32},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000011},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000f},
+	{0x57,    5,    0,        0, 0x0001ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x0f46b665},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000012},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000e},
+	{0x57,    5,    0,        0, 0x0003ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x1e8d6cca},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000013},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000d},
+	{0x57,    5,    0,        0, 0x0007ffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x3d1ad994},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000014},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000c},
+	{0x57,    5,    0,        0, 0x000fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x7a35b328},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000015},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000b},
+	{0x57,    5,    0,        0, 0x001fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xf46b6651},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000016},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x0000000a},
+	{0x57,    5,    0,        0, 0x003fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000100},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xe8d6cca2},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000017},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000009},
+	{0x57,    5,    0,        0, 0x007fffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xd1ad9944},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000018},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000008},
+	{0x57,    5,    0,        0, 0x00ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0xa35b3289},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000019},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000007},
+	{0x57,    5,    0,        0, 0x01ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x46b66512},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001a},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000006},
+	{0x57,    5,    0,        0, 0x03ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
-	{0x15,    4,    0,        1, 0x00000000},
-	{0xa7,    5,    0,        0, 0x8d6cca25},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001b},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000005},
+	{0x57,    5,    0,        0, 0x07ffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        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},
-	{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},
-	{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},
-	{0x6d,    2,    4,        1, 0x00000000},
-	{0xbf,    7,    5,        0, 0x00000000},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5b32894f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb665129f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x6cca253e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xd9944a7d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xb32894fb},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x665129f6},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xcca253ec},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9944a7d9},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x32894fb2},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x65129f65},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xca253eca},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x944a7d95},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x2894fb2a},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x5129f655},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa253ecab},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00008000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x44a7d956},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00004000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x894fb2ac},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00002000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x129f6558},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00001000},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x253ecab1},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000800},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x4a7d9563},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000400},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x94fb2ac7},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000200},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x29f6558f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x53ecab1e},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000080},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0xa7d9563d},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x4fb2ac7a},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x9f6558f5},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x15,    3,    0,        1, 0x00000000},
-	{0xa7,    7,    0,        0, 0x3ecab1ea},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{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},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0xa7,    3,    0,        0, 0x063c25f3},
-	{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, 0x0c784be7},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x20000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x18f097cf},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x10000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x31e12f9f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x08000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{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},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x02000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x8f097cff},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x01000000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x1e12f9fe},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00800000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x3c25f3fc},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00400000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{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},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00100000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe12f9fe0},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00080000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xc25f3fc1},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00040000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x84be7f83},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00020000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x097cff07},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00010000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x12f9fe0f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00008000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x25f3fc1f},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00004000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{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},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00001000},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x2f9fe0fe},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000800},
-	{0x15,    2,    0,        1, 0x00000000},
-	{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},
-	{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},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000080},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xf3fc1fdc},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000040},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xe7f83fb8},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000020},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xcff07f70},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000010},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x9fe0fee1},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000008},
-	{0x15,    2,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0x3fc1fdc2},
-	{0xbf,    2,    1,        0, 0x00000000},
-	{0x57,    2,    0,        0, 0x00000004},
-	{0x15,    2,    0,        1, 0x00000000},
-	{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,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001c},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000004},
+	{0x57,    5,    0,        0, 0x0fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001d},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000003},
+	{0x57,    5,    0,        0, 0x1fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
+	{0xbf,    4,    1,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        8, 0x00000000},
+	{0x61,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x0000001e},
+	{0x61,    5,    3,        0, 0x00000000},
+	{0x77,    5,    0,        0, 0x00000002},
+	{0x57,    5,    0,        0, 0x3fffffff},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0xaf,    4,    9,        0, 0x00000000},
+	{0xbf,    9,    4,        0, 0x00000000},
 	{0x57,    1,    0,        0, 0x00000001},
-	{0x15,    1,    0,        1, 0x00000000},
-	{0xa7,    3,    0,        0, 0xfe0fee15},
-	{0x71,    1,    0,      201, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000008},
-	{0x71,    2,    0,      200, 0x00000000},
+	{0x15,    1,    0,        8, 0x00000000},
+	{0x61,    1,    2,        0, 0x00000000},
+	{0x67,    1,    0,        0, 0x0000001f},
+	{0x61,    2,    3,        0, 0x00000000},
+	{0x77,    2,    0,        0, 0x00000001},
+	{0x57,    2,    0,        0, 0x7fffffff},
 	{0x4f,    1,    2,        0, 0x00000000},
-	{0x71,    2,    0,      202, 0x00000000},
-	{0x67,    2,    0,        0, 0x00000010},
-	{0x71,    4,    0,      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},
-	{0x67,    1,    0,        0, 0x00000008},
-	{0x71,    2,    0,      136, 0x00000000},
-	{0x4f,    1,    2,        0, 0x00000000},
-	{0x71,    2,    0,      138, 0x00000000},
-	{0x67,    2,    0,        0, 0x00000010},
-	{0x71,    3,    0,      139, 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},
-	{0x95,    0,    0,        0, 0x00000000},
+	{0xaf,    1,    9,        0, 0x00000000},
+	{0xbf,    9,    1,        0, 0x00000000},
+	{0x63,   10,    9,      -28, 0x00000000},
+	{0xb7,    8,    0,        0, 0x00000001},
+	{0x79,    9,   10,      -40, 0x00000000},
+	{0x05,    0,    0,    -1091, 0x00000000},
+	{0xb7,    8,    0,        0, 0x00000000},
+	{0x79,    9,   10,      -40, 0x00000000},
+	{0x05,    0,    0,    -1094, 0x00000000},
 };
diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c
index ed4d42f92f9f..5fe0bea88b0a 100644
--- a/drivers/net/tap/tap_flow.c
+++ b/drivers/net/tap/tap_flow.c
@@ -11,6 +11,7 @@
 
 #include <rte_byteorder.h>
 #include <rte_jhash.h>
+#include <rte_thash.h>
 #include <rte_malloc.h>
 #include <rte_eth_tap.h>
 #include <tap_flow.h>
@@ -2053,6 +2054,20 @@ static int bpf_rss_key(enum bpf_rss_key_e cmd, __u32 *key_idx)
 	return err;
 }
 
+/* Default RSS hash key also used for ConnectX-3. */
+static const uint8_t rss_hash_default_key[] = {
+	0x2c, 0xc6, 0x81, 0xd1,
+	0x5b, 0xdb, 0xf4, 0xf7,
+	0xfc, 0xa2, 0x83, 0x19,
+	0xdb, 0x1a, 0x3e, 0x94,
+	0x6b, 0x9e, 0x38, 0xd9,
+	0x2c, 0x9c, 0x03, 0xd1,
+	0xad, 0x99, 0x44, 0xa7,
+	0xd9, 0x56, 0x3d, 0x59,
+	0x06, 0x3c, 0x25, 0xf3,
+	0xfc, 0x1f, 0xdc, 0x2a,
+};
+
 /**
  * Add RSS hash calculations and queue selection
  *
@@ -2073,6 +2088,7 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,
 {
 	/* 4096 is the maximum number of instructions for a BPF program */
 	unsigned int i;
+	const uint8_t *key_in;
 	int err;
 	struct rss_key rss_entry = { .hash_fields = 0,
 				     .key_size = 0 };
@@ -2087,6 +2103,29 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,
 			(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
 			 "a nonzero RSS encapsulation level is not supported");
 
+	if (rss->queue_num == 0 || rss->queue_num >= TAP_MAX_QUEUES)
+		return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
+					  "invalid number of queues");
+
+	/* allow RSS key_len 0 in case of NULL (default) RSS key. */
+	if (rss->key_len == 0) {
+		if (rss->key != NULL)
+			return rte_flow_error_set(error, ENOTSUP,
+						  RTE_FLOW_ERROR_TYPE_ACTION_CONF,
+						  &rss->key_len, "RSS hash key length 0");
+		key_in = rss_hash_default_key;
+	} else {
+		if (rss->key_len != TAP_RSS_HASH_KEY_SIZE)
+			return rte_flow_error_set
+				(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
+				 "RSS hash invalid key length");
+		if (rss->key == NULL)
+			return rte_flow_error_set
+				(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
+				 "RSS hash key is NULL");
+		key_in = rss->key;
+	}
+
 	/* Get a new map key for a new RSS rule */
 	err = bpf_rss_key(KEY_CMD_GET, &flow->key_idx);
 	if (err < 0) {
@@ -2104,6 +2143,10 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,
 	rss_entry.hash_fields =
 		(1 << HASH_FIELD_IPV4_L3_L4) | (1 << HASH_FIELD_IPV6_L3_L4);
 
+	/* Copy and convert RSS key to bigendian for software toeplitz */
+	rte_convert_rss_key((const uint32_t *)key_in, (uint32_t *)rss_entry.key,
+			    TAP_RSS_HASH_KEY_SIZE);
+
 	/* Add this RSS entry to map */
 	err = tap_flow_bpf_update_rss_elem(pmd->map_fd,
 				&flow->key_idx, &rss_entry);
-- 
2.43.0


  parent reply	other threads:[~2024-01-12 17:54 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-12 13:48 [PATCH] net/tap: Modified TAP BPF program as per the Kernel-version upgrade requirements madhuker.mythri
2024-01-12 16:40 ` Stephen Hemminger
2024-01-12 16:41 ` Stephen Hemminger
2024-01-13 17:50   ` [External] : " Madhuker Mythri
2024-01-13 18:05     ` Stephen Hemminger
2024-01-16 16:43     ` Stephen Hemminger
2024-01-12 16:42 ` Stephen Hemminger
2024-01-13 17:52   ` [External] : " Madhuker Mythri
2024-01-13 18:06     ` Stephen Hemminger
2024-01-16  5:43       ` Madhuker Mythri
2024-01-16 16:40         ` Stephen Hemminger
2024-01-17  3:25         ` Stephen Hemminger
2024-01-17 16:19           ` Madhuker Mythri
2024-01-12 16:43 ` Stephen Hemminger
2024-01-12 16:46 ` Stephen Hemminger
2024-01-13 17:55   ` [External] : " Madhuker Mythri
2024-01-12 17:53 ` Stephen Hemminger [this message]
2024-02-07 18:55 ` Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240112175347.126080-1-stephen@networkplumber.org \
    --to=stephen@networkplumber.org \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).