summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcvs2svn <cvs2svn@FreeBSD.org>2000-06-26 08:06:25 +0000
committercvs2svn <cvs2svn@FreeBSD.org>2000-06-26 08:06:25 +0000
commitd0c4b1ba8742485cd62ea25563b54515241584b5 (patch)
tree29b7a43ff3314febb2901cada3e71d1eed0e17ee
parent6038fd0dfe694cb1f726cbfc300b803b0e6d7cfc (diff)
Notes
-rw-r--r--contrib/binutils/bfd/ppcboot.c541
-rw-r--r--contrib/binutils/binutils/readelf.c7365
-rw-r--r--contrib/binutils/gas/config/tc-arm.c7236
-rw-r--r--contrib/binutils/gas/doc/c-arm.texi294
-rw-r--r--contrib/binutils/include/filenames.h51
-rw-r--r--contrib/binutils/opcodes/arm-dis.c1071
-rw-r--r--contrib/binutils/opcodes/arm-opc.h284
-rw-r--r--contrib/isc-dhcp/Makefile.conf332
-rw-r--r--contrib/isc-dhcp/Makefile.dist94
-rw-r--r--contrib/isc-dhcp/client/Makefile.dist136
-rw-r--r--contrib/isc-dhcp/common/Makefile.dist206
-rwxr-xr-xcontrib/isc-dhcp/configure100
-rw-r--r--gnu/usr.bin/perl/library/B/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/DB_File/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/Dumper/Makefile7
-rw-r--r--gnu/usr.bin/perl/library/Errno/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/Fcntl/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/IO/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/NDBM_File/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/Opcode/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/POSIX/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/SDBM_File/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/Socket/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/SysV/Makefile7
-rw-r--r--gnu/usr.bin/perl/library/attrs/Makefile6
-rw-r--r--gnu/usr.bin/perl/library/re/Makefile6
-rw-r--r--lib/libalias/alias_pptp.c279
-rw-r--r--lib/libc/gen/strtofflags.399
-rw-r--r--lib/libc/gen/strtofflags.c158
-rw-r--r--sys/alpha/alpha/api_up1000.c127
-rw-r--r--sys/alpha/pci/irongate.c420
-rw-r--r--sys/alpha/pci/irongate_pci.c95
-rw-r--r--sys/alpha/pci/irongatereg.h43
-rw-r--r--sys/alpha/pci/irongatevar.h30
-rw-r--r--sys/boot/common/loader.8801
-rw-r--r--sys/conf/kmod.mk301
-rw-r--r--sys/dev/ispfw/MAINTAINER2
-rw-r--r--sys/dev/ispfw/asm_1040.h3527
-rw-r--r--sys/dev/ispfw/asm_1080.h4425
-rw-r--r--sys/modules/accf_data/Makefile7
-rw-r--r--sys/modules/accf_http/Makefile7
-rw-r--r--sys/modules/ispfw/Makefile7
-rw-r--r--sys/modules/wx/Makefile7
-rw-r--r--sys/netinet/accf_data.c80
-rw-r--r--sys/netinet/accf_http.c183
-rw-r--r--usr.bin/doscmd/cp437-8x16.pcf.gz.uu113
-rw-r--r--usr.bin/doscmd/fonts.dir2
47 files changed, 28509 insertions, 0 deletions
diff --git a/contrib/binutils/bfd/ppcboot.c b/contrib/binutils/bfd/ppcboot.c
new file mode 100644
index 000000000000..9441848b3d37
--- /dev/null
+++ b/contrib/binutils/bfd/ppcboot.c
@@ -0,0 +1,541 @@
+/* BFD back-end for PPCbug boot records.
+ Copyright 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Written by Michael Meissner, Cygnus Support, <meissner@cygnus.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* This is a BFD backend which may be used to write PowerPCBug boot objects.
+ It may only be used for output, not input. The intention is that this may
+ be used as an output format for objcopy in order to generate raw binary
+ data.
+
+ This is very simple. The only complication is that the real data
+ will start at some address X, and in some cases we will not want to
+ include X zeroes just to get to that point. Since the start
+ address is not meaningful for this object file format, we use it
+ instead to indicate the number of zeroes to skip at the start of
+ the file. objcopy cooperates by specially setting the start
+ address to zero by default. */
+
+#include <ctype.h>
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+
+/* PPCbug location structure */
+typedef struct ppcboot_location {
+ bfd_byte ind;
+ bfd_byte head;
+ bfd_byte sector;
+ bfd_byte cylinder;
+} ppcboot_location_t;
+
+/* PPCbug partition table layout */
+typedef struct ppcboot_partition {
+ ppcboot_location_t partition_begin; /* partition begin */
+ ppcboot_location_t partition_end; /* partition end */
+ bfd_byte sector_begin[4]; /* 32-bit start RBA (zero-based), little endian */
+ bfd_byte sector_length[4]; /* 32-bit RBA count (one-based), little endian */
+} ppcboot_partition_t;
+
+/* PPCbug boot layout. */
+typedef struct ppcboot_hdr {
+ bfd_byte pc_compatibility[446]; /* x86 instruction field */
+ ppcboot_partition_t partition[4]; /* partition information */
+ bfd_byte signature[2]; /* 0x55 and 0xaa */
+ bfd_byte entry_offset[4]; /* entry point offset, little endian */
+ bfd_byte length[4]; /* load image length, little endian */
+ bfd_byte flags; /* flag field */
+ bfd_byte os_id; /* OS_ID */
+ char partition_name[32]; /* partition name */
+ bfd_byte reserved1[470]; /* reserved */
+}
+#ifdef __GNUC__
+ __attribute__ ((packed))
+#endif
+ppcboot_hdr_t;
+
+/* Signature bytes for last 2 bytes of the 512 byte record */
+#define SIGNATURE0 0x55
+#define SIGNATURE1 0xaa
+
+/* PowerPC boot type */
+#define PPC_IND 0x41
+
+/* Information needed for ppcboot header */
+typedef struct ppcboot_data {
+ ppcboot_hdr_t header; /* raw header */
+ asection *sec; /* single section */
+} ppcboot_data_t;
+
+/* Any bfd we create by reading a ppcboot file has three symbols:
+ a start symbol, an end symbol, and an absolute length symbol. */
+#define PPCBOOT_SYMS 3
+
+static boolean ppcboot_mkobject PARAMS ((bfd *));
+static const bfd_target *ppcboot_object_p PARAMS ((bfd *));
+static boolean ppcboot_set_arch_mach
+ PARAMS ((bfd *, enum bfd_architecture, unsigned long));
+static boolean ppcboot_get_section_contents
+ PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
+static long ppcboot_get_symtab_upper_bound PARAMS ((bfd *));
+static char *mangle_name PARAMS ((bfd *, char *));
+static long ppcboot_get_symtab PARAMS ((bfd *, asymbol **));
+static asymbol *ppcboot_make_empty_symbol PARAMS ((bfd *));
+static void ppcboot_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *));
+static boolean ppcboot_set_section_contents
+ PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
+static int ppcboot_sizeof_headers PARAMS ((bfd *, boolean));
+static boolean ppcboot_bfd_print_private_bfd_data PARAMS ((bfd *, PTR));
+
+#define ppcboot_set_tdata(abfd, ptr) ((abfd)->tdata.any = (PTR) (ptr))
+#define ppcboot_get_tdata(abfd) ((ppcboot_data_t *) ((abfd)->tdata.any))
+
+/* Create a ppcboot object. Invoked via bfd_set_format. */
+
+static boolean
+ppcboot_mkobject (abfd)
+ bfd *abfd;
+{
+ if (!ppcboot_get_tdata (abfd))
+ ppcboot_set_tdata (abfd, bfd_zalloc (abfd, sizeof (ppcboot_data_t)));
+
+ return true;
+}
+
+
+/* Set the architecture to PowerPC */
+static boolean
+ppcboot_set_arch_mach (abfd, arch, machine)
+ bfd *abfd;
+ enum bfd_architecture arch;
+ unsigned long machine;
+{
+ if (arch == bfd_arch_unknown)
+ arch = bfd_arch_powerpc;
+
+ else if (arch != bfd_arch_powerpc)
+ return false;
+
+ return bfd_default_set_arch_mach (abfd, arch, machine);
+}
+
+
+/* Any file may be considered to be a ppcboot file, provided the target
+ was not defaulted. That is, it must be explicitly specified as
+ being ppcboot. */
+
+static const bfd_target *
+ppcboot_object_p (abfd)
+ bfd *abfd;
+{
+ struct stat statbuf;
+ asection *sec;
+ ppcboot_hdr_t hdr;
+ size_t i;
+ ppcboot_data_t *tdata;
+
+ BFD_ASSERT (sizeof (ppcboot_hdr_t) == 1024);
+
+ if (abfd->target_defaulted)
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+
+ /* Find the file size. */
+ if (bfd_stat (abfd, &statbuf) < 0)
+ {
+ bfd_set_error (bfd_error_system_call);
+ return NULL;
+ }
+
+ if ((size_t) statbuf.st_size < sizeof (ppcboot_hdr_t))
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+
+ if (bfd_read ((PTR) &hdr, sizeof (hdr), 1, abfd) != sizeof (hdr))
+ {
+ if (bfd_get_error () != bfd_error_system_call)
+ bfd_set_error (bfd_error_wrong_format);
+
+ return NULL;
+ }
+
+ /* Now do some basic checks. */
+ for (i = 0; i < sizeof (hdr.pc_compatibility); i++)
+ if (hdr.pc_compatibility[i])
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+
+ if (hdr.signature[0] != SIGNATURE0 || hdr.signature[1] != SIGNATURE1)
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+
+ if (hdr.partition[0].partition_end.ind != PPC_IND)
+ {
+ bfd_set_error (bfd_error_wrong_format);
+ return NULL;
+ }
+
+ abfd->symcount = PPCBOOT_SYMS;
+
+ /* One data section. */
+ sec = bfd_make_section (abfd, ".data");
+ if (sec == NULL)
+ return NULL;
+ sec->flags = SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_CODE | SEC_HAS_CONTENTS;
+ sec->vma = 0;
+ sec->_raw_size = statbuf.st_size - sizeof (ppcboot_hdr_t);
+ sec->filepos = sizeof (ppcboot_hdr_t);
+
+ ppcboot_mkobject (abfd);
+ tdata = ppcboot_get_tdata (abfd);
+ tdata->sec = sec;
+ memcpy ((PTR) &tdata->header, (PTR) &hdr, sizeof (ppcboot_hdr_t));
+
+ ppcboot_set_arch_mach (abfd, bfd_arch_powerpc, 0);
+ return abfd->xvec;
+}
+
+#define ppcboot_close_and_cleanup _bfd_generic_close_and_cleanup
+#define ppcboot_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
+#define ppcboot_new_section_hook _bfd_generic_new_section_hook
+
+
+/* Get contents of the only section. */
+
+static boolean
+ppcboot_get_section_contents (abfd, section, location, offset, count)
+ bfd *abfd;
+ asection *section ATTRIBUTE_UNUSED;
+ PTR location;
+ file_ptr offset;
+ bfd_size_type count;
+{
+ if (bfd_seek (abfd, offset + sizeof(ppcboot_hdr_t), SEEK_SET) != 0
+ || bfd_read (location, 1, count, abfd) != count)
+ return false;
+ return true;
+}
+
+
+/* Return the amount of memory needed to read the symbol table. */
+
+static long
+ppcboot_get_symtab_upper_bound (abfd)
+ bfd *abfd ATTRIBUTE_UNUSED;
+{
+ return (PPCBOOT_SYMS + 1) * sizeof (asymbol *);
+}
+
+
+/* Create a symbol name based on the bfd's filename. */
+
+static char *
+mangle_name (abfd, suffix)
+ bfd *abfd;
+ char *suffix;
+{
+ int size;
+ char *buf;
+ char *p;
+
+ size = (strlen (bfd_get_filename (abfd))
+ + strlen (suffix)
+ + sizeof "_ppcboot__");
+
+ buf = (char *) bfd_alloc (abfd, size);
+ if (buf == NULL)
+ return "";
+
+ sprintf (buf, "_ppcboot_%s_%s", bfd_get_filename (abfd), suffix);
+
+ /* Change any non-alphanumeric characters to underscores. */
+ for (p = buf; *p; p++)
+ if (! isalnum ((unsigned char) *p))
+ *p = '_';
+
+ return buf;
+}
+
+
+/* Return the symbol table. */
+
+static long
+ppcboot_get_symtab (abfd, alocation)
+ bfd *abfd;
+ asymbol **alocation;
+{
+ asection *sec = ppcboot_get_tdata (abfd)->sec;
+ asymbol *syms;
+ unsigned int i;
+
+ syms = (asymbol *) bfd_alloc (abfd, PPCBOOT_SYMS * sizeof (asymbol));
+ if (syms == NULL)
+ return false;
+
+ /* Start symbol. */
+ syms[0].the_bfd = abfd;
+ syms[0].name = mangle_name (abfd, "start");
+ syms[0].value = 0;
+ syms[0].flags = BSF_GLOBAL;
+ syms[0].section = sec;
+ syms[0].udata.p = NULL;
+
+ /* End symbol. */
+ syms[1].the_bfd = abfd;
+ syms[1].name = mangle_name (abfd, "end");
+ syms[1].value = sec->_raw_size;
+ syms[1].flags = BSF_GLOBAL;
+ syms[1].section = sec;
+ syms[1].udata.p = NULL;
+
+ /* Size symbol. */
+ syms[2].the_bfd = abfd;
+ syms[2].name = mangle_name (abfd, "size");
+ syms[2].value = sec->_raw_size;
+ syms[2].flags = BSF_GLOBAL;
+ syms[2].section = bfd_abs_section_ptr;
+ syms[2].udata.p = NULL;
+
+ for (i = 0; i < PPCBOOT_SYMS; i++)
+ *alocation++ = syms++;
+ *alocation = NULL;
+
+ return PPCBOOT_SYMS;
+}
+
+
+/* Make an empty symbol. */
+
+static asymbol *
+ppcboot_make_empty_symbol (abfd)
+ bfd *abfd;
+{
+ return (asymbol *) bfd_alloc (abfd, sizeof (asymbol));
+}
+
+
+#define ppcboot_print_symbol _bfd_nosymbols_print_symbol
+
+/* Get information about a symbol. */
+
+static void
+ppcboot_get_symbol_info (ignore_abfd, symbol, ret)
+ bfd *ignore_abfd ATTRIBUTE_UNUSED;
+ asymbol *symbol;
+ symbol_info *ret;
+{
+ bfd_symbol_info (symbol, ret);
+}
+
+#define ppcboot_bfd_is_local_label_name bfd_generic_is_local_label_name
+#define ppcboot_get_lineno _bfd_nosymbols_get_lineno
+#define ppcboot_find_nearest_line _bfd_nosymbols_find_nearest_line
+#define ppcboot_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
+#define ppcboot_read_minisymbols _bfd_generic_read_minisymbols
+#define ppcboot_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
+
+#define ppcboot_get_reloc_upper_bound \
+ ((long (*) PARAMS ((bfd *, asection *))) bfd_0l)
+#define ppcboot_canonicalize_reloc \
+ ((long (*) PARAMS ((bfd *, asection *, arelent **, asymbol **))) bfd_0l)
+#define ppcboot_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
+
+/* Write section contents of a ppcboot file. */
+
+static boolean
+ppcboot_set_section_contents (abfd, sec, data, offset, size)
+ bfd *abfd;
+ asection *sec;
+ PTR data;
+ file_ptr offset;
+ bfd_size_type size;
+{
+ if (! abfd->output_has_begun)
+ {
+ bfd_vma low;
+ asection *s;
+
+ /* The lowest section VMA sets the virtual address of the start
+ of the file. We use the set the file position of all the
+ sections. */
+ low = abfd->sections->vma;
+ for (s = abfd->sections->next; s != NULL; s = s->next)
+ if (s->vma < low)
+ low = s->vma;
+
+ for (s = abfd->sections; s != NULL; s = s->next)
+ s->filepos = s->vma - low;
+
+ abfd->output_has_begun = true;
+ }
+
+ return _bfd_generic_set_section_contents (abfd, sec, data, offset, size);
+}
+
+
+static int
+ppcboot_sizeof_headers (abfd, exec)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ boolean exec ATTRIBUTE_UNUSED;
+{
+ return sizeof (ppcboot_hdr_t);
+}
+
+
+/* Print out the program headers. */
+
+static boolean
+ppcboot_bfd_print_private_bfd_data (abfd, farg)
+ bfd *abfd;
+ PTR farg;
+{
+ FILE *f = (FILE *)farg;
+ ppcboot_data_t *tdata = ppcboot_get_tdata (abfd);
+ long entry_offset = bfd_getl_signed_32 ((PTR) tdata->header.entry_offset);
+ long length = bfd_getl_signed_32 ((PTR) tdata->header.length);
+ int i;
+
+ fprintf (f, _("\nppcboot header:\n"));
+ fprintf (f, _("Entry offset = 0x%.8lx (%ld)\n"), entry_offset, entry_offset);
+ fprintf (f, _("Length = 0x%.8lx (%ld)\n"), length, length);
+
+ if (tdata->header.flags)
+ fprintf (f, _("Flag field = 0x%.2x\n"), tdata->header.flags);
+
+ if (tdata->header.os_id)
+ fprintf (f, "OS_ID = 0x%.2x\n", tdata->header.os_id);
+
+ if (tdata->header.partition_name)
+ fprintf (f, _("Partition name = \"%s\"\n"), tdata->header.partition_name);
+
+ for (i = 0; i < 4; i++)
+ {
+ long sector_begin = bfd_getl_signed_32 ((PTR) tdata->header.partition[i].sector_begin);
+ long sector_length = bfd_getl_signed_32 ((PTR) tdata->header.partition[i].sector_length);
+
+ /* Skip all 0 entries */
+ if (!tdata->header.partition[i].partition_begin.ind
+ && !tdata->header.partition[i].partition_begin.head
+ && !tdata->header.partition[i].partition_begin.sector
+ && !tdata->header.partition[i].partition_begin.cylinder
+ && !tdata->header.partition[i].partition_end.ind
+ && !tdata->header.partition[i].partition_end.head
+ && !tdata->header.partition[i].partition_end.sector
+ && !tdata->header.partition[i].partition_end.cylinder
+ && !sector_begin && !sector_length)
+ continue;
+
+ fprintf (f, _("\nPartition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"), i,
+ tdata->header.partition[i].partition_begin.ind,
+ tdata->header.partition[i].partition_begin.head,
+ tdata->header.partition[i].partition_begin.sector,
+ tdata->header.partition[i].partition_begin.cylinder);
+
+ fprintf (f, _("Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"), i,
+ tdata->header.partition[i].partition_end.ind,
+ tdata->header.partition[i].partition_end.head,
+ tdata->header.partition[i].partition_end.sector,
+ tdata->header.partition[i].partition_end.cylinder);
+
+ fprintf (f, _("Partition[%d] sector = 0x%.8lx (%ld)\n"), i, sector_begin, sector_begin);
+ fprintf (f, _("Partition[%d] length = 0x%.8lx (%ld)\n"), i, sector_length, sector_length);
+ }
+
+ fprintf (f, "\n");
+ return true;
+}
+
+
+#define ppcboot_bfd_get_relocated_section_contents \
+ bfd_generic_get_relocated_section_contents
+#define ppcboot_bfd_relax_section bfd_generic_relax_section
+#define ppcboot_bfd_gc_sections bfd_generic_gc_sections
+#define ppcboot_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
+#define ppcboot_bfd_link_add_symbols _bfd_generic_link_add_symbols
+#define ppcboot_bfd_final_link _bfd_generic_final_link
+#define ppcboot_bfd_link_split_section _bfd_generic_link_split_section
+#define ppcboot_get_section_contents_in_window \
+ _bfd_generic_get_section_contents_in_window
+
+#define ppcboot_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
+#define ppcboot_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data
+#define ppcboot_bfd_copy_private_section_data _bfd_generic_bfd_copy_private_section_data
+#define ppcboot_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data
+#define ppcboot_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
+#define ppcboot_bfd_print_private_bfd_dat ppcboot_bfd_print_private_bfd_data
+
+const bfd_target ppcboot_vec =
+{
+ "ppcboot", /* name */
+ bfd_target_unknown_flavour, /* flavour */
+ BFD_ENDIAN_BIG, /* byteorder is big endian for code */
+ BFD_ENDIAN_LITTLE, /* header_byteorder */
+ EXEC_P, /* object_flags */
+ (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE | SEC_DATA
+ | SEC_ROM | SEC_HAS_CONTENTS), /* section_flags */
+ 0, /* symbol_leading_char */
+ ' ', /* ar_pad_char */
+ 16, /* ar_max_namelen */
+ bfd_getb64, bfd_getb_signed_64, bfd_putb64,
+ bfd_getb32, bfd_getb_signed_32, bfd_putb32,
+ bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
+ { /* bfd_check_format */
+ _bfd_dummy_target,
+ ppcboot_object_p, /* bfd_check_format */
+ _bfd_dummy_target,
+ _bfd_dummy_target,
+ },
+ { /* bfd_set_format */
+ bfd_false,
+ ppcboot_mkobject,
+ bfd_false,
+ bfd_false,
+ },
+ { /* bfd_write_contents */
+ bfd_false,
+ bfd_true,
+ bfd_false,
+ bfd_false,
+ },
+
+ BFD_JUMP_TABLE_GENERIC (ppcboot),
+ BFD_JUMP_TABLE_COPY (ppcboot),
+ BFD_JUMP_TABLE_CORE (_bfd_nocore),
+ BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
+ BFD_JUMP_TABLE_SYMBOLS (ppcboot),
+ BFD_JUMP_TABLE_RELOCS (ppcboot),
+ BFD_JUMP_TABLE_WRITE (ppcboot),
+ BFD_JUMP_TABLE_LINK (ppcboot),
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+ NULL,
+
+ NULL
+};
diff --git a/contrib/binutils/binutils/readelf.c b/contrib/binutils/binutils/readelf.c
new file mode 100644
index 000000000000..fc011e4988a7
--- /dev/null
+++ b/contrib/binutils/binutils/readelf.c
@@ -0,0 +1,7365 @@
+/* readelf.c -- display contents of an ELF format file
+ Copyright (C) 1998, 99, 2000 Free Software Foundation, Inc.
+
+ Originally developed by Eric Youngdale <eric@andante.jic.com>
+ Modifications by Nick Clifton <nickc@cygnus.com>
+
+ This file is part of GNU Binutils.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+
+#include <assert.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <time.h>
+
+#if __GNUC__ >= 2
+/* Define BFD64 here, even if our default architecture is 32 bit ELF
+ as this will allow us to read in and parse 64bit and 32bit ELF files.
+ Only do this if we belive that the compiler can support a 64 bit
+ data type. For now we only rely on GCC being able to do this. */
+#define BFD64
+#endif
+
+#include "bfd.h"
+
+#include "elf/common.h"
+#include "elf/external.h"
+#include "elf/internal.h"
+#include "elf/dwarf2.h"
+
+/* The following headers use the elf/reloc-macros.h file to
+ automatically generate relocation recognition functions
+ such as elf_mips_reloc_type() */
+
+#define RELOC_MACROS_GEN_FUNC
+
+#include "elf/i386.h"
+#include "elf/v850.h"
+#include "elf/ppc.h"
+#include "elf/mips.h"
+#include "elf/alpha.h"
+#include "elf/arm.h"
+#include "elf/m68k.h"
+#include "elf/sparc.h"
+#include "elf/m32r.h"
+#include "elf/d10v.h"
+#include "elf/d30v.h"
+#include "elf/sh.h"
+#include "elf/mn10200.h"
+#include "elf/mn10300.h"
+#include "elf/hppa.h"
+#include "elf/arc.h"
+#include "elf/fr30.h"
+#include "elf/mcore.h"
+#include "elf/i960.h"
+#include "elf/pj.h"
+#include "elf/avr.h"
+
+#include "bucomm.h"
+#include "getopt.h"
+
+char * program_name = "readelf";
+unsigned int dynamic_addr;
+bfd_size_type dynamic_size;
+unsigned int rela_addr;
+unsigned int rela_size;
+char * dynamic_strings;
+char * string_table;
+unsigned long num_dynamic_syms;
+Elf_Internal_Sym * dynamic_symbols;
+Elf_Internal_Syminfo * dynamic_syminfo;
+unsigned long dynamic_syminfo_offset;
+unsigned int dynamic_syminfo_nent;
+char program_interpreter [64];
+int dynamic_info[DT_JMPREL + 1];
+int version_info[16];
+int loadaddr = 0;
+Elf_Internal_Ehdr elf_header;
+Elf_Internal_Shdr * section_headers;
+Elf_Internal_Dyn * dynamic_segment;
+int show_name;
+int do_dynamic;
+int do_syms;
+int do_reloc;
+int do_sections;
+int do_segments;
+int do_using_dynamic;
+int do_header;
+int do_dump;
+int do_version;
+int do_histogram;
+int do_debugging;
+int do_debug_info;
+int do_debug_abbrevs;
+int do_debug_lines;
+int do_debug_pubnames;
+int do_debug_aranges;
+int do_arch;
+int do_notes;
+int is_32bit_elf;
+
+/* A dynamic array of flags indicating which sections require dumping. */
+char * dump_sects = NULL;
+unsigned int num_dump_sects = 0;
+
+#define HEX_DUMP (1 << 0)
+#define DISASS_DUMP (1 << 1)
+#define DEBUG_DUMP (1 << 2)
+
+/* How to rpint a vma value. */
+typedef enum print_mode
+{
+ HEX,
+ DEC,
+ DEC_5,
+ UNSIGNED,
+ PREFIX_HEX,
+ FULL_HEX,
+ LONG_HEX
+}
+print_mode;
+
+/* Forward declarations for dumb compilers. */
+static void print_vma PARAMS ((bfd_vma, print_mode));
+static bfd_vma (* byte_get) PARAMS ((unsigned char *, int));
+static bfd_vma byte_get_little_endian PARAMS ((unsigned char *, int));
+static bfd_vma byte_get_big_endian PARAMS ((unsigned char *, int));
+static const char * get_mips_dynamic_type PARAMS ((unsigned long));
+static const char * get_sparc64_dynamic_type PARAMS ((unsigned long));
+static const char * get_parisc_dynamic_type PARAMS ((unsigned long));
+static const char * get_dynamic_type PARAMS ((unsigned long));
+static int dump_relocations PARAMS ((FILE *, unsigned long, unsigned long, Elf_Internal_Sym *, unsigned long, char *, int));
+static char * get_file_type PARAMS ((unsigned));
+static char * get_machine_name PARAMS ((unsigned));
+static char * get_machine_flags PARAMS ((unsigned, unsigned));
+static const char * get_mips_segment_type PARAMS ((unsigned long));
+static const char * get_parisc_segment_type PARAMS ((unsigned long));
+static const char * get_segment_type PARAMS ((unsigned long));
+static const char * get_mips_section_type_name PARAMS ((unsigned int));
+static const char * get_parisc_section_type_name PARAMS ((unsigned int));
+static const char * get_section_type_name PARAMS ((unsigned int));
+static const char * get_symbol_binding PARAMS ((unsigned int));
+static const char * get_symbol_type PARAMS ((unsigned int));
+static const char * get_symbol_visibility PARAMS ((unsigned int));
+static const char * get_symbol_index_type PARAMS ((unsigned int));
+static const char * get_dynamic_flags PARAMS ((bfd_vma));
+static void usage PARAMS ((void));
+static void parse_args PARAMS ((int, char **));
+static int process_file_header PARAMS ((void));
+static int process_program_headers PARAMS ((FILE *));
+static int process_section_headers PARAMS ((FILE *));
+static void dynamic_segment_mips_val PARAMS ((Elf_Internal_Dyn *));
+static void dynamic_segment_parisc_val PARAMS ((Elf_Internal_Dyn *));
+static int process_dynamic_segment PARAMS ((FILE *));
+static int process_symbol_table PARAMS ((FILE *));
+static int process_section_contents PARAMS ((FILE *));
+static void process_file PARAMS ((char *));
+static int process_relocs PARAMS ((FILE *));
+static int process_version_sections PARAMS ((FILE *));
+static char * get_ver_flags PARAMS ((unsigned int));
+static int get_32bit_section_headers PARAMS ((FILE *));
+static int get_64bit_section_headers PARAMS ((FILE *));
+static int get_32bit_program_headers PARAMS ((FILE *, Elf_Internal_Phdr *));
+static int get_64bit_program_headers PARAMS ((FILE *, Elf_Internal_Phdr *));
+static int get_file_header PARAMS ((FILE *));
+static Elf_Internal_Sym * get_32bit_elf_symbols PARAMS ((FILE *, unsigned long, unsigned long));
+static Elf_Internal_Sym * get_64bit_elf_symbols PARAMS ((FILE *, unsigned long, unsigned long));
+static int * get_dynamic_data PARAMS ((FILE *, unsigned int));
+static int get_32bit_dynamic_segment PARAMS ((FILE *));
+static int get_64bit_dynamic_segment PARAMS ((FILE *));
+#ifdef SUPPORT_DISASSEMBLY
+static int disassemble_section PARAMS ((Elf32_Internal_Shdr *, FILE *));
+#endif
+static int dump_section PARAMS ((Elf32_Internal_Shdr *, FILE *));
+static int display_debug_section PARAMS ((Elf32_Internal_Shdr *, FILE *));
+static int display_debug_info PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
+static int display_debug_not_supported PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
+static int display_debug_lines PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
+static int display_debug_abbrev PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
+static int display_debug_aranges PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
+static unsigned char * process_abbrev_section PARAMS ((unsigned char *, unsigned char *));
+static unsigned long read_leb128 PARAMS ((unsigned char *, int *, int));
+static int process_extended_line_op PARAMS ((unsigned char *, int, int));
+static void reset_state_machine PARAMS ((int));
+static char * get_TAG_name PARAMS ((unsigned long));
+static char * get_AT_name PARAMS ((unsigned long));
+static char * get_FORM_name PARAMS ((unsigned long));
+static void free_abbrevs PARAMS ((void));
+static void add_abbrev PARAMS ((unsigned long, unsigned long, int));
+static void add_abbrev_attr PARAMS ((unsigned long, unsigned long));
+static unsigned char * read_and_display_attr PARAMS ((unsigned long, unsigned long, unsigned char *, unsigned long));
+static unsigned char * display_block PARAMS ((unsigned char *, unsigned long));
+static void decode_location_expression PARAMS ((unsigned char *, unsigned int));
+static void request_dump PARAMS ((unsigned int, char));
+static const char * get_elf_class PARAMS ((unsigned char));
+static const char * get_data_encoding PARAMS ((unsigned char));
+static const char * get_osabi_name PARAMS ((unsigned char));
+static int guess_is_rela PARAMS ((unsigned long));
+static char * get_note_type PARAMS ((unsigned int));
+static int process_note PARAMS ((Elf32_Internal_Note *));
+static int process_corefile_note_segment PARAMS ((FILE *, bfd_vma, bfd_vma));
+static int process_corefile_note_segments PARAMS ((FILE *));
+static int process_corefile_contents PARAMS ((FILE *));
+
+typedef int Elf32_Word;
+
+#ifndef TRUE
+#define TRUE 1
+#define FALSE 0
+#endif
+#define UNKNOWN -1
+
+#define SECTION_NAME(X) (string_table + (X)->sh_name)
+
+#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */
+
+#define BYTE_GET(field) byte_get (field, sizeof (field))
+
+/* If we can support a 64 bit data type then BFD64 should be defined
+ and sizeof (bfd_vma) == 8. In this case when translating from an
+ external 8 byte field to an internal field, we can assume that the
+ internal field is also 8 bytes wide and so we can extact all the data.
+ If, however, BFD64 is not defined, then we must assume that the
+ internal data structure only has 4 byte wide fields that are the
+ equivalent of the 8 byte wide external counterparts, and so we must
+ truncate the data. */
+#ifdef BFD64
+#define BYTE_GET8(field) byte_get (field, -8)
+#else
+#define BYTE_GET8(field) byte_get (field, 8)
+#endif
+
+#define NUM_ELEM(array) (sizeof (array) / sizeof ((array)[0]))
+
+#define GET_DATA_ALLOC(offset, size, var, type, reason) \
+ if (fseek (file, offset, SEEK_SET)) \
+ { \
+ error (_("Unable to seek to start of %s at %x\n"), reason, offset); \
+ return 0; \
+ } \
+ \
+ var = (type) malloc (size); \
+ \
+ if (var == NULL) \
+ { \
+ error (_("Out of memory allocating %d bytes for %s\n"), size, reason); \
+ return 0; \
+ } \
+ \
+ if (fread (var, size, 1, file) != 1) \
+ { \
+ error (_("Unable to read in %d bytes of %s\n"), size, reason); \
+ free (var); \
+ var = NULL; \
+ return 0; \
+ }
+
+
+#define GET_DATA(offset, var, reason) \
+ if (fseek (file, offset, SEEK_SET)) \
+ { \
+ error (_("Unable to seek to %x for %s\n"), offset, reason); \
+ return 0; \
+ } \
+ else if (fread (& var, sizeof (var), 1, file) != 1) \
+ { \
+ error (_("Unable to read data at %x for %s\n"), offset, reason); \
+ return 0; \
+ }
+
+#define GET_ELF_SYMBOLS(file, offset, size) \
+ (is_32bit_elf ? get_32bit_elf_symbols (file, offset, size) \
+ : get_64bit_elf_symbols (file, offset, size))
+
+
+#ifdef ANSI_PROTOTYPES
+static void
+error (const char * message, ...)
+{
+ va_list args;
+
+ fprintf (stderr, _("%s: Error: "), program_name);
+ va_start (args, message);
+ vfprintf (stderr, message, args);
+ va_end (args);
+ return;
+}
+
+static void
+warn (const char * message, ...)
+{
+ va_list args;
+
+ fprintf (stderr, _("%s: Warning: "), program_name);
+ va_start (args, message);
+ vfprintf (stderr, message, args);
+ va_end (args);
+ return;
+}
+#else
+static void
+error (va_alist)
+ va_dcl
+{
+ char * message;
+ va_list args;
+
+ fprintf (stderr, _("%s: Error: "), program_name);
+ va_start (args);
+ message = va_arg (args, char *);
+ vfprintf (stderr, message, args);
+ va_end (args);
+ return;
+}
+
+static void
+warn (va_alist)
+ va_dcl
+{
+ char * message;
+ va_list args;
+
+ fprintf (stderr, _("%s: Warning: "), program_name);
+ va_start (args);
+ message = va_arg (args, char *);
+ vfprintf (stderr, message, args);
+ va_end (args);
+ return;
+}
+#endif
+
+static bfd_vma
+byte_get_little_endian (field, size)
+ unsigned char * field;
+ int size;
+{
+ switch (size)
+ {
+ case 1:
+ return * field;
+
+ case 2:
+ return ((unsigned int) (field [0]))
+ | (((unsigned int) (field [1])) << 8);
+
+ case 8:
+ /* We want to extract data from an 8 byte wide field and
+ place it into a 4 byte wide field. Since this is a little
+ endian source we can juts use the 4 byte extraction code. */
+ /* Fall through. */
+ case 4:
+ return ((unsigned long) (field [0]))
+ | (((unsigned long) (field [1])) << 8)
+ | (((unsigned long) (field [2])) << 16)
+ | (((unsigned long) (field [3])) << 24);
+
+#ifdef BFD64
+ case -8:
+ /* This is a special case, generated by the BYTE_GET8 macro.
+ It means that we are loading an 8 byte value from a field
+ in an external structure into an 8 byte value in a field
+ in an internal strcuture. */
+ return ((bfd_vma) (field [0]))
+ | (((bfd_vma) (field [1])) << 8)
+ | (((bfd_vma) (field [2])) << 16)
+ | (((bfd_vma) (field [3])) << 24)
+ | (((bfd_vma) (field [4])) << 32)
+ | (((bfd_vma) (field [5])) << 40)
+ | (((bfd_vma) (field [6])) << 48)
+ | (((bfd_vma) (field [7])) << 56);
+#endif
+ default:
+ error (_("Unhandled data length: %d\n"), size);
+ abort ();
+ }
+}
+
+/* Print a VMA value. */
+static void
+print_vma (vma, mode)
+ bfd_vma vma;
+ print_mode mode;
+{
+#ifdef BFD64
+ if (is_32bit_elf)
+#endif
+ {
+ switch (mode)
+ {
+ case FULL_HEX: printf ("0x"); /* drop through */
+ case LONG_HEX: printf ("%8.8lx", (unsigned long) vma); break;
+ case PREFIX_HEX: printf ("0x"); /* drop through */
+ case HEX: printf ("%lx", (unsigned long) vma); break;
+ case DEC: printf ("%ld", (unsigned long) vma); break;
+ case DEC_5: printf ("%5ld", (long) vma); break;
+ case UNSIGNED: printf ("%lu", (unsigned long) vma); break;
+ }
+ }
+#ifdef BFD64
+ else
+ {
+ switch (mode)
+ {
+ case FULL_HEX:
+ printf ("0x");
+ /* drop through */
+
+ case LONG_HEX:
+ printf_vma (vma);
+ break;
+
+ case PREFIX_HEX:
+ printf ("0x");
+ /* drop through */
+
+ case HEX:
+#if BFD_HOST_64BIT_LONG
+ printf ("%lx", vma);
+#else
+ if (_bfd_int64_high (vma))
+ printf ("%lx%lx", _bfd_int64_high (vma), _bfd_int64_low (vma));
+ else
+ printf ("%lx", _bfd_int64_low (vma));
+#endif
+ break;
+
+ case DEC:
+#if BFD_HOST_64BIT_LONG
+ printf ("%ld", vma);
+#else
+ if (_bfd_int64_high (vma))
+ /* ugg */
+ printf ("++%ld", _bfd_int64_low (vma));
+ else
+ printf ("%ld", _bfd_int64_low (vma));
+#endif
+ break;
+
+ case DEC_5:
+#if BFD_HOST_64BIT_LONG
+ printf ("%5ld", vma);
+#else
+ if (_bfd_int64_high (vma))
+ /* ugg */
+ printf ("++%ld", _bfd_int64_low (vma));
+ else
+ printf ("%5ld", _bfd_int64_low (vma));
+#endif
+ break;
+
+ case UNSIGNED:
+#if BFD_HOST_64BIT_LONG
+ printf ("%lu", vma);
+#else
+ if (_bfd_int64_high (vma))
+ /* ugg */
+ printf ("++%lu", _bfd_int64_low (vma));
+ else
+ printf ("%lu", _bfd_int64_low (vma));
+#endif
+ break;
+ }
+ }
+#endif
+}
+
+static bfd_vma
+byte_get_big_endian (field, size)
+ unsigned char * field;
+ int size;
+{
+ switch (size)
+ {
+ case 1:
+ return * field;
+
+ case 2:
+ return ((unsigned int) (field [1])) | (((int) (field [0])) << 8);
+
+ case 4:
+ return ((unsigned long) (field [3]))
+ | (((unsigned long) (field [2])) << 8)
+ | (((unsigned long) (field [1])) << 16)
+ | (((unsigned long) (field [0])) << 24);
+
+ case 8:
+ /* Although we are extracing data from an 8 byte wide field, we
+ are returning only 4 bytes of data. */
+ return ((unsigned long) (field [7]))
+ | (((unsigned long) (field [6])) << 8)
+ | (((unsigned long) (field [5])) << 16)
+ | (((unsigned long) (field [4])) << 24);
+
+#ifdef BFD64
+ case -8:
+ /* This is a special case, generated by the BYTE_GET8 macro.
+ It means that we are loading an 8 byte value from a field
+ in an external structure into an 8 byte value in a field
+ in an internal strcuture. */
+ return ((bfd_vma) (field [7]))
+ | (((bfd_vma) (field [6])) << 8)
+ | (((bfd_vma) (field [5])) << 16)
+ | (((bfd_vma) (field [4])) << 24)
+ | (((bfd_vma) (field [3])) << 32)
+ | (((bfd_vma) (field [2])) << 40)
+ | (((bfd_vma) (field [1])) << 48)
+ | (((bfd_vma) (field [0])) << 56);
+#endif
+
+ default:
+ error (_("Unhandled data length: %d\n"), size);
+ abort ();
+ }
+}
+
+
+/* Guess the relocation sized based on the sized commonly used by the specific machine. */
+static int
+guess_is_rela (e_machine)
+ unsigned long e_machine;
+{
+ switch (e_machine)
+ {
+ /* Targets that use REL relocations. */
+ case EM_ARM:
+ case EM_386:
+ case EM_486:
+ case EM_960:
+ case EM_CYGNUS_M32R:
+ case EM_CYGNUS_D10V:
+ case EM_MIPS:
+ case EM_MIPS_RS4_BE:
+ return FALSE;
+
+ /* Targets that use RELA relocations. */
+ case EM_68K:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ case EM_PPC:
+ case EM_CYGNUS_V850:
+ case EM_CYGNUS_D30V:
+ case EM_CYGNUS_MN10200:
+ case EM_CYGNUS_MN10300:
+ case EM_CYGNUS_FR30:
+ case EM_SH:
+ case EM_ALPHA:
+ case EM_MCORE:
+ return TRUE;
+
+ case EM_MMA:
+ case EM_PCP:
+ case EM_NCPU:
+ case EM_NDR1:
+ case EM_STARCORE:
+ case EM_ME16:
+ case EM_ST100:
+ case EM_TINYJ:
+ case EM_FX66:
+ case EM_ST9PLUS:
+ case EM_ST7:
+ case EM_68HC16:
+ case EM_68HC11:
+ case EM_68HC08:
+ case EM_68HC05:
+ case EM_SVX:
+ case EM_ST19:
+ case EM_VAX:
+ default:
+ warn (_("Don't know about relocations on this machine architecture\n"));
+ return FALSE;
+ }
+}
+
+/* Display the contents of the relocation data found at the specified offset. */
+static int
+dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
+ FILE * file;
+ unsigned long rel_offset;
+ unsigned long rel_size;
+ Elf_Internal_Sym * symtab;
+ unsigned long nsyms;
+ char * strtab;
+ int is_rela;
+{
+ unsigned int i;
+ Elf_Internal_Rel * rels;
+ Elf_Internal_Rela * relas;
+
+
+ if (is_rela == UNKNOWN)
+ is_rela = guess_is_rela (elf_header.e_machine);
+
+ if (is_rela)
+ {
+ if (is_32bit_elf)
+ {
+ Elf32_External_Rela * erelas;
+
+ GET_DATA_ALLOC (rel_offset, rel_size, erelas,
+ Elf32_External_Rela *, "relocs");
+
+ rel_size = rel_size / sizeof (Elf32_External_Rela);
+
+ relas = (Elf_Internal_Rela *)
+ malloc (rel_size * sizeof (Elf_Internal_Rela));
+
+ if (relas == NULL)
+ {
+ error(_("out of memory parsing relocs"));
+ return 0;
+ }
+
+ for (i = 0; i < rel_size; i++)
+ {
+ relas[i].r_offset = BYTE_GET (erelas[i].r_offset);
+ relas[i].r_info = BYTE_GET (erelas[i].r_info);
+ relas[i].r_addend = BYTE_GET (erelas[i].r_addend);
+ }
+
+ free (erelas);
+
+ rels = (Elf_Internal_Rel *) relas;
+ }
+ else
+ {
+ Elf64_External_Rela * erelas;
+
+ GET_DATA_ALLOC (rel_offset, rel_size, erelas,
+ Elf64_External_Rela *, "relocs");
+
+ rel_size = rel_size / sizeof (Elf64_External_Rela);
+
+ relas = (Elf_Internal_Rela *)
+ malloc (rel_size * sizeof (Elf_Internal_Rela));
+
+ if (relas == NULL)
+ {
+ error(_("out of memory parsing relocs"));
+ return 0;
+ }
+
+ for (i = 0; i < rel_size; i++)
+ {
+ relas[i].r_offset = BYTE_GET8 (erelas[i].r_offset);
+ relas[i].r_info = BYTE_GET8 (erelas[i].r_info);
+ relas[i].r_addend = BYTE_GET8 (erelas[i].r_addend);
+ }
+
+ free (erelas);
+
+ rels = (Elf_Internal_Rel *) relas;
+ }
+ }
+ else
+ {
+ if (is_32bit_elf)
+ {
+ Elf32_External_Rel * erels;
+
+ GET_DATA_ALLOC (rel_offset, rel_size, erels,
+ Elf32_External_Rel *, "relocs");
+
+ rel_size = rel_size / sizeof (Elf32_External_Rel);
+
+ rels = (Elf_Internal_Rel *)
+ malloc (rel_size * sizeof (Elf_Internal_Rel));
+
+ if (rels == NULL)
+ {
+ error(_("out of memory parsing relocs"));
+ return 0;
+ }
+
+ for (i = 0; i < rel_size; i++)
+ {
+ rels[i].r_offset = BYTE_GET (erels[i].r_offset);
+ rels[i].r_info = BYTE_GET (erels[i].r_info);
+ }
+
+ free (erels);
+
+ relas = (Elf_Internal_Rela *) rels;
+ }
+ else
+ {
+ Elf64_External_Rel * erels;
+
+ GET_DATA_ALLOC (rel_offset, rel_size, erels,
+ Elf64_External_Rel *, "relocs");
+
+ rel_size = rel_size / sizeof (Elf64_External_Rel);
+
+ rels = (Elf_Internal_Rel *)
+ malloc (rel_size * sizeof (Elf_Internal_Rel));
+
+ if (rels == NULL)
+ {
+ error(_("out of memory parsing relocs"));
+ return 0;
+ }
+
+ for (i = 0; i < rel_size; i++)
+ {
+ rels[i].r_offset = BYTE_GET8 (erels[i].r_offset);
+ rels[i].r_info = BYTE_GET8 (erels[i].r_info);
+ }
+
+ free (erels);
+
+ relas = (Elf_Internal_Rela *) rels;
+ }
+ }
+
+ if (is_rela)
+ printf
+ (_(" Offset Info Type Symbol's Value Symbol's Name Addend\n"));
+ else
+ printf
+ (_(" Offset Info Type Symbol's Value Symbol's Name\n"));
+
+ for (i = 0; i < rel_size; i++)
+ {
+ const char * rtype;
+ bfd_vma offset;
+ bfd_vma info;
+ bfd_vma symtab_index;
+ bfd_vma type;
+
+ if (is_rela)
+ {
+ offset = relas [i].r_offset;
+ info = relas [i].r_info;
+ }
+ else
+ {
+ offset = rels [i].r_offset;
+ info = rels [i].r_info;
+ }
+
+ if (is_32bit_elf)
+ {
+ type = ELF32_R_TYPE (info);
+ symtab_index = ELF32_R_SYM (info);
+ }
+ else
+ {
+ if (elf_header.e_machine == EM_SPARCV9)
+ type = ELF64_R_TYPE_ID (info);
+ else
+ type = ELF64_R_TYPE (info);
+ /* The #ifdef BFD64 below is to prevent a compile time warning.
+ We know that if we do not have a 64 bit data type that we
+ will never execute this code anyway. */
+#ifdef BFD64
+ symtab_index = ELF64_R_SYM (info);
+#endif
+ }
+
+#ifdef _bfd_int64_low
+ printf (" %8.8lx %5.5lx ", _bfd_int64_low (offset), _bfd_int64_low (info));
+#else
+ printf (" %8.8lx %5.5lx ", offset, info);
+#endif
+
+ switch (elf_header.e_machine)
+ {
+ default:
+ rtype = NULL;
+ break;
+
+ case EM_CYGNUS_M32R:
+ rtype = elf_m32r_reloc_type (type);
+ break;
+
+ case EM_386:
+ case EM_486:
+ rtype = elf_i386_reloc_type (type);
+ break;
+
+ case EM_68K:
+ rtype = elf_m68k_reloc_type (type);
+ break;
+
+ case EM_960:
+ rtype = elf_i960_reloc_type (type);
+ break;
+
+ case EM_AVR:
+ rtype = elf_avr_reloc_type (type);
+ break;
+
+ case EM_OLD_SPARCV9:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ rtype = elf_sparc_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_V850:
+ rtype = v850_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_D10V:
+ rtype = elf_d10v_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_D30V:
+ rtype = elf_d30v_reloc_type (type);
+ break;
+
+ case EM_SH:
+ rtype = elf_sh_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_MN10300:
+ rtype = elf_mn10300_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_MN10200:
+ rtype = elf_mn10200_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_FR30:
+ rtype = elf_fr30_reloc_type (type);
+ break;
+
+ case EM_MCORE:
+ rtype = elf_mcore_reloc_type (type);
+ break;
+
+ case EM_PPC:
+ rtype = elf_ppc_reloc_type (type);
+ break;
+
+ case EM_MIPS:
+ case EM_MIPS_RS4_BE:
+ rtype = elf_mips_reloc_type (type);
+ break;
+
+ case EM_ALPHA:
+ rtype = elf_alpha_reloc_type (type);
+ break;
+
+ case EM_ARM:
+ rtype = elf_arm_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_ARC:
+ rtype = elf_arc_reloc_type (type);
+ break;
+
+ case EM_PARISC:
+ rtype = elf_hppa_reloc_type (type);
+ break;
+
+ case EM_PJ:
+ rtype = elf_pj_reloc_type (type);
+ break;
+ }
+
+ if (rtype == NULL)
+#ifdef _bfd_int64_low
+ printf (_("unrecognised: %-7lx"), _bfd_int64_low (type));
+#else
+ printf (_("unrecognised: %-7lx"), type);
+#endif
+ else
+ printf ("%-21.21s", rtype);
+
+ if (symtab_index)
+ {
+ if (symtab != NULL)
+ {
+ if (symtab_index >= nsyms)
+ printf (" bad symbol index: %08lx", (unsigned long) symtab_index);
+ else
+ {
+ Elf_Internal_Sym * psym;
+
+ psym = symtab + symtab_index;
+
+ printf (" ");
+ print_vma (psym->st_value, LONG_HEX);
+ printf (" ");
+
+ if (psym->st_name == 0)
+ printf ("%-25.25s",
+ SECTION_NAME (section_headers + psym->st_shndx));
+ else if (strtab == NULL)
+ printf (_("<string table index %3ld>"), psym->st_name);
+ else
+ printf ("%-25.25s", strtab + psym->st_name);
+
+ if (is_rela)
+ printf (" + %lx", (unsigned long) relas [i].r_addend);
+ }
+ }
+ }
+ else if (is_rela)
+ {
+ printf ("%*c", is_32bit_elf ? 34 : 26, ' ');
+ print_vma (relas[i].r_addend, LONG_HEX);
+ }
+
+ if (elf_header.e_machine == EM_SPARCV9
+ && !strcmp (rtype, "R_SPARC_OLO10"))
+ printf (" + %lx", (unsigned long) ELF64_R_TYPE_DATA (info));
+
+ putchar ('\n');
+ }
+
+ free (relas);
+
+ return 1;
+}
+
+static const char *
+get_mips_dynamic_type (type)
+ unsigned long type;
+{
+ switch (type)
+ {
+ case DT_MIPS_RLD_VERSION: return "MIPS_RLD_VERSION";
+ case DT_MIPS_TIME_STAMP: return "MIPS_TIME_STAMP";
+ case DT_MIPS_ICHECKSUM: return "MIPS_ICHECKSUM";
+ case DT_MIPS_IVERSION: return "MIPS_IVERSION";
+ case DT_MIPS_FLAGS: return "MIPS_FLAGS";
+ case DT_MIPS_BASE_ADDRESS: return "MIPS_BASE_ADDRESS";
+ case DT_MIPS_MSYM: return "MIPS_MSYM";
+ case DT_MIPS_CONFLICT: return "MIPS_CONFLICT";
+ case DT_MIPS_LIBLIST: return "MIPS_LIBLIST";
+ case DT_MIPS_LOCAL_GOTNO: return "MIPS_LOCAL_GOTNO";
+ case DT_MIPS_CONFLICTNO: return "MIPS_CONFLICTNO";
+ case DT_MIPS_LIBLISTNO: return "MIPS_LIBLISTNO";
+ case DT_MIPS_SYMTABNO: return "MIPS_SYMTABNO";
+ case DT_MIPS_UNREFEXTNO: return "MIPS_UNREFEXTNO";
+ case DT_MIPS_GOTSYM: return "MIPS_GOTSYM";
+ case DT_MIPS_HIPAGENO: return "MIPS_HIPAGENO";
+ case DT_MIPS_RLD_MAP: return "MIPS_RLD_MAP";
+ case DT_MIPS_DELTA_CLASS: return "MIPS_DELTA_CLASS";
+ case DT_MIPS_DELTA_CLASS_NO: return "MIPS_DELTA_CLASS_NO";
+ case DT_MIPS_DELTA_INSTANCE: return "MIPS_DELTA_INSTANCE";
+ case DT_MIPS_DELTA_INSTANCE_NO: return "MIPS_DELTA_INSTANCE_NO";
+ case DT_MIPS_DELTA_RELOC: return "MIPS_DELTA_RELOC";
+ case DT_MIPS_DELTA_RELOC_NO: return "MIPS_DELTA_RELOC_NO";
+ case DT_MIPS_DELTA_SYM: return "MIPS_DELTA_SYM";
+ case DT_MIPS_DELTA_SYM_NO: return "MIPS_DELTA_SYM_NO";
+ case DT_MIPS_DELTA_CLASSSYM: return "MIPS_DELTA_CLASSSYM";
+ case DT_MIPS_DELTA_CLASSSYM_NO: return "MIPS_DELTA_CLASSSYM_NO";
+ case DT_MIPS_CXX_FLAGS: return "MIPS_CXX_FLAGS";
+ case DT_MIPS_PIXIE_INIT: return "MIPS_PIXIE_INIT";
+ case DT_MIPS_SYMBOL_LIB: return "MIPS_SYMBOL_LIB";
+ case DT_MIPS_LOCALPAGE_GOTIDX: return "MIPS_LOCALPAGE_GOTIDX";
+ case DT_MIPS_LOCAL_GOTIDX: return "MIPS_LOCAL_GOTIDX";
+ case DT_MIPS_HIDDEN_GOTIDX: return "MIPS_HIDDEN_GOTIDX";
+ case DT_MIPS_PROTECTED_GOTIDX: return "MIPS_PROTECTED_GOTIDX";
+ case DT_MIPS_OPTIONS: return "MIPS_OPTIONS";
+ case DT_MIPS_INTERFACE: return "MIPS_INTERFACE";
+ case DT_MIPS_DYNSTR_ALIGN: return "MIPS_DYNSTR_ALIGN";
+ case DT_MIPS_INTERFACE_SIZE: return "MIPS_INTERFACE_SIZE";
+ case DT_MIPS_RLD_TEXT_RESOLVE_ADDR: return "MIPS_RLD_TEXT_RESOLVE_ADDR";
+ case DT_MIPS_PERF_SUFFIX: return "MIPS_PERF_SUFFIX";
+ case DT_MIPS_COMPACT_SIZE: return "MIPS_COMPACT_SIZE";
+ case DT_MIPS_GP_VALUE: return "MIPS_GP_VALUE";
+ case DT_MIPS_AUX_DYNAMIC: return "MIPS_AUX_DYNAMIC";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_sparc64_dynamic_type (type)
+ unsigned long type;
+{
+ switch (type)
+ {
+ case DT_SPARC_REGISTER: return "SPARC_REGISTER";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_parisc_dynamic_type (type)
+ unsigned long type;
+{
+ switch (type)
+ {
+ case DT_HP_LOAD_MAP: return "HP_LOAD_MAP";
+ case DT_HP_DLD_FLAGS: return "HP_DLD_FLAGS";
+ case DT_HP_DLD_HOOK: return "HP_DLD_HOOK";
+ case DT_HP_UX10_INIT: return "HP_UX10_INIT";
+ case DT_HP_UX10_INITSZ: return "HP_UX10_INITSZ";
+ case DT_HP_PREINIT: return "HP_PREINIT";
+ case DT_HP_PREINITSZ: return "HP_PREINITSZ";
+ case DT_HP_NEEDED: return "HP_NEEDED";
+ case DT_HP_TIME_STAMP: return "HP_TIME_STAMP";
+ case DT_HP_CHECKSUM: return "HP_CHECKSUM";
+ case DT_HP_GST_SIZE: return "HP_GST_SIZE";
+ case DT_HP_GST_VERSION: return "HP_GST_VERSION";
+ case DT_HP_GST_HASHVAL: return "HP_GST_HASHVAL";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_dynamic_type (type)
+ unsigned long type;
+{
+ static char buff [32];
+
+ switch (type)
+ {
+ case DT_NULL: return "NULL";
+ case DT_NEEDED: return "NEEDED";
+ case DT_PLTRELSZ: return "PLTRELSZ";
+ case DT_PLTGOT: return "PLTGOT";
+ case DT_HASH: return "HASH";
+ case DT_STRTAB: return "STRTAB";
+ case DT_SYMTAB: return "SYMTAB";
+ case DT_RELA: return "RELA";
+ case DT_RELASZ: return "RELASZ";
+ case DT_RELAENT: return "RELAENT";
+ case DT_STRSZ: return "STRSZ";
+ case DT_SYMENT: return "SYMENT";
+ case DT_INIT: return "INIT";
+ case DT_FINI: return "FINI";
+ case DT_SONAME: return "SONAME";
+ case DT_RPATH: return "RPATH";
+ case DT_SYMBOLIC: return "SYMBOLIC";
+ case DT_REL: return "REL";
+ case DT_RELSZ: return "RELSZ";
+ case DT_RELENT: return "RELENT";
+ case DT_PLTREL: return "PLTREL";
+ case DT_DEBUG: return "DEBUG";
+ case DT_TEXTREL: return "TEXTREL";
+ case DT_JMPREL: return "JMPREL";
+ case DT_BIND_NOW: return "BIND_NOW";
+ case DT_INIT_ARRAY: return "INIT_ARRAY";
+ case DT_FINI_ARRAY: return "FINI_ARRAY";
+ case DT_INIT_ARRAYSZ: return "INIT_ARRAYSZ";
+ case DT_FINI_ARRAYSZ: return "FINI_ARRAYSZ";
+ case DT_RUNPATH: return "RUNPATH";
+ case DT_FLAGS: return "FLAGS";
+
+ case DT_PREINIT_ARRAY: return "PREINIT_ARRAY";
+ case DT_PREINIT_ARRAYSZ: return "PREINIT_ARRAYSZ";
+
+ case DT_PLTPADSZ: return "PLTPADSZ";
+ case DT_MOVEENT: return "MOVEENT";
+ case DT_MOVESZ: return "MOVESZ";
+ case DT_FEATURE_1: return "FEATURE_1";
+ case DT_POSFLAG_1: return "POSFLAG_1";
+ case DT_SYMINSZ: return "SYMINSZ";
+ case DT_SYMINENT: return "SYMINENT"; /* aka VALRNGHI */
+
+ case DT_ADDRRNGLO: return "ADDRRNGLO";
+ case DT_SYMINFO: return "SYMINFO"; /* aka ADDRRNGHI */
+
+ case DT_VERSYM: return "VERSYM";
+
+ case DT_RELACOUNT: return "RELACOUNT";
+ case DT_RELCOUNT: return "RELCOUNT";
+ case DT_FLAGS_1: return "FLAGS_1";
+ case DT_VERDEF: return "VERDEF";
+ case DT_VERDEFNUM: return "VERDEFNUM";
+ case DT_VERNEED: return "VERNEED";
+ case DT_VERNEEDNUM: return "VERNEEDNUM";
+
+ case DT_AUXILIARY: return "AUXILARY";
+ case DT_USED: return "USED";
+ case DT_FILTER: return "FILTER";
+
+ default:
+ if ((type >= DT_LOPROC) && (type <= DT_HIPROC))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS4_BE:
+ result = get_mips_dynamic_type (type);
+ break;
+ case EM_SPARCV9:
+ result = get_sparc64_dynamic_type (type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, _("Processor Specific: %lx"), type);
+ }
+ else if ((type >= DT_LOOS) && (type <= DT_HIOS))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_PARISC:
+ result = get_parisc_dynamic_type (type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, _("Operating System specific: %lx"), type);
+ }
+ else
+ sprintf (buff, _("<unknown>: %lx"), type);
+
+ return buff;
+ }
+}
+
+static char *
+get_file_type (e_type)
+ unsigned e_type;
+{
+ static char buff [32];
+
+ switch (e_type)
+ {
+ case ET_NONE: return _("NONE (None)");
+ case ET_REL: return _("REL (Relocatable file)");
+ case ET_EXEC: return _("EXEC (Executable file)");
+ case ET_DYN: return _("DYN (Shared object file)");
+ case ET_CORE: return _("CORE (Core file)");
+
+ default:
+ if ((e_type >= ET_LOPROC) && (e_type <= ET_HIPROC))
+ sprintf (buff, _("Processor Specific: (%x)"), e_type);
+ else if ((e_type >= ET_LOOS) && (e_type <= ET_HIOS))
+ sprintf (buff, _("OS Specific: (%x)"), e_type);
+ else
+ sprintf (buff, _("<unknown>: %x"), e_type);
+ return buff;
+ }
+}
+
+static char *
+get_machine_name (e_machine)
+ unsigned e_machine;
+{
+ static char buff [64]; /* XXX */
+
+ switch (e_machine)
+ {
+ case EM_NONE: return _("None");
+ case EM_M32: return "WE32100";
+ case EM_SPARC: return "Sparc";
+ case EM_386: return "Intel 80386";
+ case EM_68K: return "MC68000";
+ case EM_88K: return "MC88000";
+ case EM_486: return "Intel 80486";
+ case EM_860: return "Intel 80860";
+ case EM_MIPS: return "MIPS R3000";
+ case EM_S370: return "IBM System/370";
+ case EM_MIPS_RS4_BE: return "MIPS R4000 big-endian";
+ case EM_OLD_SPARCV9: return "Sparc v9 (old)";
+ case EM_PARISC: return "HPPA";
+ case EM_PPC_OLD: return "Power PC (old)";
+ case EM_SPARC32PLUS: return "Sparc v8+" ;
+ case EM_960: return "Intel 90860";
+ case EM_PPC: return "PowerPC";
+ case EM_V800: return "NEC V800";
+ case EM_FR20: return "Fujitsu FR20";
+ case EM_RH32: return "TRW RH32";
+ case EM_MCORE: return "MCORE";
+ case EM_ARM: return "ARM";
+ case EM_OLD_ALPHA: return "Digital Alpha (old)";
+ case EM_SH: return "Hitachi SH";
+ case EM_SPARCV9: return "Sparc v9";
+ case EM_TRICORE: return "Siemens Tricore";
+ case EM_ARC: return "Argonaut RISC Core";
+ case EM_H8_300: return "Hitachi H8/300";
+ case EM_H8_300H: return "Hitachi H8/300H";
+ case EM_H8S: return "Hitachi H8S";
+ case EM_H8_500: return "Hitachi H8/500";
+ case EM_IA_64: return "Intel IA-64";
+ case EM_MIPS_X: return "Stanford MIPS-X";
+ case EM_COLDFIRE: return "Motorola Coldfire";
+ case EM_68HC12: return "Motorola M68HC12";
+ case EM_ALPHA: return "Alpha";
+ case EM_CYGNUS_D10V: return "d10v";
+ case EM_CYGNUS_D30V: return "d30v";
+ case EM_CYGNUS_ARC: return "Arc";
+ case EM_CYGNUS_M32R: return "Mitsubishi M32r";
+ case EM_CYGNUS_V850: return "NEC v850";
+ case EM_CYGNUS_MN10300: return "mn10300";
+ case EM_CYGNUS_MN10200: return "mn10200";
+ case EM_CYGNUS_FR30: return "Fujitsu FR30";
+ case EM_PJ: return "picoJava";
+ case EM_MMA: return "Fujitsu Multimedia Accelerator";
+ case EM_PCP: return "Siemens PCP";
+ case EM_NCPU: return "Sony nCPU embedded RISC processor";
+ case EM_NDR1: return "Denso NDR1 microprocesspr";
+ case EM_STARCORE: return "Motorola Star*Core processor";
+ case EM_ME16: return "Toyota ME16 processor";
+ case EM_ST100: return "STMicroelectronics ST100 processor";
+ case EM_TINYJ: return "Advanced Logic Corp. TinyJ embedded processor";
+ case EM_FX66: return "Siemens FX66 microcontroller";
+ case EM_ST9PLUS: return "STMicroelectronics ST9+ 8/16 bit microcontroller";
+ case EM_ST7: return "STMicroelectronics ST7 8-bit microcontroller";
+ case EM_68HC16: return "Motorola MC68HC16 Microcontroller";
+ case EM_68HC11: return "Motorola MC68HC11 Microcontroller";
+ case EM_68HC08: return "Motorola MC68HC08 Microcontroller";
+ case EM_68HC05: return "Motorola MC68HC05 Microcontroller";
+ case EM_SVX: return "Silicon Graphics SVx";
+ case EM_ST19: return "STMicroelectronics ST19 8-bit microcontroller";
+ case EM_VAX: return "Digital VAX";
+ default:
+ sprintf (buff, _("<unknown>: %x"), e_machine);
+ return buff;
+ }
+}
+
+static char *
+get_machine_flags (e_flags, e_machine)
+ unsigned e_flags;
+ unsigned e_machine;
+{
+ static char buf [1024];
+
+ buf[0] = '\0';
+
+ if (e_flags)
+ {
+ switch (e_machine)
+ {
+ default:
+ break;
+
+ case EM_68K:
+ if (e_flags & EF_CPU32)
+ strcat (buf, ", cpu32");
+ break;
+
+ case EM_PPC:
+ if (e_flags & EF_PPC_EMB)
+ strcat (buf, ", emb");
+
+ if (e_flags & EF_PPC_RELOCATABLE)
+ strcat (buf, ", relocatable");
+
+ if (e_flags & EF_PPC_RELOCATABLE_LIB)
+ strcat (buf, ", relocatable-lib");
+ break;
+
+ case EM_CYGNUS_V850:
+ switch (e_flags & EF_V850_ARCH)
+ {
+ case E_V850E_ARCH:
+ strcat (buf, ", v850e");
+ break;
+ case E_V850EA_ARCH:
+ strcat (buf, ", v850ea");
+ break;
+ case E_V850_ARCH:
+ strcat (buf, ", v850");
+ break;
+ default:
+ strcat (buf, ", unknown v850 architecture variant");
+ break;
+ }
+ break;
+
+ case EM_CYGNUS_M32R:
+ if ((e_flags & EF_M32R_ARCH) == E_M32R_ARCH)
+ strcat (buf, ", m32r");
+
+ break;
+
+ case EM_MIPS:
+ case EM_MIPS_RS4_BE:
+ if (e_flags & EF_MIPS_NOREORDER)
+ strcat (buf, ", noreorder");
+
+ if (e_flags & EF_MIPS_PIC)
+ strcat (buf, ", pic");
+
+ if (e_flags & EF_MIPS_CPIC)
+ strcat (buf, ", cpic");
+
+ if (e_flags & EF_MIPS_ABI2)
+ strcat (buf, ", abi2");
+
+ if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_1)
+ strcat (buf, ", mips1");
+
+ if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_2)
+ strcat (buf, ", mips2");
+
+ if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_3)
+ strcat (buf, ", mips3");
+
+ if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_4)
+ strcat (buf, ", mips4");
+ break;
+
+ case EM_SPARCV9:
+ if (e_flags & EF_SPARC_32PLUS)
+ strcat (buf, ", v8+");
+
+ if (e_flags & EF_SPARC_SUN_US1)
+ strcat (buf, ", ultrasparcI");
+
+ if (e_flags & EF_SPARC_SUN_US3)
+ strcat (buf, ", ultrasparcIII");
+
+ if (e_flags & EF_SPARC_HAL_R1)
+ strcat (buf, ", halr1");
+
+ if (e_flags & EF_SPARC_LEDATA)
+ strcat (buf, ", ledata");
+
+ if ((e_flags & EF_SPARCV9_MM) == EF_SPARCV9_TSO)
+ strcat (buf, ", tso");
+
+ if ((e_flags & EF_SPARCV9_MM) == EF_SPARCV9_PSO)
+ strcat (buf, ", pso");
+
+ if ((e_flags & EF_SPARCV9_MM) == EF_SPARCV9_RMO)
+ strcat (buf, ", rmo");
+ break;
+
+ case EM_PARISC:
+ switch (e_flags & EF_PARISC_ARCH)
+ {
+ case EFA_PARISC_1_0:
+ strcpy (buf, ", PA-RISC 1.0");
+ break;
+ case EFA_PARISC_1_1:
+ strcpy (buf, ", PA-RISC 1.1");
+ break;
+ case EFA_PARISC_2_0:
+ strcpy (buf, ", PA-RISC 2.0");
+ break;
+ default:
+ break;
+ }
+ if (e_flags & EF_PARISC_TRAPNIL)
+ strcat (buf, ", trapnil");
+ if (e_flags & EF_PARISC_EXT)
+ strcat (buf, ", ext");
+ if (e_flags & EF_PARISC_LSB)
+ strcat (buf, ", lsb");
+ if (e_flags & EF_PARISC_WIDE)
+ strcat (buf, ", wide");
+ if (e_flags & EF_PARISC_NO_KABP)
+ strcat (buf, ", no kabp");
+ if (e_flags & EF_PARISC_LAZYSWAP)
+ strcat (buf, ", lazyswap");
+ break;
+
+ case EM_PJ:
+ if ((e_flags & EF_PICOJAVA_NEWCALLS) == EF_PICOJAVA_NEWCALLS)
+ strcat (buf, ", new calling convention");
+
+ if ((e_flags & EF_PICOJAVA_GNUCALLS) == EF_PICOJAVA_GNUCALLS)
+ strcat (buf, ", gnu calling convention");
+ break;
+ }
+ }
+
+ return buf;
+}
+
+static const char *
+get_mips_segment_type (type)
+ unsigned long type;
+{
+ switch (type)
+ {
+ case PT_MIPS_REGINFO:
+ return "REGINFO";
+ case PT_MIPS_RTPROC:
+ return "RTPROC";
+ case PT_MIPS_OPTIONS:
+ return "OPTIONS";
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static const char *
+get_parisc_segment_type (type)
+ unsigned long type;
+{
+ switch (type)
+ {
+ case PT_HP_TLS: return "HP_TLS";
+ case PT_HP_CORE_NONE: return "HP_CORE_NONE";
+ case PT_HP_CORE_VERSION: return "HP_CORE_VERSION";
+ case PT_HP_CORE_KERNEL: return "HP_CORE_KERNEL";
+ case PT_HP_CORE_COMM: return "HP_CORE_COMM";
+ case PT_HP_CORE_PROC: return "HP_CORE_PROC";
+ case PT_HP_CORE_LOADABLE: return "HP_CORE_LOADABLE";
+ case PT_HP_CORE_STACK: return "HP_CORE_STACK";
+ case PT_HP_CORE_SHM: return "HP_CORE_SHM";
+ case PT_HP_CORE_MMF: return "HP_CORE_MMF";
+ case PT_HP_PARALLEL: return "HP_PARALLEL";
+ case PT_HP_FASTBIND: return "HP_FASTBIND";
+ case PT_PARISC_ARCHEXT: return "PARISC_ARCHEXT";
+ case PT_PARISC_UNWIND: return "PARISC_UNWIND";
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static const char *
+get_segment_type (p_type)
+ unsigned long p_type;
+{
+ static char buff [32];
+
+ switch (p_type)
+ {
+ case PT_NULL: return "NULL";
+ case PT_LOAD: return "LOAD";
+ case PT_DYNAMIC: return "DYNAMIC";
+ case PT_INTERP: return "INTERP";
+ case PT_NOTE: return "NOTE";
+ case PT_SHLIB: return "SHLIB";
+ case PT_PHDR: return "PHDR";
+
+ default:
+ if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS4_BE:
+ result = get_mips_segment_type (p_type);
+ break;
+ case EM_PARISC:
+ result = get_parisc_segment_type (p_type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, "LOPROC+%lx", p_type - PT_LOPROC);
+ }
+ else if ((p_type >= PT_LOOS) && (p_type <= PT_HIOS))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_PARISC:
+ result = get_parisc_segment_type (p_type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, "LOOS+%lx", p_type - PT_LOOS);
+ }
+ else
+ sprintf (buff, _("<unknown>: %lx"), p_type);
+
+ return buff;
+ }
+}
+
+static const char *
+get_mips_section_type_name (sh_type)
+ unsigned int sh_type;
+{
+ switch (sh_type)
+ {
+ case SHT_MIPS_LIBLIST: return "MIPS_LIBLIST";
+ case SHT_MIPS_MSYM: return "MIPS_MSYM";
+ case SHT_MIPS_CONFLICT: return "MIPS_CONFLICT";
+ case SHT_MIPS_GPTAB: return "MIPS_GPTAB";
+ case SHT_MIPS_UCODE: return "MIPS_UCODE";
+ case SHT_MIPS_DEBUG: return "MIPS_DEBUG";
+ case SHT_MIPS_REGINFO: return "MIPS_REGINFO";
+ case SHT_MIPS_PACKAGE: return "MIPS_PACKAGE";
+ case SHT_MIPS_PACKSYM: return "MIPS_PACKSYM";
+ case SHT_MIPS_RELD: return "MIPS_RELD";
+ case SHT_MIPS_IFACE: return "MIPS_IFACE";
+ case SHT_MIPS_CONTENT: return "MIPS_CONTENT";
+ case SHT_MIPS_OPTIONS: return "MIPS_OPTIONS";
+ case SHT_MIPS_SHDR: return "MIPS_SHDR";
+ case SHT_MIPS_FDESC: return "MIPS_FDESC";
+ case SHT_MIPS_EXTSYM: return "MIPS_EXTSYM";
+ case SHT_MIPS_DENSE: return "MIPS_DENSE";
+ case SHT_MIPS_PDESC: return "MIPS_PDESC";
+ case SHT_MIPS_LOCSYM: return "MIPS_LOCSYM";
+ case SHT_MIPS_AUXSYM: return "MIPS_AUXSYM";
+ case SHT_MIPS_OPTSYM: return "MIPS_OPTSYM";
+ case SHT_MIPS_LOCSTR: return "MIPS_LOCSTR";
+ case SHT_MIPS_LINE: return "MIPS_LINE";
+ case SHT_MIPS_RFDESC: return "MIPS_RFDESC";
+ case SHT_MIPS_DELTASYM: return "MIPS_DELTASYM";
+ case SHT_MIPS_DELTAINST: return "MIPS_DELTAINST";
+ case SHT_MIPS_DELTACLASS: return "MIPS_DELTACLASS";
+ case SHT_MIPS_DWARF: return "MIPS_DWARF";
+ case SHT_MIPS_DELTADECL: return "MIPS_DELTADECL";
+ case SHT_MIPS_SYMBOL_LIB: return "MIPS_SYMBOL_LIB";
+ case SHT_MIPS_EVENTS: return "MIPS_EVENTS";
+ case SHT_MIPS_TRANSLATE: return "MIPS_TRANSLATE";
+ case SHT_MIPS_PIXIE: return "MIPS_PIXIE";
+ case SHT_MIPS_XLATE: return "MIPS_XLATE";
+ case SHT_MIPS_XLATE_DEBUG: return "MIPS_XLATE_DEBUG";
+ case SHT_MIPS_WHIRL: return "MIPS_WHIRL";
+ case SHT_MIPS_EH_REGION: return "MIPS_EH_REGION";
+ case SHT_MIPS_XLATE_OLD: return "MIPS_XLATE_OLD";
+ case SHT_MIPS_PDR_EXCEPTION: return "MIPS_PDR_EXCEPTION";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_parisc_section_type_name (sh_type)
+ unsigned int sh_type;
+{
+ switch (sh_type)
+ {
+ case SHT_PARISC_EXT: return "PARISC_EXT";
+ case SHT_PARISC_UNWIND: return "PARISC_UNWIND";
+ case SHT_PARISC_DOC: return "PARISC_DOC";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_section_type_name (sh_type)
+ unsigned int sh_type;
+{
+ static char buff [32];
+
+ switch (sh_type)
+ {
+ case SHT_NULL: return "NULL";
+ case SHT_PROGBITS: return "PROGBITS";
+ case SHT_SYMTAB: return "SYMTAB";
+ case SHT_STRTAB: return "STRTAB";
+ case SHT_RELA: return "RELA";
+ case SHT_HASH: return "HASH";
+ case SHT_DYNAMIC: return "DYNAMIC";
+ case SHT_NOTE: return "NOTE";
+ case SHT_NOBITS: return "NOBITS";
+ case SHT_REL: return "REL";
+ case SHT_SHLIB: return "SHLIB";
+ case SHT_DYNSYM: return "DYNSYM";
+ case SHT_INIT_ARRAY: return "INIT_ARRAY";
+ case SHT_FINI_ARRAY: return "FINI_ARRAY";
+ case SHT_PREINIT_ARRAY: return "PREINIT_ARRAY";
+ case SHT_GNU_verdef: return "VERDEF";
+ case SHT_GNU_verneed: return "VERNEED";
+ case SHT_GNU_versym: return "VERSYM";
+ case 0x6ffffff0: return "VERSYM";
+ case 0x6ffffffc: return "VERDEF";
+ case 0x7ffffffd: return "AUXILIARY";
+ case 0x7fffffff: return "FILTER";
+
+ default:
+ if ((sh_type >= SHT_LOPROC) && (sh_type <= SHT_HIPROC))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS4_BE:
+ result = get_mips_section_type_name (sh_type);
+ break;
+ case EM_PARISC:
+ result = get_parisc_section_type_name (sh_type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, "SHT_LOPROC+%x", sh_type - SHT_LOPROC);
+ }
+ else if ((sh_type >= SHT_LOOS) && (sh_type <= SHT_HIOS))
+ sprintf (buff, "SHT_LOOS+%x", sh_type - SHT_LOOS);
+ else if ((sh_type >= SHT_LOUSER) && (sh_type <= SHT_HIUSER))
+ sprintf (buff, "SHT_LOUSER+%x", sh_type - SHT_LOUSER);
+ else
+ sprintf (buff, _("<unknown>: %x"), sh_type);
+
+ return buff;
+ }
+}
+
+struct option options [] =
+{
+ {"all", no_argument, 0, 'a'},
+ {"file-header", no_argument, 0, 'h'},
+ {"program-headers", no_argument, 0, 'l'},
+ {"headers", no_argument, 0, 'e'},
+ {"histogram", no_argument, 0, 'I'},
+ {"segments", no_argument, 0, 'l'},
+ {"sections", no_argument, 0, 'S'},
+ {"section-headers", no_argument, 0, 'S'},
+ {"symbols", no_argument, 0, 's'},
+ {"syms", no_argument, 0, 's'},
+ {"relocs", no_argument, 0, 'r'},
+ {"notes", no_argument, 0, 'n'},
+ {"dynamic", no_argument, 0, 'd'},
+ {"arch-specific", no_argument, 0, 'A'},
+ {"version-info", no_argument, 0, 'V'},
+ {"use-dynamic", no_argument, 0, 'D'},
+ {"hex-dump", required_argument, 0, 'x'},
+ {"debug-dump", optional_argument, 0, 'w'},
+#ifdef SUPPORT_DISASSEMBLY
+ {"instruction-dump", required_argument, 0, 'i'},
+#endif
+
+ {"version", no_argument, 0, 'v'},
+ {"help", no_argument, 0, 'H'},
+ {0, no_argument, 0, 0}
+};
+
+static void
+usage ()
+{
+ fprintf (stdout, _("Usage: readelf {options} elf-file(s)\n"));
+ fprintf (stdout, _(" Options are:\n"));
+ fprintf (stdout, _(" -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"));
+ fprintf (stdout, _(" -h or --file-header Display the ELF file header\n"));
+ fprintf (stdout, _(" -l or --program-headers or --segments\n"));
+ fprintf (stdout, _(" Display the program headers\n"));
+ fprintf (stdout, _(" -S or --section-headers or --sections\n"));
+ fprintf (stdout, _(" Display the sections' header\n"));
+ fprintf (stdout, _(" -e or --headers Equivalent to: -h -l -S\n"));
+ fprintf (stdout, _(" -s or --syms or --symbols Display the symbol table\n"));
+ fprintf (stdout, _(" -n or --notes Display the core notes (if present)\n"));
+ fprintf (stdout, _(" -r or --relocs Display the relocations (if present)\n"));
+ fprintf (stdout, _(" -d or --dynamic Display the dynamic segment (if present)\n"));
+ fprintf (stdout, _(" -V or --version-info Display the version sections (if present)\n"));
+ fprintf (stdout, _(" -A or --arch-specific Display architecture specific information (if any).\n"));
+ fprintf (stdout, _(" -D or --use-dynamic Use the dynamic section info when displaying symbols\n"));
+ fprintf (stdout, _(" -x <number> or --hex-dump=<number>\n"));
+ fprintf (stdout, _(" Dump the contents of section <number>\n"));
+ fprintf (stdout, _(" -w[liapr] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges]\n"));
+ fprintf (stdout, _(" Display the contents of DWARF2 debug sections\n"));
+#ifdef SUPPORT_DISASSEMBLY
+ fprintf (stdout, _(" -i <number> or --instruction-dump=<number>\n"));
+ fprintf (stdout, _(" Disassemble the contents of section <number>\n"));
+#endif
+ fprintf (stdout, _(" -I or --histogram Display histogram of bucket list lengths\n"));
+ fprintf (stdout, _(" -v or --version Display the version number of readelf\n"));
+ fprintf (stdout, _(" -H or --help Display this information\n"));
+ fprintf (stdout, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+
+ exit (0);
+}
+
+static void
+request_dump (section, type)
+ unsigned int section;
+ char type;
+{
+ if (section >= num_dump_sects)
+ {
+ char * new_dump_sects;
+
+ new_dump_sects = (char *) calloc (section + 1, 1);
+
+ if (new_dump_sects == NULL)
+ error (_("Out of memory allocating dump request table."));
+ else
+ {
+ /* Copy current flag settings. */
+ memcpy (new_dump_sects, dump_sects, num_dump_sects);
+
+ free (dump_sects);
+
+ dump_sects = new_dump_sects;
+ num_dump_sects = section + 1;
+ }
+ }
+
+ if (dump_sects)
+ dump_sects [section] |= type;
+
+ return;
+}
+
+static void
+parse_args (argc, argv)
+ int argc;
+ char ** argv;
+{
+ int c;
+
+ if (argc < 2)
+ usage ();
+
+ while ((c = getopt_long
+ (argc, argv, "ersahnldSDAIw::x:i:vV", options, NULL)) != EOF)
+ {
+ char * cp;
+ int section;
+
+ switch (c)
+ {
+ case 0:
+ /* Long options. */
+ break;
+ case 'H':
+ usage ();
+ break;
+
+ case 'a':
+ do_syms ++;
+ do_reloc ++;
+ do_dynamic ++;
+ do_header ++;
+ do_sections ++;
+ do_segments ++;
+ do_version ++;
+ do_histogram ++;
+ do_arch ++;
+ do_notes ++;
+ break;
+ case 'e':
+ do_header ++;
+ do_sections ++;
+ do_segments ++;
+ break;
+ case 'A':
+ do_arch ++;
+ break;
+ case 'D':
+ do_using_dynamic ++;
+ break;
+ case 'r':
+ do_reloc ++;
+ break;
+ case 'h':
+ do_header ++;
+ break;
+ case 'l':
+ do_segments ++;
+ break;
+ case 's':
+ do_syms ++;
+ break;
+ case 'S':
+ do_sections ++;
+ break;
+ case 'd':
+ do_dynamic ++;
+ break;
+ case 'I':
+ do_histogram ++;
+ break;
+ case 'n':
+ do_notes ++;
+ break;
+ case 'x':
+ do_dump ++;
+ section = strtoul (optarg, & cp, 0);
+ if (! * cp && section >= 0)
+ {
+ request_dump (section, HEX_DUMP);
+ break;
+ }
+ goto oops;
+ case 'w':
+ do_dump ++;
+ if (optarg == 0)
+ do_debugging = 1;
+ else
+ {
+ do_debugging = 0;
+ switch (optarg[0])
+ {
+ case 'i':
+ case 'I':
+ do_debug_info = 1;
+ break;
+
+ case 'a':
+ case 'A':
+ do_debug_abbrevs = 1;
+ break;
+
+ case 'l':
+ case 'L':
+ do_debug_lines = 1;
+ break;
+
+ case 'p':
+ case 'P':
+ do_debug_pubnames = 1;
+ break;
+
+ case 'r':
+ case 'R':
+ do_debug_aranges = 1;
+ break;
+
+ default:
+ warn (_("Unrecognised debug option '%s'\n"), optarg);
+ break;
+ }
+ }
+ break;
+#ifdef SUPPORT_DISASSEMBLY
+ case 'i':
+ do_dump ++;
+ section = strtoul (optarg, & cp, 0);
+ if (! * cp && section >= 0)
+ {
+ request_dump (section, DISASS_DUMP);
+ break;
+ }
+ goto oops;
+#endif
+ case 'v':
+ print_version (program_name);
+ break;
+ case 'V':
+ do_version ++;
+ break;
+ default:
+ oops:
+ /* xgettext:c-format */
+ error (_("Invalid option '-%c'\n"), c);
+ /* Drop through. */
+ case '?':
+ usage ();
+ }
+ }
+
+ if (!do_dynamic && !do_syms && !do_reloc && !do_sections
+ && !do_segments && !do_header && !do_dump && !do_version
+ && !do_histogram && !do_debugging && !do_arch && !do_notes)
+ usage ();
+ else if (argc < 3)
+ {
+ warn (_("Nothing to do.\n"));
+ usage();
+ }
+}
+
+static const char *
+get_elf_class (elf_class)
+ unsigned char elf_class;
+{
+ static char buff [32];
+
+ switch (elf_class)
+ {
+ case ELFCLASSNONE: return _("none");
+ case ELFCLASS32: return _("ELF32");
+ case ELFCLASS64: return _("ELF64");
+ default:
+ sprintf (buff, _("<unknown: %x>"), elf_class);
+ return buff;
+ }
+}
+
+static const char *
+get_data_encoding (encoding)
+ unsigned char encoding;
+{
+ static char buff [32];
+
+ switch (encoding)
+ {
+ case ELFDATANONE: return _("none");
+ case ELFDATA2LSB: return _("2's complement, little endian");
+ case ELFDATA2MSB: return _("2's complement, big endian");
+ default:
+ sprintf (buff, _("<unknown: %x>"), encoding);
+ return buff;
+ }
+}
+
+static const char *
+get_osabi_name (osabi)
+ unsigned char osabi;
+{
+ static char buff [32];
+
+ switch (osabi)
+ {
+ case ELFOSABI_NONE: return _("UNIX - System V");
+ case ELFOSABI_HPUX: return _("UNIX - HP-UX");
+ case ELFOSABI_NETBSD: return _("UNIX - NetBSD");
+ case ELFOSABI_LINUX: return _("UNIX - Linux");
+ case ELFOSABI_HURD: return _("GNU/Hurd");
+ case ELFOSABI_SOLARIS: return _("UNIX - Solaris");
+ case ELFOSABI_MONTEREY: return _("UNIX - Monterey");
+ case ELFOSABI_IRIX: return _("UNIX - IRIX");
+ case ELFOSABI_FREEBSD: return _("UNIX - FreeBSD");
+ case ELFOSABI_TRU64: return _("UNIX - TRU64");
+ case ELFOSABI_MODESTO: return _("Novell - Modesto");
+ case ELFOSABI_OPENBSD: return _("UNIX - OpenBSD");
+ case ELFOSABI_STANDALONE: return _("Standalone App");
+ case ELFOSABI_ARM: return _("ARM");
+ default:
+ sprintf (buff, _("<unknown: %x>"), osabi);
+ return buff;
+ }
+}
+
+/* Decode the data held in 'elf_header'. */
+static int
+process_file_header ()
+{
+ if ( elf_header.e_ident [EI_MAG0] != ELFMAG0
+ || elf_header.e_ident [EI_MAG1] != ELFMAG1
+ || elf_header.e_ident [EI_MAG2] != ELFMAG2
+ || elf_header.e_ident [EI_MAG3] != ELFMAG3)
+ {
+ error
+ (_("Not an ELF file - it has the wrong magic bytes at the start\n"));
+ return 0;
+ }
+
+ if (do_header)
+ {
+ int i;
+
+ printf (_("ELF Header:\n"));
+ printf (_(" Magic: "));
+ for (i = 0; i < EI_NIDENT; i ++)
+ printf ("%2.2x ", elf_header.e_ident [i]);
+ printf ("\n");
+ printf (_(" Class: %s\n"),
+ get_elf_class (elf_header.e_ident [EI_CLASS]));
+ printf (_(" Data: %s\n"),
+ get_data_encoding (elf_header.e_ident [EI_DATA]));
+ printf (_(" Version: %d %s\n"),
+ elf_header.e_ident [EI_VERSION],
+ (elf_header.e_ident [EI_VERSION] == EV_CURRENT
+ ? "(current)"
+ : (elf_header.e_ident [EI_VERSION] != EV_NONE
+ ? "<unknown: %lx>"
+ : "")));
+ printf (_(" OS/ABI: %s\n"),
+ get_osabi_name (elf_header.e_ident [EI_OSABI]));
+ printf (_(" ABI Version: %d\n"),
+ elf_header.e_ident [EI_ABIVERSION]);
+ printf (_(" Type: %s\n"),
+ get_file_type (elf_header.e_type));
+ printf (_(" Machine: %s\n"),
+ get_machine_name (elf_header.e_machine));
+ printf (_(" Version: 0x%lx\n"),
+ (unsigned long) elf_header.e_version);
+
+ printf (_(" Entry point address: "));
+ print_vma ((bfd_vma) elf_header.e_entry, PREFIX_HEX);
+ printf (_("\n Start of program headers: "));
+ print_vma ((bfd_vma) elf_header.e_phoff, DEC);
+ printf (_(" (bytes into file)\n Start of section headers: "));
+ print_vma ((bfd_vma) elf_header.e_shoff, DEC);
+ printf (_(" (bytes into file)\n"));
+
+ printf (_(" Flags: 0x%lx%s\n"),
+ (unsigned long) elf_header.e_flags,
+ get_machine_flags (elf_header.e_flags, elf_header.e_machine));
+ printf (_(" Size of this header: %ld (bytes)\n"),
+ (long) elf_header.e_ehsize);
+ printf (_(" Size of program headers: %ld (bytes)\n"),
+ (long) elf_header.e_phentsize);
+ printf (_(" Number of program headers: %ld\n"),
+ (long) elf_header.e_phnum);
+ printf (_(" Size of section headers: %ld (bytes)\n"),
+ (long) elf_header.e_shentsize);
+ printf (_(" Number of section headers: %ld\n"),
+ (long) elf_header.e_shnum);
+ printf (_(" Section header string table index: %ld\n"),
+ (long) elf_header.e_shstrndx);
+ }
+
+ return 1;
+}
+
+
+static int
+get_32bit_program_headers (file, program_headers)
+ FILE * file;
+ Elf_Internal_Phdr * program_headers;
+{
+ Elf32_External_Phdr * phdrs;
+ Elf32_External_Phdr * external;
+ Elf32_Internal_Phdr * internal;
+ unsigned int i;
+
+ GET_DATA_ALLOC (elf_header.e_phoff,
+ elf_header.e_phentsize * elf_header.e_phnum,
+ phdrs, Elf32_External_Phdr *, "program headers");
+
+ for (i = 0, internal = program_headers, external = phdrs;
+ i < elf_header.e_phnum;
+ i ++, internal ++, external ++)
+ {
+ internal->p_type = BYTE_GET (external->p_type);
+ internal->p_offset = BYTE_GET (external->p_offset);
+ internal->p_vaddr = BYTE_GET (external->p_vaddr);
+ internal->p_paddr = BYTE_GET (external->p_paddr);
+ internal->p_filesz = BYTE_GET (external->p_filesz);
+ internal->p_memsz = BYTE_GET (external->p_memsz);
+ internal->p_flags = BYTE_GET (external->p_flags);
+ internal->p_align = BYTE_GET (external->p_align);
+ }
+
+ free (phdrs);
+
+ return 1;
+}
+
+static int
+get_64bit_program_headers (file, program_headers)
+ FILE * file;
+ Elf_Internal_Phdr * program_headers;
+{
+ Elf64_External_Phdr * phdrs;
+ Elf64_External_Phdr * external;
+ Elf64_Internal_Phdr * internal;
+ unsigned int i;
+
+ GET_DATA_ALLOC (elf_header.e_phoff,
+ elf_header.e_phentsize * elf_header.e_phnum,
+ phdrs, Elf64_External_Phdr *, "program headers");
+
+ for (i = 0, internal = program_headers, external = phdrs;
+ i < elf_header.e_phnum;
+ i ++, internal ++, external ++)
+ {
+ internal->p_type = BYTE_GET (external->p_type);
+ internal->p_flags = BYTE_GET (external->p_flags);
+ internal->p_offset = BYTE_GET8 (external->p_offset);
+ internal->p_vaddr = BYTE_GET8 (external->p_vaddr);
+ internal->p_paddr = BYTE_GET8 (external->p_paddr);
+ internal->p_filesz = BYTE_GET8 (external->p_filesz);
+ internal->p_memsz = BYTE_GET8 (external->p_memsz);
+ internal->p_align = BYTE_GET8 (external->p_align);
+ }
+
+ free (phdrs);
+
+ return 1;
+}
+
+static int
+process_program_headers (file)
+ FILE * file;
+{
+ Elf_Internal_Phdr * program_headers;
+ Elf_Internal_Phdr * segment;
+ unsigned int i;
+
+ if (elf_header.e_phnum == 0)
+ {
+ if (do_segments)
+ printf (_("\nThere are no program headers in this file.\n"));
+ return 1;
+ }
+
+ if (do_segments && !do_header)
+ {
+ printf (_("\nElf file type is %s\n"), get_file_type (elf_header.e_type));
+ printf (_("Entry point "));
+ print_vma ((bfd_vma) elf_header.e_entry, PREFIX_HEX);
+ printf (_("\nThere are %d program headers, starting at offset "),
+ elf_header.e_phnum);
+ print_vma ((bfd_vma) elf_header.e_phoff, DEC);
+ printf ("\n");
+ }
+
+ program_headers = (Elf_Internal_Phdr *) malloc
+ (elf_header.e_phnum * sizeof (Elf_Internal_Phdr));
+
+ if (program_headers == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ if (is_32bit_elf)
+ i = get_32bit_program_headers (file, program_headers);
+ else
+ i = get_64bit_program_headers (file, program_headers);
+
+ if (i == 0)
+ {
+ free (program_headers);
+ return 0;
+ }
+
+ if (do_segments)
+ {
+ printf
+ (_("\nProgram Header%s:\n"), elf_header.e_phnum > 1 ? "s" : "");
+
+ if (is_32bit_elf)
+ printf
+ (_(" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"));
+ else
+ {
+ printf
+ (_(" Type Offset VirtAddr PhysAddr\n"));
+ printf
+ (_(" FileSiz MemSiz Flags Align\n"));
+ }
+ }
+
+ loadaddr = -1;
+ dynamic_addr = 0;
+ dynamic_size = 0;
+
+ for (i = 0, segment = program_headers;
+ i < elf_header.e_phnum;
+ i ++, segment ++)
+ {
+ if (do_segments)
+ {
+ printf (" %-14.14s ", get_segment_type (segment->p_type));
+
+ if (is_32bit_elf)
+ {
+ printf ("0x%6.6lx ", (unsigned long) segment->p_offset);
+ printf ("0x%8.8lx ", (unsigned long) segment->p_vaddr);
+ printf ("0x%8.8lx ", (unsigned long) segment->p_paddr);
+ printf ("0x%5.5lx ", (unsigned long) segment->p_filesz);
+ printf ("0x%5.5lx ", (unsigned long) segment->p_memsz);
+ printf ("%c%c%c ",
+ (segment->p_flags & PF_R ? 'R' : ' '),
+ (segment->p_flags & PF_W ? 'W' : ' '),
+ (segment->p_flags & PF_X ? 'E' : ' '));
+ printf ("%#lx", (unsigned long) segment->p_align);
+ }
+ else
+ {
+ print_vma (segment->p_offset, FULL_HEX);
+ putchar (' ');
+ print_vma (segment->p_vaddr, FULL_HEX);
+ putchar (' ');
+ print_vma (segment->p_paddr, FULL_HEX);
+ printf ("\n ");
+ print_vma (segment->p_filesz, FULL_HEX);
+ putchar (' ');
+ print_vma (segment->p_memsz, FULL_HEX);
+ printf (" %c%c%c ",
+ (segment->p_flags & PF_R ? 'R' : ' '),
+ (segment->p_flags & PF_W ? 'W' : ' '),
+ (segment->p_flags & PF_X ? 'E' : ' '));
+ print_vma (segment->p_align, HEX);
+ }
+ }
+
+ switch (segment->p_type)
+ {
+ case PT_LOAD:
+ if (loadaddr == -1)
+ loadaddr = (segment->p_vaddr & 0xfffff000)
+ - (segment->p_offset & 0xfffff000);
+ break;
+
+ case PT_DYNAMIC:
+ if (dynamic_addr)
+ error (_("more than one dynamic segment\n"));
+
+ dynamic_addr = segment->p_offset;
+ dynamic_size = segment->p_filesz;
+ break;
+
+ case PT_INTERP:
+ if (fseek (file, (long) segment->p_offset, SEEK_SET))
+ error (_("Unable to find program interpreter name\n"));
+ else
+ {
+ program_interpreter[0] = 0;
+ fscanf (file, "%63s", program_interpreter);
+
+ if (do_segments)
+ printf (_("\n [Requesting program interpreter: %s]"),
+ program_interpreter);
+ }
+ break;
+ }
+
+ if (do_segments)
+ putc ('\n', stdout);
+ }
+
+ if (loadaddr == -1)
+ {
+ /* Very strange. */
+ loadaddr = 0;
+ }
+
+ if (do_segments && section_headers != NULL)
+ {
+ printf (_("\n Section to Segment mapping:\n"));
+ printf (_(" Segment Sections...\n"));
+
+ assert (string_table != NULL);
+
+ for (i = 0; i < elf_header.e_phnum; i++)
+ {
+ int j;
+ Elf_Internal_Shdr * section;
+
+ segment = program_headers + i;
+ section = section_headers;
+
+ printf (" %2.2d ", i);
+
+ for (j = 0; j < elf_header.e_shnum; j++, section ++)
+ {
+ if (section->sh_size > 0
+ /* Compare allocated sections by VMA, unallocated
+ sections by file offset. */
+ && (section->sh_flags & SHF_ALLOC
+ ? (section->sh_addr >= segment->p_vaddr
+ && section->sh_addr + section->sh_size
+ <= segment->p_vaddr + segment->p_memsz)
+ : ((bfd_vma) section->sh_offset >= segment->p_offset
+ && (section->sh_offset + section->sh_size
+ <= segment->p_offset + segment->p_filesz))))
+ printf ("%s ", SECTION_NAME (section));
+ }
+
+ putc ('\n',stdout);
+ }
+ }
+
+ free (program_headers);
+
+ return 1;
+}
+
+
+static int
+get_32bit_section_headers (file)
+ FILE * file;
+{
+ Elf32_External_Shdr * shdrs;
+ Elf32_Internal_Shdr * internal;
+ unsigned int i;
+
+ GET_DATA_ALLOC (elf_header.e_shoff,
+ elf_header.e_shentsize * elf_header.e_shnum,
+ shdrs, Elf32_External_Shdr *, "section headers");
+
+ section_headers = (Elf_Internal_Shdr *) malloc
+ (elf_header.e_shnum * sizeof (Elf_Internal_Shdr));
+
+ if (section_headers == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ for (i = 0, internal = section_headers;
+ i < elf_header.e_shnum;
+ i ++, internal ++)
+ {
+ internal->sh_name = BYTE_GET (shdrs[i].sh_name);
+ internal->sh_type = BYTE_GET (shdrs[i].sh_type);
+ internal->sh_flags = BYTE_GET (shdrs[i].sh_flags);
+ internal->sh_addr = BYTE_GET (shdrs[i].sh_addr);
+ internal->sh_offset = BYTE_GET (shdrs[i].sh_offset);
+ internal->sh_size = BYTE_GET (shdrs[i].sh_size);
+ internal->sh_link = BYTE_GET (shdrs[i].sh_link);
+ internal->sh_info = BYTE_GET (shdrs[i].sh_info);
+ internal->sh_addralign = BYTE_GET (shdrs[i].sh_addralign);
+ internal->sh_entsize = BYTE_GET (shdrs[i].sh_entsize);
+ }
+
+ free (shdrs);
+
+ return 1;
+}
+
+static int
+get_64bit_section_headers (file)
+ FILE * file;
+{
+ Elf64_External_Shdr * shdrs;
+ Elf64_Internal_Shdr * internal;
+ unsigned int i;
+
+ GET_DATA_ALLOC (elf_header.e_shoff,
+ elf_header.e_shentsize * elf_header.e_shnum,
+ shdrs, Elf64_External_Shdr *, "section headers");
+
+ section_headers = (Elf_Internal_Shdr *) malloc
+ (elf_header.e_shnum * sizeof (Elf_Internal_Shdr));
+
+ if (section_headers == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ for (i = 0, internal = section_headers;
+ i < elf_header.e_shnum;
+ i ++, internal ++)
+ {
+ internal->sh_name = BYTE_GET (shdrs[i].sh_name);
+ internal->sh_type = BYTE_GET (shdrs[i].sh_type);
+ internal->sh_flags = BYTE_GET8 (shdrs[i].sh_flags);
+ internal->sh_addr = BYTE_GET8 (shdrs[i].sh_addr);
+ internal->sh_size = BYTE_GET8 (shdrs[i].sh_size);
+ internal->sh_entsize = BYTE_GET8 (shdrs[i].sh_entsize);
+ internal->sh_link = BYTE_GET (shdrs[i].sh_link);
+ internal->sh_info = BYTE_GET (shdrs[i].sh_info);
+ internal->sh_offset = BYTE_GET (shdrs[i].sh_offset);
+ internal->sh_addralign = BYTE_GET (shdrs[i].sh_addralign);
+ }
+
+ free (shdrs);
+
+ return 1;
+}
+
+static Elf_Internal_Sym *
+get_32bit_elf_symbols (file, offset, number)
+ FILE * file;
+ unsigned long offset;
+ unsigned long number;
+{
+ Elf32_External_Sym * esyms;
+ Elf_Internal_Sym * isyms;
+ Elf_Internal_Sym * psym;
+ unsigned int j;
+
+ GET_DATA_ALLOC (offset, number * sizeof (Elf32_External_Sym),
+ esyms, Elf32_External_Sym *, "symbols");
+
+ isyms = (Elf_Internal_Sym *) malloc (number * sizeof (Elf_Internal_Sym));
+
+ if (isyms == NULL)
+ {
+ error (_("Out of memory\n"));
+ free (esyms);
+
+ return NULL;
+ }
+
+ for (j = 0, psym = isyms;
+ j < number;
+ j ++, psym ++)
+ {
+ psym->st_name = BYTE_GET (esyms[j].st_name);
+ psym->st_value = BYTE_GET (esyms[j].st_value);
+ psym->st_size = BYTE_GET (esyms[j].st_size);
+ psym->st_shndx = BYTE_GET (esyms[j].st_shndx);
+ psym->st_info = BYTE_GET (esyms[j].st_info);
+ psym->st_other = BYTE_GET (esyms[j].st_other);
+ }
+
+ free (esyms);
+
+ return isyms;
+}
+
+static Elf_Internal_Sym *
+get_64bit_elf_symbols (file, offset, number)
+ FILE * file;
+ unsigned long offset;
+ unsigned long number;
+{
+ Elf64_External_Sym * esyms;
+ Elf_Internal_Sym * isyms;
+ Elf_Internal_Sym * psym;
+ unsigned int j;
+
+ GET_DATA_ALLOC (offset, number * sizeof (Elf64_External_Sym),
+ esyms, Elf64_External_Sym *, "symbols");
+
+ isyms = (Elf_Internal_Sym *) malloc (number * sizeof (Elf_Internal_Sym));
+
+ if (isyms == NULL)
+ {
+ error (_("Out of memory\n"));
+ free (esyms);
+
+ return NULL;
+ }
+
+ for (j = 0, psym = isyms;
+ j < number;
+ j ++, psym ++)
+ {
+ psym->st_name = BYTE_GET (esyms[j].st_name);
+ psym->st_info = BYTE_GET (esyms[j].st_info);
+ psym->st_other = BYTE_GET (esyms[j].st_other);
+ psym->st_shndx = BYTE_GET (esyms[j].st_shndx);
+ psym->st_value = BYTE_GET8 (esyms[j].st_value);
+ psym->st_size = BYTE_GET8 (esyms[j].st_size);
+ }
+
+ free (esyms);
+
+ return isyms;
+}
+
+static const char *
+get_elf_section_flags (sh_flags)
+ bfd_vma sh_flags;
+{
+ static char buff [32];
+
+ * buff = 0;
+
+ while (sh_flags)
+ {
+ bfd_vma flag;
+
+ flag = sh_flags & - sh_flags;
+ sh_flags &= ~ flag;
+
+ switch (flag)
+ {
+ case SHF_WRITE: strcat (buff, "W"); break;
+ case SHF_ALLOC: strcat (buff, "A"); break;
+ case SHF_EXECINSTR: strcat (buff, "X"); break;
+ case SHF_MERGE: strcat (buff, "M"); break;
+ case SHF_STRINGS: strcat (buff, "S"); break;
+ case SHF_INFO_LINK: strcat (buff, "I"); break;
+ case SHF_LINK_ORDER: strcat (buff, "L"); break;
+ case SHF_OS_NONCONFORMING: strcat (buff, "O"); break;
+
+ default:
+ if (flag & SHF_MASKOS)
+ {
+ strcat (buff, "o");
+ sh_flags &= ~ SHF_MASKOS;
+ }
+ else if (flag & SHF_MASKPROC)
+ {
+ strcat (buff, "p");
+ sh_flags &= ~ SHF_MASKPROC;
+ }
+ else
+ strcat (buff, "x");
+ break;
+ }
+ }
+
+ return buff;
+}
+
+static int
+process_section_headers (file)
+ FILE * file;
+{
+ Elf_Internal_Shdr * section;
+ int i;
+
+ section_headers = NULL;
+
+ if (elf_header.e_shnum == 0)
+ {
+ if (do_sections)
+ printf (_("\nThere are no sections in this file.\n"));
+
+ return 1;
+ }
+
+ if (do_sections && !do_header)
+ printf (_("There are %d section headers, starting at offset 0x%lx:\n"),
+ elf_header.e_shnum, (unsigned long) elf_header.e_shoff);
+
+ if (is_32bit_elf)
+ {
+ if (! get_32bit_section_headers (file))
+ return 0;
+ }
+ else if (! get_64bit_section_headers (file))
+ return 0;
+
+ /* Read in the string table, so that we have names to display. */
+ section = section_headers + elf_header.e_shstrndx;
+
+ if (section->sh_size != 0)
+ {
+ unsigned long string_table_offset;
+
+ string_table_offset = section->sh_offset;
+
+ GET_DATA_ALLOC (section->sh_offset, section->sh_size,
+ string_table, char *, "string table");
+ }
+
+ /* Scan the sections for the dynamic symbol table
+ and dynamic string table and debug sections. */
+ dynamic_symbols = NULL;
+ dynamic_strings = NULL;
+ dynamic_syminfo = NULL;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i ++, section ++)
+ {
+ char * name = SECTION_NAME (section);
+
+ if (section->sh_type == SHT_DYNSYM)
+ {
+ if (dynamic_symbols != NULL)
+ {
+ error (_("File contains multiple dynamic symbol tables\n"));
+ continue;
+ }
+
+ num_dynamic_syms = section->sh_size / section->sh_entsize;
+ dynamic_symbols =
+ GET_ELF_SYMBOLS (file, section->sh_offset, num_dynamic_syms);
+ }
+ else if (section->sh_type == SHT_STRTAB
+ && strcmp (name, ".dynstr") == 0)
+ {
+ if (dynamic_strings != NULL)
+ {
+ error (_("File contains multiple dynamic string tables\n"));
+ continue;
+ }
+
+ GET_DATA_ALLOC (section->sh_offset, section->sh_size,
+ dynamic_strings, char *, "dynamic strings");
+ }
+ else if ((do_debugging || do_debug_info || do_debug_abbrevs
+ || do_debug_lines || do_debug_pubnames || do_debug_aranges)
+ && strncmp (name, ".debug_", 7) == 0)
+ {
+ name += 7;
+
+ if (do_debugging
+ || (do_debug_info && (strcmp (name, "info") == 0))
+ || (do_debug_abbrevs && (strcmp (name, "abbrev") == 0))
+ || (do_debug_lines && (strcmp (name, "line") == 0))
+ || (do_debug_pubnames && (strcmp (name, "pubnames") == 0))
+ || (do_debug_aranges && (strcmp (name, "aranges") == 0))
+ )
+ request_dump (i, DEBUG_DUMP);
+ }
+ }
+
+ if (! do_sections)
+ return 1;
+
+ printf (_("\nSection Header%s:\n"), elf_header.e_shnum > 1 ? "s" : "");
+
+ if (is_32bit_elf)
+ printf
+ (_(" [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"));
+ else
+ {
+ printf (_(" [Nr] Name Type Address Offset\n"));
+ printf (_(" Size EntSize Flags Link Info Align\n"));
+ }
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i ++, section ++)
+ {
+ printf (" [%2d] %-17.17s %-15.15s ",
+ i,
+ SECTION_NAME (section),
+ get_section_type_name (section->sh_type));
+
+ if (is_32bit_elf)
+ {
+ print_vma (section->sh_addr, LONG_HEX);
+
+ printf ( " %6.6lx %6.6lx %2.2lx",
+ (unsigned long) section->sh_offset,
+ (unsigned long) section->sh_size,
+ (unsigned long) section->sh_entsize);
+
+ printf (" %3s ", get_elf_section_flags (section->sh_flags));
+
+ printf (" %2ld %3lx %ld\n",
+ (unsigned long) section->sh_link,
+ (unsigned long) section->sh_info,
+ (unsigned long) section->sh_addralign);
+ }
+ else
+ {
+ putchar (' ');
+ print_vma (section->sh_addr, LONG_HEX);
+ printf (" %8.8lx", section->sh_offset);
+ printf ("\n ");
+ print_vma (section->sh_size, LONG_HEX);
+ printf (" ");
+ print_vma (section->sh_entsize, LONG_HEX);
+
+ printf (" %3s ", get_elf_section_flags (section->sh_flags));
+
+ printf (" %2ld %3lx %ld\n",
+ (unsigned long) section->sh_link,
+ (unsigned long) section->sh_info,
+ (unsigned long) section->sh_addralign);
+ }
+ }
+
+ printf (_("Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings)\n"));
+ printf (_(" I (info), L (link order), O (extra OS processing required)\n"));
+ printf (_(" o (os specific), p (processor specific) x (unknown)\n"));
+
+ return 1;
+}
+
+/* Process the reloc section. */
+static int
+process_relocs (file)
+ FILE * file;
+{
+ unsigned long rel_size;
+ unsigned long rel_offset;
+
+
+ if (!do_reloc)
+ return 1;
+
+ if (do_using_dynamic)
+ {
+ int is_rela = FALSE;
+
+ rel_size = 0;
+ rel_offset = 0;
+
+ if (dynamic_info[DT_REL])
+ {
+ rel_offset = dynamic_info[DT_REL];
+ rel_size = dynamic_info[DT_RELSZ];
+ is_rela = FALSE;
+ }
+ else if (dynamic_info [DT_RELA])
+ {
+ rel_offset = dynamic_info[DT_RELA];
+ rel_size = dynamic_info[DT_RELASZ];
+ is_rela = TRUE;
+ }
+ else if (dynamic_info[DT_JMPREL])
+ {
+ rel_offset = dynamic_info[DT_JMPREL];
+ rel_size = dynamic_info[DT_PLTRELSZ];
+
+ switch (dynamic_info[DT_PLTREL])
+ {
+ case DT_REL:
+ is_rela = FALSE;
+ break;
+ case DT_RELA:
+ is_rela = TRUE;
+ break;
+ default:
+ is_rela = UNKNOWN;
+ break;
+ }
+ }
+
+ if (rel_size)
+ {
+ printf
+ (_("\nRelocation section at offset 0x%lx contains %ld bytes:\n"),
+ rel_offset, rel_size);
+
+ dump_relocations (file, rel_offset - loadaddr, rel_size,
+ dynamic_symbols, num_dynamic_syms, dynamic_strings, is_rela);
+ }
+ else
+ printf (_("\nThere are no dynamic relocations in this file.\n"));
+ }
+ else
+ {
+ Elf32_Internal_Shdr * section;
+ unsigned long i;
+ int found = 0;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section ++)
+ {
+ if ( section->sh_type != SHT_RELA
+ && section->sh_type != SHT_REL)
+ continue;
+
+ rel_offset = section->sh_offset;
+ rel_size = section->sh_size;
+
+ if (rel_size)
+ {
+ Elf32_Internal_Shdr * strsec;
+ Elf32_Internal_Shdr * symsec;
+ Elf_Internal_Sym * symtab;
+ char * strtab;
+ int is_rela;
+ unsigned long nsyms;
+
+ printf (_("\nRelocation section "));
+
+ if (string_table == NULL)
+ printf ("%d", section->sh_name);
+ else
+ printf ("'%s'", SECTION_NAME (section));
+
+ printf (_(" at offset 0x%lx contains %lu entries:\n"),
+ rel_offset, (unsigned long) (rel_size / section->sh_entsize));
+
+ symsec = section_headers + section->sh_link;
+
+ nsyms = symsec->sh_size / symsec->sh_entsize;
+ symtab = GET_ELF_SYMBOLS (file, symsec->sh_offset, nsyms);
+
+ if (symtab == NULL)
+ continue;
+
+ strsec = section_headers + symsec->sh_link;
+
+ GET_DATA_ALLOC (strsec->sh_offset, strsec->sh_size, strtab,
+ char *, "string table");
+
+ is_rela = section->sh_type == SHT_RELA;
+
+ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela);
+
+ free (strtab);
+ free (symtab);
+
+ found = 1;
+ }
+ }
+
+ if (! found)
+ printf (_("\nThere are no relocations in this file.\n"));
+ }
+
+ return 1;
+}
+
+
+static void
+dynamic_segment_mips_val (entry)
+ Elf_Internal_Dyn * entry;
+{
+ switch (entry->d_tag)
+ {
+ case DT_MIPS_FLAGS:
+ if (entry->d_un.d_val == 0)
+ printf ("NONE\n");
+ else
+ {
+ static const char * opts[] =
+ {
+ "QUICKSTART", "NOTPOT", "NO_LIBRARY_REPLACEMENT",
+ "NO_MOVE", "SGI_ONLY", "GUARANTEE_INIT", "DELTA_C_PLUS_PLUS",
+ "GUARANTEE_START_INIT", "PIXIE", "DEFAULT_DELAY_LOAD",
+ "REQUICKSTART", "REQUICKSTARTED", "CORD", "NO_UNRES_UNDEF",
+ "RLD_ORDER_SAFE"
+ };
+ unsigned int cnt;
+ int first = 1;
+ for (cnt = 0; cnt < NUM_ELEM (opts); ++ cnt)
+ if (entry->d_un.d_val & (1 << cnt))
+ {
+ printf ("%s%s", first ? "" : " ", opts[cnt]);
+ first = 0;
+ }
+ puts ("");
+ }
+ break;
+
+ case DT_MIPS_IVERSION:
+ if (dynamic_strings != NULL)
+ printf ("Interface Version: %s\n",
+ dynamic_strings + entry->d_un.d_val);
+ else
+ printf ("%ld\n", (long) entry->d_un.d_ptr);
+ break;
+
+ case DT_MIPS_TIME_STAMP:
+ {
+ char timebuf[20];
+ struct tm * tmp;
+
+ time_t time = entry->d_un.d_val;
+ tmp = gmtime (&time);
+ sprintf (timebuf, "%04u-%02u-%02uT%02u:%02u:%02u",
+ tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+ printf ("Time Stamp: %s\n", timebuf);
+ }
+ break;
+
+ case DT_MIPS_RLD_VERSION:
+ case DT_MIPS_LOCAL_GOTNO:
+ case DT_MIPS_CONFLICTNO:
+ case DT_MIPS_LIBLISTNO:
+ case DT_MIPS_SYMTABNO:
+ case DT_MIPS_UNREFEXTNO:
+ case DT_MIPS_HIPAGENO:
+ case DT_MIPS_DELTA_CLASS_NO:
+ case DT_MIPS_DELTA_INSTANCE_NO:
+ case DT_MIPS_DELTA_RELOC_NO:
+ case DT_MIPS_DELTA_SYM_NO:
+ case DT_MIPS_DELTA_CLASSSYM_NO:
+ case DT_MIPS_COMPACT_SIZE:
+ printf ("%ld\n", (long) entry->d_un.d_ptr);
+ break;
+
+ default:
+ printf ("%#lx\n", (long) entry->d_un.d_ptr);
+ }
+}
+
+
+static void
+dynamic_segment_parisc_val (entry)
+ Elf_Internal_Dyn * entry;
+{
+ switch (entry->d_tag)
+ {
+ case DT_HP_DLD_FLAGS:
+ {
+ static struct
+ {
+ long int bit;
+ const char * str;
+ }
+ flags[] =
+ {
+ { DT_HP_DEBUG_PRIVATE, "HP_DEBUG_PRIVATE" },
+ { DT_HP_DEBUG_CALLBACK, "HP_DEBUG_CALLBACK" },
+ { DT_HP_DEBUG_CALLBACK_BOR, "HP_DEBUG_CALLBACK_BOR" },
+ { DT_HP_NO_ENVVAR, "HP_NO_ENVVAR" },
+ { DT_HP_BIND_NOW, "HP_BIND_NOW" },
+ { DT_HP_BIND_NONFATAL, "HP_BIND_NONFATAL" },
+ { DT_HP_BIND_VERBOSE, "HP_BIND_VERBOSE" },
+ { DT_HP_BIND_RESTRICTED, "HP_BIND_RESTRICTED" },
+ { DT_HP_BIND_SYMBOLIC, "HP_BIND_SYMBOLIC" },
+ { DT_HP_RPATH_FIRST, "HP_RPATH_FIRST" },
+ { DT_HP_BIND_DEPTH_FIRST, "HP_BIND_DEPTH_FIRST" }
+ };
+ int first = 1;
+ size_t cnt;
+ bfd_vma val = entry->d_un.d_val;
+
+ for (cnt = 0; cnt < sizeof (flags) / sizeof (flags[0]); ++cnt)
+ if (val & flags[cnt].bit)
+ {
+ if (! first)
+ putchar (' ');
+ fputs (flags[cnt].str, stdout);
+ first = 0;
+ val ^= flags[cnt].bit;
+ }
+
+ if (val != 0 || first)
+ {
+ if (! first)
+ putchar (' ');
+ print_vma (val, HEX);
+ }
+ }
+ break;
+
+ default:
+ print_vma (entry->d_un.d_ptr, PREFIX_HEX);
+ break;
+ }
+}
+
+static int
+get_32bit_dynamic_segment (file)
+ FILE * file;
+{
+ Elf32_External_Dyn * edyn;
+ Elf_Internal_Dyn * entry;
+ bfd_size_type i;
+
+ GET_DATA_ALLOC (dynamic_addr, dynamic_size,
+ edyn, Elf32_External_Dyn *, "dynamic segment");
+
+ /* SGI's ELF has more than one section in the DYNAMIC segment. Determine
+ how large this .dynamic is now. We can do this even before the byte
+ swapping since the DT_NULL tag is recognizable. */
+ dynamic_size = 0;
+ while (*(Elf32_Word *) edyn [dynamic_size++].d_tag != DT_NULL)
+ ;
+
+ dynamic_segment = (Elf_Internal_Dyn *)
+ malloc (dynamic_size * sizeof (Elf_Internal_Dyn));
+
+ if (dynamic_segment == NULL)
+ {
+ error (_("Out of memory\n"));
+ free (edyn);
+ return 0;
+ }
+
+ for (i = 0, entry = dynamic_segment;
+ i < dynamic_size;
+ i ++, entry ++)
+ {
+ entry->d_tag = BYTE_GET (edyn [i].d_tag);
+ entry->d_un.d_val = BYTE_GET (edyn [i].d_un.d_val);
+ }
+
+ free (edyn);
+
+ return 1;
+}
+
+static int
+get_64bit_dynamic_segment (file)
+ FILE * file;
+{
+ Elf64_External_Dyn * edyn;
+ Elf_Internal_Dyn * entry;
+ bfd_size_type i;
+
+ GET_DATA_ALLOC (dynamic_addr, dynamic_size,
+ edyn, Elf64_External_Dyn *, "dynamic segment");
+
+ /* SGI's ELF has more than one section in the DYNAMIC segment. Determine
+ how large this .dynamic is now. We can do this even before the byte
+ swapping since the DT_NULL tag is recognizable. */
+ dynamic_size = 0;
+ while (*(bfd_vma *) edyn [dynamic_size ++].d_tag != DT_NULL)
+ ;
+
+ dynamic_segment = (Elf_Internal_Dyn *)
+ malloc (dynamic_size * sizeof (Elf_Internal_Dyn));
+
+ if (dynamic_segment == NULL)
+ {
+ error (_("Out of memory\n"));
+ free (edyn);
+ return 0;
+ }
+
+ for (i = 0, entry = dynamic_segment;
+ i < dynamic_size;
+ i ++, entry ++)
+ {
+ entry->d_tag = BYTE_GET8 (edyn [i].d_tag);
+ entry->d_un.d_val = BYTE_GET8 (edyn [i].d_un.d_val);
+ }
+
+ free (edyn);
+
+ return 1;
+}
+
+static const char *
+get_dynamic_flags (flags)
+ bfd_vma flags;
+{
+ static char buff [64];
+ while (flags)
+ {
+ bfd_vma flag;
+
+ flag = flags & - flags;
+ flags &= ~ flag;
+
+ switch (flag)
+ {
+ case DF_ORIGIN: strcat (buff, "ORIGIN "); break;
+ case DF_SYMBOLIC: strcat (buff, "SYMBOLIC "); break;
+ case DF_TEXTREL: strcat (buff, "TEXTREL "); break;
+ case DF_BIND_NOW: strcat (buff, "BIND_NOW "); break;
+ default: strcat (buff, "unknown "); break;
+ }
+ }
+ return buff;
+}
+
+/* Parse and display the contents of the dynamic segment. */
+static int
+process_dynamic_segment (file)
+ FILE * file;
+{
+ Elf_Internal_Dyn * entry;
+ bfd_size_type i;
+
+ if (dynamic_size == 0)
+ {
+ if (do_dynamic)
+ printf (_("\nThere is no dynamic segment in this file.\n"));
+
+ return 1;
+ }
+
+ if (is_32bit_elf)
+ {
+ if (! get_32bit_dynamic_segment (file))
+ return 0;
+ }
+ else if (! get_64bit_dynamic_segment (file))
+ return 0;
+
+ /* Find the appropriate symbol table. */
+ if (dynamic_symbols == NULL)
+ {
+ for (i = 0, entry = dynamic_segment;
+ i < dynamic_size;
+ ++i, ++ entry)
+ {
+ unsigned long offset;
+
+ if (entry->d_tag != DT_SYMTAB)
+ continue;
+
+ dynamic_info[DT_SYMTAB] = entry->d_un.d_val;
+
+ /* Since we do not know how big the symbol table is,
+ we default to reading in the entire file (!) and
+ processing that. This is overkill, I know, but it
+ should work. */
+ offset = entry->d_un.d_val - loadaddr;
+
+ if (fseek (file, 0, SEEK_END))
+ error (_("Unable to seek to end of file!"));
+
+ if (is_32bit_elf)
+ num_dynamic_syms = (ftell (file) - offset) / sizeof (Elf32_External_Sym);
+ else
+ num_dynamic_syms = (ftell (file) - offset) / sizeof (Elf64_External_Sym);
+
+ if (num_dynamic_syms < 1)
+ {
+ error (_("Unable to determine the number of symbols to load\n"));
+ continue;
+ }
+
+ dynamic_symbols = GET_ELF_SYMBOLS (file, offset, num_dynamic_syms);
+ }
+ }
+
+ /* Similarly find a string table. */
+ if (dynamic_strings == NULL)
+ {
+ for (i = 0, entry = dynamic_segment;
+ i < dynamic_size;
+ ++i, ++ entry)
+ {
+ unsigned long offset;
+ long str_tab_len;
+
+ if (entry->d_tag != DT_STRTAB)
+ continue;
+
+ dynamic_info[DT_STRTAB] = entry->d_un.d_val;
+
+ /* Since we do not know how big the string table is,
+ we default to reading in the entire file (!) and
+ processing that. This is overkill, I know, but it
+ should work. */
+
+ offset = entry->d_un.d_val - loadaddr;
+ if (fseek (file, 0, SEEK_END))
+ error (_("Unable to seek to end of file\n"));
+ str_tab_len = ftell (file) - offset;
+
+ if (str_tab_len < 1)
+ {
+ error
+ (_("Unable to determine the length of the dynamic string table\n"));
+ continue;
+ }
+
+ GET_DATA_ALLOC (offset, str_tab_len, dynamic_strings, char *,
+ "dynamic string table");
+
+ break;
+ }
+ }
+
+ /* And find the syminfo section if available. */
+ if (dynamic_syminfo == NULL)
+ {
+ unsigned int syminsz = 0;
+
+ for (i = 0, entry = dynamic_segment;
+ i < dynamic_size;
+ ++i, ++ entry)
+ {
+ if (entry->d_tag == DT_SYMINENT)
+ {
+ /* Note: these braces are necessary to avoid a syntax
+ error from the SunOS4 C compiler. */
+ assert (sizeof (Elf_External_Syminfo) == entry->d_un.d_val);
+ }
+ else if (entry->d_tag == DT_SYMINSZ)
+ syminsz = entry->d_un.d_val;
+ else if (entry->d_tag == DT_SYMINFO)
+ dynamic_syminfo_offset = entry->d_un.d_val - loadaddr;
+ }
+
+ if (dynamic_syminfo_offset != 0 && syminsz != 0)
+ {
+ Elf_External_Syminfo * extsyminfo;
+ Elf_Internal_Syminfo * syminfo;
+
+ /* There is a syminfo section. Read the data. */
+ GET_DATA_ALLOC (dynamic_syminfo_offset, syminsz, extsyminfo,
+ Elf_External_Syminfo *, "symbol information");
+
+ dynamic_syminfo = (Elf_Internal_Syminfo *) malloc (syminsz);
+ if (dynamic_syminfo == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ dynamic_syminfo_nent = syminsz / sizeof (Elf_External_Syminfo);
+ for (i = 0, syminfo = dynamic_syminfo; i < dynamic_syminfo_nent;
+ ++i, ++syminfo)
+ {
+ syminfo->si_boundto = BYTE_GET (extsyminfo[i].si_boundto);
+ syminfo->si_flags = BYTE_GET (extsyminfo[i].si_flags);
+ }
+
+ free (extsyminfo);
+ }
+ }
+
+ if (do_dynamic && dynamic_addr)
+ printf (_("\nDynamic segment at offset 0x%x contains %ld entries:\n"),
+ dynamic_addr, (long) dynamic_size);
+ if (do_dynamic)
+ printf (_(" Tag Type Name/Value\n"));
+
+ for (i = 0, entry = dynamic_segment;
+ i < dynamic_size;
+ i++, entry ++)
+ {
+ if (do_dynamic)
+ {
+ const char *dtype;
+
+ putchar (' ');
+ print_vma (entry->d_tag, FULL_HEX);
+ dtype = get_dynamic_type (entry->d_tag);
+ printf (" (%s)%*s", dtype,
+ ((is_32bit_elf ? 27 : 19)
+ - (int) strlen (dtype)),
+ " ");
+ }
+
+ switch (entry->d_tag)
+ {
+ case DT_FLAGS:
+ if (do_dynamic)
+ printf ("%s", get_dynamic_flags (entry->d_un.d_val));
+ break;
+
+ case DT_AUXILIARY:
+ case DT_FILTER:
+ if (do_dynamic)
+ {
+ if (entry->d_tag == DT_AUXILIARY)
+ printf (_("Auxiliary library"));
+ else
+ printf (_("Filter library"));
+
+ if (dynamic_strings)
+ printf (": [%s]\n", dynamic_strings + entry->d_un.d_val);
+ else
+ {
+ printf (": ");
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ putchar ('\n');
+ }
+ }
+ break;
+
+ case DT_FEATURE_1:
+ if (do_dynamic)
+ {
+ printf (_("Flags:"));
+ if (entry->d_un.d_val == 0)
+ printf (_(" None\n"));
+ else
+ {
+ unsigned long int val = entry->d_un.d_val;
+ if (val & DTF_1_PARINIT)
+ {
+ printf (" PARINIT");
+ val ^= DTF_1_PARINIT;
+ }
+ if (val != 0)
+ printf (" %lx", val);
+ puts ("");
+ }
+ }
+ break;
+
+ case DT_POSFLAG_1:
+ if (do_dynamic)
+ {
+ printf (_("Flags:"));
+ if (entry->d_un.d_val == 0)
+ printf (_(" None\n"));
+ else
+ {
+ unsigned long int val = entry->d_un.d_val;
+ if (val & DF_P1_LAZYLOAD)
+ {
+ printf (" LAZYLOAD");
+ val ^= DF_P1_LAZYLOAD;
+ }
+ if (val & DF_P1_GROUPPERM)
+ {
+ printf (" GROUPPERM");
+ val ^= DF_P1_GROUPPERM;
+ }
+ if (val != 0)
+ printf (" %lx", val);
+ puts ("");
+ }
+ }
+ break;
+
+ case DT_FLAGS_1:
+ if (do_dynamic)
+ {
+ printf (_("Flags:"));
+ if (entry->d_un.d_val == 0)
+ printf (_(" None\n"));
+ else
+ {
+ unsigned long int val = entry->d_un.d_val;
+ if (val & DF_1_NOW)
+ {
+ printf (" NOW");
+ val ^= DF_1_NOW;
+ }
+ if (val & DF_1_GLOBAL)
+ {
+ printf (" GLOBAL");
+ val ^= DF_1_GLOBAL;
+ }
+ if (val & DF_1_GROUP)
+ {
+ printf (" GROUP");
+ val ^= DF_1_GROUP;
+ }
+ if (val & DF_1_NODELETE)
+ {
+ printf (" NODELETE");
+ val ^= DF_1_NODELETE;
+ }
+ if (val & DF_1_LOADFLTR)
+ {
+ printf (" LOADFLTR");
+ val ^= DF_1_LOADFLTR;
+ }
+ if (val & DF_1_INITFIRST)
+ {
+ printf (" INITFIRST");
+ val ^= DF_1_INITFIRST;
+ }
+ if (val & DF_1_NOOPEN)
+ {
+ printf (" NOOPEN");
+ val ^= DF_1_NOOPEN;
+ }
+ if (val & DF_1_ORIGIN)
+ {
+ printf (" ORIGIN");
+ val ^= DF_1_ORIGIN;
+ }
+ if (val & DF_1_DIRECT)
+ {
+ printf (" DIRECT");
+ val ^= DF_1_DIRECT;
+ }
+ if (val & DF_1_TRANS)
+ {
+ printf (" TRANS");
+ val ^= DF_1_TRANS;
+ }
+ if (val & DF_1_INTERPOSE)
+ {
+ printf (" INTERPOSE");
+ val ^= DF_1_INTERPOSE;
+ }
+ if (val != 0)
+ printf (" %lx", val);
+ puts ("");
+ }
+ }
+ break;
+
+ case DT_PLTREL:
+ if (do_dynamic)
+ puts (get_dynamic_type (entry->d_un.d_val));
+ break;
+
+ case DT_NULL :
+ case DT_NEEDED :
+ case DT_PLTGOT :
+ case DT_HASH :
+ case DT_STRTAB :
+ case DT_SYMTAB :
+ case DT_RELA :
+ case DT_INIT :
+ case DT_FINI :
+ case DT_SONAME :
+ case DT_RPATH :
+ case DT_SYMBOLIC:
+ case DT_REL :
+ case DT_DEBUG :
+ case DT_TEXTREL :
+ case DT_JMPREL :
+ dynamic_info[entry->d_tag] = entry->d_un.d_val;
+
+ if (do_dynamic)
+ {
+ char * name;
+
+ if (dynamic_strings == NULL)
+ name = NULL;
+ else
+ name = dynamic_strings + entry->d_un.d_val;
+
+ if (name)
+ {
+ switch (entry->d_tag)
+ {
+ case DT_NEEDED:
+ printf (_("Shared library: [%s]"), name);
+
+ if (strcmp (name, program_interpreter) == 0)
+ printf (_(" program interpreter"));
+ break;
+
+ case DT_SONAME:
+ printf (_("Library soname: [%s]"), name);
+ break;
+
+ case DT_RPATH:
+ printf (_("Library rpath: [%s]"), name);
+ break;
+
+ default:
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ break;
+ }
+ }
+ else
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+
+ putchar ('\n');
+ }
+ break;
+
+ case DT_PLTRELSZ:
+ case DT_RELASZ :
+ case DT_STRSZ :
+ case DT_RELSZ :
+ case DT_RELAENT :
+ case DT_SYMENT :
+ case DT_RELENT :
+ case DT_PLTPADSZ:
+ case DT_MOVEENT :
+ case DT_MOVESZ :
+ case DT_INIT_ARRAYSZ:
+ case DT_FINI_ARRAYSZ:
+ if (do_dynamic)
+ {
+ print_vma (entry->d_un.d_val, UNSIGNED);
+ printf (" (bytes)\n");
+ }
+ break;
+
+ case DT_VERDEFNUM:
+ case DT_VERNEEDNUM:
+ case DT_RELACOUNT:
+ case DT_RELCOUNT:
+ if (do_dynamic)
+ {
+ print_vma (entry->d_un.d_val, UNSIGNED);
+ putchar ('\n');
+ }
+ break;
+
+ case DT_SYMINSZ:
+ case DT_SYMINENT:
+ case DT_SYMINFO:
+ case DT_USED:
+ case DT_INIT_ARRAY:
+ case DT_FINI_ARRAY:
+ if (do_dynamic)
+ {
+ if (dynamic_strings != NULL && entry->d_tag == DT_USED)
+ {
+ char * name;
+
+ name = dynamic_strings + entry->d_un.d_val;
+
+ if (* name)
+ {
+ printf (_("Not needed object: [%s]\n"), name);
+ break;
+ }
+ }
+
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ putchar ('\n');
+ }
+ break;
+
+ case DT_BIND_NOW:
+ /* The value of this entry is ignored. */
+ break;
+
+ default:
+ if ((entry->d_tag >= DT_VERSYM) && (entry->d_tag <= DT_VERNEEDNUM))
+ version_info [DT_VERSIONTAGIDX (entry->d_tag)] =
+ entry->d_un.d_val;
+
+ if (do_dynamic)
+ {
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS4_BE:
+ dynamic_segment_mips_val (entry);
+ break;
+ case EM_PARISC:
+ dynamic_segment_parisc_val (entry);
+ break;
+ default:
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ putchar ('\n');
+ }
+ }
+ break;
+ }
+ }
+
+ return 1;
+}
+
+static char *
+get_ver_flags (flags)
+ unsigned int flags;
+{
+ static char buff [32];
+
+ buff[0] = 0;
+
+ if (flags == 0)
+ return _("none");
+
+ if (flags & VER_FLG_BASE)
+ strcat (buff, "BASE ");
+
+ if (flags & VER_FLG_WEAK)
+ {
+ if (flags & VER_FLG_BASE)
+ strcat (buff, "| ");
+
+ strcat (buff, "WEAK ");
+ }
+
+ if (flags & ~(VER_FLG_BASE | VER_FLG_WEAK))
+ strcat (buff, "| <unknown>");
+
+ return buff;
+}
+
+/* Display the contents of the version sections. */
+static int
+process_version_sections (file)
+ FILE * file;
+{
+ Elf32_Internal_Shdr * section;
+ unsigned i;
+ int found = 0;
+
+ if (! do_version)
+ return 1;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section ++)
+ {
+ switch (section->sh_type)
+ {
+ case SHT_GNU_verdef:
+ {
+ Elf_External_Verdef * edefs;
+ unsigned int idx;
+ unsigned int cnt;
+
+ found = 1;
+
+ printf
+ (_("\nVersion definition section '%s' contains %ld entries:\n"),
+ SECTION_NAME (section), section->sh_info);
+
+ printf (_(" Addr: 0x"));
+ printf_vma (section->sh_addr);
+ printf (_(" Offset: %#08lx Link: %lx (%s)\n"),
+ (unsigned long) section->sh_offset, section->sh_link,
+ SECTION_NAME (section_headers + section->sh_link));
+
+ GET_DATA_ALLOC (section->sh_offset, section->sh_size,
+ edefs, Elf_External_Verdef *,
+ "version definition section");
+
+ for (idx = cnt = 0; cnt < section->sh_info; ++ cnt)
+ {
+ char * vstart;
+ Elf_External_Verdef * edef;
+ Elf_Internal_Verdef ent;
+ Elf_External_Verdaux * eaux;
+ Elf_Internal_Verdaux aux;
+ int j;
+ int isum;
+
+ vstart = ((char *) edefs) + idx;
+
+ edef = (Elf_External_Verdef *) vstart;
+
+ ent.vd_version = BYTE_GET (edef->vd_version);
+ ent.vd_flags = BYTE_GET (edef->vd_flags);
+ ent.vd_ndx = BYTE_GET (edef->vd_ndx);
+ ent.vd_cnt = BYTE_GET (edef->vd_cnt);
+ ent.vd_hash = BYTE_GET (edef->vd_hash);
+ ent.vd_aux = BYTE_GET (edef->vd_aux);
+ ent.vd_next = BYTE_GET (edef->vd_next);
+
+ printf (_(" %#06x: Rev: %d Flags: %s"),
+ idx, ent.vd_version, get_ver_flags (ent.vd_flags));
+
+ printf (_(" Index: %d Cnt: %d "),
+ ent.vd_ndx, ent.vd_cnt);
+
+ vstart += ent.vd_aux;
+
+ eaux = (Elf_External_Verdaux *) vstart;
+
+ aux.vda_name = BYTE_GET (eaux->vda_name);
+ aux.vda_next = BYTE_GET (eaux->vda_next);
+
+ if (dynamic_strings)
+ printf (_("Name: %s\n"), dynamic_strings + aux.vda_name);
+ else
+ printf (_("Name index: %ld\n"), aux.vda_name);
+
+ isum = idx + ent.vd_aux;
+
+ for (j = 1; j < ent.vd_cnt; j ++)
+ {
+ isum += aux.vda_next;
+ vstart += aux.vda_next;
+
+ eaux = (Elf_External_Verdaux *) vstart;
+
+ aux.vda_name = BYTE_GET (eaux->vda_name);
+ aux.vda_next = BYTE_GET (eaux->vda_next);
+
+ if (dynamic_strings)
+ printf (_(" %#06x: Parent %d: %s\n"),
+ isum, j, dynamic_strings + aux.vda_name);
+ else
+ printf (_(" %#06x: Parent %d, name index: %ld\n"),
+ isum, j, aux.vda_name);
+ }
+
+ idx += ent.vd_next;
+ }
+
+ free (edefs);
+ }
+ break;
+
+ case SHT_GNU_verneed:
+ {
+ Elf_External_Verneed * eneed;
+ unsigned int idx;
+ unsigned int cnt;
+
+ found = 1;
+
+ printf (_("\nVersion needs section '%s' contains %ld entries:\n"),
+ SECTION_NAME (section), section->sh_info);
+
+ printf (_(" Addr: 0x"));
+ printf_vma (section->sh_addr);
+ printf (_(" Offset: %#08lx Link to section: %ld (%s)\n"),
+ (unsigned long) section->sh_offset, section->sh_link,
+ SECTION_NAME (section_headers + section->sh_link));
+
+ GET_DATA_ALLOC (section->sh_offset, section->sh_size,
+ eneed, Elf_External_Verneed *,
+ "version need section");
+
+ for (idx = cnt = 0; cnt < section->sh_info; ++cnt)
+ {
+ Elf_External_Verneed * entry;
+ Elf_Internal_Verneed ent;
+ int j;
+ int isum;
+ char * vstart;
+
+ vstart = ((char *) eneed) + idx;
+
+ entry = (Elf_External_Verneed *) vstart;
+
+ ent.vn_version = BYTE_GET (entry->vn_version);
+ ent.vn_cnt = BYTE_GET (entry->vn_cnt);
+ ent.vn_file = BYTE_GET (entry->vn_file);
+ ent.vn_aux = BYTE_GET (entry->vn_aux);
+ ent.vn_next = BYTE_GET (entry->vn_next);
+
+ printf (_(" %#06x: Version: %d"), idx, ent.vn_version);
+
+ if (dynamic_strings)
+ printf (_(" File: %s"), dynamic_strings + ent.vn_file);
+ else
+ printf (_(" File: %lx"), ent.vn_file);
+
+ printf (_(" Cnt: %d\n"), ent.vn_cnt);
+
+ vstart += ent.vn_aux;
+
+ for (j = 0, isum = idx + ent.vn_aux; j < ent.vn_cnt; ++j)
+ {
+ Elf_External_Vernaux * eaux;
+ Elf_Internal_Vernaux aux;
+
+ eaux = (Elf_External_Vernaux *) vstart;
+
+ aux.vna_hash = BYTE_GET (eaux->vna_hash);
+ aux.vna_flags = BYTE_GET (eaux->vna_flags);
+ aux.vna_other = BYTE_GET (eaux->vna_other);
+ aux.vna_name = BYTE_GET (eaux->vna_name);
+ aux.vna_next = BYTE_GET (eaux->vna_next);
+
+ if (dynamic_strings)
+ printf (_(" %#06x: Name: %s"),
+ isum, dynamic_strings + aux.vna_name);
+ else
+ printf (_(" %#06x: Name index: %lx"),
+ isum, aux.vna_name);
+
+ printf (_(" Flags: %s Version: %d\n"),
+ get_ver_flags (aux.vna_flags), aux.vna_other);
+
+ isum += aux.vna_next;
+ vstart += aux.vna_next;
+ }
+
+ idx += ent.vn_next;
+ }
+
+ free (eneed);
+ }
+ break;
+
+ case SHT_GNU_versym:
+ {
+ Elf32_Internal_Shdr * link_section;
+ int total;
+ int cnt;
+ unsigned char * edata;
+ unsigned short * data;
+ char * strtab;
+ Elf_Internal_Sym * symbols;
+ Elf32_Internal_Shdr * string_sec;
+
+ link_section = section_headers + section->sh_link;
+ total = section->sh_size / section->sh_entsize;
+
+ found = 1;
+
+ symbols = GET_ELF_SYMBOLS (file, link_section->sh_offset,
+ link_section->sh_size / link_section->sh_entsize);
+
+ string_sec = section_headers + link_section->sh_link;
+
+ GET_DATA_ALLOC (string_sec->sh_offset, string_sec->sh_size,
+ strtab, char *, "version string table");
+
+ printf (_("\nVersion symbols section '%s' contains %d entries:\n"),
+ SECTION_NAME (section), total);
+
+ printf (_(" Addr: "));
+ printf_vma (section->sh_addr);
+ printf (_(" Offset: %#08lx Link: %lx (%s)\n"),
+ (unsigned long) section->sh_offset, section->sh_link,
+ SECTION_NAME (link_section));
+
+ GET_DATA_ALLOC (version_info [DT_VERSIONTAGIDX (DT_VERSYM)]
+ - loadaddr,
+ total * sizeof (short), edata,
+ unsigned char *, "version symbol data");
+
+ data = (unsigned short *) malloc (total * sizeof (short));
+
+ for (cnt = total; cnt --;)
+ data [cnt] = byte_get (edata + cnt * sizeof (short),
+ sizeof (short));
+
+ free (edata);
+
+ for (cnt = 0; cnt < total; cnt += 4)
+ {
+ int j, nn;
+ char *name;
+
+ printf (" %03x:", cnt);
+
+ for (j = 0; (j < 4) && (cnt + j) < total; ++j)
+ switch (data [cnt + j])
+ {
+ case 0:
+ fputs (_(" 0 (*local*) "), stdout);
+ break;
+
+ case 1:
+ fputs (_(" 1 (*global*) "), stdout);
+ break;
+
+ default:
+ nn = printf ("%4x%c", data [cnt + j] & 0x7fff,
+ data [cnt + j] & 0x8000 ? 'h' : ' ');
+
+ if (symbols [cnt + j].st_shndx < SHN_LORESERVE
+ && section_headers[symbols [cnt + j].st_shndx].sh_type
+ == SHT_NOBITS)
+ {
+ /* We must test both. */
+ Elf_Internal_Verneed ivn;
+ unsigned long offset;
+
+ offset = version_info [DT_VERSIONTAGIDX (DT_VERNEED)]
+ - loadaddr;
+
+ do
+ {
+ Elf_External_Verneed evn;
+ Elf_External_Vernaux evna;
+ Elf_Internal_Vernaux ivna;
+ unsigned long vna_off;
+
+ GET_DATA (offset, evn, "version need");
+
+ ivn.vn_aux = BYTE_GET (evn.vn_aux);
+ ivn.vn_next = BYTE_GET (evn.vn_next);
+
+ vna_off = offset + ivn.vn_aux;
+
+ do
+ {
+ GET_DATA (vna_off, evna,
+ "version need aux (1)");
+
+ ivna.vna_next = BYTE_GET (evna.vna_next);
+ ivna.vna_other = BYTE_GET (evna.vna_other);
+
+ vna_off += ivna.vna_next;
+ }
+ while (ivna.vna_other != data [cnt + j]
+ && ivna.vna_next != 0);
+
+ if (ivna.vna_other == data [cnt + j])
+ {
+ ivna.vna_name = BYTE_GET (evna.vna_name);
+
+ name = strtab + ivna.vna_name;
+ nn += printf ("(%s%-*s",
+ name,
+ 12 - (int) strlen (name),
+ ")");
+ break;
+ }
+ else if (ivn.vn_next == 0)
+ {
+ if (data [cnt + j] != 0x8001)
+ {
+ Elf_Internal_Verdef ivd;
+ Elf_External_Verdef evd;
+
+ offset = version_info
+ [DT_VERSIONTAGIDX (DT_VERDEF)]
+ - loadaddr;
+
+ do
+ {
+ GET_DATA (offset, evd,
+ "version definition");
+
+ ivd.vd_next = BYTE_GET (evd.vd_next);
+ ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
+
+ offset += ivd.vd_next;
+ }
+ while (ivd.vd_ndx
+ != (data [cnt + j] & 0x7fff)
+ && ivd.vd_next != 0);
+
+ if (ivd.vd_ndx
+ == (data [cnt + j] & 0x7fff))
+ {
+ Elf_External_Verdaux evda;
+ Elf_Internal_Verdaux ivda;
+
+ ivd.vd_aux = BYTE_GET (evd.vd_aux);
+
+ GET_DATA (offset + ivd.vd_aux, evda,
+ "version definition aux");
+
+ ivda.vda_name =
+ BYTE_GET (evda.vda_name);
+
+ name = strtab + ivda.vda_name;
+ nn +=
+ printf ("(%s%-*s",
+ name,
+ 12 - (int) strlen (name),
+ ")");
+ }
+ }
+
+ break;
+ }
+ else
+ offset += ivn.vn_next;
+ }
+ while (ivn.vn_next);
+ }
+ else if (symbols [cnt + j].st_shndx == SHN_UNDEF)
+ {
+ Elf_Internal_Verneed ivn;
+ unsigned long offset;
+
+ offset = version_info [DT_VERSIONTAGIDX (DT_VERNEED)]
+ - loadaddr;
+
+ do
+ {
+ Elf_Internal_Vernaux ivna;
+ Elf_External_Verneed evn;
+ Elf_External_Vernaux evna;
+ unsigned long a_off;
+
+ GET_DATA (offset, evn, "version need");
+
+ ivn.vn_aux = BYTE_GET (evn.vn_aux);
+ ivn.vn_next = BYTE_GET (evn.vn_next);
+
+ a_off = offset + ivn.vn_aux;
+
+ do
+ {
+ GET_DATA (a_off, evna,
+ "version need aux (2)");
+
+ ivna.vna_next = BYTE_GET (evna.vna_next);
+ ivna.vna_other = BYTE_GET (evna.vna_other);
+
+ a_off += ivna.vna_next;
+ }
+ while (ivna.vna_other != data [cnt + j]
+ && ivna.vna_next != 0);
+
+ if (ivna.vna_other == data [cnt + j])
+ {
+ ivna.vna_name = BYTE_GET (evna.vna_name);
+
+ name = strtab + ivna.vna_name;
+ nn += printf ("(%s%-*s",
+ name,
+ 12 - (int) strlen (name),
+ ")");
+ break;
+ }
+
+ offset += ivn.vn_next;
+ }
+ while (ivn.vn_next);
+ }
+ else if (data [cnt + j] != 0x8001)
+ {
+ Elf_Internal_Verdef ivd;
+ Elf_External_Verdef evd;
+ unsigned long offset;
+
+ offset = version_info
+ [DT_VERSIONTAGIDX (DT_VERDEF)] - loadaddr;
+
+ do
+ {
+ GET_DATA (offset, evd, "version def");
+
+ ivd.vd_next = BYTE_GET (evd.vd_next);
+ ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
+
+ offset += ivd.vd_next;
+ }
+ while (ivd.vd_ndx != (data [cnt + j] & 0x7fff)
+ && ivd.vd_next != 0);
+
+ if (ivd.vd_ndx == (data [cnt + j] & 0x7fff))
+ {
+ Elf_External_Verdaux evda;
+ Elf_Internal_Verdaux ivda;
+
+ ivd.vd_aux = BYTE_GET (evd.vd_aux);
+
+ GET_DATA (offset - ivd.vd_next + ivd.vd_aux,
+ evda, "version def aux");
+
+ ivda.vda_name = BYTE_GET (evda.vda_name);
+
+ name = strtab + ivda.vda_name;
+ nn += printf ("(%s%-*s",
+ name,
+ 12 - (int) strlen (name),
+ ")");
+ }
+ }
+
+ if (nn < 18)
+ printf ("%*c", 18 - nn, ' ');
+ }
+
+ putchar ('\n');
+ }
+
+ free (data);
+ free (strtab);
+ free (symbols);
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (! found)
+ printf (_("\nNo version information found in this file.\n"));
+
+ return 1;
+}
+
+static const char *
+get_symbol_binding (binding)
+ unsigned int binding;
+{
+ static char buff [32];
+
+ switch (binding)
+ {
+ case STB_LOCAL: return "LOCAL";
+ case STB_GLOBAL: return "GLOBAL";
+ case STB_WEAK: return "WEAK";
+ default:
+ if (binding >= STB_LOPROC && binding <= STB_HIPROC)
+ sprintf (buff, _("<processor specific>: %d"), binding);
+ else if (binding >= STB_LOOS && binding <= STB_HIOS)
+ sprintf (buff, _("<OS specific>: %d"), binding);
+ else
+ sprintf (buff, _("<unknown>: %d"), binding);
+ return buff;
+ }
+}
+
+static const char *
+get_symbol_type (type)
+ unsigned int type;
+{
+ static char buff [32];
+
+ switch (type)
+ {
+ case STT_NOTYPE: return "NOTYPE";
+ case STT_OBJECT: return "OBJECT";
+ case STT_FUNC: return "FUNC";
+ case STT_SECTION: return "SECTION";
+ case STT_FILE: return "FILE";
+ case STT_COMMON: return "COMMON";
+ default:
+ if (type >= STT_LOPROC && type <= STT_HIPROC)
+ {
+ if (elf_header.e_machine == EM_ARM && type == STT_ARM_TFUNC)
+ return "THUMB_FUNC";
+
+ if (elf_header.e_machine == EM_SPARCV9 && type == STT_REGISTER)
+ return "REGISTER";
+
+ if (elf_header.e_machine == EM_PARISC && type == STT_PARISC_MILLI)
+ return "PARISC_MILLI";
+
+ sprintf (buff, _("<processor specific>: %d"), type);
+ }
+ else if (type >= STT_LOOS && type <= STT_HIOS)
+ {
+ if (elf_header.e_machine == EM_PARISC)
+ {
+ if (type == STT_HP_OPAQUE)
+ return "HP_OPAQUE";
+ if (type == STT_HP_STUB)
+ return "HP_STUB";
+ }
+
+ sprintf (buff, _("<OS specific>: %d"), type);
+ }
+ else
+ sprintf (buff, _("<unknown>: %d"), type);
+ return buff;
+ }
+}
+
+static const char *
+get_symbol_visibility (visibility)
+ unsigned int visibility;
+{
+ switch (visibility)
+ {
+ case STV_DEFAULT: return "DEFAULT";
+ case STV_INTERNAL: return "INTERNAL";
+ case STV_HIDDEN: return "HIDDEN";
+ case STV_PROTECTED: return "PROTECTED";
+ default: abort ();
+ }
+}
+
+static const char *
+get_symbol_index_type (type)
+ unsigned int type;
+{
+ switch (type)
+ {
+ case SHN_UNDEF: return "UND";
+ case SHN_ABS: return "ABS";
+ case SHN_COMMON: return "COM";
+ default:
+ if (type >= SHN_LOPROC && type <= SHN_HIPROC)
+ return "PRC";
+ else if (type >= SHN_LORESERVE && type <= SHN_HIRESERVE)
+ return "RSV";
+ else if (type >= SHN_LOOS && type <= SHN_HIOS)
+ return "OS ";
+ else
+ {
+ static char buff [32];
+
+ sprintf (buff, "%3d", type);
+ return buff;
+ }
+ }
+}
+
+static int *
+get_dynamic_data (file, number)
+ FILE * file;
+ unsigned int number;
+{
+ char * e_data;
+ int * i_data;
+
+ e_data = (char *) malloc (number * 4);
+
+ if (e_data == NULL)
+ {
+ error (_("Out of memory\n"));
+ return NULL;
+ }
+
+ if (fread (e_data, 4, number, file) != number)
+ {
+ error (_("Unable to read in dynamic data\n"));
+ return NULL;
+ }
+
+ i_data = (int *) malloc (number * sizeof (* i_data));
+
+ if (i_data == NULL)
+ {
+ error (_("Out of memory\n"));
+ free (e_data);
+ return NULL;
+ }
+
+ while (number--)
+ i_data [number] = byte_get (e_data + number * 4, 4);
+
+ free (e_data);
+
+ return i_data;
+}
+
+/* Dump the symbol table */
+static int
+process_symbol_table (file)
+ FILE * file;
+{
+ Elf32_Internal_Shdr * section;
+ char nb [4];
+ char nc [4];
+ int nbuckets = 0;
+ int nchains = 0;
+ int * buckets = NULL;
+ int * chains = NULL;
+
+ if (! do_syms && !do_histogram)
+ return 1;
+
+ if (dynamic_info[DT_HASH] && ((do_using_dynamic && dynamic_strings != NULL)
+ || do_histogram))
+ {
+ if (fseek (file, dynamic_info[DT_HASH] - loadaddr, SEEK_SET))
+ {
+ error (_("Unable to seek to start of dynamic information"));
+ return 0;
+ }
+
+ if (fread (nb, sizeof (nb), 1, file) != 1)
+ {
+ error (_("Failed to read in number of buckets\n"));
+ return 0;
+ }
+
+ if (fread (nc, sizeof (nc), 1, file) != 1)
+ {
+ error (_("Failed to read in number of chains\n"));
+ return 0;
+ }
+
+ nbuckets = byte_get (nb, 4);
+ nchains = byte_get (nc, 4);
+
+ buckets = get_dynamic_data (file, nbuckets);
+ chains = get_dynamic_data (file, nchains);
+
+ if (buckets == NULL || chains == NULL)
+ return 0;
+ }
+
+ if (do_syms
+ && dynamic_info[DT_HASH] && do_using_dynamic && dynamic_strings != NULL)
+ {
+ int hn;
+ int si;
+
+ printf (_("\nSymbol table for image:\n"));
+ if (is_32bit_elf)
+ printf (_(" Num Buc: Value Size Type Bind Vis Ndx Name\n"));
+ else
+ printf (_(" Num Buc: Value Size Type Bind Vis Ndx Name\n"));
+
+ for (hn = 0; hn < nbuckets; hn++)
+ {
+ if (! buckets [hn])
+ continue;
+
+ for (si = buckets [hn]; si < nchains && si > 0; si = chains [si])
+ {
+ Elf_Internal_Sym * psym;
+
+ psym = dynamic_symbols + si;
+
+ printf (" %3d %3d: ", si, hn);
+ print_vma (psym->st_value, LONG_HEX);
+ putchar (' ' );
+ print_vma (psym->st_size, DEC_5);
+
+ printf (" %6s", get_symbol_type (ELF_ST_TYPE (psym->st_info)));
+ printf (" %6s", get_symbol_binding (ELF_ST_BIND (psym->st_info)));
+ printf (" %3s", get_symbol_visibility (ELF_ST_VISIBILITY (psym->st_other)));
+ printf (" %3.3s", get_symbol_index_type (psym->st_shndx));
+ printf (" %s\n", dynamic_strings + psym->st_name);
+ }
+ }
+ }
+ else if (do_syms && !do_using_dynamic)
+ {
+ unsigned int i;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section++)
+ {
+ unsigned int si;
+ char * strtab;
+ Elf_Internal_Sym * symtab;
+ Elf_Internal_Sym * psym;
+
+
+ if ( section->sh_type != SHT_SYMTAB
+ && section->sh_type != SHT_DYNSYM)
+ continue;
+
+ printf (_("\nSymbol table '%s' contains %lu entries:\n"),
+ SECTION_NAME (section),
+ (unsigned long) (section->sh_size / section->sh_entsize));
+ if (is_32bit_elf)
+ printf (_(" Num: Value Size Type Bind Vis Ndx Name\n"));
+ else
+ printf (_(" Num: Value Size Type Bind Vis Ndx Name\n"));
+
+ symtab = GET_ELF_SYMBOLS (file, section->sh_offset,
+ section->sh_size / section->sh_entsize);
+ if (symtab == NULL)
+ continue;
+
+ if (section->sh_link == elf_header.e_shstrndx)
+ strtab = string_table;
+ else
+ {
+ Elf32_Internal_Shdr * string_sec;
+
+ string_sec = section_headers + section->sh_link;
+
+ GET_DATA_ALLOC (string_sec->sh_offset, string_sec->sh_size,
+ strtab, char *, "string table");
+ }
+
+ for (si = 0, psym = symtab;
+ si < section->sh_size / section->sh_entsize;
+ si ++, psym ++)
+ {
+ printf ("%6d: ", si);
+ print_vma (psym->st_value, LONG_HEX);
+ putchar (' ');
+ print_vma (psym->st_size, DEC_5);
+ printf (" %-7s", get_symbol_type (ELF_ST_TYPE (psym->st_info)));
+ printf (" %-6s", get_symbol_binding (ELF_ST_BIND (psym->st_info)));
+ printf (" %-3s", get_symbol_visibility (ELF_ST_VISIBILITY (psym->st_other)));
+ printf (" %4s", get_symbol_index_type (psym->st_shndx));
+ printf (" %s", strtab + psym->st_name);
+
+ if (section->sh_type == SHT_DYNSYM &&
+ version_info [DT_VERSIONTAGIDX (DT_VERSYM)] != 0)
+ {
+ unsigned char data[2];
+ unsigned short vers_data;
+ unsigned long offset;
+ int is_nobits;
+ int check_def;
+
+ offset = version_info [DT_VERSIONTAGIDX (DT_VERSYM)]
+ - loadaddr;
+
+ GET_DATA (offset + si * sizeof (vers_data), data,
+ "version data");
+
+ vers_data = byte_get (data, 2);
+
+ is_nobits = psym->st_shndx < SHN_LORESERVE ?
+ (section_headers [psym->st_shndx].sh_type == SHT_NOBITS)
+ : 0;
+
+ check_def = (psym->st_shndx != SHN_UNDEF);
+
+ if ((vers_data & 0x8000) || vers_data > 1)
+ {
+ if (is_nobits || ! check_def)
+ {
+ Elf_External_Verneed evn;
+ Elf_Internal_Verneed ivn;
+ Elf_Internal_Vernaux ivna;
+
+ /* We must test both. */
+ offset = version_info
+ [DT_VERSIONTAGIDX (DT_VERNEED)] - loadaddr;
+
+ do
+ {
+ unsigned long vna_off;
+
+ GET_DATA (offset, evn, "version need");
+
+ ivn.vn_aux = BYTE_GET (evn.vn_aux);
+ ivn.vn_next = BYTE_GET (evn.vn_next);
+
+ vna_off = offset + ivn.vn_aux;
+
+ do
+ {
+ Elf_External_Vernaux evna;
+
+ GET_DATA (vna_off, evna,
+ "version need aux (3)");
+
+ ivna.vna_other = BYTE_GET (evna.vna_other);
+ ivna.vna_next = BYTE_GET (evna.vna_next);
+ ivna.vna_name = BYTE_GET (evna.vna_name);
+
+ vna_off += ivna.vna_next;
+ }
+ while (ivna.vna_other != vers_data
+ && ivna.vna_next != 0);
+
+ if (ivna.vna_other == vers_data)
+ break;
+
+ offset += ivn.vn_next;
+ }
+ while (ivn.vn_next != 0);
+
+ if (ivna.vna_other == vers_data)
+ {
+ printf ("@%s (%d)",
+ strtab + ivna.vna_name, ivna.vna_other);
+ check_def = 0;
+ }
+ else if (! is_nobits)
+ error (_("bad dynamic symbol"));
+ else
+ check_def = 1;
+ }
+
+ if (check_def)
+ {
+ if (vers_data != 0x8001)
+ {
+ Elf_Internal_Verdef ivd;
+ Elf_Internal_Verdaux ivda;
+ Elf_External_Verdaux evda;
+ unsigned long offset;
+
+ offset =
+ version_info [DT_VERSIONTAGIDX (DT_VERDEF)]
+ - loadaddr;
+
+ do
+ {
+ Elf_External_Verdef evd;
+
+ GET_DATA (offset, evd, "version def");
+
+ ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
+ ivd.vd_aux = BYTE_GET (evd.vd_aux);
+ ivd.vd_next = BYTE_GET (evd.vd_next);
+
+ offset += ivd.vd_next;
+ }
+ while (ivd.vd_ndx != (vers_data & 0x7fff)
+ && ivd.vd_next != 0);
+
+ offset -= ivd.vd_next;
+ offset += ivd.vd_aux;
+
+ GET_DATA (offset, evda, "version def aux");
+
+ ivda.vda_name = BYTE_GET (evda.vda_name);
+
+ if (psym->st_name != ivda.vda_name)
+ printf ((vers_data & 0x8000)
+ ? "@%s" : "@@%s",
+ strtab + ivda.vda_name);
+ }
+ }
+ }
+ }
+
+ putchar ('\n');
+ }
+
+ free (symtab);
+ if (strtab != string_table)
+ free (strtab);
+ }
+ }
+ else if (do_syms)
+ printf
+ (_("\nDynamic symbol information is not available for displaying symbols.\n"));
+
+ if (do_histogram && buckets != NULL)
+ {
+ int *lengths;
+ int *counts;
+ int hn;
+ int si;
+ int maxlength = 0;
+ int nzero_counts = 0;
+ int nsyms = 0;
+
+ printf (_("\nHistogram for bucket list length (total of %d buckets):\n"),
+ nbuckets);
+ printf (_(" Length Number %% of total Coverage\n"));
+
+ lengths = (int *) calloc (nbuckets, sizeof (int));
+ if (lengths == NULL)
+ {
+ error (_("Out of memory"));
+ return 0;
+ }
+ for (hn = 0; hn < nbuckets; ++hn)
+ {
+ if (! buckets [hn])
+ continue;
+
+ for (si = buckets[hn]; si > 0 && si < nchains; si = chains[si])
+ {
+ ++ nsyms;
+ if (maxlength < ++lengths[hn])
+ ++ maxlength;
+ }
+ }
+
+ counts = (int *) calloc (maxlength + 1, sizeof (int));
+ if (counts == NULL)
+ {
+ error (_("Out of memory"));
+ return 0;
+ }
+
+ for (hn = 0; hn < nbuckets; ++hn)
+ ++ counts [lengths [hn]];
+
+ if (nbuckets > 0)
+ {
+ printf (" 0 %-10d (%5.1f%%)\n",
+ counts[0], (counts[0] * 100.0) / nbuckets);
+ for (si = 1; si <= maxlength; ++si)
+ {
+ nzero_counts += counts[si] * si;
+ printf ("%7d %-10d (%5.1f%%) %5.1f%%\n",
+ si, counts[si], (counts[si] * 100.0) / nbuckets,
+ (nzero_counts * 100.0) / nsyms);
+ }
+ }
+
+ free (counts);
+ free (lengths);
+ }
+
+ if (buckets != NULL)
+ {
+ free (buckets);
+ free (chains);
+ }
+
+ return 1;
+}
+
+static int
+process_syminfo (file)
+ FILE * file ATTRIBUTE_UNUSED;
+{
+ unsigned int i;
+
+ if (dynamic_syminfo == NULL
+ || !do_dynamic)
+ /* No syminfo, this is ok. */
+ return 1;
+
+ /* There better should be a dynamic symbol section. */
+ if (dynamic_symbols == NULL || dynamic_strings == NULL)
+ return 0;
+
+ if (dynamic_addr)
+ printf (_("\nDynamic info segment at offset 0x%lx contains %d entries:\n"),
+ dynamic_syminfo_offset, dynamic_syminfo_nent);
+
+ printf (_(" Num: Name BoundTo Flags\n"));
+ for (i = 0; i < dynamic_syminfo_nent; ++i)
+ {
+ unsigned short int flags = dynamic_syminfo[i].si_flags;
+
+ printf ("%4d: %-30s ", i,
+ dynamic_strings + dynamic_symbols[i].st_name);
+
+ switch (dynamic_syminfo[i].si_boundto)
+ {
+ case SYMINFO_BT_SELF:
+ fputs ("SELF ", stdout);
+ break;
+ case SYMINFO_BT_PARENT:
+ fputs ("PARENT ", stdout);
+ break;
+ default:
+ if (dynamic_syminfo[i].si_boundto > 0
+ && dynamic_syminfo[i].si_boundto < dynamic_size)
+ printf ("%-10s ",
+ dynamic_strings
+ + dynamic_segment[dynamic_syminfo[i].si_boundto].d_un.d_val);
+ else
+ printf ("%-10d ", dynamic_syminfo[i].si_boundto);
+ break;
+ }
+
+ if (flags & SYMINFO_FLG_DIRECT)
+ printf (" DIRECT");
+ if (flags & SYMINFO_FLG_PASSTHRU)
+ printf (" PASSTHRU");
+ if (flags & SYMINFO_FLG_COPY)
+ printf (" COPY");
+ if (flags & SYMINFO_FLG_LAZYLOAD)
+ printf (" LAZYLOAD");
+
+ puts ("");
+ }
+
+ return 1;
+}
+
+#ifdef SUPPORT_DISASSEMBLY
+static void
+disassemble_section (section, file)
+ Elf32_Internal_Shdr * section;
+ FILE * file;
+{
+ printf (_("\nAssembly dump of section %s\n"),
+ SECTION_NAME (section));
+
+ /* XXX -- to be done --- XXX */
+
+ return 1;
+}
+#endif
+
+static int
+dump_section (section, file)
+ Elf32_Internal_Shdr * section;
+ FILE * file;
+{
+ bfd_size_type bytes;
+ bfd_vma addr;
+ unsigned char * data;
+ unsigned char * start;
+
+ bytes = section->sh_size;
+
+ if (bytes == 0)
+ {
+ printf (_("\nSection '%s' has no data to dump.\n"),
+ SECTION_NAME (section));
+ return 0;
+ }
+ else
+ printf (_("\nHex dump of section '%s':\n"), SECTION_NAME (section));
+
+ addr = section->sh_addr;
+
+ GET_DATA_ALLOC (section->sh_offset, bytes, start, unsigned char *,
+ "section data");
+
+ data = start;
+
+ while (bytes)
+ {
+ int j;
+ int k;
+ int lbytes;
+
+ lbytes = (bytes > 16 ? 16 : bytes);
+
+ printf (" 0x%8.8lx ", (unsigned long) addr);
+
+ switch (elf_header.e_ident [EI_DATA])
+ {
+ default:
+ case ELFDATA2LSB:
+ for (j = 15; j >= 0; j --)
+ {
+ if (j < lbytes)
+ printf ("%2.2x", data [j]);
+ else
+ printf (" ");
+
+ if (!(j & 0x3))
+ printf (" ");
+ }
+ break;
+
+ case ELFDATA2MSB:
+ for (j = 0; j < 16; j++)
+ {
+ if (j < lbytes)
+ printf ("%2.2x", data [j]);
+ else
+ printf (" ");
+
+ if ((j & 3) == 3)
+ printf (" ");
+ }
+ break;
+ }
+
+ for (j = 0; j < lbytes; j++)
+ {
+ k = data [j];
+ if (k >= ' ' && k < 0x80)
+ printf ("%c", k);
+ else
+ printf (".");
+ }
+
+ putchar ('\n');
+
+ data += lbytes;
+ addr += lbytes;
+ bytes -= lbytes;
+ }
+
+ free (start);
+
+ return 1;
+}
+
+
+static unsigned long int
+read_leb128 (data, length_return, sign)
+ unsigned char * data;
+ int * length_return;
+ int sign;
+{
+ unsigned long int result = 0;
+ unsigned int num_read = 0;
+ int shift = 0;
+ unsigned char byte;
+
+ do
+ {
+ byte = * data ++;
+ num_read ++;
+
+ result |= (byte & 0x7f) << shift;
+
+ shift += 7;
+
+ }
+ while (byte & 0x80);
+
+ if (length_return != NULL)
+ * length_return = num_read;
+
+ if (sign && (shift < 32) && (byte & 0x40))
+ result |= -1 << shift;
+
+ return result;
+}
+
+typedef struct State_Machine_Registers
+{
+ unsigned long address;
+ unsigned int file;
+ unsigned int line;
+ unsigned int column;
+ int is_stmt;
+ int basic_block;
+ int end_sequence;
+/* This variable hold the number of the last entry seen
+ in the File Table. */
+ unsigned int last_file_entry;
+} SMR;
+
+static SMR state_machine_regs;
+
+static void
+reset_state_machine (is_stmt)
+ int is_stmt;
+{
+ state_machine_regs.address = 0;
+ state_machine_regs.file = 1;
+ state_machine_regs.line = 1;
+ state_machine_regs.column = 0;
+ state_machine_regs.is_stmt = is_stmt;
+ state_machine_regs.basic_block = 0;
+ state_machine_regs.end_sequence = 0;
+ state_machine_regs.last_file_entry = 0;
+}
+
+/* Handled an extend line op. Returns true if this is the end
+ of sequence. */
+static int
+process_extended_line_op (data, is_stmt, pointer_size)
+ unsigned char * data;
+ int is_stmt;
+ int pointer_size;
+{
+ unsigned char op_code;
+ int bytes_read;
+ unsigned int len;
+ unsigned char * name;
+ unsigned long adr;
+
+ len = read_leb128 (data, & bytes_read, 0);
+ data += bytes_read;
+
+ if (len == 0)
+ {
+ warn (_("badly formed extended line op encountered!"));
+ return bytes_read;
+ }
+
+ len += bytes_read;
+ op_code = * data ++;
+
+ printf (_(" Extended opcode %d: "), op_code);
+
+ switch (op_code)
+ {
+ case DW_LNE_end_sequence:
+ printf (_("End of Sequence\n\n"));
+ reset_state_machine (is_stmt);
+ break;
+
+ case DW_LNE_set_address:
+ adr = byte_get (data, pointer_size);
+ printf (_("set Address to 0x%lx\n"), adr);
+ state_machine_regs.address = adr;
+ break;
+
+ case DW_LNE_define_file:
+ printf (_(" define new File Table entry\n"));
+ printf (_(" Entry\tDir\tTime\tSize\tName\n"));
+
+ printf (_(" %d\t"), ++ state_machine_regs.last_file_entry);
+ name = data;
+ data += strlen (data) + 1;
+ printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0));
+ data += bytes_read;
+ printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0));
+ data += bytes_read;
+ printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0));
+ printf (_("%s\n\n"), name);
+ break;
+
+ default:
+ printf (_("UNKNOWN: length %d\n"), len - bytes_read);
+ break;
+ }
+
+ return len;
+}
+
+/* Size of pointers in the .debug_line section. This information is not
+ really present in that section. It's obtained before dumping the debug
+ sections by doing some pre-scan of the .debug_info section. */
+static int debug_line_pointer_size = 4;
+
+static int
+display_debug_lines (section, start, file)
+ Elf32_Internal_Shdr * section;
+ unsigned char * start;
+ FILE * file ATTRIBUTE_UNUSED;
+{
+ DWARF2_External_LineInfo * external;
+ DWARF2_Internal_LineInfo info;
+ unsigned char * standard_opcodes;
+ unsigned char * data = start;
+ unsigned char * end = start + section->sh_size;
+ unsigned char * end_of_sequence;
+ int i;
+
+ printf (_("\nDump of debug contents of section %s:\n\n"),
+ SECTION_NAME (section));
+
+ while (data < end)
+ {
+ external = (DWARF2_External_LineInfo *) data;
+
+ /* Check the length of the block. */
+ info.li_length = BYTE_GET (external->li_length);
+ if (info.li_length > section->sh_size)
+ {
+ warn
+ (_("The line info appears to be corrupt - the section is too small\n"));
+ return 0;
+ }
+
+ /* Check its version number. */
+ info.li_version = BYTE_GET (external->li_version);
+ if (info.li_version != 2)
+ {
+ warn (_("Only DWARF version 2 line info is currently supported.\n"));
+ return 0;
+ }
+
+ info.li_prologue_length = BYTE_GET (external->li_prologue_length);
+ info.li_min_insn_length = BYTE_GET (external->li_min_insn_length);
+ info.li_default_is_stmt = BYTE_GET (external->li_default_is_stmt);
+ info.li_line_base = BYTE_GET (external->li_line_base);
+ info.li_line_range = BYTE_GET (external->li_line_range);
+ info.li_opcode_base = BYTE_GET (external->li_opcode_base);
+
+ /* Sign extend the line base field. */
+ info.li_line_base <<= 24;
+ info.li_line_base >>= 24;
+
+ printf (_(" Length: %ld\n"), info.li_length);
+ printf (_(" DWARF Version: %d\n"), info.li_version);
+ printf (_(" Prolgue Length: %d\n"), info.li_prologue_length);
+ printf (_(" Minimum Instruction Length: %d\n"), info.li_min_insn_length);
+ printf (_(" Initial value of 'is_stmt': %d\n"), info.li_default_is_stmt);
+ printf (_(" Line Base: %d\n"), info.li_line_base);
+ printf (_(" Line Range: %d\n"), info.li_line_range);
+ printf (_(" Opcode Base: %d\n"), info.li_opcode_base);
+
+ end_of_sequence = data + info.li_length + sizeof (info.li_length);
+
+ reset_state_machine (info.li_default_is_stmt);
+
+ /* Display the contents of the Opcodes table. */
+ standard_opcodes = data + sizeof (* external);
+
+ printf (_("\n Opcodes:\n"));
+
+ for (i = 1; i < info.li_opcode_base; i++)
+ printf (_(" Opcode %d has %d args\n"), i, standard_opcodes[i - 1]);
+
+ /* Display the contents of the Directory table. */
+ data = standard_opcodes + info.li_opcode_base - 1;
+
+ if (* data == 0)
+ printf (_("\n The Directory Table is empty.\n"));
+ else
+ {
+ printf (_("\n The Directory Table:\n"));
+
+ while (* data != 0)
+ {
+ printf (_(" %s\n"), data);
+
+ data += strlen (data) + 1;
+ }
+ }
+
+ /* Skip the NUL at the end of the table. */
+ data ++;
+
+ /* Display the contents of the File Name table. */
+ if (* data == 0)
+ printf (_("\n The File Name Table is empty.\n"));
+ else
+ {
+ printf (_("\n The File Name Table:\n"));
+ printf (_(" Entry\tDir\tTime\tSize\tName\n"));
+
+ while (* data != 0)
+ {
+ char * name;
+ int bytes_read;
+
+ printf (_(" %d\t"), ++ state_machine_regs.last_file_entry);
+ name = data;
+
+ data += strlen (data) + 1;
+
+ printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0));
+ data += bytes_read;
+ printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0));
+ data += bytes_read;
+ printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0));
+ data += bytes_read;
+ printf (_("%s\n"), name);
+ }
+ }
+
+ /* Skip the NUL at the end of the table. */
+ data ++;
+
+ /* Now display the statements. */
+ printf (_("\n Line Number Statements:\n"));
+
+
+ while (data < end_of_sequence)
+ {
+ unsigned char op_code;
+ int adv;
+ int bytes_read;
+
+ op_code = * data ++;
+
+ switch (op_code)
+ {
+ case DW_LNS_extended_op:
+ data += process_extended_line_op (data, info.li_default_is_stmt,
+ debug_line_pointer_size);
+ break;
+
+ case DW_LNS_copy:
+ printf (_(" Copy\n"));
+ break;
+
+ case DW_LNS_advance_pc:
+ adv = info.li_min_insn_length * read_leb128 (data, & bytes_read, 0);
+ data += bytes_read;
+ state_machine_regs.address += adv;
+ printf (_(" Advance PC by %d to %lx\n"), adv,
+ state_machine_regs.address);
+ break;
+
+ case DW_LNS_advance_line:
+ adv = read_leb128 (data, & bytes_read, 1);
+ data += bytes_read;
+ state_machine_regs.line += adv;
+ printf (_(" Advance Line by %d to %d\n"), adv,
+ state_machine_regs.line);
+ break;
+
+ case DW_LNS_set_file:
+ adv = read_leb128 (data, & bytes_read, 0);
+ data += bytes_read;
+ printf (_(" Set File Name to entry %d in the File Name Table\n"),
+ adv);
+ state_machine_regs.file = adv;
+ break;
+
+ case DW_LNS_set_column:
+ adv = read_leb128 (data, & bytes_read, 0);
+ data += bytes_read;
+ printf (_(" Set column to %d\n"), adv);
+ state_machine_regs.column = adv;
+ break;
+
+ case DW_LNS_negate_stmt:
+ adv = state_machine_regs.is_stmt;
+ adv = ! adv;
+ printf (_(" Set is_stmt to %d\n"), adv);
+ state_machine_regs.is_stmt = adv;
+ break;
+
+ case DW_LNS_set_basic_block:
+ printf (_(" Set basic block\n"));
+ state_machine_regs.basic_block = 1;
+ break;
+
+ case DW_LNS_const_add_pc:
+ adv = (((255 - info.li_opcode_base) / info.li_line_range)
+ * info.li_min_insn_length);
+ state_machine_regs.address += adv;
+ printf (_(" Advance PC by constant %d to 0x%lx\n"), adv,
+ state_machine_regs.address);
+ break;
+
+ case DW_LNS_fixed_advance_pc:
+ adv = byte_get (data, 2);
+ data += 2;
+ state_machine_regs.address += adv;
+ printf (_(" Advance PC by fixed size amount %d to 0x%lx\n"),
+ adv, state_machine_regs.address);
+ break;
+
+ default:
+ op_code -= info.li_opcode_base;
+ adv = (op_code / info.li_line_range) * info.li_min_insn_length;
+ state_machine_regs.address += adv;
+ printf (_(" Special opcode %d: advance Address by %d to 0x%lx"),
+ op_code, adv, state_machine_regs.address);
+ adv = (op_code % info.li_line_range) + info.li_line_base;
+ state_machine_regs.line += adv;
+ printf (_(" and Line by %d to %d\n"),
+ adv, state_machine_regs.line);
+ break;
+ }
+ }
+ printf ("\n");
+ }
+
+ return 1;
+}
+
+static int
+display_debug_pubnames (section, start, file)
+ Elf32_Internal_Shdr * section;
+ unsigned char * start;
+ FILE * file ATTRIBUTE_UNUSED;
+{
+ DWARF2_External_PubNames * external;
+ DWARF2_Internal_PubNames pubnames;
+ unsigned char * end;
+
+ end = start + section->sh_size;
+
+ printf (_("Contents of the %s section:\n\n"), SECTION_NAME (section));
+
+ while (start < end)
+ {
+ unsigned char * data;
+ unsigned long offset;
+
+ external = (DWARF2_External_PubNames *) start;
+
+ pubnames.pn_length = BYTE_GET (external->pn_length);
+ pubnames.pn_version = BYTE_GET (external->pn_version);
+ pubnames.pn_offset = BYTE_GET (external->pn_offset);
+ pubnames.pn_size = BYTE_GET (external->pn_size);
+
+ data = start + sizeof (* external);
+ start += pubnames.pn_length + sizeof (external->pn_length);
+
+ if (pubnames.pn_version != 2)
+ {
+ warn (_("Only DWARF 2 pubnames are currently supported"));
+ continue;
+ }
+
+ printf (_(" Length: %ld\n"),
+ pubnames.pn_length);
+ printf (_(" Version: %d\n"),
+ pubnames.pn_version);
+ printf (_(" Offset into .debug_info section: %ld\n"),
+ pubnames.pn_offset);
+ printf (_(" Size of area in .debug_info section: %ld\n"),
+ pubnames.pn_size);
+
+ printf (_("\n Offset\tName\n"));
+
+ do
+ {
+ offset = byte_get (data, 4);
+
+ if (offset != 0)
+ {
+ data += 4;
+ printf (" %ld\t\t%s\n", offset, data);
+ data += strlen (data) + 1;
+ }
+ }
+ while (offset != 0);
+ }
+
+ printf ("\n");
+ return 1;
+}
+
+static char *
+get_TAG_name (tag)
+ unsigned long tag;
+{
+ switch (tag)
+ {
+ case DW_TAG_padding: return "DW_TAG_padding";
+ case DW_TAG_array_type: return "DW_TAG_array_type";
+ case DW_TAG_class_type: return "DW_TAG_class_type";
+ case DW_TAG_entry_point: return "DW_TAG_entry_point";
+ case DW_TAG_enumeration_type: return "DW_TAG_enumeration_type";
+ case DW_TAG_formal_parameter: return "DW_TAG_formal_parameter";
+ case DW_TAG_imported_declaration: return "DW_TAG_imported_declaration";
+ case DW_TAG_label: return "DW_TAG_label";
+ case DW_TAG_lexical_block: return "DW_TAG_lexical_block";
+ case DW_TAG_member: return "DW_TAG_member";
+ case DW_TAG_pointer_type: return "DW_TAG_pointer_type";
+ case DW_TAG_reference_type: return "DW_TAG_reference_type";
+ case DW_TAG_compile_unit: return "DW_TAG_compile_unit";
+ case DW_TAG_string_type: return "DW_TAG_string_type";
+ case DW_TAG_structure_type: return "DW_TAG_structure_type";
+ case DW_TAG_subroutine_type: return "DW_TAG_subroutine_type";
+ case DW_TAG_typedef: return "DW_TAG_typedef";
+ case DW_TAG_union_type: return "DW_TAG_union_type";
+ case DW_TAG_unspecified_parameters: return "DW_TAG_unspecified_parameters";
+ case DW_TAG_variant: return "DW_TAG_variant";
+ case DW_TAG_common_block: return "DW_TAG_common_block";
+ case DW_TAG_common_inclusion: return "DW_TAG_common_inclusion";
+ case DW_TAG_inheritance: return "DW_TAG_inheritance";
+ case DW_TAG_inlined_subroutine: return "DW_TAG_inlined_subroutine";
+ case DW_TAG_module: return "DW_TAG_module";
+ case DW_TAG_ptr_to_member_type: return "DW_TAG_ptr_to_member_type";
+ case DW_TAG_set_type: return "DW_TAG_set_type";
+ case DW_TAG_subrange_type: return "DW_TAG_subrange_type";
+ case DW_TAG_with_stmt: return "DW_TAG_with_stmt";
+ case DW_TAG_access_declaration: return "DW_TAG_access_declaration";
+ case DW_TAG_base_type: return "DW_TAG_base_type";
+ case DW_TAG_catch_block: return "DW_TAG_catch_block";
+ case DW_TAG_const_type: return "DW_TAG_const_type";
+ case DW_TAG_constant: return "DW_TAG_constant";
+ case DW_TAG_enumerator: return "DW_TAG_enumerator";
+ case DW_TAG_file_type: return "DW_TAG_file_type";
+ case DW_TAG_friend: return "DW_TAG_friend";
+ case DW_TAG_namelist: return "DW_TAG_namelist";
+ case DW_TAG_namelist_item: return "DW_TAG_namelist_item";
+ case DW_TAG_packed_type: return "DW_TAG_packed_type";
+ case DW_TAG_subprogram: return "DW_TAG_subprogram";
+ case DW_TAG_template_type_param: return "DW_TAG_template_type_param";
+ case DW_TAG_template_value_param: return "DW_TAG_template_value_param";
+ case DW_TAG_thrown_type: return "DW_TAG_thrown_type";
+ case DW_TAG_try_block: return "DW_TAG_try_block";
+ case DW_TAG_variant_part: return "DW_TAG_variant_part";
+ case DW_TAG_variable: return "DW_TAG_variable";
+ case DW_TAG_volatile_type: return "DW_TAG_volatile_type";
+ case DW_TAG_MIPS_loop: return "DW_TAG_MIPS_loop";
+ case DW_TAG_format_label: return "DW_TAG_format_label";
+ case DW_TAG_function_template: return "DW_TAG_function_template";
+ case DW_TAG_class_template: return "DW_TAG_class_template";
+ default:
+ {
+ static char buffer [100];
+
+ sprintf (buffer, _("Unknown TAG value: %lx"), tag);
+ return buffer;
+ }
+ }
+}
+
+static char *
+get_AT_name (attribute)
+ unsigned long attribute;
+{
+ switch (attribute)
+ {
+ case DW_AT_sibling: return "DW_AT_sibling";
+ case DW_AT_location: return "DW_AT_location";
+ case DW_AT_name: return "DW_AT_name";
+ case DW_AT_ordering: return "DW_AT_ordering";
+ case DW_AT_subscr_data: return "DW_AT_subscr_data";
+ case DW_AT_byte_size: return "DW_AT_byte_size";
+ case DW_AT_bit_offset: return "DW_AT_bit_offset";
+ case DW_AT_bit_size: return "DW_AT_bit_size";
+ case DW_AT_element_list: return "DW_AT_element_list";
+ case DW_AT_stmt_list: return "DW_AT_stmt_list";
+ case DW_AT_low_pc: return "DW_AT_low_pc";
+ case DW_AT_high_pc: return "DW_AT_high_pc";
+ case DW_AT_language: return "DW_AT_language";
+ case DW_AT_member: return "DW_AT_member";
+ case DW_AT_discr: return "DW_AT_discr";
+ case DW_AT_discr_value: return "DW_AT_discr_value";
+ case DW_AT_visibility: return "DW_AT_visibility";
+ case DW_AT_import: return "DW_AT_import";
+ case DW_AT_string_length: return "DW_AT_string_length";
+ case DW_AT_common_reference: return "DW_AT_common_reference";
+ case DW_AT_comp_dir: return "DW_AT_comp_dir";
+ case DW_AT_const_value: return "DW_AT_const_value";
+ case DW_AT_containing_type: return "DW_AT_containing_type";
+ case DW_AT_default_value: return "DW_AT_default_value";
+ case DW_AT_inline: return "DW_AT_inline";
+ case DW_AT_is_optional: return "DW_AT_is_optional";
+ case DW_AT_lower_bound: return "DW_AT_lower_bound";
+ case DW_AT_producer: return "DW_AT_producer";
+ case DW_AT_prototyped: return "DW_AT_prototyped";
+ case DW_AT_return_addr: return "DW_AT_return_addr";
+ case DW_AT_start_scope: return "DW_AT_start_scope";
+ case DW_AT_stride_size: return "DW_AT_stride_size";
+ case DW_AT_upper_bound: return "DW_AT_upper_bound";
+ case DW_AT_abstract_origin: return "DW_AT_abstract_origin";
+ case DW_AT_accessibility: return "DW_AT_accessibility";
+ case DW_AT_address_class: return "DW_AT_address_class";
+ case DW_AT_artificial: return "DW_AT_artificial";
+ case DW_AT_base_types: return "DW_AT_base_types";
+ case DW_AT_calling_convention: return "DW_AT_calling_convention";
+ case DW_AT_count: return "DW_AT_count";
+ case DW_AT_data_member_location: return "DW_AT_data_member_location";
+ case DW_AT_decl_column: return "DW_AT_decl_column";
+ case DW_AT_decl_file: return "DW_AT_decl_file";
+ case DW_AT_decl_line: return "DW_AT_decl_line";
+ case DW_AT_declaration: return "DW_AT_declaration";
+ case DW_AT_discr_list: return "DW_AT_discr_list";
+ case DW_AT_encoding: return "DW_AT_encoding";
+ case DW_AT_external: return "DW_AT_external";
+ case DW_AT_frame_base: return "DW_AT_frame_base";
+ case DW_AT_friend: return "DW_AT_friend";
+ case DW_AT_identifier_case: return "DW_AT_identifier_case";
+ case DW_AT_macro_info: return "DW_AT_macro_info";
+ case DW_AT_namelist_items: return "DW_AT_namelist_items";
+ case DW_AT_priority: return "DW_AT_priority";
+ case DW_AT_segment: return "DW_AT_segment";
+ case DW_AT_specification: return "DW_AT_specification";
+ case DW_AT_static_link: return "DW_AT_static_link";
+ case DW_AT_type: return "DW_AT_type";
+ case DW_AT_use_location: return "DW_AT_use_location";
+ case DW_AT_variable_parameter: return "DW_AT_variable_parameter";
+ case DW_AT_virtuality: return "DW_AT_virtuality";
+ case DW_AT_vtable_elem_location: return "DW_AT_vtable_elem_location";
+ case DW_AT_MIPS_fde: return "DW_AT_MIPS_fde";
+ case DW_AT_MIPS_loop_begin: return "DW_AT_MIPS_loop_begin";
+ case DW_AT_MIPS_tail_loop_begin: return "DW_AT_MIPS_tail_loop_begin";
+ case DW_AT_MIPS_epilog_begin: return "DW_AT_MIPS_epilog_begin";
+ case DW_AT_MIPS_loop_unroll_factor: return "DW_AT_MIPS_loop_unroll_factor";
+ case DW_AT_MIPS_software_pipeline_depth: return "DW_AT_MIPS_software_pipeline_depth";
+ case DW_AT_MIPS_linkage_name: return "DW_AT_MIPS_linkage_name";
+ case DW_AT_MIPS_stride: return "DW_AT_MIPS_stride";
+ case DW_AT_MIPS_abstract_name: return "DW_AT_MIPS_abstract_name";
+ case DW_AT_MIPS_clone_origin: return "DW_AT_MIPS_clone_origin";
+ case DW_AT_MIPS_has_inlines: return "DW_AT_MIPS_has_inlines";
+ case DW_AT_sf_names: return "DW_AT_sf_names";
+ case DW_AT_src_info: return "DW_AT_src_info";
+ case DW_AT_mac_info: return "DW_AT_mac_info";
+ case DW_AT_src_coords: return "DW_AT_src_coords";
+ case DW_AT_body_begin: return "DW_AT_body_begin";
+ case DW_AT_body_end: return "DW_AT_body_end";
+ default:
+ {
+ static char buffer [100];
+
+ sprintf (buffer, _("Unknown AT value: %lx"), attribute);
+ return buffer;
+ }
+ }
+}
+
+static char *
+get_FORM_name (form)
+ unsigned long form;
+{
+ switch (form)
+ {
+ case DW_FORM_addr: return "DW_FORM_addr";
+ case DW_FORM_block2: return "DW_FORM_block2";
+ case DW_FORM_block4: return "DW_FORM_block4";
+ case DW_FORM_data2: return "DW_FORM_data2";
+ case DW_FORM_data4: return "DW_FORM_data4";
+ case DW_FORM_data8: return "DW_FORM_data8";
+ case DW_FORM_string: return "DW_FORM_string";
+ case DW_FORM_block: return "DW_FORM_block";
+ case DW_FORM_block1: return "DW_FORM_block1";
+ case DW_FORM_data1: return "DW_FORM_data1";
+ case DW_FORM_flag: return "DW_FORM_flag";
+ case DW_FORM_sdata: return "DW_FORM_sdata";
+ case DW_FORM_strp: return "DW_FORM_strp";
+ case DW_FORM_udata: return "DW_FORM_udata";
+ case DW_FORM_ref_addr: return "DW_FORM_ref_addr";
+ case DW_FORM_ref1: return "DW_FORM_ref1";
+ case DW_FORM_ref2: return "DW_FORM_ref2";
+ case DW_FORM_ref4: return "DW_FORM_ref4";
+ case DW_FORM_ref8: return "DW_FORM_ref8";
+ case DW_FORM_ref_udata: return "DW_FORM_ref_udata";
+ case DW_FORM_indirect: return "DW_FORM_indirect";
+ default:
+ {
+ static char buffer [100];
+
+ sprintf (buffer, _("Unknown FORM value: %lx"), form);
+ return buffer;
+ }
+ }
+}
+
+/* FIXME: There are better and more effiecint ways to handle
+ these structures. For now though, I just want something that
+ is simple to implement. */
+typedef struct abbrev_attr
+{
+ unsigned long attribute;
+ unsigned long form;
+ struct abbrev_attr * next;
+}
+abbrev_attr;
+
+typedef struct abbrev_entry
+{
+ unsigned long entry;
+ unsigned long tag;
+ int children;
+ struct abbrev_attr * first_attr;
+ struct abbrev_attr * last_attr;
+ struct abbrev_entry * next;
+}
+abbrev_entry;
+
+static abbrev_entry * first_abbrev = NULL;
+static abbrev_entry * last_abbrev = NULL;
+
+static void
+free_abbrevs PARAMS ((void))
+{
+ abbrev_entry * abbrev;
+
+ for (abbrev = first_abbrev; abbrev;)
+ {
+ abbrev_entry * next = abbrev->next;
+ abbrev_attr * attr;
+
+ for (attr = abbrev->first_attr; attr;)
+ {
+ abbrev_attr * next = attr->next;
+
+ free (attr);
+ attr = next;
+ }
+
+ free (abbrev);
+ abbrev = next;
+ }
+
+ last_abbrev = first_abbrev = NULL;
+}
+
+static void
+add_abbrev (number, tag, children)
+ unsigned long number;
+ unsigned long tag;
+ int children;
+{
+ abbrev_entry * entry;
+
+ entry = (abbrev_entry *) malloc (sizeof (* entry));
+
+ if (entry == NULL)
+ /* ugg */
+ return;
+
+ entry->entry = number;
+ entry->tag = tag;
+ entry->children = children;
+ entry->first_attr = NULL;
+ entry->last_attr = NULL;
+ entry->next = NULL;
+
+ if (first_abbrev == NULL)
+ first_abbrev = entry;
+ else
+ last_abbrev->next = entry;
+
+ last_abbrev = entry;
+}
+
+static void
+add_abbrev_attr (attribute, form)
+ unsigned long attribute;
+ unsigned long form;
+{
+ abbrev_attr * attr;
+
+ attr = (abbrev_attr *) malloc (sizeof (* attr));
+
+ if (attr == NULL)
+ /* ugg */
+ return;
+
+ attr->attribute = attribute;
+ attr->form = form;
+ attr->next = NULL;
+
+ if (last_abbrev->first_attr == NULL)
+ last_abbrev->first_attr = attr;
+ else
+ last_abbrev->last_attr->next = attr;
+
+ last_abbrev->last_attr = attr;
+}
+
+/* Processes the (partial) contents of a .debug_abbrev section.
+ Returns NULL if the end of the section was encountered.
+ Returns the address after the last byte read if the end of
+ an abbreviation set was found. */
+
+static unsigned char *
+process_abbrev_section (start, end)
+ unsigned char * start;
+ unsigned char * end;
+{
+ if (first_abbrev != NULL)
+ return NULL;
+
+ while (start < end)
+ {
+ int bytes_read;
+ unsigned long entry;
+ unsigned long tag;
+ unsigned long attribute;
+ int children;
+
+ entry = read_leb128 (start, & bytes_read, 0);
+ start += bytes_read;
+
+ /* A single zero is supposed to end the section according
+ to the standard. If there's more, then signal that to
+ the caller. */
+ if (entry == 0)
+ return start == end ? NULL : start;
+
+ tag = read_leb128 (start, & bytes_read, 0);
+ start += bytes_read;
+
+ children = * start ++;
+
+ add_abbrev (entry, tag, children);
+
+ do
+ {
+ unsigned long form;
+
+ attribute = read_leb128 (start, & bytes_read, 0);
+ start += bytes_read;
+
+ form = read_leb128 (start, & bytes_read, 0);
+ start += bytes_read;
+
+ if (attribute != 0)
+ add_abbrev_attr (attribute, form);
+ }
+ while (attribute != 0);
+ }
+
+ return NULL;
+}
+
+
+static int
+display_debug_abbrev (section, start, file)
+ Elf32_Internal_Shdr * section;
+ unsigned char * start;
+ FILE * file ATTRIBUTE_UNUSED;
+{
+ abbrev_entry * entry;
+ unsigned char * end = start + section->sh_size;
+
+ printf (_("Contents of the %s section:\n\n"), SECTION_NAME (section));
+
+ do
+ {
+ start = process_abbrev_section (start, end);
+
+ printf (_(" Number TAG\n"));
+
+ for (entry = first_abbrev; entry; entry = entry->next)
+ {
+ abbrev_attr * attr;
+
+ printf (_(" %ld %s [%s]\n"),
+ entry->entry,
+ get_TAG_name (entry->tag),
+ entry->children ? _("has children") : _("no children"));
+
+ for (attr = entry->first_attr; attr; attr = attr->next)
+ {
+ printf (_(" %-18s %s\n"),
+ get_AT_name (attr->attribute),
+ get_FORM_name (attr->form));
+ }
+ }
+ }
+ while (start);
+
+ printf ("\n");
+
+ return 1;
+}
+
+
+static unsigned char *
+display_block (data, length)
+ unsigned char * data;
+ unsigned long length;
+{
+ printf (_(" %lu byte block: "), length);
+
+ while (length --)
+ printf ("%lx ", (unsigned long) byte_get (data ++, 1));
+
+ return data;
+}
+
+static void
+decode_location_expression (data, pointer_size)
+ unsigned char * data;
+ unsigned int pointer_size;
+{
+ unsigned char op;
+ int bytes_read;
+ unsigned long uvalue;
+
+ op = * data ++;
+
+ switch (op)
+ {
+ case DW_OP_addr:
+ printf ("DW_OP_addr: %lx", (unsigned long) byte_get (data, pointer_size));
+ break;
+ case DW_OP_deref:
+ printf ("DW_OP_deref");
+ break;
+ case DW_OP_const1u:
+ printf ("DW_OP_const1u: %lu", (unsigned long) byte_get (data, 1));
+ break;
+ case DW_OP_const1s:
+ printf ("DW_OP_const1s: %ld", (long) byte_get (data, 1));
+ break;
+ case DW_OP_const2u:
+ printf ("DW_OP_const2u: %lu", (unsigned long) byte_get (data, 2));
+ break;
+ case DW_OP_const2s:
+ printf ("DW_OP_const2s: %ld", (long) byte_get (data, 2));
+ break;
+ case DW_OP_const4u:
+ printf ("DW_OP_const4u: %lu", (unsigned long) byte_get (data, 4));
+ break;
+ case DW_OP_const4s:
+ printf ("DW_OP_const4s: %ld", (long) byte_get (data, 4));
+ break;
+ case DW_OP_const8u:
+ printf ("DW_OP_const8u: %lu %lu", (unsigned long) byte_get (data, 4),
+ (unsigned long) byte_get (data + 4, 4));
+ break;
+ case DW_OP_const8s:
+ printf ("DW_OP_const8s: %ld %ld", (long) byte_get (data, 4),
+ (long) byte_get (data + 4, 4));
+ break;
+ case DW_OP_constu:
+ printf ("DW_OP_constu: %lu", read_leb128 (data, NULL, 0));
+ break;
+ case DW_OP_consts:
+ printf ("DW_OP_consts: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_dup:
+ printf ("DW_OP_dup");
+ break;
+ case DW_OP_drop:
+ printf ("DW_OP_drop");
+ break;
+ case DW_OP_over:
+ printf ("DW_OP_over");
+ break;
+ case DW_OP_pick:
+ printf ("DW_OP_pick: %ld", (unsigned long) byte_get (data, 1));
+ break;
+ case DW_OP_swap:
+ printf ("DW_OP_swap");
+ break;
+ case DW_OP_rot:
+ printf ("DW_OP_rot");
+ break;
+ case DW_OP_xderef:
+ printf ("DW_OP_xderef");
+ break;
+ case DW_OP_abs:
+ printf ("DW_OP_abs");
+ break;
+ case DW_OP_and:
+ printf ("DW_OP_and");
+ break;
+ case DW_OP_div:
+ printf ("DW_OP_div");
+ break;
+ case DW_OP_minus:
+ printf ("DW_OP_minus");
+ break;
+ case DW_OP_mod:
+ printf ("DW_OP_mod");
+ break;
+ case DW_OP_mul:
+ printf ("DW_OP_mul");
+ break;
+ case DW_OP_neg:
+ printf ("DW_OP_neg");
+ break;
+ case DW_OP_not:
+ printf ("DW_OP_not");
+ break;
+ case DW_OP_or:
+ printf ("DW_OP_or");
+ break;
+ case DW_OP_plus:
+ printf ("DW_OP_plus");
+ break;
+ case DW_OP_plus_uconst:
+ printf ("DW_OP_plus_uconst: %lu", read_leb128 (data, NULL, 0));
+ break;
+ case DW_OP_shl:
+ printf ("DW_OP_shl");
+ break;
+ case DW_OP_shr:
+ printf ("DW_OP_shr");
+ break;
+ case DW_OP_shra:
+ printf ("DW_OP_shra");
+ break;
+ case DW_OP_xor:
+ printf ("DW_OP_xor");
+ break;
+ case DW_OP_bra:
+ printf ("DW_OP_bra: %ld", (long) byte_get (data, 2));
+ break;
+ case DW_OP_eq:
+ printf ("DW_OP_eq");
+ break;
+ case DW_OP_ge:
+ printf ("DW_OP_ge");
+ break;
+ case DW_OP_gt:
+ printf ("DW_OP_gt");
+ break;
+ case DW_OP_le:
+ printf ("DW_OP_le");
+ break;
+ case DW_OP_lt:
+ printf ("DW_OP_lt");
+ break;
+ case DW_OP_ne:
+ printf ("DW_OP_ne");
+ break;
+ case DW_OP_skip:
+ printf ("DW_OP_skip: %ld", (long) byte_get (data, 2));
+ break;
+ case DW_OP_lit0:
+ printf ("DW_OP_lit0");
+ break;
+ case DW_OP_lit1:
+ printf ("DW_OP_lit1");
+ break;
+ case DW_OP_lit2:
+ printf ("DW_OP_lit2");
+ break;
+ case DW_OP_lit3:
+ printf ("DW_OP_lit3");
+ break;
+ case DW_OP_lit4:
+ printf ("DW_OP_lit4");
+ break;
+ case DW_OP_lit5:
+ printf ("DW_OP_lit5");
+ break;
+ case DW_OP_lit6:
+ printf ("DW_OP_lit6");
+ break;
+ case DW_OP_lit7:
+ printf ("DW_OP_lit7");
+ break;
+ case DW_OP_lit8:
+ printf ("DW_OP_lit8");
+ break;
+ case DW_OP_lit9:
+ printf ("DW_OP_lit9");
+ break;
+ case DW_OP_lit10:
+ printf ("DW_OP_lit10");
+ break;
+ case DW_OP_lit11:
+ printf ("DW_OP_lit11");
+ break;
+ case DW_OP_lit12:
+ printf ("DW_OP_lit12");
+ break;
+ case DW_OP_lit13:
+ printf ("DW_OP_lit13");
+ break;
+ case DW_OP_lit14:
+ printf ("DW_OP_lit14");
+ break;
+ case DW_OP_lit15:
+ printf ("DW_OP_lit15");
+ break;
+ case DW_OP_lit16:
+ printf ("DW_OP_lit16");
+ break;
+ case DW_OP_lit17:
+ printf ("DW_OP_lit17");
+ break;
+ case DW_OP_lit18:
+ printf ("DW_OP_lit18");
+ break;
+ case DW_OP_lit19:
+ printf ("DW_OP_lit19");
+ break;
+ case DW_OP_lit20:
+ printf ("DW_OP_lit20");
+ break;
+ case DW_OP_lit21:
+ printf ("DW_OP_lit21");
+ break;
+ case DW_OP_lit22:
+ printf ("DW_OP_lit22");
+ break;
+ case DW_OP_lit23:
+ printf ("DW_OP_lit23");
+ break;
+ case DW_OP_lit24:
+ printf ("DW_OP_lit24");
+ break;
+ case DW_OP_lit25:
+ printf ("DW_OP_lit25");
+ break;
+ case DW_OP_lit26:
+ printf ("DW_OP_lit26");
+ break;
+ case DW_OP_lit27:
+ printf ("DW_OP_lit27");
+ break;
+ case DW_OP_lit28:
+ printf ("DW_OP_lit28");
+ break;
+ case DW_OP_lit29:
+ printf ("DW_OP_lit29");
+ break;
+ case DW_OP_lit30:
+ printf ("DW_OP_lit30");
+ break;
+ case DW_OP_lit31:
+ printf ("DW_OP_lit31");
+ break;
+ case DW_OP_reg0:
+ printf ("DW_OP_reg0");
+ break;
+ case DW_OP_reg1:
+ printf ("DW_OP_reg1");
+ break;
+ case DW_OP_reg2:
+ printf ("DW_OP_reg2");
+ break;
+ case DW_OP_reg3:
+ printf ("DW_OP_reg3");
+ break;
+ case DW_OP_reg4:
+ printf ("DW_OP_reg4");
+ break;
+ case DW_OP_reg5:
+ printf ("DW_OP_reg5");
+ break;
+ case DW_OP_reg6:
+ printf ("DW_OP_reg6");
+ break;
+ case DW_OP_reg7:
+ printf ("DW_OP_reg7");
+ break;
+ case DW_OP_reg8:
+ printf ("DW_OP_reg8");
+ break;
+ case DW_OP_reg9:
+ printf ("DW_OP_reg9");
+ break;
+ case DW_OP_reg10:
+ printf ("DW_OP_reg10");
+ break;
+ case DW_OP_reg11:
+ printf ("DW_OP_reg11");
+ break;
+ case DW_OP_reg12:
+ printf ("DW_OP_reg12");
+ break;
+ case DW_OP_reg13:
+ printf ("DW_OP_reg13");
+ break;
+ case DW_OP_reg14:
+ printf ("DW_OP_reg14");
+ break;
+ case DW_OP_reg15:
+ printf ("DW_OP_reg15");
+ break;
+ case DW_OP_reg16:
+ printf ("DW_OP_reg16");
+ break;
+ case DW_OP_reg17:
+ printf ("DW_OP_reg17");
+ break;
+ case DW_OP_reg18:
+ printf ("DW_OP_reg18");
+ break;
+ case DW_OP_reg19:
+ printf ("DW_OP_reg19");
+ break;
+ case DW_OP_reg20:
+ printf ("DW_OP_reg20");
+ break;
+ case DW_OP_reg21:
+ printf ("DW_OP_reg21");
+ break;
+ case DW_OP_reg22:
+ printf ("DW_OP_reg22");
+ break;
+ case DW_OP_reg23:
+ printf ("DW_OP_reg23");
+ break;
+ case DW_OP_reg24:
+ printf ("DW_OP_reg24");
+ break;
+ case DW_OP_reg25:
+ printf ("DW_OP_reg25");
+ break;
+ case DW_OP_reg26:
+ printf ("DW_OP_reg26");
+ break;
+ case DW_OP_reg27:
+ printf ("DW_OP_reg27");
+ break;
+ case DW_OP_reg28:
+ printf ("DW_OP_reg28");
+ break;
+ case DW_OP_reg29:
+ printf ("DW_OP_reg29");
+ break;
+ case DW_OP_reg30:
+ printf ("DW_OP_reg30");
+ break;
+ case DW_OP_reg31:
+ printf ("DW_OP_reg31");
+ break;
+ case DW_OP_breg0:
+ printf ("DW_OP_breg0: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg1:
+ printf ("DW_OP_breg1: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg2:
+ printf ("DW_OP_breg2: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg3:
+ printf ("DW_OP_breg3: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg4:
+ printf ("DW_OP_breg4: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg5:
+ printf ("DW_OP_breg5: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg6:
+ printf ("DW_OP_breg6: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg7:
+ printf ("DW_OP_breg7: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg8:
+ printf ("DW_OP_breg8: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg9:
+ printf ("DW_OP_breg9: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg10:
+ printf ("DW_OP_breg10: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg11:
+ printf ("DW_OP_breg11: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg12:
+ printf ("DW_OP_breg12: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg13:
+ printf ("DW_OP_breg13: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg14:
+ printf ("DW_OP_breg14: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg15:
+ printf ("DW_OP_breg15: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg16:
+ printf ("DW_OP_breg16: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg17:
+ printf ("DW_OP_breg17: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg18:
+ printf ("DW_OP_breg18: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg19:
+ printf ("DW_OP_breg19: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg20:
+ printf ("DW_OP_breg20: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg21:
+ printf ("DW_OP_breg21: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg22:
+ printf ("DW_OP_breg22: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg23:
+ printf ("DW_OP_breg23: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg24:
+ printf ("DW_OP_breg24: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg25:
+ printf ("DW_OP_breg25: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg26:
+ printf ("DW_OP_breg26: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg27:
+ printf ("DW_OP_breg27: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg28:
+ printf ("DW_OP_breg28: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg29:
+ printf ("DW_OP_breg29: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg30:
+ printf ("DW_OP_breg30: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_breg31:
+ printf ("DW_OP_breg31: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_regx:
+ printf ("DW_OP_regx: %lu", read_leb128 (data, NULL, 0));
+ break;
+ case DW_OP_fbreg:
+ printf ("DW_OP_fbreg: %ld", read_leb128 (data, NULL, 1));
+ break;
+ case DW_OP_bregx:
+ uvalue = read_leb128 (data, &bytes_read, 0);
+ printf ("DW_OP_bregx: %lu %ld", uvalue,
+ read_leb128 (data + bytes_read, NULL, 1));
+ break;
+ case DW_OP_piece:
+ printf ("DW_OP_piece: %lu", read_leb128 (data, NULL, 0));
+ break;
+ case DW_OP_deref_size:
+ printf ("DW_OP_deref_size: %ld", (long) byte_get (data, 1));
+ break;
+ case DW_OP_xderef_size:
+ printf ("DW_OP_xderef_size: %ld", (long) byte_get (data, 1));
+ break;
+ case DW_OP_nop:
+ printf ("DW_OP_nop");
+ break;
+
+ default:
+ if (op >= DW_OP_lo_user
+ && op <= DW_OP_hi_user)
+ printf (_("(User defined location op)"));
+ else
+ printf (_("(Unknown location op)"));
+ break;
+ }
+}
+
+
+static unsigned char *
+read_and_display_attr (attribute, form, data, pointer_size)
+ unsigned long attribute;
+ unsigned long form;
+ unsigned char * data;
+ unsigned long pointer_size;
+{
+ unsigned long uvalue = 0;
+ unsigned char * block_start = NULL;
+ int bytes_read;
+ int is_ref = 0;
+
+ printf (" %-18s:", get_AT_name (attribute));
+
+ switch (form)
+ {
+ case DW_FORM_ref_addr:
+ case DW_FORM_ref1:
+ case DW_FORM_ref2:
+ case DW_FORM_ref4:
+ case DW_FORM_ref8:
+ case DW_FORM_ref_udata:
+ is_ref = 1;
+ }
+
+ switch (form)
+ {
+ case DW_FORM_ref_addr:
+ case DW_FORM_addr:
+ uvalue = byte_get (data, pointer_size);
+ printf (is_ref ? " <%lx>" : " %#lx", uvalue);
+ data += pointer_size;
+ break;
+
+ case DW_FORM_ref1:
+ case DW_FORM_flag:
+ case DW_FORM_data1:
+ uvalue = byte_get (data ++, 1);
+ printf (is_ref ? " <%lx>" : " %ld", uvalue);
+ break;
+
+ case DW_FORM_ref2:
+ case DW_FORM_data2:
+ uvalue = byte_get (data, 2);
+ data += 2;
+ printf (is_ref ? " <%lx>" : " %ld", uvalue);
+ break;
+
+ case DW_FORM_ref4:
+ case DW_FORM_data4:
+ uvalue = byte_get (data, 4);
+ data += 4;
+ printf (is_ref ? " <%lx>" : " %ld", uvalue);
+ break;
+
+ case DW_FORM_ref8:
+ case DW_FORM_data8:
+ uvalue = byte_get (data, 4);
+ printf (" %lx", uvalue);
+ printf (" %lx", (unsigned long) byte_get (data + 4, 4));
+ data += 8;
+ break;
+
+ case DW_FORM_string:
+ printf (" %s", data);
+ data += strlen (data) + 1;
+ break;
+
+ case DW_FORM_sdata:
+ uvalue = read_leb128 (data, & bytes_read, 1);
+ data += bytes_read;
+ printf (" %ld", (long) uvalue);
+ break;
+
+ case DW_FORM_ref_udata:
+ case DW_FORM_udata:
+ uvalue = read_leb128 (data, & bytes_read, 0);
+ data += bytes_read;
+ printf (is_ref ? " <%lx>" : " %ld", uvalue);
+ break;
+
+ case DW_FORM_block:
+ uvalue = read_leb128 (data, & bytes_read, 0);
+ block_start = data + bytes_read;
+ data = display_block (block_start, uvalue);
+ uvalue = * block_start;
+ break;
+
+ case DW_FORM_block1:
+ uvalue = byte_get (data, 1);
+ block_start = data + 1;
+ data = display_block (block_start, uvalue);
+ uvalue = * block_start;
+ break;
+
+ case DW_FORM_block2:
+ uvalue = byte_get (data, 2);
+ block_start = data + 2;
+ data = display_block (block_start, uvalue);
+ uvalue = * block_start;
+ break;
+
+ case DW_FORM_block4:
+ uvalue = byte_get (data, 4);
+ block_start = data + 4;
+ data = display_block (block_start, uvalue);
+ uvalue = * block_start;
+ break;
+
+ case DW_FORM_strp:
+ case DW_FORM_indirect:
+ warn (_("Unable to handle FORM: %d"), form);
+ break;
+
+ default:
+ warn (_("Unrecognised form: %d"), form);
+ break;
+ }
+
+ /* For some attributes we can display futher information. */
+
+ printf ("\t");
+
+ switch (attribute)
+ {
+ case DW_AT_inline:
+ switch (uvalue)
+ {
+ case DW_INL_not_inlined: printf (_("(not inlined)")); break;
+ case DW_INL_inlined: printf (_("(inlined)")); break;
+ case DW_INL_declared_not_inlined: printf (_("(declared as inline but ignored)")); break;
+ case DW_INL_declared_inlined: printf (_("(declared as inline and inlined)")); break;
+ default: printf (_(" (Unknown inline attribute value: %lx)"), uvalue); break;
+ }
+ break;
+
+ case DW_AT_frame_base:
+ if (uvalue >= DW_OP_reg0 && uvalue <= DW_OP_reg31)
+ printf ("(reg %ld)", uvalue - DW_OP_reg0);
+ break;
+
+ case DW_AT_language:
+ switch (uvalue)
+ {
+ case DW_LANG_C: printf ("(non-ANSI C)"); break;
+ case DW_LANG_C89: printf ("(ANSI C)"); break;
+ case DW_LANG_C_plus_plus: printf ("(C++)"); break;
+ case DW_LANG_Fortran77: printf ("(FORTRAN 77)"); break;
+ case DW_LANG_Fortran90: printf ("(Fortran 90)"); break;
+ case DW_LANG_Modula2: printf ("(Modula 2)"); break;
+ case DW_LANG_Pascal83: printf ("(ANSI Pascal)"); break;
+ case DW_LANG_Ada83: printf ("(Ada)"); break;
+ case DW_LANG_Cobol74: printf ("(Cobol 74)"); break;
+ case DW_LANG_Cobol85: printf ("(Cobol 85)"); break;
+ case DW_LANG_Mips_Assembler: printf ("(MIPS assembler)"); break;
+ default: printf ("(Unknown: %lx)", uvalue); break;
+ }
+ break;
+
+ case DW_AT_encoding:
+ switch (uvalue)
+ {
+ case DW_ATE_void: printf ("(void)"); break;
+ case DW_ATE_address: printf ("(machine address)"); break;
+ case DW_ATE_boolean: printf ("(boolean)"); break;
+ case DW_ATE_complex_float: printf ("(complex float)"); break;
+ case DW_ATE_float: printf ("(float)"); break;
+ case DW_ATE_signed: printf ("(signed)"); break;
+ case DW_ATE_signed_char: printf ("(signed char)"); break;
+ case DW_ATE_unsigned: printf ("(unsigned)"); break;
+ case DW_ATE_unsigned_char: printf ("(unsigned char)"); break;
+ default:
+ if (uvalue >= DW_ATE_lo_user
+ && uvalue <= DW_ATE_hi_user)
+ printf ("(user defined type)");
+ else
+ printf ("(unknown type)");
+ break;
+ }
+ break;
+
+ case DW_AT_accessibility:
+ switch (uvalue)
+ {
+ case DW_ACCESS_public: printf ("(public)"); break;
+ case DW_ACCESS_protected: printf ("(protected)"); break;
+ case DW_ACCESS_private: printf ("(private)"); break;
+ default: printf ("(unknown accessibility)"); break;
+ }
+ break;
+
+ case DW_AT_visibility:
+ switch (uvalue)
+ {
+ case DW_VIS_local: printf ("(local)"); break;
+ case DW_VIS_exported: printf ("(exported)"); break;
+ case DW_VIS_qualified: printf ("(qualified)"); break;
+ default: printf ("(unknown visibility)"); break;
+ }
+ break;
+
+ case DW_AT_virtuality:
+ switch (uvalue)
+ {
+ case DW_VIRTUALITY_none: printf ("(none)"); break;
+ case DW_VIRTUALITY_virtual: printf ("(virtual)"); break;
+ case DW_VIRTUALITY_pure_virtual:printf ("(pure_virtual)"); break;
+ default: printf ("(unknown virtuality)"); break;
+ }
+ break;
+
+ case DW_AT_identifier_case:
+ switch (uvalue)
+ {
+ case DW_ID_case_sensitive: printf ("(case_sensitive)"); break;
+ case DW_ID_up_case: printf ("(up_case)"); break;
+ case DW_ID_down_case: printf ("(down_case)"); break;
+ case DW_ID_case_insensitive: printf ("(case_insensitive)"); break;
+ default: printf ("(unknown case)"); break;
+ }
+ break;
+
+ case DW_AT_calling_convention:
+ switch (uvalue)
+ {
+ case DW_CC_normal: printf ("(normal)"); break;
+ case DW_CC_program: printf ("(program)"); break;
+ case DW_CC_nocall: printf ("(nocall)"); break;
+ default:
+ if (uvalue >= DW_CC_lo_user
+ && uvalue <= DW_CC_hi_user)
+ printf ("(user defined)");
+ else
+ printf ("(unknown convention)");
+ }
+ break;
+
+ case DW_AT_location:
+ case DW_AT_data_member_location:
+ case DW_AT_vtable_elem_location:
+ printf ("(");
+ decode_location_expression (block_start, pointer_size);
+ printf (")");
+ break;
+
+ default:
+ break;
+ }
+
+ printf ("\n");
+ return data;
+}
+
+static int
+display_debug_info (section, start, file)
+ Elf32_Internal_Shdr * section;
+ unsigned char * start;
+ FILE * file;
+{
+ unsigned char * end = start + section->sh_size;
+ unsigned char * section_begin = start;
+
+ printf (_("The section %s contains:\n\n"), SECTION_NAME (section));
+
+ while (start < end)
+ {
+ DWARF2_External_CompUnit * external;
+ DWARF2_Internal_CompUnit compunit;
+ unsigned char * tags;
+ int i;
+ int level;
+
+ external = (DWARF2_External_CompUnit *) start;
+
+ compunit.cu_length = BYTE_GET (external->cu_length);
+ compunit.cu_version = BYTE_GET (external->cu_version);
+ compunit.cu_abbrev_offset = BYTE_GET (external->cu_abbrev_offset);
+ compunit.cu_pointer_size = BYTE_GET (external->cu_pointer_size);
+
+ tags = start + sizeof (* external);
+ start += compunit.cu_length + sizeof (external->cu_length);
+
+ if (compunit.cu_version != 2)
+ {
+ warn (_("Only version 2 DWARF debug information is currently supported.\n"));
+ continue;
+ }
+
+ printf (_(" Compilation Unit:\n"));
+ printf (_(" Length: %ld\n"), compunit.cu_length);
+ printf (_(" Version: %d\n"), compunit.cu_version);
+ printf (_(" Abbrev Offset: %ld\n"), compunit.cu_abbrev_offset);
+ printf (_(" Pointer Size: %d\n"), compunit.cu_pointer_size);
+
+ if (first_abbrev != NULL)
+ free_abbrevs ();
+
+ /* Read in the abbrevs used by this compilation unit. */
+
+ {
+ Elf32_Internal_Shdr * sec;
+ unsigned char * begin;
+
+ /* Locate the .debug_abbrev section and process it. */
+ for (i = 0, sec = section_headers;
+ i < elf_header.e_shnum;
+ i ++, sec ++)
+ if (strcmp (SECTION_NAME (sec), ".debug_abbrev") == 0)
+ break;
+
+ if (i == -1 || sec->sh_size == 0)
+ {
+ warn (_("Unable to locate .debug_abbrev section!\n"));
+ return 0;
+ }
+
+ GET_DATA_ALLOC (sec->sh_offset, sec->sh_size, begin, unsigned char *,
+ "debug_abbrev section data");
+
+ process_abbrev_section (begin + compunit.cu_abbrev_offset,
+ begin + sec->sh_size);
+
+ free (begin);
+ }
+
+ level = 0;
+ while (tags < start)
+ {
+ int bytes_read;
+ unsigned long abbrev_number;
+ abbrev_entry * entry;
+ abbrev_attr * attr;
+
+ abbrev_number = read_leb128 (tags, & bytes_read, 0);
+ tags += bytes_read;
+
+ /* A null DIE marks the end of a list of children. */
+ if (abbrev_number == 0)
+ {
+ --level;
+ continue;
+ }
+
+ /* Scan through the abbreviation list until we reach the
+ correct entry. */
+ for (entry = first_abbrev;
+ entry && entry->entry != abbrev_number;
+ entry = entry->next)
+ continue;
+
+ if (entry == NULL)
+ {
+ warn (_("Unable to locate entry %lu in the abbreviation table\n"),
+ abbrev_number);
+ return 0;
+ }
+
+ printf (_(" <%d><%x>: Abbrev Number: %lu (%s)\n"),
+ level, tags - section_begin - bytes_read,
+ abbrev_number,
+ get_TAG_name (entry->tag));
+
+ for (attr = entry->first_attr; attr; attr = attr->next)
+ tags = read_and_display_attr (attr->attribute,
+ attr->form,
+ tags,
+ compunit.cu_pointer_size);
+
+ if (entry->children)
+ ++level;
+ }
+ }
+
+ printf ("\n");
+
+ return 1;
+}
+
+static int
+display_debug_aranges (section, start, file)
+ Elf32_Internal_Shdr * section;
+ unsigned char * start;
+ FILE * file ATTRIBUTE_UNUSED;
+{
+ unsigned char * end = start + section->sh_size;
+
+ printf (_("The section %s contains:\n\n"), SECTION_NAME (section));
+
+ while (start < end)
+ {
+ DWARF2_External_ARange * external;
+ DWARF2_Internal_ARange arange;
+ unsigned char * ranges;
+ unsigned long length;
+ unsigned long address;
+ int excess;
+
+ external = (DWARF2_External_ARange *) start;
+
+ arange.ar_length = BYTE_GET (external->ar_length);
+ arange.ar_version = BYTE_GET (external->ar_version);
+ arange.ar_info_offset = BYTE_GET (external->ar_info_offset);
+ arange.ar_pointer_size = BYTE_GET (external->ar_pointer_size);
+ arange.ar_segment_size = BYTE_GET (external->ar_segment_size);
+
+ printf (_(" Length: %ld\n"), arange.ar_length);
+ printf (_(" Version: %d\n"), arange.ar_version);
+ printf (_(" Offset into .debug_info: %lx\n"), arange.ar_info_offset);
+ printf (_(" Pointer Size: %d\n"), arange.ar_pointer_size);
+ printf (_(" Segment Size: %d\n"), arange.ar_segment_size);
+
+ printf (_("\n Address Length\n"));
+
+ ranges = start + sizeof (* external);
+
+ /* Must pad to an alignment boundary that is twice the pointer size. */
+ excess = sizeof (*external) % (2 * arange.ar_pointer_size);
+ if (excess)
+ ranges += (2 * arange.ar_pointer_size) - excess;
+
+ for (;;)
+ {
+ address = byte_get (ranges, arange.ar_pointer_size);
+
+ ranges += arange.ar_pointer_size;
+
+ length = byte_get (ranges, arange.ar_pointer_size);
+
+ ranges += arange.ar_pointer_size;
+
+ /* A pair of zeros marks the end of the list. */
+ if (address == 0 && length == 0)
+ break;
+
+ printf (" %8.8lx %lu\n", address, length);
+ }
+
+ start += arange.ar_length + sizeof (external->ar_length);
+ }
+
+ printf ("\n");
+
+ return 1;
+}
+
+
+static int
+display_debug_not_supported (section, start, file)
+ Elf32_Internal_Shdr * section;
+ unsigned char * start ATTRIBUTE_UNUSED;
+ FILE * file ATTRIBUTE_UNUSED;
+{
+ printf (_("Displaying the debug contents of section %s is not yet supported.\n"),
+ SECTION_NAME (section));
+
+ return 1;
+}
+
+/* Pre-scan the .debug_info section to record the size of address.
+ When dumping the .debug_line, we use that size information, assuming
+ that all compilation units have the same address size. */
+static int
+prescan_debug_info (section, start, file)
+ Elf32_Internal_Shdr * section ATTRIBUTE_UNUSED;
+ unsigned char * start;
+ FILE * file ATTRIBUTE_UNUSED;
+{
+ DWARF2_External_CompUnit * external;
+
+ external = (DWARF2_External_CompUnit *) start;
+
+ debug_line_pointer_size = BYTE_GET (external->cu_pointer_size);
+ return 0;
+}
+
+ /* A structure containing the name of a debug section and a pointer
+ to a function that can decode it. The third field is a prescan
+ function to be run over the section before displaying any of the
+ sections. */
+struct
+{
+ char * name;
+ int (* display) PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
+ int (* prescan) PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
+}
+debug_displays[] =
+{
+ { ".debug_info", display_debug_info, prescan_debug_info },
+ { ".debug_abbrev", display_debug_abbrev, NULL },
+ { ".debug_line", display_debug_lines, NULL },
+ { ".debug_aranges", display_debug_aranges, NULL },
+ { ".debug_pubnames", display_debug_pubnames, NULL },
+ { ".debug_macinfo", display_debug_not_supported, NULL },
+ { ".debug_frame", display_debug_not_supported, NULL },
+ { ".debug_str", display_debug_not_supported, NULL },
+ { ".debug_static_func", display_debug_not_supported, NULL },
+ { ".debug_static_vars", display_debug_not_supported, NULL },
+ { ".debug_types", display_debug_not_supported, NULL },
+ { ".debug_weaknames", display_debug_not_supported, NULL }
+};
+
+static int
+display_debug_section (section, file)
+ Elf32_Internal_Shdr * section;
+ FILE * file;
+{
+ char * name = SECTION_NAME (section);
+ bfd_size_type length;
+ unsigned char * start;
+ int i;
+
+ length = section->sh_size;
+ if (length == 0)
+ {
+ printf (_("\nSection '%s' has no debugging data.\n"), name);
+ return 0;
+ }
+
+ GET_DATA_ALLOC (section->sh_offset, length, start, unsigned char *,
+ "debug section data");
+
+ /* See if we know how to display the contents of this section. */
+ for (i = NUM_ELEM (debug_displays); i--;)
+ if (strcmp (debug_displays[i].name, name) == 0)
+ {
+ debug_displays[i].display (section, start, file);
+ break;
+ }
+
+ if (i == -1)
+ printf (_("Unrecognised debug section: %s\n"), name);
+
+ free (start);
+
+ /* If we loaded in the abbrev section at some point,
+ we must release it here. */
+ if (first_abbrev != NULL)
+ free_abbrevs ();
+
+ return 1;
+}
+
+static int
+process_section_contents (file)
+ FILE * file;
+{
+ Elf32_Internal_Shdr * section;
+ unsigned int i;
+
+ if (! do_dump)
+ return 1;
+
+ /* Pre-scan the debug sections to find some debug information not
+ present in some of them. For the .debug_line, we must find out the
+ size of address (specified in .debug_info and .debug_aranges). */
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum && i < num_dump_sects;
+ i ++, section ++)
+ {
+ char * name = SECTION_NAME (section);
+ int j;
+
+ if (section->sh_size == 0)
+ continue;
+
+ /* See if there is some pre-scan operation for this section. */
+ for (j = NUM_ELEM (debug_displays); j--;)
+ if (strcmp (debug_displays[j].name, name) == 0)
+ {
+ if (debug_displays[j].prescan != NULL)
+ {
+ bfd_size_type length;
+ unsigned char * start;
+
+ length = section->sh_size;
+ GET_DATA_ALLOC (section->sh_offset, length, start, unsigned char *,
+ "debug section data");
+
+ debug_displays[j].prescan (section, start, file);
+ free (start);
+ }
+
+ break;
+ }
+ }
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum && i < num_dump_sects;
+ i ++, section ++)
+ {
+#ifdef SUPPORT_DISASSEMBLY
+ if (dump_sects[i] & DISASS_DUMP)
+ disassemble_section (section, file);
+#endif
+ if (dump_sects[i] & HEX_DUMP)
+ dump_section (section, file);
+
+ if (dump_sects[i] & DEBUG_DUMP)
+ display_debug_section (section, file);
+ }
+
+ if (i < num_dump_sects)
+ warn (_("Some sections were not dumped because they do not exist!\n"));
+
+ return 1;
+}
+
+static void
+process_mips_fpe_exception (mask)
+ int mask;
+{
+ if (mask)
+ {
+ int first = 1;
+ if (mask & OEX_FPU_INEX)
+ fputs ("INEX", stdout), first = 0;
+ if (mask & OEX_FPU_UFLO)
+ printf ("%sUFLO", first ? "" : "|"), first = 0;
+ if (mask & OEX_FPU_OFLO)
+ printf ("%sOFLO", first ? "" : "|"), first = 0;
+ if (mask & OEX_FPU_DIV0)
+ printf ("%sDIV0", first ? "" : "|"), first = 0;
+ if (mask & OEX_FPU_INVAL)
+ printf ("%sINVAL", first ? "" : "|");
+ }
+ else
+ fputs ("0", stdout);
+}
+
+static int
+process_mips_specific (file)
+ FILE * file;
+{
+ Elf_Internal_Dyn * entry;
+ size_t liblist_offset = 0;
+ size_t liblistno = 0;
+ size_t conflictsno = 0;
+ size_t options_offset = 0;
+ size_t conflicts_offset = 0;
+
+ /* We have a lot of special sections. Thanks SGI! */
+ if (dynamic_segment == NULL)
+ /* No information available. */
+ return 0;
+
+ for (entry = dynamic_segment; entry->d_tag != DT_NULL; ++entry)
+ switch (entry->d_tag)
+ {
+ case DT_MIPS_LIBLIST:
+ liblist_offset = entry->d_un.d_val - loadaddr;
+ break;
+ case DT_MIPS_LIBLISTNO:
+ liblistno = entry->d_un.d_val;
+ break;
+ case DT_MIPS_OPTIONS:
+ options_offset = entry->d_un.d_val - loadaddr;
+ break;
+ case DT_MIPS_CONFLICT:
+ conflicts_offset = entry->d_un.d_val - loadaddr;
+ break;
+ case DT_MIPS_CONFLICTNO:
+ conflictsno = entry->d_un.d_val;
+ break;
+ default:
+ break;
+ }
+
+ if (liblist_offset != 0 && liblistno != 0 && do_dynamic)
+ {
+ Elf32_External_Lib * elib;
+ size_t cnt;
+
+ GET_DATA_ALLOC (liblist_offset, liblistno * sizeof (Elf32_External_Lib),
+ elib, Elf32_External_Lib *, "liblist");
+
+ printf ("\nSection '.liblist' contains %lu entries:\n",
+ (unsigned long) liblistno);
+ fputs (" Library Time Stamp Checksum Version Flags\n",
+ stdout);
+
+ for (cnt = 0; cnt < liblistno; ++cnt)
+ {
+ Elf32_Lib liblist;
+ time_t time;
+ char timebuf[20];
+ struct tm * tmp;
+
+ liblist.l_name = BYTE_GET (elib[cnt].l_name);
+ time = BYTE_GET (elib[cnt].l_time_stamp);
+ liblist.l_checksum = BYTE_GET (elib[cnt].l_checksum);
+ liblist.l_version = BYTE_GET (elib[cnt].l_version);
+ liblist.l_flags = BYTE_GET (elib[cnt].l_flags);
+
+ tmp = gmtime (&time);
+ sprintf (timebuf, "%04u-%02u-%02uT%02u:%02u:%02u",
+ tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+
+ printf ("%3lu: %-20s %s %#10lx %-7ld", (unsigned long) cnt,
+ dynamic_strings + liblist.l_name, timebuf,
+ liblist.l_checksum, liblist.l_version);
+
+ if (liblist.l_flags == 0)
+ puts (" NONE");
+ else
+ {
+ static const struct
+ {
+ const char * name;
+ int bit;
+ }
+ l_flags_vals[] =
+ {
+ { " EXACT_MATCH", LL_EXACT_MATCH },
+ { " IGNORE_INT_VER", LL_IGNORE_INT_VER },
+ { " REQUIRE_MINOR", LL_REQUIRE_MINOR },
+ { " EXPORTS", LL_EXPORTS },
+ { " DELAY_LOAD", LL_DELAY_LOAD },
+ { " DELTA", LL_DELTA }
+ };
+ int flags = liblist.l_flags;
+ size_t fcnt;
+
+ for (fcnt = 0;
+ fcnt < sizeof (l_flags_vals) / sizeof (l_flags_vals[0]);
+ ++fcnt)
+ if ((flags & l_flags_vals[fcnt].bit) != 0)
+ {
+ fputs (l_flags_vals[fcnt].name, stdout);
+ flags ^= l_flags_vals[fcnt].bit;
+ }
+ if (flags != 0)
+ printf (" %#x", (unsigned int) flags);
+
+ puts ("");
+ }
+ }
+
+ free (elib);
+ }
+
+ if (options_offset != 0)
+ {
+ Elf_External_Options * eopt;
+ Elf_Internal_Shdr * sect = section_headers;
+ Elf_Internal_Options * iopt;
+ Elf_Internal_Options * option;
+ size_t offset;
+ int cnt;
+
+ /* Find the section header so that we get the size. */
+ while (sect->sh_type != SHT_MIPS_OPTIONS)
+ ++ sect;
+
+ GET_DATA_ALLOC (options_offset, sect->sh_size, eopt,
+ Elf_External_Options *, "options");
+
+ iopt = (Elf_Internal_Options *) malloc ((sect->sh_size / sizeof (eopt))
+ * sizeof (*iopt));
+ if (iopt == NULL)
+ {
+ error (_("Out of memory"));
+ return 0;
+ }
+
+ offset = cnt = 0;
+ option = iopt;
+
+ while (offset < sect->sh_size)
+ {
+ Elf_External_Options * eoption;
+
+ eoption = (Elf_External_Options *) ((char *) eopt + offset);
+
+ option->kind = BYTE_GET (eoption->kind);
+ option->size = BYTE_GET (eoption->size);
+ option->section = BYTE_GET (eoption->section);
+ option->info = BYTE_GET (eoption->info);
+
+ offset += option->size;
+
+ ++option;
+ ++cnt;
+ }
+
+ printf (_("\nSection '%s' contains %d entries:\n"),
+ string_table + sect->sh_name, cnt);
+
+ option = iopt;
+
+ while (cnt-- > 0)
+ {
+ size_t len;
+
+ switch (option->kind)
+ {
+ case ODK_NULL:
+ /* This shouldn't happen. */
+ printf (" NULL %d %lx", option->section, option->info);
+ break;
+ case ODK_REGINFO:
+ printf (" REGINFO ");
+ if (elf_header.e_machine == EM_MIPS)
+ {
+ /* 32bit form. */
+ Elf32_External_RegInfo *ereg;
+ Elf32_RegInfo reginfo;
+
+ ereg = (Elf32_External_RegInfo *) (option + 1);
+ reginfo.ri_gprmask = BYTE_GET (ereg->ri_gprmask);
+ reginfo.ri_cprmask[0] = BYTE_GET (ereg->ri_cprmask[0]);
+ reginfo.ri_cprmask[1] = BYTE_GET (ereg->ri_cprmask[1]);
+ reginfo.ri_cprmask[2] = BYTE_GET (ereg->ri_cprmask[2]);
+ reginfo.ri_cprmask[3] = BYTE_GET (ereg->ri_cprmask[3]);
+ reginfo.ri_gp_value = BYTE_GET (ereg->ri_gp_value);
+
+ printf ("GPR %08lx GP 0x%lx\n",
+ reginfo.ri_gprmask,
+ (unsigned long) reginfo.ri_gp_value);
+ printf (" CPR0 %08lx CPR1 %08lx CPR2 %08lx CPR3 %08lx\n",
+ reginfo.ri_cprmask[0], reginfo.ri_cprmask[1],
+ reginfo.ri_cprmask[2], reginfo.ri_cprmask[3]);
+ }
+ else
+ {
+ /* 64 bit form. */
+ Elf64_External_RegInfo * ereg;
+ Elf64_Internal_RegInfo reginfo;
+
+ ereg = (Elf64_External_RegInfo *) (option + 1);
+ reginfo.ri_gprmask = BYTE_GET (ereg->ri_gprmask);
+ reginfo.ri_cprmask[0] = BYTE_GET (ereg->ri_cprmask[0]);
+ reginfo.ri_cprmask[1] = BYTE_GET (ereg->ri_cprmask[1]);
+ reginfo.ri_cprmask[2] = BYTE_GET (ereg->ri_cprmask[2]);
+ reginfo.ri_cprmask[3] = BYTE_GET (ereg->ri_cprmask[3]);
+ reginfo.ri_gp_value = BYTE_GET8 (ereg->ri_gp_value);
+
+ printf ("GPR %08lx GP 0x",
+ reginfo.ri_gprmask);
+ printf_vma (reginfo.ri_gp_value);
+ printf ("\n");
+
+ printf (" CPR0 %08lx CPR1 %08lx CPR2 %08lx CPR3 %08lx\n",
+ reginfo.ri_cprmask[0], reginfo.ri_cprmask[1],
+ reginfo.ri_cprmask[2], reginfo.ri_cprmask[3]);
+ }
+ ++option;
+ continue;
+ case ODK_EXCEPTIONS:
+ fputs (" EXCEPTIONS fpe_min(", stdout);
+ process_mips_fpe_exception (option->info & OEX_FPU_MIN);
+ fputs (") fpe_max(", stdout);
+ process_mips_fpe_exception ((option->info & OEX_FPU_MAX) >> 8);
+ fputs (")", stdout);
+
+ if (option->info & OEX_PAGE0)
+ fputs (" PAGE0", stdout);
+ if (option->info & OEX_SMM)
+ fputs (" SMM", stdout);
+ if (option->info & OEX_FPDBUG)
+ fputs (" FPDBUG", stdout);
+ if (option->info & OEX_DISMISS)
+ fputs (" DISMISS", stdout);
+ break;
+ case ODK_PAD:
+ fputs (" PAD ", stdout);
+ if (option->info & OPAD_PREFIX)
+ fputs (" PREFIX", stdout);
+ if (option->info & OPAD_POSTFIX)
+ fputs (" POSTFIX", stdout);
+ if (option->info & OPAD_SYMBOL)
+ fputs (" SYMBOL", stdout);
+ break;
+ case ODK_HWPATCH:
+ fputs (" HWPATCH ", stdout);
+ if (option->info & OHW_R4KEOP)
+ fputs (" R4KEOP", stdout);
+ if (option->info & OHW_R8KPFETCH)
+ fputs (" R8KPFETCH", stdout);
+ if (option->info & OHW_R5KEOP)
+ fputs (" R5KEOP", stdout);
+ if (option->info & OHW_R5KCVTL)
+ fputs (" R5KCVTL", stdout);
+ break;
+ case ODK_FILL:
+ fputs (" FILL ", stdout);
+ /* XXX Print content of info word? */
+ break;
+ case ODK_TAGS:
+ fputs (" TAGS ", stdout);
+ /* XXX Print content of info word? */
+ break;
+ case ODK_HWAND:
+ fputs (" HWAND ", stdout);
+ if (option->info & OHWA0_R4KEOP_CHECKED)
+ fputs (" R4KEOP_CHECKED", stdout);
+ if (option->info & OHWA0_R4KEOP_CLEAN)
+ fputs (" R4KEOP_CLEAN", stdout);
+ break;
+ case ODK_HWOR:
+ fputs (" HWOR ", stdout);
+ if (option->info & OHWA0_R4KEOP_CHECKED)
+ fputs (" R4KEOP_CHECKED", stdout);
+ if (option->info & OHWA0_R4KEOP_CLEAN)
+ fputs (" R4KEOP_CLEAN", stdout);
+ break;
+ case ODK_GP_GROUP:
+ printf (" GP_GROUP %#06lx self-contained %#06lx",
+ option->info & OGP_GROUP,
+ (option->info & OGP_SELF) >> 16);
+ break;
+ case ODK_IDENT:
+ printf (" IDENT %#06lx self-contained %#06lx",
+ option->info & OGP_GROUP,
+ (option->info & OGP_SELF) >> 16);
+ break;
+ default:
+ /* This shouldn't happen. */
+ printf (" %3d ??? %d %lx",
+ option->kind, option->section, option->info);
+ break;
+ }
+
+ len = sizeof (*eopt);
+ while (len < option->size)
+ if (((char *) option)[len] >= ' '
+ && ((char *) option)[len] < 0x7f)
+ printf ("%c", ((char *) option)[len++]);
+ else
+ printf ("\\%03o", ((char *) option)[len++]);
+
+ fputs ("\n", stdout);
+ ++option;
+ }
+
+ free (eopt);
+ }
+
+ if (conflicts_offset != 0 && conflictsno != 0)
+ {
+ Elf32_External_Conflict * econf32;
+ Elf64_External_Conflict * econf64;
+ Elf32_Conflict * iconf;
+ size_t cnt;
+
+ if (dynamic_symbols == NULL)
+ {
+ error (_("conflict list with without table"));
+ return 0;
+ }
+
+ iconf = (Elf32_Conflict *) malloc (conflictsno * sizeof (*iconf));
+ if (iconf == NULL)
+ {
+ error (_("Out of memory"));
+ return 0;
+ }
+
+ if (is_32bit_elf)
+ {
+ GET_DATA_ALLOC (conflicts_offset, conflictsno * sizeof (*econf32),
+ econf32, Elf32_External_Conflict *, "conflict");
+
+ for (cnt = 0; cnt < conflictsno; ++cnt)
+ iconf[cnt] = BYTE_GET (econf32[cnt]);
+ }
+ else
+ {
+ GET_DATA_ALLOC (conflicts_offset, conflictsno * sizeof (*econf64),
+ econf64, Elf64_External_Conflict *, "conflict");
+
+ for (cnt = 0; cnt < conflictsno; ++cnt)
+ iconf[cnt] = BYTE_GET (econf64[cnt]);
+ }
+
+ printf (_("\nSection '.conflict' contains %d entries:\n"), conflictsno);
+ puts (_(" Num: Index Value Name"));
+
+ for (cnt = 0; cnt < conflictsno; ++cnt)
+ {
+ Elf_Internal_Sym * psym = &dynamic_symbols[iconf[cnt]];
+
+ printf ("%5lu: %8lu ", (unsigned long) cnt, iconf[cnt]);
+ print_vma (psym->st_value, FULL_HEX);
+ printf (" %s\n", dynamic_strings + psym->st_name);
+ }
+
+ free (iconf);
+ }
+
+ return 1;
+}
+
+static char *
+get_note_type (e_type)
+ unsigned e_type;
+{
+ static char buff[64];
+
+ switch (e_type)
+ {
+ case NT_PRSTATUS: return _("NT_PRSTATUS (prstatus structure)");
+ case NT_FPREGSET: return _("NT_FPREGSET (floating point registers)");
+ case NT_PRPSINFO: return _("NT_PRPSINFO (prpsinfo structure)");
+ case NT_TASKSTRUCT: return _("NT_TASKSTRUCT (task structure)");
+ case NT_PRXFPREG: return _("NT_PRXFPREG (user_xfpregs structure)");
+ case NT_PSTATUS: return _("NT_PSTATUS (pstatus structure)");
+ case NT_FPREGS: return _("NT_FPREGS (floating point registers)");
+ case NT_PSINFO: return _("NT_PSINFO (psinfo structure)");
+ case NT_LWPSTATUS: return _("NT_LWPSTATUS (lwpstatus_t structure)");
+ case NT_LWPSINFO: return _("NT_LWPSINFO (lwpsinfo_t structure)");
+ case NT_WIN32PSTATUS: return _("NT_WIN32PSTATUS (win32_pstatus strcuture)");
+ default:
+ sprintf (buff, _("Unknown note type: (0x%08x)"), e_type);
+ return buff;
+ }
+}
+
+/* Note that by the ELF standard, the name field is already null byte
+ terminated, and namesz includes the terminating null byte.
+ I.E. the value of namesz for the name "FSF" is 4.
+
+ If the value of namesz is zero, there is no name present. */
+static int
+process_note (pnote)
+ Elf32_Internal_Note * pnote;
+{
+ printf (" %s\t\t0x%08lx\t%s\n",
+ pnote->namesz ? pnote->namedata : "(NONE)",
+ pnote->descsz, get_note_type (pnote->type));
+ return 1;
+}
+
+
+static int
+process_corefile_note_segment (file, offset, length)
+ FILE * file;
+ bfd_vma offset;
+ bfd_vma length;
+{
+ Elf_External_Note * pnotes;
+ Elf_External_Note * external;
+ int res = 1;
+
+ if (length <= 0)
+ return 0;
+
+ GET_DATA_ALLOC (offset, length, pnotes, Elf_External_Note *, "notes");
+
+ external = pnotes;
+
+ printf (_("\nNotes at offset 0x%08lx with length 0x%08lx:\n"),
+ (unsigned long) offset,
+ (unsigned long) length);
+ printf (_(" Owner\t\tData size\tDescription\n"));
+
+ while (external < (Elf_External_Note *)((char *) pnotes + length))
+ {
+ Elf32_Internal_Note inote;
+ char * temp = NULL;
+
+ inote.type = BYTE_GET (external->type);
+ inote.namesz = BYTE_GET (external->namesz);
+ inote.namedata = external->name;
+ inote.descsz = BYTE_GET (external->descsz);
+ inote.descdata = inote.namedata + align_power (inote.namesz, 2);
+ inote.descpos = offset + (inote.descdata - (char *) pnotes);
+
+ external = (Elf_External_Note *)(inote.descdata + align_power (inote.descsz, 2));
+
+ /* Verify that name is null terminated. It appears that at least
+ one version of Linux (RedHat 6.0) generates corefiles that don't
+ comply with the ELF spec by failing to include the null byte in
+ namesz. */
+ if (inote.namedata[inote.namesz] != '\0')
+ {
+ temp = malloc (inote.namesz + 1);
+
+ if (temp == NULL)
+ {
+ error (_("Out of memory\n"));
+ res = 0;
+ break;
+ }
+
+ strncpy (temp, inote.namedata, inote.namesz);
+ temp[inote.namesz] = 0;
+
+ /* warn (_("'%s' NOTE name not properly null terminated\n"), temp); */
+ inote.namedata = temp;
+ }
+
+ res &= process_note (& inote);
+
+ if (temp != NULL)
+ {
+ free (temp);
+ temp = NULL;
+ }
+ }
+
+ free (pnotes);
+
+ return res;
+}
+
+static int
+process_corefile_note_segments (file)
+ FILE * file;
+{
+ Elf_Internal_Phdr * program_headers;
+ Elf_Internal_Phdr * segment;
+ unsigned int i;
+ int res = 1;
+
+ program_headers = (Elf_Internal_Phdr *) malloc
+ (elf_header.e_phnum * sizeof (Elf_Internal_Phdr));
+
+ if (program_headers == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ if (is_32bit_elf)
+ i = get_32bit_program_headers (file, program_headers);
+ else
+ i = get_64bit_program_headers (file, program_headers);
+
+ if (i == 0)
+ {
+ free (program_headers);
+ return 0;
+ }
+
+ for (i = 0, segment = program_headers;
+ i < elf_header.e_phnum;
+ i ++, segment ++)
+ {
+ if (segment->p_type == PT_NOTE)
+ res &= process_corefile_note_segment (file,
+ (bfd_vma) segment->p_offset,
+ (bfd_vma) segment->p_filesz);
+ }
+
+ free (program_headers);
+
+ return res;
+}
+
+static int
+process_corefile_contents (file)
+ FILE * file;
+{
+ /* If we have not been asked to display the notes then do nothing. */
+ if (! do_notes)
+ return 1;
+
+ /* If file is not a core file then exit. */
+ if (elf_header.e_type != ET_CORE)
+ return 1;
+
+ /* No program headers means no NOTE segment. */
+ if (elf_header.e_phnum == 0)
+ {
+ printf (_("No note segments present in the core file.\n"));
+ return 1;
+ }
+
+ return process_corefile_note_segments (file);
+}
+
+static int
+process_arch_specific (file)
+ FILE * file;
+{
+ if (! do_arch)
+ return 1;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS4_BE:
+ return process_mips_specific (file);
+ break;
+ default:
+ break;
+ }
+ return 1;
+}
+
+static int
+get_file_header (file)
+ FILE * file;
+{
+ /* Read in the identity array. */
+ if (fread (elf_header.e_ident, EI_NIDENT, 1, file) != 1)
+ return 0;
+
+ /* Determine how to read the rest of the header. */
+ switch (elf_header.e_ident [EI_DATA])
+ {
+ default: /* fall through */
+ case ELFDATANONE: /* fall through */
+ case ELFDATA2LSB: byte_get = byte_get_little_endian; break;
+ case ELFDATA2MSB: byte_get = byte_get_big_endian; break;
+ }
+
+ /* For now we only support 32 bit and 64 bit ELF files. */
+ is_32bit_elf = (elf_header.e_ident [EI_CLASS] != ELFCLASS64);
+
+ /* Read in the rest of the header. */
+ if (is_32bit_elf)
+ {
+ Elf32_External_Ehdr ehdr32;
+
+ if (fread (ehdr32.e_type, sizeof (ehdr32) - EI_NIDENT, 1, file) != 1)
+ return 0;
+
+ elf_header.e_type = BYTE_GET (ehdr32.e_type);
+ elf_header.e_machine = BYTE_GET (ehdr32.e_machine);
+ elf_header.e_version = BYTE_GET (ehdr32.e_version);
+ elf_header.e_entry = BYTE_GET (ehdr32.e_entry);
+ elf_header.e_phoff = BYTE_GET (ehdr32.e_phoff);
+ elf_header.e_shoff = BYTE_GET (ehdr32.e_shoff);
+ elf_header.e_flags = BYTE_GET (ehdr32.e_flags);
+ elf_header.e_ehsize = BYTE_GET (ehdr32.e_ehsize);
+ elf_header.e_phentsize = BYTE_GET (ehdr32.e_phentsize);
+ elf_header.e_phnum = BYTE_GET (ehdr32.e_phnum);
+ elf_header.e_shentsize = BYTE_GET (ehdr32.e_shentsize);
+ elf_header.e_shnum = BYTE_GET (ehdr32.e_shnum);
+ elf_header.e_shstrndx = BYTE_GET (ehdr32.e_shstrndx);
+ }
+ else
+ {
+ Elf64_External_Ehdr ehdr64;
+
+ /* If we have been compiled with sizeof (bfd_vma) == 4, then
+ we will not be able to cope with the 64bit data found in
+ 64 ELF files. Detect this now and abort before we start
+ overwritting things. */
+ if (sizeof (bfd_vma) < 8)
+ {
+ error (_("This instance of readelf has been built without support for a\n"));
+ error (_("64 bit data type and so it cannot read 64 bit ELF files.\n"));
+ return 0;
+ }
+
+ if (fread (ehdr64.e_type, sizeof (ehdr64) - EI_NIDENT, 1, file) != 1)
+ return 0;
+
+ elf_header.e_type = BYTE_GET (ehdr64.e_type);
+ elf_header.e_machine = BYTE_GET (ehdr64.e_machine);
+ elf_header.e_version = BYTE_GET (ehdr64.e_version);
+ elf_header.e_entry = BYTE_GET8 (ehdr64.e_entry);
+ elf_header.e_phoff = BYTE_GET8 (ehdr64.e_phoff);
+ elf_header.e_shoff = BYTE_GET8 (ehdr64.e_shoff);
+ elf_header.e_flags = BYTE_GET (ehdr64.e_flags);
+ elf_header.e_ehsize = BYTE_GET (ehdr64.e_ehsize);
+ elf_header.e_phentsize = BYTE_GET (ehdr64.e_phentsize);
+ elf_header.e_phnum = BYTE_GET (ehdr64.e_phnum);
+ elf_header.e_shentsize = BYTE_GET (ehdr64.e_shentsize);
+ elf_header.e_shnum = BYTE_GET (ehdr64.e_shnum);
+ elf_header.e_shstrndx = BYTE_GET (ehdr64.e_shstrndx);
+ }
+
+ return 1;
+}
+
+static void
+process_file (file_name)
+ char * file_name;
+{
+ FILE * file;
+ struct stat statbuf;
+ unsigned int i;
+
+ if (stat (file_name, & statbuf) < 0)
+ {
+ error (_("Cannot stat input file %s.\n"), file_name);
+ return;
+ }
+
+ file = fopen (file_name, "rb");
+ if (file == NULL)
+ {
+ error (_("Input file %s not found.\n"), file_name);
+ return;
+ }
+
+ if (! get_file_header (file))
+ {
+ error (_("%s: Failed to read file header\n"), file_name);
+ fclose (file);
+ return;
+ }
+
+ /* Initialise per file variables. */
+ for (i = NUM_ELEM (version_info); i--;)
+ version_info[i] = 0;
+
+ for (i = NUM_ELEM (dynamic_info); i--;)
+ dynamic_info[i] = 0;
+
+ /* Process the file. */
+ if (show_name)
+ printf (_("\nFile: %s\n"), file_name);
+
+ if (! process_file_header ())
+ {
+ fclose (file);
+ return;
+ }
+
+ process_section_headers (file);
+
+ process_program_headers (file);
+
+ process_dynamic_segment (file);
+
+ process_relocs (file);
+
+ process_symbol_table (file);
+
+ process_syminfo (file);
+
+ process_version_sections (file);
+
+ process_section_contents (file);
+
+ process_corefile_contents (file);
+
+ process_arch_specific (file);
+
+ fclose (file);
+
+ if (section_headers)
+ {
+ free (section_headers);
+ section_headers = NULL;
+ }
+
+ if (string_table)
+ {
+ free (string_table);
+ string_table = NULL;
+ }
+
+ if (dynamic_strings)
+ {
+ free (dynamic_strings);
+ dynamic_strings = NULL;
+ }
+
+ if (dynamic_symbols)
+ {
+ free (dynamic_symbols);
+ dynamic_symbols = NULL;
+ num_dynamic_syms = 0;
+ }
+
+ if (dynamic_syminfo)
+ {
+ free (dynamic_syminfo);
+ dynamic_syminfo = NULL;
+ }
+}
+
+#ifdef SUPPORT_DISASSEMBLY
+/* Needed by the i386 disassembler. For extra credit, someone could
+ fix this so that we insert symbolic addresses here, esp for GOT/PLT
+ symbols */
+
+void
+print_address (unsigned int addr, FILE * outfile)
+{
+ fprintf (outfile,"0x%8.8x", addr);
+}
+
+/* Needed by the i386 disassembler. */
+void
+db_task_printsym (unsigned int addr)
+{
+ print_address (addr, stderr);
+}
+#endif
+
+int
+main (argc, argv)
+ int argc;
+ char ** argv;
+{
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ parse_args (argc, argv);
+
+ if (optind < (argc - 1))
+ show_name = 1;
+
+ while (optind < argc)
+ process_file (argv [optind ++]);
+
+ if (dump_sects != NULL)
+ free (dump_sects);
+
+ return 0;
+}
diff --git a/contrib/binutils/gas/config/tc-arm.c b/contrib/binutils/gas/config/tc-arm.c
new file mode 100644
index 000000000000..c6a197966932
--- /dev/null
+++ b/contrib/binutils/gas/config/tc-arm.c
@@ -0,0 +1,7236 @@
+/* tc-arm.c -- Assemble for the ARM
+ Copyright (C) 1994, 95, 96, 97, 98, 1999, 2000 Free Software Foundation, Inc.
+ Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+ Modified by David Taylor (dtaylor@armltd.co.uk)
+
+ This file is part of GAS, the GNU Assembler.
+
+ GAS is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ GAS is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GAS; see the file COPYING. If not, write to the Free
+ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
+
+#include <ctype.h>
+#include <string.h>
+#define NO_RELOC 0
+#include "as.h"
+
+/* need TARGET_CPU */
+#include "config.h"
+#include "subsegs.h"
+#include "obstack.h"
+#include "symbols.h"
+#include "listing.h"
+
+#ifdef OBJ_ELF
+#include "elf/arm.h"
+#endif
+
+/* Types of processor to assemble for. */
+#define ARM_1 0x00000001
+#define ARM_2 0x00000002
+#define ARM_3 0x00000004
+#define ARM_250 ARM_3
+#define ARM_6 0x00000008
+#define ARM_7 ARM_6 /* same core instruction set */
+#define ARM_8 ARM_6 /* same core instruction set */
+#define ARM_9 ARM_6 /* same core instruction set */
+#define ARM_CPU_MASK 0x0000000f
+
+/* The following bitmasks control CPU extensions (ARM7 onwards): */
+#define ARM_LONGMUL 0x00000010 /* allow long multiplies */
+#define ARM_HALFWORD 0x00000020 /* allow half word loads */
+#define ARM_THUMB 0x00000040 /* allow BX instruction */
+#define ARM_EXT_V5 0x00000080 /* allow CLZ etc */
+#define ARM_EXT_V5E 0x00000200 /* "El Segundo" */
+
+/* Architectures are the sum of the base and extensions. */
+#define ARM_ARCH_V4 (ARM_7 | ARM_LONGMUL | ARM_HALFWORD)
+#define ARM_ARCH_V4T (ARM_ARCH_V4 | ARM_THUMB)
+#define ARM_ARCH_V5 (ARM_ARCH_V4 | ARM_EXT_V5)
+#define ARM_ARCH_V5T (ARM_ARCH_V5 | ARM_THUMB)
+
+/* Some useful combinations: */
+#define ARM_ANY 0x00ffffff
+#define ARM_2UP (ARM_ANY - ARM_1)
+#define ARM_ALL ARM_2UP /* Not arm1 only */
+#define ARM_3UP 0x00fffffc
+#define ARM_6UP 0x00fffff8 /* Includes ARM7 */
+
+#define FPU_CORE 0x80000000
+#define FPU_FPA10 0x40000000
+#define FPU_FPA11 0x40000000
+#define FPU_NONE 0
+
+/* Some useful combinations */
+#define FPU_ALL 0xff000000 /* Note this is ~ARM_ANY */
+#define FPU_MEMMULTI 0x7f000000 /* Not fpu_core */
+
+
+#ifndef CPU_DEFAULT
+#if defined __thumb__
+#define CPU_DEFAULT (ARM_ARCH_V4 | ARM_THUMB)
+#else
+#define CPU_DEFAULT ARM_ALL
+#endif
+#endif
+
+#ifndef FPU_DEFAULT
+#define FPU_DEFAULT FPU_ALL
+#endif
+
+#define streq(a, b) (strcmp (a, b) == 0)
+#define skip_whitespace(str) while (* (str) == ' ') ++ (str)
+
+static unsigned long cpu_variant = CPU_DEFAULT | FPU_DEFAULT;
+static int target_oabi = 0;
+
+#if defined OBJ_COFF || defined OBJ_ELF
+/* Flags stored in private area of BFD structure */
+static boolean uses_apcs_26 = false;
+static boolean support_interwork = false;
+static boolean uses_apcs_float = false;
+static boolean pic_code = false;
+#endif
+
+/* This array holds the chars that always start a comment. If the
+ pre-processor is disabled, these aren't very useful. */
+CONST char comment_chars[] = "@";
+
+/* This array holds the chars that only start a comment at the beginning of
+ a line. If the line seems to have the form '# 123 filename'
+ .line and .file directives will appear in the pre-processed output. */
+/* Note that input_file.c hand checks for '#' at the beginning of the
+ first line of the input file. This is because the compiler outputs
+ #NO_APP at the beginning of its output. */
+/* Also note that comments like this one will always work. */
+CONST char line_comment_chars[] = "#";
+
+#ifdef TE_LINUX
+CONST char line_separator_chars[] = ";";
+#else
+CONST char line_separator_chars[] = "";
+#endif
+
+/* Chars that can be used to separate mant
+ from exp in floating point numbers. */
+CONST char EXP_CHARS[] = "eE";
+
+/* Chars that mean this number is a floating point constant */
+/* As in 0f12.456 */
+/* or 0d1.2345e12 */
+
+CONST char FLT_CHARS[] = "rRsSfFdDxXeEpP";
+
+/* Prefix characters that indicate the start of an immediate
+ value. */
+#define is_immediate_prefix(C) ((C) == '#' || (C) == '$')
+
+#ifdef OBJ_ELF
+symbolS * GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
+#endif
+
+CONST int md_reloc_size = 8; /* Size of relocation record */
+
+static int thumb_mode = 0; /* 0: assemble for ARM, 1: assemble for Thumb,
+ 2: assemble for Thumb even though target cpu
+ does not support thumb instructions. */
+typedef struct arm_fix
+{
+ int thumb_mode;
+} arm_fix_data;
+
+struct arm_it
+{
+ CONST char * error;
+ unsigned long instruction;
+ int suffix;
+ int size;
+ struct
+ {
+ bfd_reloc_code_real_type type;
+ expressionS exp;
+ int pc_rel;
+ } reloc;
+};
+
+struct arm_it inst;
+
+struct asm_shift
+{
+ CONST char * template;
+ unsigned long value;
+};
+
+static CONST struct asm_shift shift[] =
+{
+ {"asl", 0},
+ {"lsl", 0},
+ {"lsr", 0x00000020},
+ {"asr", 0x00000040},
+ {"ror", 0x00000060},
+ {"rrx", 0x00000060},
+ {"ASL", 0},
+ {"LSL", 0},
+ {"LSR", 0x00000020},
+ {"ASR", 0x00000040},
+ {"ROR", 0x00000060},
+ {"RRX", 0x00000060}
+};
+
+#define NO_SHIFT_RESTRICT 1
+#define SHIFT_RESTRICT 0
+
+#define NUM_FLOAT_VALS 8
+
+CONST char * fp_const[] =
+{
+ "0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "0.5", "10.0", 0
+};
+
+/* Number of littlenums required to hold an extended precision number. */
+#define MAX_LITTLENUMS 6
+
+LITTLENUM_TYPE fp_values[NUM_FLOAT_VALS][MAX_LITTLENUMS];
+
+#define FAIL (-1)
+#define SUCCESS (0)
+
+#define SUFF_S 1
+#define SUFF_D 2
+#define SUFF_E 3
+#define SUFF_P 4
+
+#define CP_T_X 0x00008000
+#define CP_T_Y 0x00400000
+#define CP_T_Pre 0x01000000
+#define CP_T_UD 0x00800000
+#define CP_T_WB 0x00200000
+
+#define CONDS_BIT (0x00100000)
+#define LOAD_BIT (0x00100000)
+#define TRANS_BIT (0x00200000)
+
+struct asm_cond
+{
+ CONST char * template;
+ unsigned long value;
+};
+
+/* This is to save a hash look-up in the common case. */
+#define COND_ALWAYS 0xe0000000
+
+static CONST struct asm_cond conds[] =
+{
+ {"eq", 0x00000000},
+ {"ne", 0x10000000},
+ {"cs", 0x20000000}, {"hs", 0x20000000},
+ {"cc", 0x30000000}, {"ul", 0x30000000}, {"lo", 0x30000000},
+ {"mi", 0x40000000},
+ {"pl", 0x50000000},
+ {"vs", 0x60000000},
+ {"vc", 0x70000000},
+ {"hi", 0x80000000},
+ {"ls", 0x90000000},
+ {"ge", 0xa0000000},
+ {"lt", 0xb0000000},
+ {"gt", 0xc0000000},
+ {"le", 0xd0000000},
+ {"al", 0xe0000000},
+ {"nv", 0xf0000000}
+};
+
+/* Warning: If the top bit of the set_bits is set, then the standard
+ instruction bitmask is ignored, and the new bitmask is taken from
+ the set_bits: */
+struct asm_flg
+{
+ CONST char * template; /* Basic flag string */
+ unsigned long set_bits; /* Bits to set */
+};
+
+static CONST struct asm_flg s_flag[] =
+{
+ {"s", CONDS_BIT},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg ldr_flags[] =
+{
+ {"b", 0x00400000},
+ {"t", TRANS_BIT},
+ {"bt", 0x00400000 | TRANS_BIT},
+ {"h", 0x801000b0},
+ {"sh", 0x801000f0},
+ {"sb", 0x801000d0},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg str_flags[] =
+{
+ {"b", 0x00400000},
+ {"t", TRANS_BIT},
+ {"bt", 0x00400000 | TRANS_BIT},
+ {"h", 0x800000b0},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg byte_flag[] =
+{
+ {"b", 0x00400000},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg cmp_flags[] =
+{
+ {"s", CONDS_BIT},
+ {"p", 0x0010f000},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg ldm_flags[] =
+{
+ {"ed", 0x01800000},
+ {"fd", 0x00800000},
+ {"ea", 0x01000000},
+ {"fa", 0x08000000},
+ {"ib", 0x01800000},
+ {"ia", 0x00800000},
+ {"db", 0x01000000},
+ {"da", 0x08000000},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg stm_flags[] =
+{
+ {"ed", 0x08000000},
+ {"fd", 0x01000000},
+ {"ea", 0x00800000},
+ {"fa", 0x01800000},
+ {"ib", 0x01800000},
+ {"ia", 0x00800000},
+ {"db", 0x01000000},
+ {"da", 0x08000000},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg lfm_flags[] =
+{
+ {"fd", 0x00800000},
+ {"ea", 0x01000000},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg sfm_flags[] =
+{
+ {"fd", 0x01000000},
+ {"ea", 0x00800000},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg round_flags[] =
+{
+ {"p", 0x00000020},
+ {"m", 0x00000040},
+ {"z", 0x00000060},
+ {NULL, 0}
+};
+
+/* The implementation of the FIX instruction is broken on some assemblers,
+ in that it accepts a precision specifier as well as a rounding specifier,
+ despite the fact that this is meaningless. To be more compatible, we
+ accept it as well, though of course it does not set any bits. */
+static CONST struct asm_flg fix_flags[] =
+{
+ {"p", 0x00000020},
+ {"m", 0x00000040},
+ {"z", 0x00000060},
+ {"sp", 0x00000020},
+ {"sm", 0x00000040},
+ {"sz", 0x00000060},
+ {"dp", 0x00000020},
+ {"dm", 0x00000040},
+ {"dz", 0x00000060},
+ {"ep", 0x00000020},
+ {"em", 0x00000040},
+ {"ez", 0x00000060},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg except_flag[] =
+{
+ {"e", 0x00400000},
+ {NULL, 0}
+};
+
+static CONST struct asm_flg cplong_flag[] =
+{
+ {"l", 0x00400000},
+ {NULL, 0}
+};
+
+struct asm_psr
+{
+ CONST char * template;
+ boolean cpsr;
+ unsigned long field;
+};
+
+#define SPSR_BIT (1 << 22) /* The bit that distnguishes CPSR and SPSR. */
+#define PSR_SHIFT 16 /* How many bits to shift the PSR_xxx bits up by. */
+
+#define PSR_c (1 << 0)
+#define PSR_x (1 << 1)
+#define PSR_s (1 << 2)
+#define PSR_f (1 << 3)
+
+static CONST struct asm_psr psrs[] =
+{
+ {"CPSR", true, PSR_c | PSR_f},
+ {"CPSR_all", true, PSR_c | PSR_f},
+ {"SPSR", false, PSR_c | PSR_f},
+ {"SPSR_all", false, PSR_c | PSR_f},
+ {"CPSR_flg", true, PSR_f},
+ {"CPSR_f", true, PSR_f},
+ {"SPSR_flg", false, PSR_f},
+ {"SPSR_f", false, PSR_f},
+ {"CPSR_c", true, PSR_c},
+ {"CPSR_ctl", true, PSR_c},
+ {"SPSR_c", false, PSR_c},
+ {"SPSR_ctl", false, PSR_c},
+ {"CPSR_x", true, PSR_x},
+ {"CPSR_s", true, PSR_s},
+ {"SPSR_x", false, PSR_x},
+ {"SPSR_s", false, PSR_s},
+ /* For backwards compatability with older toolchain we also
+ support lower case versions of some of these flags. */
+ {"cpsr", true, PSR_c | PSR_f},
+ {"cpsr_all", true, PSR_c | PSR_f},
+ {"spsr", false, PSR_c | PSR_f},
+ {"spsr_all", false, PSR_c | PSR_f},
+ {"cpsr_flg", true, PSR_f},
+ {"cpsr_f", true, PSR_f},
+ {"spsr_flg", false, PSR_f},
+ {"spsr_f", false, PSR_f},
+ {"cpsr_c", true, PSR_c},
+ {"cpsr_ctl", true, PSR_c},
+ {"spsr_c", false, PSR_c},
+ {"spsr_ctl", false, PSR_c}
+};
+
+/* Functions called by parser. */
+/* ARM instructions */
+static void do_arit PARAMS ((char *, unsigned long));
+static void do_cmp PARAMS ((char *, unsigned long));
+static void do_mov PARAMS ((char *, unsigned long));
+static void do_ldst PARAMS ((char *, unsigned long));
+static void do_ldmstm PARAMS ((char *, unsigned long));
+static void do_branch PARAMS ((char *, unsigned long));
+static void do_swi PARAMS ((char *, unsigned long));
+/* Pseudo Op codes */
+static void do_adr PARAMS ((char *, unsigned long));
+static void do_adrl PARAMS ((char *, unsigned long));
+static void do_nop PARAMS ((char *, unsigned long));
+/* ARM 2 */
+static void do_mul PARAMS ((char *, unsigned long));
+static void do_mla PARAMS ((char *, unsigned long));
+/* ARM 3 */
+static void do_swap PARAMS ((char *, unsigned long));
+/* ARM 6 */
+static void do_msr PARAMS ((char *, unsigned long));
+static void do_mrs PARAMS ((char *, unsigned long));
+/* ARM 7M */
+static void do_mull PARAMS ((char *, unsigned long));
+/* ARM THUMB */
+static void do_bx PARAMS ((char *, unsigned long));
+
+
+/* Coprocessor Instructions */
+static void do_cdp PARAMS ((char *, unsigned long));
+static void do_lstc PARAMS ((char *, unsigned long));
+static void do_co_reg PARAMS ((char *, unsigned long));
+static void do_fp_ctrl PARAMS ((char *, unsigned long));
+static void do_fp_ldst PARAMS ((char *, unsigned long));
+static void do_fp_ldmstm PARAMS ((char *, unsigned long));
+static void do_fp_dyadic PARAMS ((char *, unsigned long));
+static void do_fp_monadic PARAMS ((char *, unsigned long));
+static void do_fp_cmp PARAMS ((char *, unsigned long));
+static void do_fp_from_reg PARAMS ((char *, unsigned long));
+static void do_fp_to_reg PARAMS ((char *, unsigned long));
+
+static void fix_new_arm PARAMS ((fragS *, int, short, expressionS *, int, int));
+static int arm_reg_parse PARAMS ((char **));
+static CONST struct asm_psr * arm_psr_parse PARAMS ((char **));
+static void symbol_locate PARAMS ((symbolS *, CONST char *, segT, valueT, fragS *));
+static int add_to_lit_pool PARAMS ((void));
+static unsigned validate_immediate PARAMS ((unsigned));
+static unsigned validate_immediate_twopart PARAMS ((unsigned int, unsigned int *));
+static int validate_offset_imm PARAMS ((unsigned int, int));
+static void opcode_select PARAMS ((int));
+static void end_of_line PARAMS ((char *));
+static int reg_required_here PARAMS ((char **, int));
+static int psr_required_here PARAMS ((char **));
+static int co_proc_number PARAMS ((char **));
+static int cp_opc_expr PARAMS ((char **, int, int));
+static int cp_reg_required_here PARAMS ((char **, int));
+static int fp_reg_required_here PARAMS ((char **, int));
+static int cp_address_offset PARAMS ((char **));
+static int cp_address_required_here PARAMS ((char **));
+static int my_get_float_expression PARAMS ((char **));
+static int skip_past_comma PARAMS ((char **));
+static int walk_no_bignums PARAMS ((symbolS *));
+static int negate_data_op PARAMS ((unsigned long *, unsigned long));
+static int data_op2 PARAMS ((char **));
+static int fp_op2 PARAMS ((char **));
+static long reg_list PARAMS ((char **));
+static void thumb_load_store PARAMS ((char *, int, int));
+static int decode_shift PARAMS ((char **, int));
+static int ldst_extend PARAMS ((char **, int));
+static void thumb_add_sub PARAMS ((char *, int));
+static void insert_reg PARAMS ((int));
+static void thumb_shift PARAMS ((char *, int));
+static void thumb_mov_compare PARAMS ((char *, int));
+static void set_constant_flonums PARAMS ((void));
+static valueT md_chars_to_number PARAMS ((char *, int));
+static void insert_reg_alias PARAMS ((char *, int));
+static void output_inst PARAMS ((void));
+#ifdef OBJ_ELF
+static bfd_reloc_code_real_type arm_parse_reloc PARAMS ((void));
+#endif
+
+/* ARM instructions take 4bytes in the object file, Thumb instructions
+ take 2: */
+#define INSN_SIZE 4
+
+/* LONGEST_INST is the longest basic instruction name without conditions or
+ flags. ARM7M has 4 of length 5. */
+
+#define LONGEST_INST 5
+
+
+struct asm_opcode
+{
+ CONST char * template; /* Basic string to match */
+ unsigned long value; /* Basic instruction code */
+
+ /* Compulsory suffix that must follow conds. If "", then the
+ instruction is not conditional and must have no suffix. */
+ CONST char * comp_suffix;
+
+ CONST struct asm_flg * flags; /* Bits to toggle if flag 'n' set */
+ unsigned long variants; /* Which CPU variants this exists for */
+ /* Function to call to parse args */
+ void (* parms) PARAMS ((char *, unsigned long));
+};
+
+static CONST struct asm_opcode insns[] =
+{
+/* ARM Instructions */
+ {"and", 0x00000000, NULL, s_flag, ARM_ANY, do_arit},
+ {"eor", 0x00200000, NULL, s_flag, ARM_ANY, do_arit},
+ {"sub", 0x00400000, NULL, s_flag, ARM_ANY, do_arit},
+ {"rsb", 0x00600000, NULL, s_flag, ARM_ANY, do_arit},
+ {"add", 0x00800000, NULL, s_flag, ARM_ANY, do_arit},
+ {"adc", 0x00a00000, NULL, s_flag, ARM_ANY, do_arit},
+ {"sbc", 0x00c00000, NULL, s_flag, ARM_ANY, do_arit},
+ {"rsc", 0x00e00000, NULL, s_flag, ARM_ANY, do_arit},
+ {"orr", 0x01800000, NULL, s_flag, ARM_ANY, do_arit},
+ {"bic", 0x01c00000, NULL, s_flag, ARM_ANY, do_arit},
+ {"tst", 0x01000000, NULL, cmp_flags, ARM_ANY, do_cmp},
+ {"teq", 0x01200000, NULL, cmp_flags, ARM_ANY, do_cmp},
+ {"cmp", 0x01400000, NULL, cmp_flags, ARM_ANY, do_cmp},
+ {"cmn", 0x01600000, NULL, cmp_flags, ARM_ANY, do_cmp},
+ {"mov", 0x01a00000, NULL, s_flag, ARM_ANY, do_mov},
+ {"mvn", 0x01e00000, NULL, s_flag, ARM_ANY, do_mov},
+ {"str", 0x04000000, NULL, str_flags, ARM_ANY, do_ldst},
+ {"ldr", 0x04100000, NULL, ldr_flags, ARM_ANY, do_ldst},
+ {"stm", 0x08000000, NULL, stm_flags, ARM_ANY, do_ldmstm},
+ {"ldm", 0x08100000, NULL, ldm_flags, ARM_ANY, do_ldmstm},
+ {"swi", 0x0f000000, NULL, NULL, ARM_ANY, do_swi},
+#ifdef TE_WINCE
+ {"bl", 0x0b000000, NULL, NULL, ARM_ANY, do_branch},
+ {"b", 0x0a000000, NULL, NULL, ARM_ANY, do_branch},
+#else
+ {"bl", 0x0bfffffe, NULL, NULL, ARM_ANY, do_branch},
+ {"b", 0x0afffffe, NULL, NULL, ARM_ANY, do_branch},
+#endif
+
+/* Pseudo ops */
+ {"adr", 0x028f0000, NULL, NULL, ARM_ANY, do_adr},
+ {"adrl", 0x028f0000, NULL, NULL, ARM_ANY, do_adrl},
+ {"nop", 0x01a00000, NULL, NULL, ARM_ANY, do_nop},
+
+/* ARM 2 multiplies */
+ {"mul", 0x00000090, NULL, s_flag, ARM_2UP, do_mul},
+ {"mla", 0x00200090, NULL, s_flag, ARM_2UP, do_mla},
+
+/* ARM 3 - swp instructions */
+ {"swp", 0x01000090, NULL, byte_flag, ARM_3UP, do_swap},
+
+/* ARM 6 Coprocessor instructions */
+ {"mrs", 0x010f0000, NULL, NULL, ARM_6UP, do_mrs},
+ {"msr", 0x0120f000, NULL, NULL, ARM_6UP, do_msr},
+/* ScottB: our code uses 0x0128f000 for msr.
+ NickC: but this is wrong because the bits 16 through 19 are
+ handled by the PSR_xxx defines above. */
+
+/* ARM 7M long multiplies - need signed/unsigned flags! */
+ {"smull", 0x00c00090, NULL, s_flag, ARM_LONGMUL, do_mull},
+ {"umull", 0x00800090, NULL, s_flag, ARM_LONGMUL, do_mull},
+ {"smlal", 0x00e00090, NULL, s_flag, ARM_LONGMUL, do_mull},
+ {"umlal", 0x00a00090, NULL, s_flag, ARM_LONGMUL, do_mull},
+
+/* ARM THUMB interworking */
+ {"bx", 0x012fff10, NULL, NULL, ARM_THUMB, do_bx},
+
+/* Floating point instructions */
+ {"wfs", 0x0e200110, NULL, NULL, FPU_ALL, do_fp_ctrl},
+ {"rfs", 0x0e300110, NULL, NULL, FPU_ALL, do_fp_ctrl},
+ {"wfc", 0x0e400110, NULL, NULL, FPU_ALL, do_fp_ctrl},
+ {"rfc", 0x0e500110, NULL, NULL, FPU_ALL, do_fp_ctrl},
+ {"ldf", 0x0c100100, "sdep", NULL, FPU_ALL, do_fp_ldst},
+ {"stf", 0x0c000100, "sdep", NULL, FPU_ALL, do_fp_ldst},
+ {"lfm", 0x0c100200, NULL, lfm_flags, FPU_MEMMULTI, do_fp_ldmstm},
+ {"sfm", 0x0c000200, NULL, sfm_flags, FPU_MEMMULTI, do_fp_ldmstm},
+ {"mvf", 0x0e008100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"mnf", 0x0e108100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"abs", 0x0e208100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"rnd", 0x0e308100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"sqt", 0x0e408100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"log", 0x0e508100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"lgn", 0x0e608100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"exp", 0x0e708100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"sin", 0x0e808100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"cos", 0x0e908100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"tan", 0x0ea08100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"asn", 0x0eb08100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"acs", 0x0ec08100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"atn", 0x0ed08100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"urd", 0x0ee08100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"nrm", 0x0ef08100, "sde", round_flags, FPU_ALL, do_fp_monadic},
+ {"adf", 0x0e000100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"suf", 0x0e200100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"rsf", 0x0e300100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"muf", 0x0e100100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"dvf", 0x0e400100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"rdf", 0x0e500100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"pow", 0x0e600100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"rpw", 0x0e700100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"rmf", 0x0e800100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"fml", 0x0e900100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"fdv", 0x0ea00100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"frd", 0x0eb00100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"pol", 0x0ec00100, "sde", round_flags, FPU_ALL, do_fp_dyadic},
+ {"cmf", 0x0e90f110, NULL, except_flag, FPU_ALL, do_fp_cmp},
+ {"cnf", 0x0eb0f110, NULL, except_flag, FPU_ALL, do_fp_cmp},
+/* The FPA10 data sheet suggests that the 'E' of cmfe/cnfe should not
+ be an optional suffix, but part of the instruction. To be compatible,
+ we accept either. */
+ {"cmfe", 0x0ed0f110, NULL, NULL, FPU_ALL, do_fp_cmp},
+ {"cnfe", 0x0ef0f110, NULL, NULL, FPU_ALL, do_fp_cmp},
+ {"flt", 0x0e000110, "sde", round_flags, FPU_ALL, do_fp_from_reg},
+ {"fix", 0x0e100110, NULL, fix_flags, FPU_ALL, do_fp_to_reg},
+
+/* Generic copressor instructions. */
+ {"cdp", 0x0e000000, NULL, NULL, ARM_2UP, do_cdp},
+ {"ldc", 0x0c100000, NULL, cplong_flag, ARM_2UP, do_lstc},
+ {"stc", 0x0c000000, NULL, cplong_flag, ARM_2UP, do_lstc},
+ {"mcr", 0x0e000010, NULL, NULL, ARM_2UP, do_co_reg},
+ {"mrc", 0x0e100010, NULL, NULL, ARM_2UP, do_co_reg},
+};
+
+/* Defines for various bits that we will want to toggle. */
+#define INST_IMMEDIATE 0x02000000
+#define OFFSET_REG 0x02000000
+#define HWOFFSET_IMM 0x00400000
+#define SHIFT_BY_REG 0x00000010
+#define PRE_INDEX 0x01000000
+#define INDEX_UP 0x00800000
+#define WRITE_BACK 0x00200000
+#define LDM_TYPE_2_OR_3 0x00400000
+
+#define LITERAL_MASK 0xf000f000
+#define COND_MASK 0xf0000000
+#define OPCODE_MASK 0xfe1fffff
+#define DATA_OP_SHIFT 21
+
+/* Codes to distinguish the arithmetic instructions. */
+#define OPCODE_AND 0
+#define OPCODE_EOR 1
+#define OPCODE_SUB 2
+#define OPCODE_RSB 3
+#define OPCODE_ADD 4
+#define OPCODE_ADC 5
+#define OPCODE_SBC 6
+#define OPCODE_RSC 7
+#define OPCODE_TST 8
+#define OPCODE_TEQ 9
+#define OPCODE_CMP 10
+#define OPCODE_CMN 11
+#define OPCODE_ORR 12
+#define OPCODE_MOV 13
+#define OPCODE_BIC 14
+#define OPCODE_MVN 15
+
+static void do_t_nop PARAMS ((char *));
+static void do_t_arit PARAMS ((char *));
+static void do_t_add PARAMS ((char *));
+static void do_t_asr PARAMS ((char *));
+static void do_t_branch9 PARAMS ((char *));
+static void do_t_branch12 PARAMS ((char *));
+static void do_t_branch23 PARAMS ((char *));
+static void do_t_bx PARAMS ((char *));
+static void do_t_compare PARAMS ((char *));
+static void do_t_ldmstm PARAMS ((char *));
+static void do_t_ldr PARAMS ((char *));
+static void do_t_ldrb PARAMS ((char *));
+static void do_t_ldrh PARAMS ((char *));
+static void do_t_lds PARAMS ((char *));
+static void do_t_lsl PARAMS ((char *));
+static void do_t_lsr PARAMS ((char *));
+static void do_t_mov PARAMS ((char *));
+static void do_t_push_pop PARAMS ((char *));
+static void do_t_str PARAMS ((char *));
+static void do_t_strb PARAMS ((char *));
+static void do_t_strh PARAMS ((char *));
+static void do_t_sub PARAMS ((char *));
+static void do_t_swi PARAMS ((char *));
+static void do_t_adr PARAMS ((char *));
+
+#define T_OPCODE_MUL 0x4340
+#define T_OPCODE_TST 0x4200
+#define T_OPCODE_CMN 0x42c0
+#define T_OPCODE_NEG 0x4240
+#define T_OPCODE_MVN 0x43c0
+
+#define T_OPCODE_ADD_R3 0x1800
+#define T_OPCODE_SUB_R3 0x1a00
+#define T_OPCODE_ADD_HI 0x4400
+#define T_OPCODE_ADD_ST 0xb000
+#define T_OPCODE_SUB_ST 0xb080
+#define T_OPCODE_ADD_SP 0xa800
+#define T_OPCODE_ADD_PC 0xa000
+#define T_OPCODE_ADD_I8 0x3000
+#define T_OPCODE_SUB_I8 0x3800
+#define T_OPCODE_ADD_I3 0x1c00
+#define T_OPCODE_SUB_I3 0x1e00
+
+#define T_OPCODE_ASR_R 0x4100
+#define T_OPCODE_LSL_R 0x4080
+#define T_OPCODE_LSR_R 0x40c0
+#define T_OPCODE_ASR_I 0x1000
+#define T_OPCODE_LSL_I 0x0000
+#define T_OPCODE_LSR_I 0x0800
+
+#define T_OPCODE_MOV_I8 0x2000
+#define T_OPCODE_CMP_I8 0x2800
+#define T_OPCODE_CMP_LR 0x4280
+#define T_OPCODE_MOV_HR 0x4600
+#define T_OPCODE_CMP_HR 0x4500
+
+#define T_OPCODE_LDR_PC 0x4800
+#define T_OPCODE_LDR_SP 0x9800
+#define T_OPCODE_STR_SP 0x9000
+#define T_OPCODE_LDR_IW 0x6800
+#define T_OPCODE_STR_IW 0x6000
+#define T_OPCODE_LDR_IH 0x8800
+#define T_OPCODE_STR_IH 0x8000
+#define T_OPCODE_LDR_IB 0x7800
+#define T_OPCODE_STR_IB 0x7000
+#define T_OPCODE_LDR_RW 0x5800
+#define T_OPCODE_STR_RW 0x5000
+#define T_OPCODE_LDR_RH 0x5a00
+#define T_OPCODE_STR_RH 0x5200
+#define T_OPCODE_LDR_RB 0x5c00
+#define T_OPCODE_STR_RB 0x5400
+
+#define T_OPCODE_PUSH 0xb400
+#define T_OPCODE_POP 0xbc00
+
+#define T_OPCODE_BRANCH 0xe7fe
+
+static int thumb_reg PARAMS ((char ** str, int hi_lo));
+
+#define THUMB_SIZE 2 /* Size of thumb instruction. */
+#define THUMB_REG_LO 0x1
+#define THUMB_REG_HI 0x2
+#define THUMB_REG_ANY 0x3
+
+#define THUMB_H1 0x0080
+#define THUMB_H2 0x0040
+
+#define THUMB_ASR 0
+#define THUMB_LSL 1
+#define THUMB_LSR 2
+
+#define THUMB_MOVE 0
+#define THUMB_COMPARE 1
+
+#define THUMB_LOAD 0
+#define THUMB_STORE 1
+
+#define THUMB_PP_PC_LR 0x0100
+
+/* These three are used for immediate shifts, do not alter. */
+#define THUMB_WORD 2
+#define THUMB_HALFWORD 1
+#define THUMB_BYTE 0
+
+struct thumb_opcode
+{
+ CONST char * template; /* Basic string to match */
+ unsigned long value; /* Basic instruction code */
+ int size;
+ unsigned long variants; /* Which CPU variants this exists for */
+ void (* parms) PARAMS ((char *)); /* Function to call to parse args */
+};
+
+static CONST struct thumb_opcode tinsns[] =
+{
+ {"adc", 0x4140, 2, ARM_THUMB, do_t_arit},
+ {"add", 0x0000, 2, ARM_THUMB, do_t_add},
+ {"and", 0x4000, 2, ARM_THUMB, do_t_arit},
+ {"asr", 0x0000, 2, ARM_THUMB, do_t_asr},
+ {"b", T_OPCODE_BRANCH, 2, ARM_THUMB, do_t_branch12},
+ {"beq", 0xd0fe, 2, ARM_THUMB, do_t_branch9},
+ {"bne", 0xd1fe, 2, ARM_THUMB, do_t_branch9},
+ {"bcs", 0xd2fe, 2, ARM_THUMB, do_t_branch9},
+ {"bhs", 0xd2fe, 2, ARM_THUMB, do_t_branch9},
+ {"bcc", 0xd3fe, 2, ARM_THUMB, do_t_branch9},
+ {"bul", 0xd3fe, 2, ARM_THUMB, do_t_branch9},
+ {"blo", 0xd3fe, 2, ARM_THUMB, do_t_branch9},
+ {"bmi", 0xd4fe, 2, ARM_THUMB, do_t_branch9},
+ {"bpl", 0xd5fe, 2, ARM_THUMB, do_t_branch9},
+ {"bvs", 0xd6fe, 2, ARM_THUMB, do_t_branch9},
+ {"bvc", 0xd7fe, 2, ARM_THUMB, do_t_branch9},
+ {"bhi", 0xd8fe, 2, ARM_THUMB, do_t_branch9},
+ {"bls", 0xd9fe, 2, ARM_THUMB, do_t_branch9},
+ {"bge", 0xdafe, 2, ARM_THUMB, do_t_branch9},
+ {"blt", 0xdbfe, 2, ARM_THUMB, do_t_branch9},
+ {"bgt", 0xdcfe, 2, ARM_THUMB, do_t_branch9},
+ {"ble", 0xddfe, 2, ARM_THUMB, do_t_branch9},
+ {"bal", 0xdefe, 2, ARM_THUMB, do_t_branch9},
+ {"bic", 0x4380, 2, ARM_THUMB, do_t_arit},
+ {"bl", 0xf7fffffe, 4, ARM_THUMB, do_t_branch23},
+ {"bx", 0x4700, 2, ARM_THUMB, do_t_bx},
+ {"cmn", T_OPCODE_CMN, 2, ARM_THUMB, do_t_arit},
+ {"cmp", 0x0000, 2, ARM_THUMB, do_t_compare},
+ {"eor", 0x4040, 2, ARM_THUMB, do_t_arit},
+ {"ldmia", 0xc800, 2, ARM_THUMB, do_t_ldmstm},
+ {"ldr", 0x0000, 2, ARM_THUMB, do_t_ldr},
+ {"ldrb", 0x0000, 2, ARM_THUMB, do_t_ldrb},
+ {"ldrh", 0x0000, 2, ARM_THUMB, do_t_ldrh},
+ {"ldrsb", 0x5600, 2, ARM_THUMB, do_t_lds},
+ {"ldrsh", 0x5e00, 2, ARM_THUMB, do_t_lds},
+ {"ldsb", 0x5600, 2, ARM_THUMB, do_t_lds},
+ {"ldsh", 0x5e00, 2, ARM_THUMB, do_t_lds},
+ {"lsl", 0x0000, 2, ARM_THUMB, do_t_lsl},
+ {"lsr", 0x0000, 2, ARM_THUMB, do_t_lsr},
+ {"mov", 0x0000, 2, ARM_THUMB, do_t_mov},
+ {"mul", T_OPCODE_MUL, 2, ARM_THUMB, do_t_arit},
+ {"mvn", T_OPCODE_MVN, 2, ARM_THUMB, do_t_arit},
+ {"neg", T_OPCODE_NEG, 2, ARM_THUMB, do_t_arit},
+ {"orr", 0x4300, 2, ARM_THUMB, do_t_arit},
+ {"pop", 0xbc00, 2, ARM_THUMB, do_t_push_pop},
+ {"push", 0xb400, 2, ARM_THUMB, do_t_push_pop},
+ {"ror", 0x41c0, 2, ARM_THUMB, do_t_arit},
+ {"sbc", 0x4180, 2, ARM_THUMB, do_t_arit},
+ {"stmia", 0xc000, 2, ARM_THUMB, do_t_ldmstm},
+ {"str", 0x0000, 2, ARM_THUMB, do_t_str},
+ {"strb", 0x0000, 2, ARM_THUMB, do_t_strb},
+ {"strh", 0x0000, 2, ARM_THUMB, do_t_strh},
+ {"swi", 0xdf00, 2, ARM_THUMB, do_t_swi},
+ {"sub", 0x0000, 2, ARM_THUMB, do_t_sub},
+ {"tst", T_OPCODE_TST, 2, ARM_THUMB, do_t_arit},
+ /* Pseudo ops: */
+ {"adr", 0x0000, 2, ARM_THUMB, do_t_adr},
+ {"nop", 0x46C0, 2, ARM_THUMB, do_t_nop}, /* mov r8,r8 */
+};
+
+struct reg_entry
+{
+ CONST char * name;
+ int number;
+};
+
+#define int_register(reg) ((reg) >= 0 && (reg) <= 15)
+#define cp_register(reg) ((reg) >= 32 && (reg) <= 47)
+#define fp_register(reg) ((reg) >= 16 && (reg) <= 23)
+
+#define REG_PC 15
+#define REG_LR 14
+#define REG_SP 13
+
+/* These are the standard names. Users can add aliases with .req */
+static CONST struct reg_entry reg_table[] =
+{
+ /* Processor Register Numbers. */
+ {"r0", 0}, {"r1", 1}, {"r2", 2}, {"r3", 3},
+ {"r4", 4}, {"r5", 5}, {"r6", 6}, {"r7", 7},
+ {"r8", 8}, {"r9", 9}, {"r10", 10}, {"r11", 11},
+ {"r12", 12}, {"r13", REG_SP},{"r14", REG_LR},{"r15", REG_PC},
+ /* APCS conventions. */
+ {"a1", 0}, {"a2", 1}, {"a3", 2}, {"a4", 3},
+ {"v1", 4}, {"v2", 5}, {"v3", 6}, {"v4", 7}, {"v5", 8},
+ {"v6", 9}, {"sb", 9}, {"v7", 10}, {"sl", 10},
+ {"fp", 11}, {"ip", 12}, {"sp", REG_SP},{"lr", REG_LR},{"pc", REG_PC},
+ /* ATPCS additions to APCS conventions. */
+ {"wr", 7}, {"v8", 11},
+ /* FP Registers. */
+ {"f0", 16}, {"f1", 17}, {"f2", 18}, {"f3", 19},
+ {"f4", 20}, {"f5", 21}, {"f6", 22}, {"f7", 23},
+ {"c0", 32}, {"c1", 33}, {"c2", 34}, {"c3", 35},
+ {"c4", 36}, {"c5", 37}, {"c6", 38}, {"c7", 39},
+ {"c8", 40}, {"c9", 41}, {"c10", 42}, {"c11", 43},
+ {"c12", 44}, {"c13", 45}, {"c14", 46}, {"c15", 47},
+ {"cr0", 32}, {"cr1", 33}, {"cr2", 34}, {"cr3", 35},
+ {"cr4", 36}, {"cr5", 37}, {"cr6", 38}, {"cr7", 39},
+ {"cr8", 40}, {"cr9", 41}, {"cr10", 42}, {"cr11", 43},
+ {"cr12", 44}, {"cr13", 45}, {"cr14", 46}, {"cr15", 47},
+ /* ATPCS additions to float register names. */
+ {"s0",16}, {"s1",17}, {"s2",18}, {"s3",19},
+ {"s4",20}, {"s5",21}, {"s6",22}, {"s7",23},
+ {"d0",16}, {"d1",17}, {"d2",18}, {"d3",19},
+ {"d4",20}, {"d5",21}, {"d6",22}, {"d7",23},
+ /* FIXME: At some point we need to add VFP register names. */
+ /* Array terminator. */
+ {NULL, 0}
+};
+
+#define BAD_ARGS _("Bad arguments to instruction")
+#define BAD_PC _("r15 not allowed here")
+#define BAD_FLAGS _("Instruction should not have flags")
+#define BAD_COND _("Instruction is not conditional")
+
+static struct hash_control * arm_ops_hsh = NULL;
+static struct hash_control * arm_tops_hsh = NULL;
+static struct hash_control * arm_cond_hsh = NULL;
+static struct hash_control * arm_shift_hsh = NULL;
+static struct hash_control * arm_reg_hsh = NULL;
+static struct hash_control * arm_psr_hsh = NULL;
+
+/* This table describes all the machine specific pseudo-ops the assembler
+ has to support. The fields are:
+ pseudo-op name without dot
+ function to call to execute this pseudo-op
+ Integer arg to pass to the function. */
+
+static void s_req PARAMS ((int));
+static void s_align PARAMS ((int));
+static void s_bss PARAMS ((int));
+static void s_even PARAMS ((int));
+static void s_ltorg PARAMS ((int));
+static void s_arm PARAMS ((int));
+static void s_thumb PARAMS ((int));
+static void s_code PARAMS ((int));
+static void s_force_thumb PARAMS ((int));
+static void s_thumb_func PARAMS ((int));
+static void s_thumb_set PARAMS ((int));
+static void arm_s_text PARAMS ((int));
+static void arm_s_data PARAMS ((int));
+#ifdef OBJ_ELF
+static void arm_s_section PARAMS ((int));
+static void s_arm_elf_cons PARAMS ((int));
+#endif
+
+static int my_get_expression PARAMS ((expressionS *, char **));
+
+CONST pseudo_typeS md_pseudo_table[] =
+{
+ { "req", s_req, 0 }, /* Never called becasue '.req' does not start line */
+ { "bss", s_bss, 0 },
+ { "align", s_align, 0 },
+ { "arm", s_arm, 0 },
+ { "thumb", s_thumb, 0 },
+ { "code", s_code, 0 },
+ { "force_thumb", s_force_thumb, 0 },
+ { "thumb_func", s_thumb_func, 0 },
+ { "thumb_set", s_thumb_set, 0 },
+ { "even", s_even, 0 },
+ { "ltorg", s_ltorg, 0 },
+ { "pool", s_ltorg, 0 },
+ /* Allow for the effect of section changes. */
+ { "text", arm_s_text, 0 },
+ { "data", arm_s_data, 0 },
+#ifdef OBJ_ELF
+ { "section", arm_s_section, 0 },
+ { "section.s", arm_s_section, 0 },
+ { "sect", arm_s_section, 0 },
+ { "sect.s", arm_s_section, 0 },
+ { "word", s_arm_elf_cons, 4 },
+ { "long", s_arm_elf_cons, 4 },
+#else
+ { "word", cons, 4},
+#endif
+ { "extend", float_cons, 'x' },
+ { "ldouble", float_cons, 'x' },
+ { "packed", float_cons, 'p' },
+ { 0, 0, 0 }
+};
+
+/* Stuff needed to resolve the label ambiguity
+ As:
+ ...
+ label: <insn>
+ may differ from:
+ ...
+ label:
+ <insn>
+*/
+
+symbolS * last_label_seen;
+static int label_is_thumb_function_name = false;
+
+/* Literal stuff */
+
+#define MAX_LITERAL_POOL_SIZE 1024
+
+typedef struct literalS
+{
+ struct expressionS exp;
+ struct arm_it * inst;
+} literalT;
+
+literalT literals[MAX_LITERAL_POOL_SIZE];
+int next_literal_pool_place = 0; /* Next free entry in the pool */
+int lit_pool_num = 1; /* Next literal pool number */
+symbolS * current_poolP = NULL;
+
+static int
+add_to_lit_pool ()
+{
+ int lit_count = 0;
+
+ if (current_poolP == NULL)
+ current_poolP = symbol_create (FAKE_LABEL_NAME, undefined_section,
+ (valueT) 0, &zero_address_frag);
+
+ /* Check if this literal value is already in the pool: */
+ while (lit_count < next_literal_pool_place)
+ {
+ if (literals[lit_count].exp.X_op == inst.reloc.exp.X_op
+ && inst.reloc.exp.X_op == O_constant
+ && literals[lit_count].exp.X_add_number
+ == inst.reloc.exp.X_add_number
+ && literals[lit_count].exp.X_unsigned == inst.reloc.exp.X_unsigned)
+ break;
+ lit_count++;
+ }
+
+ if (lit_count == next_literal_pool_place) /* new entry */
+ {
+ if (next_literal_pool_place > MAX_LITERAL_POOL_SIZE)
+ {
+ inst.error = _("Literal Pool Overflow");
+ return FAIL;
+ }
+
+ literals[next_literal_pool_place].exp = inst.reloc.exp;
+ lit_count = next_literal_pool_place++;
+ }
+
+ inst.reloc.exp.X_op = O_symbol;
+ inst.reloc.exp.X_add_number = (lit_count) * 4 - 8;
+ inst.reloc.exp.X_add_symbol = current_poolP;
+
+ return SUCCESS;
+}
+
+/* Can't use symbol_new here, so have to create a symbol and then at
+ a later date assign it a value. Thats what these functions do. */
+static void
+symbol_locate (symbolP, name, segment, valu, frag)
+ symbolS * symbolP;
+ CONST char * name; /* It is copied, the caller can modify */
+ segT segment; /* Segment identifier (SEG_<something>) */
+ valueT valu; /* Symbol value */
+ fragS * frag; /* Associated fragment */
+{
+ unsigned int name_length;
+ char * preserved_copy_of_name;
+
+ name_length = strlen (name) + 1; /* +1 for \0 */
+ obstack_grow (&notes, name, name_length);
+ preserved_copy_of_name = obstack_finish (&notes);
+#ifdef STRIP_UNDERSCORE
+ if (preserved_copy_of_name[0] == '_')
+ preserved_copy_of_name++;
+#endif
+
+#ifdef tc_canonicalize_symbol_name
+ preserved_copy_of_name =
+ tc_canonicalize_symbol_name (preserved_copy_of_name);
+#endif
+
+ S_SET_NAME (symbolP, preserved_copy_of_name);
+
+ S_SET_SEGMENT (symbolP, segment);
+ S_SET_VALUE (symbolP, valu);
+ symbol_clear_list_pointers(symbolP);
+
+ symbol_set_frag (symbolP, frag);
+
+ /* Link to end of symbol chain. */
+ {
+ extern int symbol_table_frozen;
+ if (symbol_table_frozen)
+ abort ();
+ }
+
+ symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
+
+ obj_symbol_new_hook (symbolP);
+
+#ifdef tc_symbol_new_hook
+ tc_symbol_new_hook (symbolP);
+#endif
+
+#ifdef DEBUG_SYMS
+ verify_symbol_chain (symbol_rootP, symbol_lastP);
+#endif /* DEBUG_SYMS */
+}
+
+/* Check that an immediate is valid, and if so,
+ convert it to the right format. */
+static unsigned int
+validate_immediate (val)
+ unsigned int val;
+{
+ unsigned int a;
+ unsigned int i;
+
+#define rotate_left(v, n) (v << n | v >> (32 - n))
+
+ for (i = 0; i < 32; i += 2)
+ if ((a = rotate_left (val, i)) <= 0xff)
+ return a | (i << 7); /* 12-bit pack: [shift-cnt,const] */
+
+ return FAIL;
+}
+
+/* Check to see if an immediate can be computed as two seperate immediate
+ values, added together. We already know that this value cannot be
+ computed by just one ARM instruction. */
+static unsigned int
+validate_immediate_twopart (val, highpart)
+ unsigned int val;
+ unsigned int * highpart;
+{
+ unsigned int a;
+ unsigned int i;
+
+ for (i = 0; i < 32; i += 2)
+ if (((a = rotate_left (val, i)) & 0xff) != 0)
+ {
+ if (a & 0xff00)
+ {
+ if (a & ~ 0xffff)
+ continue;
+ * highpart = (a >> 8) | ((i + 24) << 7);
+ }
+ else if (a & 0xff0000)
+ {
+ if (a & 0xff000000)
+ continue;
+
+ * highpart = (a >> 16) | ((i + 16) << 7);
+ }
+ else
+ {
+ assert (a & 0xff000000);
+
+ * highpart = (a >> 24) | ((i + 8) << 7);
+ }
+
+ return (a & 0xff) | (i << 7);
+ }
+
+ return FAIL;
+}
+
+static int
+validate_offset_imm (val, hwse)
+ unsigned int val;
+ int hwse;
+{
+ if ((hwse && val > 255) || val > 4095)
+ return FAIL;
+ return val;
+}
+
+
+static void
+s_req (a)
+ int a ATTRIBUTE_UNUSED;
+{
+ as_bad (_("Invalid syntax for .req directive."));
+}
+
+static void
+s_bss (ignore)
+ int ignore ATTRIBUTE_UNUSED;
+{
+ /* We don't support putting frags in the BSS segment, we fake it by
+ marking in_bss, then looking at s_skip for clues?.. */
+ subseg_set (bss_section, 0);
+ demand_empty_rest_of_line ();
+}
+
+static void
+s_even (ignore)
+ int ignore ATTRIBUTE_UNUSED;
+{
+ if (!need_pass_2) /* Never make frag if expect extra pass. */
+ frag_align (1, 0, 0);
+
+ record_alignment (now_seg, 1);
+
+ demand_empty_rest_of_line ();
+}
+
+static void
+s_ltorg (ignored)
+ int ignored ATTRIBUTE_UNUSED;
+{
+ int lit_count = 0;
+ char sym_name[20];
+
+ if (current_poolP == NULL)
+ return;
+
+ /* Align pool as you have word accesses */
+ /* Only make a frag if we have to ... */
+ if (!need_pass_2)
+ frag_align (2, 0, 0);
+
+ record_alignment (now_seg, 2);
+
+ sprintf (sym_name, "$$lit_\002%x", lit_pool_num++);
+
+ symbol_locate (current_poolP, sym_name, now_seg,
+ (valueT) frag_now_fix (), frag_now);
+ symbol_table_insert (current_poolP);
+
+ ARM_SET_THUMB (current_poolP, thumb_mode);
+
+#if defined OBJ_COFF || defined OBJ_ELF
+ ARM_SET_INTERWORK (current_poolP, support_interwork);
+#endif
+
+ while (lit_count < next_literal_pool_place)
+ /* First output the expression in the instruction to the pool. */
+ emit_expr (&(literals[lit_count++].exp), 4); /* .word */
+
+ next_literal_pool_place = 0;
+ current_poolP = NULL;
+}
+
+static void
+s_align (unused) /* Same as s_align_ptwo but align 0 => align 2 */
+ int unused ATTRIBUTE_UNUSED;
+{
+ register int temp;
+ register long temp_fill;
+ long max_alignment = 15;
+
+ temp = get_absolute_expression ();
+ if (temp > max_alignment)
+ as_bad (_("Alignment too large: %d. assumed."), temp = max_alignment);
+ else if (temp < 0)
+ {
+ as_bad (_("Alignment negative. 0 assumed."));
+ temp = 0;
+ }
+
+ if (*input_line_pointer == ',')
+ {
+ input_line_pointer++;
+ temp_fill = get_absolute_expression ();
+ }
+ else
+ temp_fill = 0;
+
+ if (!temp)
+ temp = 2;
+
+ /* Only make a frag if we HAVE to. . . */
+ if (temp && !need_pass_2)
+ frag_align (temp, (int) temp_fill, 0);
+ demand_empty_rest_of_line ();
+
+ record_alignment (now_seg, temp);
+}
+
+static void
+s_force_thumb (ignore)
+ int ignore ATTRIBUTE_UNUSED;
+{
+ /* If we are not already in thumb mode go into it, EVEN if
+ the target processor does not support thumb instructions.
+ This is used by gcc/config/arm/lib1funcs.asm for example
+ to compile interworking support functions even if the
+ target processor should not support interworking. */
+
+ if (! thumb_mode)
+ {
+ thumb_mode = 2;
+
+ record_alignment (now_seg, 1);
+ }
+
+ demand_empty_rest_of_line ();
+}
+
+static void
+s_thumb_func (ignore)
+ int ignore ATTRIBUTE_UNUSED;
+{
+ /* The following label is the name/address of the start of a Thumb function.
+ We need to know this for the interworking support. */
+
+ label_is_thumb_function_name = true;
+
+ demand_empty_rest_of_line ();
+}
+
+/* Perform a .set directive, but also mark the alias as
+ being a thumb function. */
+
+static void
+s_thumb_set (equiv)
+ int equiv;
+{
+ /* XXX the following is a duplicate of the code for s_set() in read.c
+ We cannot just call that code as we need to get at the symbol that
+ is created. */
+ register char * name;
+ register char delim;
+ register char * end_name;
+ register symbolS * symbolP;
+
+ /*
+ * Especial apologies for the random logic:
+ * this just grew, and could be parsed much more simply!
+ * Dean in haste.
+ */
+ name = input_line_pointer;
+ delim = get_symbol_end ();
+ end_name = input_line_pointer;
+ *end_name = delim;
+
+ SKIP_WHITESPACE ();
+
+ if (*input_line_pointer != ',')
+ {
+ *end_name = 0;
+ as_bad (_("Expected comma after name \"%s\""), name);
+ *end_name = delim;
+ ignore_rest_of_line ();
+ return;
+ }
+
+ input_line_pointer++;
+ *end_name = 0;
+
+ if (name[0] == '.' && name[1] == '\0')
+ {
+ /* XXX - this should not happen to .thumb_set */
+ abort ();
+ }
+
+ if ((symbolP = symbol_find (name)) == NULL
+ && (symbolP = md_undefined_symbol (name)) == NULL)
+ {
+#ifndef NO_LISTING
+ /* When doing symbol listings, play games with dummy fragments living
+ outside the normal fragment chain to record the file and line info
+ for this symbol. */
+ if (listing & LISTING_SYMBOLS)
+ {
+ extern struct list_info_struct * listing_tail;
+ fragS * dummy_frag = (fragS *) xmalloc (sizeof(fragS));
+ memset (dummy_frag, 0, sizeof(fragS));
+ dummy_frag->fr_type = rs_fill;
+ dummy_frag->line = listing_tail;
+ symbolP = symbol_new (name, undefined_section, 0, dummy_frag);
+ dummy_frag->fr_symbol = symbolP;
+ }
+ else
+#endif
+ symbolP = symbol_new (name, undefined_section, 0, &zero_address_frag);
+
+#ifdef OBJ_COFF
+ /* "set" symbols are local unless otherwise specified. */
+ SF_SET_LOCAL (symbolP);
+#endif /* OBJ_COFF */
+ } /* make a new symbol */
+
+ symbol_table_insert (symbolP);
+
+ * end_name = delim;
+
+ if (equiv
+ && S_IS_DEFINED (symbolP)
+ && S_GET_SEGMENT (symbolP) != reg_section)
+ as_bad (_("symbol `%s' already defined"), S_GET_NAME (symbolP));
+
+ pseudo_set (symbolP);
+
+ demand_empty_rest_of_line ();
+
+ /* XXX Now we come to the Thumb specific bit of code. */
+
+ THUMB_SET_FUNC (symbolP, 1);
+ ARM_SET_THUMB (symbolP, 1);
+#if defined OBJ_ELF || defined OBJ_COFF
+ ARM_SET_INTERWORK (symbolP, support_interwork);
+#endif
+}
+
+/* If we change section we must dump the literal pool first. */
+static void
+arm_s_text (ignore)
+ int ignore;
+{
+ if (now_seg != text_section)
+ s_ltorg (0);
+
+#ifdef OBJ_ELF
+ obj_elf_text (ignore);
+#else
+ s_text (ignore);
+#endif
+}
+
+static void
+arm_s_data (ignore)
+ int ignore;
+{
+ if (flag_readonly_data_in_text)
+ {
+ if (now_seg != text_section)
+ s_ltorg (0);
+ }
+ else if (now_seg != data_section)
+ s_ltorg (0);
+
+#ifdef OBJ_ELF
+ obj_elf_data (ignore);
+#else
+ s_data (ignore);
+#endif
+}
+
+#ifdef OBJ_ELF
+static void
+arm_s_section (ignore)
+ int ignore;
+{
+ s_ltorg (0);
+
+ obj_elf_section (ignore);
+}
+#endif
+
+static void
+opcode_select (width)
+ int width;
+{
+ switch (width)
+ {
+ case 16:
+ if (! thumb_mode)
+ {
+ if (! (cpu_variant & ARM_THUMB))
+ as_bad (_("selected processor does not support THUMB opcodes"));
+ thumb_mode = 1;
+ /* No need to force the alignment, since we will have been
+ coming from ARM mode, which is word-aligned. */
+ record_alignment (now_seg, 1);
+ }
+ break;
+
+ case 32:
+ if (thumb_mode)
+ {
+ if ((cpu_variant & ARM_ANY) == ARM_THUMB)
+ as_bad (_("selected processor does not support ARM opcodes"));
+ thumb_mode = 0;
+ if (!need_pass_2)
+ frag_align (2, 0, 0);
+ record_alignment (now_seg, 1);
+ }
+ break;
+
+ default:
+ as_bad (_("invalid instruction size selected (%d)"), width);
+ }
+}
+
+static void
+s_arm (ignore)
+ int ignore ATTRIBUTE_UNUSED;
+{
+ opcode_select (32);
+ demand_empty_rest_of_line ();
+}
+
+static void
+s_thumb (ignore)
+ int ignore ATTRIBUTE_UNUSED;
+{
+ opcode_select (16);
+ demand_empty_rest_of_line ();
+}
+
+static void
+s_code (unused)
+ int unused ATTRIBUTE_UNUSED;
+{
+ register int temp;
+
+ temp = get_absolute_expression ();
+ switch (temp)
+ {
+ case 16:
+ case 32:
+ opcode_select (temp);
+ break;
+
+ default:
+ as_bad (_("invalid operand to .code directive (%d) (expecting 16 or 32)"), temp);
+ }
+}
+
+static void
+end_of_line (str)
+ char * str;
+{
+ skip_whitespace (str);
+
+ if (* str != '\0')
+ inst.error = _("Garbage following instruction");
+}
+
+static int
+skip_past_comma (str)
+ char ** str;
+{
+ char *p = *str, c;
+ int comma = 0;
+
+ while ((c = *p) == ' ' || c == ',')
+ {
+ p++;
+ if (c == ',' && comma++)
+ return FAIL;
+ }
+
+ if (c == '\0')
+ return FAIL;
+
+ *str = p;
+ return comma ? SUCCESS : FAIL;
+}
+
+/* A standard register must be given at this point.
+ Shift is the place to put it in inst.instruction.
+ Restores input start point on err.
+ Returns the reg#, or FAIL. */
+static int
+reg_required_here (str, shift)
+ char ** str;
+ int shift;
+{
+ static char buff [128]; /* XXX */
+ int reg;
+ char * start = *str;
+
+ if ((reg = arm_reg_parse (str)) != FAIL && int_register (reg))
+ {
+ if (shift >= 0)
+ inst.instruction |= reg << shift;
+ return reg;
+ }
+
+ /* Restore the start point, we may have got a reg of the wrong class. */
+ *str = start;
+
+ /* In the few cases where we might be able to accept something else
+ this error can be overridden. */
+ sprintf (buff, _("Register expected, not '%.100s'"), start);
+ inst.error = buff;
+
+ return FAIL;
+}
+
+static CONST struct asm_psr *
+arm_psr_parse (ccp)
+ register char ** ccp;
+{
+ char * start = * ccp;
+ char c;
+ char * p;
+ CONST struct asm_psr * psr;
+
+ p = start;
+
+ /* Skip to the end of the next word in the input stream. */
+ do
+ {
+ c = *p++;
+ }
+ while (isalpha (c) || c == '_');
+
+ /* Terminate the word. */
+ *--p = 0;
+
+ /* Now locate the word in the psr hash table. */
+ psr = (CONST struct asm_psr *) hash_find (arm_psr_hsh, start);
+
+ /* Restore the input stream. */
+ *p = c;
+
+ /* If we found a valid match, advance the
+ stream pointer past the end of the word. */
+ *ccp = p;
+
+ return psr;
+}
+
+/* Parse the input looking for a PSR flag. */
+static int
+psr_required_here (str)
+ char ** str;
+{
+ char * start = *str;
+ CONST struct asm_psr * psr;
+
+ psr = arm_psr_parse (str);
+
+ if (psr)
+ {
+ /* If this is the SPSR that is being modified, set the R bit. */
+ if (! psr->cpsr)
+ inst.instruction |= SPSR_BIT;
+
+ /* Set the psr flags in the MSR instruction. */
+ inst.instruction |= psr->field << PSR_SHIFT;
+
+ return SUCCESS;
+ }
+
+ /* In the few cases where we might be able to accept
+ something else this error can be overridden. */
+ inst.error = _("flag for {c}psr instruction expected");
+
+ /* Restore the start point. */
+ *str = start;
+ return FAIL;
+}
+
+static int
+co_proc_number (str)
+ char ** str;
+{
+ int processor, pchar;
+
+ skip_whitespace (* str);
+
+ /* The data sheet seems to imply that just a number on its own is valid
+ here, but the RISC iX assembler seems to accept a prefix 'p'. We will
+ accept either. */
+ if (**str == 'p' || **str == 'P')
+ (*str)++;
+
+ pchar = *(*str)++;
+ if (pchar >= '0' && pchar <= '9')
+ {
+ processor = pchar - '0';
+ if (**str >= '0' && **str <= '9')
+ {
+ processor = processor * 10 + *(*str)++ - '0';
+ if (processor > 15)
+ {
+ inst.error = _("Illegal co-processor number");
+ return FAIL;
+ }
+ }
+ }
+ else
+ {
+ inst.error = _("Bad or missing co-processor number");
+ return FAIL;
+ }
+
+ inst.instruction |= processor << 8;
+ return SUCCESS;
+}
+
+static int
+cp_opc_expr (str, where, length)
+ char ** str;
+ int where;
+ int length;
+{
+ expressionS expr;
+
+ skip_whitespace (* str);
+
+ memset (&expr, '\0', sizeof (expr));
+
+ if (my_get_expression (&expr, str))
+ return FAIL;
+ if (expr.X_op != O_constant)
+ {
+ inst.error = _("bad or missing expression");
+ return FAIL;
+ }
+
+ if ((expr.X_add_number & ((1 << length) - 1)) != expr.X_add_number)
+ {
+ inst.error = _("immediate co-processor expression too large");
+ return FAIL;
+ }
+
+ inst.instruction |= expr.X_add_number << where;
+ return SUCCESS;
+}
+
+static int
+cp_reg_required_here (str, where)
+ char ** str;
+ int where;
+{
+ int reg;
+ char * start = *str;
+
+ if ((reg = arm_reg_parse (str)) != FAIL && cp_register (reg))
+ {
+ reg &= 15;
+ inst.instruction |= reg << where;
+ return reg;
+ }
+
+ /* In the few cases where we might be able to accept something else
+ this error can be overridden. */
+ inst.error = _("Co-processor register expected");
+
+ /* Restore the start point. */
+ *str = start;
+ return FAIL;
+}
+
+static int
+fp_reg_required_here (str, where)
+ char ** str;
+ int where;
+{
+ int reg;
+ char * start = *str;
+
+ if ((reg = arm_reg_parse (str)) != FAIL && fp_register (reg))
+ {
+ reg &= 7;
+ inst.instruction |= reg << where;
+ return reg;
+ }
+
+ /* In the few cases where we might be able to accept something else
+ this error can be overridden. */
+ inst.error = _("Floating point register expected");
+
+ /* Restore the start point. */
+ *str = start;
+ return FAIL;
+}
+
+static int
+cp_address_offset (str)
+ char ** str;
+{
+ int offset;
+
+ skip_whitespace (* str);
+
+ if (! is_immediate_prefix (**str))
+ {
+ inst.error = _("immediate expression expected");
+ return FAIL;
+ }
+
+ (*str)++;
+
+ if (my_get_expression (& inst.reloc.exp, str))
+ return FAIL;
+
+ if (inst.reloc.exp.X_op == O_constant)
+ {
+ offset = inst.reloc.exp.X_add_number;
+
+ if (offset & 3)
+ {
+ inst.error = _("co-processor address must be word aligned");
+ return FAIL;
+ }
+
+ if (offset > 1023 || offset < -1023)
+ {
+ inst.error = _("offset too large");
+ return FAIL;
+ }
+
+ if (offset >= 0)
+ inst.instruction |= INDEX_UP;
+ else
+ offset = -offset;
+
+ inst.instruction |= offset >> 2;
+ }
+ else
+ inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM;
+
+ return SUCCESS;
+}
+
+static int
+cp_address_required_here (str)
+ char ** str;
+{
+ char * p = * str;
+ int pre_inc = 0;
+ int write_back = 0;
+
+ if (*p == '[')
+ {
+ int reg;
+
+ p++;
+ skip_whitespace (p);
+
+ if ((reg = reg_required_here (& p, 16)) == FAIL)
+ return FAIL;
+
+ skip_whitespace (p);
+
+ if (*p == ']')
+ {
+ p++;
+
+ if (skip_past_comma (& p) == SUCCESS)
+ {
+ /* [Rn], #expr */
+ write_back = WRITE_BACK;
+
+ if (reg == REG_PC)
+ {
+ inst.error = _("pc may not be used in post-increment");
+ return FAIL;
+ }
+
+ if (cp_address_offset (& p) == FAIL)
+ return FAIL;
+ }
+ else
+ pre_inc = PRE_INDEX | INDEX_UP;
+ }
+ else
+ {
+ /* '['Rn, #expr']'[!] */
+
+ if (skip_past_comma (& p) == FAIL)
+ {
+ inst.error = _("pre-indexed expression expected");
+ return FAIL;
+ }
+
+ pre_inc = PRE_INDEX;
+
+ if (cp_address_offset (& p) == FAIL)
+ return FAIL;
+
+ skip_whitespace (p);
+
+ if (*p++ != ']')
+ {
+ inst.error = _("missing ]");
+ return FAIL;
+ }
+
+ skip_whitespace (p);
+
+ if (*p == '!')
+ {
+ if (reg == REG_PC)
+ {
+ inst.error = _("pc may not be used with write-back");
+ return FAIL;
+ }
+
+ p++;
+ write_back = WRITE_BACK;
+ }
+ }
+ }
+ else
+ {
+ if (my_get_expression (&inst.reloc.exp, &p))
+ return FAIL;
+
+ inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM;
+ inst.reloc.exp.X_add_number -= 8; /* PC rel adjust */
+ inst.reloc.pc_rel = 1;
+ inst.instruction |= (REG_PC << 16);
+ pre_inc = PRE_INDEX;
+ }
+
+ inst.instruction |= write_back | pre_inc;
+ *str = p;
+ return SUCCESS;
+}
+
+static void
+do_nop (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ /* Do nothing really. */
+ inst.instruction |= flags; /* This is pointless. */
+ end_of_line (str);
+ return;
+}
+
+static void
+do_mrs (str, flags)
+ char *str;
+ unsigned long flags;
+{
+ int skip = 0;
+
+ /* Only one syntax. */
+ skip_whitespace (str);
+
+ if (reg_required_here (&str, 12) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL)
+ {
+ inst.error = _("comma expected after register name");
+ return;
+ }
+
+ skip_whitespace (str);
+
+ if ( strcmp (str, "CPSR") == 0
+ || strcmp (str, "SPSR") == 0
+ /* Lower case versions for backwards compatability. */
+ || strcmp (str, "cpsr") == 0
+ || strcmp (str, "spsr") == 0)
+ skip = 4;
+ /* This is for backwards compatability with older toolchains. */
+ else if (strcmp (str, "cpsr_all") == 0
+ || strcmp (str, "spsr_all") == 0)
+ skip = 7;
+ else
+ {
+ inst.error = _("{C|S}PSR expected");
+ return;
+ }
+
+ if (* str == 's' || * str == 'S')
+ inst.instruction |= SPSR_BIT;
+ str += skip;
+
+ inst.instruction |= flags;
+ end_of_line (str);
+}
+
+/* Two possible forms:
+ "{C|S}PSR_<field>, Rm",
+ "{C|S}PSR_f, #expression". */
+static void
+do_msr (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ if (psr_required_here (& str) == FAIL)
+ return;
+
+ if (skip_past_comma (& str) == FAIL)
+ {
+ inst.error = _("comma missing after psr flags");
+ return;
+ }
+
+ skip_whitespace (str);
+
+ if (reg_required_here (& str, 0) != FAIL)
+ {
+ inst.error = NULL;
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+ }
+
+ if (! is_immediate_prefix (* str))
+ {
+ inst.error = _("only a register or immediate value can follow a psr flag");
+ return;
+ }
+
+ str ++;
+ inst.error = NULL;
+
+ if (my_get_expression (& inst.reloc.exp, & str))
+ {
+ inst.error = _("only a register or immediate value can follow a psr flag");
+ return;
+ }
+
+ if (inst.instruction & ((PSR_c | PSR_x | PSR_s) << PSR_SHIFT))
+ {
+ inst.error = _("can only set flag field with immediate value");
+ return;
+ }
+
+ flags |= INST_IMMEDIATE;
+
+ if (inst.reloc.exp.X_add_symbol)
+ {
+ inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE;
+ inst.reloc.pc_rel = 0;
+ }
+ else
+ {
+ unsigned value = validate_immediate (inst.reloc.exp.X_add_number);
+
+ if (value == (unsigned) FAIL)
+ {
+ inst.error = _("Invalid constant");
+ return;
+ }
+
+ inst.instruction |= value;
+ }
+
+ inst.error = NULL;
+ inst.instruction |= flags;
+ end_of_line (str);
+}
+
+/* Long Multiply Parser
+ UMULL RdLo, RdHi, Rm, Rs
+ SMULL RdLo, RdHi, Rm, Rs
+ UMLAL RdLo, RdHi, Rm, Rs
+ SMLAL RdLo, RdHi, Rm, Rs
+*/
+static void
+do_mull (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rdlo, rdhi, rm, rs;
+
+ /* Only one format "rdlo, rdhi, rm, rs" */
+ skip_whitespace (str);
+
+ if ((rdlo = reg_required_here (&str, 12)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || (rdhi = reg_required_here (&str, 16)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || (rm = reg_required_here (&str, 0)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ /* rdhi, rdlo and rm must all be different */
+ if (rdlo == rdhi || rdlo == rm || rdhi == rm)
+ as_tsktsk (_("rdhi, rdlo and rm must all be different"));
+
+ if (skip_past_comma (&str) == FAIL
+ || (rs = reg_required_here (&str, 8)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (rdhi == REG_PC || rdhi == REG_PC || rdhi == REG_PC || rdhi == REG_PC)
+ {
+ inst.error = BAD_PC;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_mul (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rd, rm;
+
+ /* Only one format "rd, rm, rs" */
+ skip_whitespace (str);
+
+ if ((rd = reg_required_here (&str, 16)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (rd == REG_PC)
+ {
+ inst.error = BAD_PC;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || (rm = reg_required_here (&str, 0)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (rm == REG_PC)
+ {
+ inst.error = BAD_PC;
+ return;
+ }
+
+ if (rm == rd)
+ as_tsktsk (_("rd and rm should be different in mul"));
+
+ if (skip_past_comma (&str) == FAIL
+ || (rm = reg_required_here (&str, 8)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (rm == REG_PC)
+ {
+ inst.error = BAD_PC;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_mla (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rd, rm;
+
+ /* Only one format "rd, rm, rs, rn" */
+ skip_whitespace (str);
+
+ if ((rd = reg_required_here (&str, 16)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (rd == REG_PC)
+ {
+ inst.error = BAD_PC;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || (rm = reg_required_here (&str, 0)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (rm == REG_PC)
+ {
+ inst.error = BAD_PC;
+ return;
+ }
+
+ if (rm == rd)
+ as_tsktsk (_("rd and rm should be different in mla"));
+
+ if (skip_past_comma (&str) == FAIL
+ || (rd = reg_required_here (&str, 8)) == FAIL
+ || skip_past_comma (&str) == FAIL
+ || (rm = reg_required_here (&str, 12)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (rd == REG_PC || rm == REG_PC)
+ {
+ inst.error = BAD_PC;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+/* Returns the index into fp_values of a floating point number, or -1 if
+ not in the table. */
+static int
+my_get_float_expression (str)
+ char ** str;
+{
+ LITTLENUM_TYPE words[MAX_LITTLENUMS];
+ char * save_in;
+ expressionS exp;
+ int i;
+ int j;
+
+ memset (words, 0, MAX_LITTLENUMS * sizeof (LITTLENUM_TYPE));
+ /* Look for a raw floating point number */
+ if ((save_in = atof_ieee (*str, 'x', words)) != NULL
+ && (is_end_of_line [(int)(*save_in)] || *save_in == '\0'))
+ {
+ for (i = 0; i < NUM_FLOAT_VALS; i++)
+ {
+ for (j = 0; j < MAX_LITTLENUMS; j++)
+ {
+ if (words[j] != fp_values[i][j])
+ break;
+ }
+
+ if (j == MAX_LITTLENUMS)
+ {
+ *str = save_in;
+ return i;
+ }
+ }
+ }
+
+ /* Try and parse a more complex expression, this will probably fail
+ unless the code uses a floating point prefix (eg "0f") */
+ save_in = input_line_pointer;
+ input_line_pointer = *str;
+ if (expression (&exp) == absolute_section
+ && exp.X_op == O_big
+ && exp.X_add_number < 0)
+ {
+ /* FIXME: 5 = X_PRECISION, should be #define'd where we can use it.
+ Ditto for 15. */
+ if (gen_to_words (words, 5, (long)15) == 0)
+ {
+ for (i = 0; i < NUM_FLOAT_VALS; i++)
+ {
+ for (j = 0; j < MAX_LITTLENUMS; j++)
+ {
+ if (words[j] != fp_values[i][j])
+ break;
+ }
+
+ if (j == MAX_LITTLENUMS)
+ {
+ *str = input_line_pointer;
+ input_line_pointer = save_in;
+ return i;
+ }
+ }
+ }
+ }
+
+ *str = input_line_pointer;
+ input_line_pointer = save_in;
+ return -1;
+}
+
+/* Return true if anything in the expression is a bignum */
+static int
+walk_no_bignums (sp)
+ symbolS * sp;
+{
+ if (symbol_get_value_expression (sp)->X_op == O_big)
+ return 1;
+
+ if (symbol_get_value_expression (sp)->X_add_symbol)
+ {
+ return (walk_no_bignums (symbol_get_value_expression (sp)->X_add_symbol)
+ || (symbol_get_value_expression (sp)->X_op_symbol
+ && walk_no_bignums (symbol_get_value_expression (sp)->X_op_symbol)));
+ }
+
+ return 0;
+}
+
+static int
+my_get_expression (ep, str)
+ expressionS * ep;
+ char ** str;
+{
+ char * save_in;
+ segT seg;
+
+ save_in = input_line_pointer;
+ input_line_pointer = *str;
+ seg = expression (ep);
+
+#ifdef OBJ_AOUT
+ if (seg != absolute_section
+ && seg != text_section
+ && seg != data_section
+ && seg != bss_section
+ && seg != undefined_section)
+ {
+ inst.error = _("bad_segment");
+ *str = input_line_pointer;
+ input_line_pointer = save_in;
+ return 1;
+ }
+#endif
+
+ /* Get rid of any bignums now, so that we don't generate an error for which
+ we can't establish a line number later on. Big numbers are never valid
+ in instructions, which is where this routine is always called. */
+ if (ep->X_op == O_big
+ || (ep->X_add_symbol
+ && (walk_no_bignums (ep->X_add_symbol)
+ || (ep->X_op_symbol
+ && walk_no_bignums (ep->X_op_symbol)))))
+ {
+ inst.error = _("Invalid constant");
+ *str = input_line_pointer;
+ input_line_pointer = save_in;
+ return 1;
+ }
+
+ *str = input_line_pointer;
+ input_line_pointer = save_in;
+ return 0;
+}
+
+/* unrestrict should be one if <shift> <register> is permitted for this
+ instruction */
+
+static int
+decode_shift (str, unrestrict)
+ char ** str;
+ int unrestrict;
+{
+ struct asm_shift * shft;
+ char * p;
+ char c;
+
+ skip_whitespace (* str);
+
+ for (p = *str; isalpha (*p); p++)
+ ;
+
+ if (p == *str)
+ {
+ inst.error = _("Shift expression expected");
+ return FAIL;
+ }
+
+ c = *p;
+ *p = '\0';
+ shft = (struct asm_shift *) hash_find (arm_shift_hsh, *str);
+ *p = c;
+ if (shft)
+ {
+ if (!strncmp (*str, "rrx", 3)
+ || !strncmp (*str, "RRX", 3))
+ {
+ *str = p;
+ inst.instruction |= shft->value;
+ return SUCCESS;
+ }
+
+ skip_whitespace (p);
+
+ if (unrestrict && reg_required_here (&p, 8) != FAIL)
+ {
+ inst.instruction |= shft->value | SHIFT_BY_REG;
+ *str = p;
+ return SUCCESS;
+ }
+ else if (is_immediate_prefix (* p))
+ {
+ inst.error = NULL;
+ p++;
+ if (my_get_expression (&inst.reloc.exp, &p))
+ return FAIL;
+
+ /* Validate some simple #expressions */
+ if (inst.reloc.exp.X_op == O_constant)
+ {
+ unsigned num = inst.reloc.exp.X_add_number;
+
+ /* Reject operations greater than 32, or lsl #32 */
+ if (num > 32 || (num == 32 && shft->value == 0))
+ {
+ inst.error = _("Invalid immediate shift");
+ return FAIL;
+ }
+
+ /* Shifts of zero should be converted to lsl (which is zero)*/
+ if (num == 0)
+ {
+ *str = p;
+ return SUCCESS;
+ }
+
+ /* Shifts of 32 are encoded as 0, for those shifts that
+ support it. */
+ if (num == 32)
+ num = 0;
+
+ inst.instruction |= (num << 7) | shft->value;
+ *str = p;
+ return SUCCESS;
+ }
+
+ inst.reloc.type = BFD_RELOC_ARM_SHIFT_IMM;
+ inst.reloc.pc_rel = 0;
+ inst.instruction |= shft->value;
+ *str = p;
+ return SUCCESS;
+ }
+ else
+ {
+ inst.error = unrestrict ? _("shift requires register or #expression")
+ : _("shift requires #expression");
+ *str = p;
+ return FAIL;
+ }
+ }
+
+ inst.error = _("Shift expression expected");
+ return FAIL;
+}
+
+/* Do those data_ops which can take a negative immediate constant */
+/* by altering the instuction. A bit of a hack really */
+/* MOV <-> MVN
+ AND <-> BIC
+ ADC <-> SBC
+ by inverting the second operand, and
+ ADD <-> SUB
+ CMP <-> CMN
+ by negating the second operand.
+*/
+static int
+negate_data_op (instruction, value)
+ unsigned long * instruction;
+ unsigned long value;
+{
+ int op, new_inst;
+ unsigned long negated, inverted;
+
+ negated = validate_immediate (-value);
+ inverted = validate_immediate (~value);
+
+ op = (*instruction >> DATA_OP_SHIFT) & 0xf;
+ switch (op)
+ {
+ /* First negates */
+ case OPCODE_SUB: /* ADD <-> SUB */
+ new_inst = OPCODE_ADD;
+ value = negated;
+ break;
+
+ case OPCODE_ADD:
+ new_inst = OPCODE_SUB;
+ value = negated;
+ break;
+
+ case OPCODE_CMP: /* CMP <-> CMN */
+ new_inst = OPCODE_CMN;
+ value = negated;
+ break;
+
+ case OPCODE_CMN:
+ new_inst = OPCODE_CMP;
+ value = negated;
+ break;
+
+ /* Now Inverted ops */
+ case OPCODE_MOV: /* MOV <-> MVN */
+ new_inst = OPCODE_MVN;
+ value = inverted;
+ break;
+
+ case OPCODE_MVN:
+ new_inst = OPCODE_MOV;
+ value = inverted;
+ break;
+
+ case OPCODE_AND: /* AND <-> BIC */
+ new_inst = OPCODE_BIC;
+ value = inverted;
+ break;
+
+ case OPCODE_BIC:
+ new_inst = OPCODE_AND;
+ value = inverted;
+ break;
+
+ case OPCODE_ADC: /* ADC <-> SBC */
+ new_inst = OPCODE_SBC;
+ value = inverted;
+ break;
+
+ case OPCODE_SBC:
+ new_inst = OPCODE_ADC;
+ value = inverted;
+ break;
+
+ /* We cannot do anything */
+ default:
+ return FAIL;
+ }
+
+ if (value == (unsigned) FAIL)
+ return FAIL;
+
+ *instruction &= OPCODE_MASK;
+ *instruction |= new_inst << DATA_OP_SHIFT;
+ return value;
+}
+
+static int
+data_op2 (str)
+ char ** str;
+{
+ int value;
+ expressionS expr;
+
+ skip_whitespace (* str);
+
+ if (reg_required_here (str, 0) != FAIL)
+ {
+ if (skip_past_comma (str) == SUCCESS)
+ /* Shift operation on register. */
+ return decode_shift (str, NO_SHIFT_RESTRICT);
+
+ return SUCCESS;
+ }
+ else
+ {
+ /* Immediate expression */
+ if (is_immediate_prefix (**str))
+ {
+ (*str)++;
+ inst.error = NULL;
+
+ if (my_get_expression (&inst.reloc.exp, str))
+ return FAIL;
+
+ if (inst.reloc.exp.X_add_symbol)
+ {
+ inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE;
+ inst.reloc.pc_rel = 0;
+ }
+ else
+ {
+ if (skip_past_comma (str) == SUCCESS)
+ {
+ /* #x, y -- ie explicit rotation by Y */
+ if (my_get_expression (&expr, str))
+ return FAIL;
+
+ if (expr.X_op != O_constant)
+ {
+ inst.error = _("Constant expression expected");
+ return FAIL;
+ }
+
+ /* Rotate must be a multiple of 2 */
+ if (((unsigned) expr.X_add_number) > 30
+ || (expr.X_add_number & 1) != 0
+ || ((unsigned) inst.reloc.exp.X_add_number) > 255)
+ {
+ inst.error = _("Invalid constant");
+ return FAIL;
+ }
+ inst.instruction |= INST_IMMEDIATE;
+ inst.instruction |= inst.reloc.exp.X_add_number;
+ inst.instruction |= expr.X_add_number << 7;
+ return SUCCESS;
+ }
+
+ /* Implicit rotation, select a suitable one */
+ value = validate_immediate (inst.reloc.exp.X_add_number);
+
+ if (value == FAIL)
+ {
+ /* Can't be done, perhaps the code reads something like
+ "add Rd, Rn, #-n", where "sub Rd, Rn, #n" would be ok */
+ if ((value = negate_data_op (&inst.instruction,
+ inst.reloc.exp.X_add_number))
+ == FAIL)
+ {
+ inst.error = _("Invalid constant");
+ return FAIL;
+ }
+ }
+
+ inst.instruction |= value;
+ }
+
+ inst.instruction |= INST_IMMEDIATE;
+ return SUCCESS;
+ }
+
+ (*str)++;
+ inst.error = _("Register or shift expression expected");
+ return FAIL;
+ }
+}
+
+static int
+fp_op2 (str)
+ char ** str;
+{
+ skip_whitespace (* str);
+
+ if (fp_reg_required_here (str, 0) != FAIL)
+ return SUCCESS;
+ else
+ {
+ /* Immediate expression */
+ if (*((*str)++) == '#')
+ {
+ int i;
+
+ inst.error = NULL;
+
+ skip_whitespace (* str);
+
+ /* First try and match exact strings, this is to guarantee that
+ some formats will work even for cross assembly */
+
+ for (i = 0; fp_const[i]; i++)
+ {
+ if (strncmp (*str, fp_const[i], strlen (fp_const[i])) == 0)
+ {
+ char *start = *str;
+
+ *str += strlen (fp_const[i]);
+ if (is_end_of_line[(int)**str] || **str == '\0')
+ {
+ inst.instruction |= i + 8;
+ return SUCCESS;
+ }
+ *str = start;
+ }
+ }
+
+ /* Just because we didn't get a match doesn't mean that the
+ constant isn't valid, just that it is in a format that we
+ don't automatically recognize. Try parsing it with
+ the standard expression routines. */
+ if ((i = my_get_float_expression (str)) >= 0)
+ {
+ inst.instruction |= i + 8;
+ return SUCCESS;
+ }
+
+ inst.error = _("Invalid floating point immediate expression");
+ return FAIL;
+ }
+ inst.error = _("Floating point register or immediate expression expected");
+ return FAIL;
+ }
+}
+
+static void
+do_arit (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ if (reg_required_here (&str, 12) == FAIL
+ || skip_past_comma (&str) == FAIL
+ || reg_required_here (&str, 16) == FAIL
+ || skip_past_comma (&str) == FAIL
+ || data_op2 (&str) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_adr (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ /* This is a pseudo-op of the form "adr rd, label" to be converted
+ into a relative address of the form "add rd, pc, #label-.-8". */
+ skip_whitespace (str);
+
+ if (reg_required_here (&str, 12) == FAIL
+ || skip_past_comma (&str) == FAIL
+ || my_get_expression (&inst.reloc.exp, &str))
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ /* Frag hacking will turn this into a sub instruction if the offset turns
+ out to be negative. */
+ inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE;
+ inst.reloc.exp.X_add_number -= 8; /* PC relative adjust. */
+ inst.reloc.pc_rel = 1;
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_adrl (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ /* This is a pseudo-op of the form "adrl rd, label" to be converted
+ into a relative address of the form:
+ add rd, pc, #low(label-.-8)"
+ add rd, rd, #high(label-.-8)" */
+
+ skip_whitespace (str);
+
+ if (reg_required_here (& str, 12) == FAIL
+ || skip_past_comma (& str) == FAIL
+ || my_get_expression (& inst.reloc.exp, & str))
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ end_of_line (str);
+
+ /* Frag hacking will turn this into a sub instruction if the offset turns
+ out to be negative. */
+ inst.reloc.type = BFD_RELOC_ARM_ADRL_IMMEDIATE;
+ inst.reloc.exp.X_add_number -= 8; /* PC relative adjust */
+ inst.reloc.pc_rel = 1;
+ inst.instruction |= flags;
+ inst.size = INSN_SIZE * 2;
+
+ return;
+}
+
+static void
+do_cmp (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ if (reg_required_here (&str, 16) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || data_op2 (&str) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ if ((flags & 0x0000f000) == 0)
+ inst.instruction |= CONDS_BIT;
+
+ end_of_line (str);
+ return;
+}
+
+static void
+do_mov (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ if (reg_required_here (&str, 12) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || data_op2 (&str) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static int
+ldst_extend (str, hwse)
+ char ** str;
+ int hwse;
+{
+ int add = INDEX_UP;
+
+ switch (**str)
+ {
+ case '#':
+ case '$':
+ (*str)++;
+ if (my_get_expression (& inst.reloc.exp, str))
+ return FAIL;
+
+ if (inst.reloc.exp.X_op == O_constant)
+ {
+ int value = inst.reloc.exp.X_add_number;
+
+ if ((hwse && (value < -255 || value > 255))
+ || (value < -4095 || value > 4095))
+ {
+ inst.error = _("address offset too large");
+ return FAIL;
+ }
+
+ if (value < 0)
+ {
+ value = -value;
+ add = 0;
+ }
+
+ /* Halfword and signextension instructions have the
+ immediate value split across bits 11..8 and bits 3..0 */
+ if (hwse)
+ inst.instruction |= add | HWOFFSET_IMM | ((value >> 4) << 8) | (value & 0xF);
+ else
+ inst.instruction |= add | value;
+ }
+ else
+ {
+ if (hwse)
+ {
+ inst.instruction |= HWOFFSET_IMM;
+ inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8;
+ }
+ else
+ inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM;
+ inst.reloc.pc_rel = 0;
+ }
+ return SUCCESS;
+
+ case '-':
+ add = 0; /* and fall through */
+ case '+':
+ (*str)++; /* and fall through */
+ default:
+ if (reg_required_here (str, 0) == FAIL)
+ return FAIL;
+
+ if (hwse)
+ inst.instruction |= add;
+ else
+ {
+ inst.instruction |= add | OFFSET_REG;
+ if (skip_past_comma (str) == SUCCESS)
+ return decode_shift (str, SHIFT_RESTRICT);
+ }
+
+ return SUCCESS;
+ }
+}
+
+static void
+do_ldst (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int halfword = 0;
+ int pre_inc = 0;
+ int conflict_reg;
+ int value;
+
+ /* This is not ideal, but it is the simplest way of dealing with the
+ ARM7T halfword instructions (since they use a different
+ encoding, but the same mnemonic): */
+ halfword = (flags & 0x80000000) != 0;
+ if (halfword)
+ {
+ /* This is actually a load/store of a halfword, or a
+ signed-extension load */
+ if ((cpu_variant & ARM_HALFWORD) == 0)
+ {
+ inst.error
+ = _("Processor does not support halfwords or signed bytes");
+ return;
+ }
+
+ inst.instruction = (inst.instruction & COND_MASK)
+ | (flags & ~COND_MASK);
+
+ flags = 0;
+ }
+
+ skip_whitespace (str);
+
+ if ((conflict_reg = reg_required_here (& str, 12)) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (& str) == FAIL)
+ {
+ inst.error = _("Address expected");
+ return;
+ }
+
+ if (*str == '[')
+ {
+ int reg;
+
+ str++;
+
+ skip_whitespace (str);
+
+ if ((reg = reg_required_here (&str, 16)) == FAIL)
+ return;
+
+ /* Conflicts can occur on stores as well as loads. */
+ conflict_reg = (conflict_reg == reg);
+
+ skip_whitespace (str);
+
+ if (*str == ']')
+ {
+ str ++;
+
+ if (skip_past_comma (&str) == SUCCESS)
+ {
+ /* [Rn],... (post inc) */
+ if (ldst_extend (&str, halfword) == FAIL)
+ return;
+ if (conflict_reg)
+ as_warn (_("%s register same as write-back base"),
+ (inst.instruction & LOAD_BIT) ? _("destination") : _("source") );
+ }
+ else
+ {
+ /* [Rn] */
+ if (halfword)
+ inst.instruction |= HWOFFSET_IMM;
+
+ skip_whitespace (str);
+
+ if (*str == '!')
+ {
+ if (conflict_reg)
+ as_warn (_("%s register same as write-back base"),
+ (inst.instruction & LOAD_BIT) ? _("destination") : _("source") );
+ str++;
+ inst.instruction |= WRITE_BACK;
+ }
+
+ flags |= INDEX_UP;
+ if (! (flags & TRANS_BIT))
+ pre_inc = 1;
+ }
+ }
+ else
+ {
+ /* [Rn,...] */
+ if (skip_past_comma (&str) == FAIL)
+ {
+ inst.error = _("pre-indexed expression expected");
+ return;
+ }
+
+ pre_inc = 1;
+ if (ldst_extend (&str, halfword) == FAIL)
+ return;
+
+ skip_whitespace (str);
+
+ if (*str++ != ']')
+ {
+ inst.error = _("missing ]");
+ return;
+ }
+
+ skip_whitespace (str);
+
+ if (*str == '!')
+ {
+ if (conflict_reg)
+ as_warn (_("%s register same as write-back base"),
+ (inst.instruction & LOAD_BIT) ? _("destination") : _("source") );
+ str++;
+ inst.instruction |= WRITE_BACK;
+ }
+ }
+ }
+ else if (*str == '=')
+ {
+ /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op */
+ str++;
+
+ skip_whitespace (str);
+
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+
+ if (inst.reloc.exp.X_op != O_constant
+ && inst.reloc.exp.X_op != O_symbol)
+ {
+ inst.error = _("Constant expression expected");
+ return;
+ }
+
+ if (inst.reloc.exp.X_op == O_constant
+ && (value = validate_immediate(inst.reloc.exp.X_add_number)) != FAIL)
+ {
+ /* This can be done with a mov instruction */
+ inst.instruction &= LITERAL_MASK;
+ inst.instruction |= INST_IMMEDIATE | (OPCODE_MOV << DATA_OP_SHIFT);
+ inst.instruction |= (flags & COND_MASK) | (value & 0xfff);
+ end_of_line(str);
+ return;
+ }
+ else
+ {
+ /* Insert into literal pool */
+ if (add_to_lit_pool () == FAIL)
+ {
+ if (!inst.error)
+ inst.error = _("literal pool insertion failed");
+ return;
+ }
+
+ /* Change the instruction exp to point to the pool */
+ if (halfword)
+ {
+ inst.instruction |= HWOFFSET_IMM;
+ inst.reloc.type = BFD_RELOC_ARM_HWLITERAL;
+ }
+ else
+ inst.reloc.type = BFD_RELOC_ARM_LITERAL;
+ inst.reloc.pc_rel = 1;
+ inst.instruction |= (REG_PC << 16);
+ pre_inc = 1;
+ }
+ }
+ else
+ {
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+
+ if (halfword)
+ {
+ inst.instruction |= HWOFFSET_IMM;
+ inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8;
+ }
+ else
+ inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM;
+#ifndef TE_WINCE
+ inst.reloc.exp.X_add_number -= 8; /* PC rel adjust */
+#endif
+ inst.reloc.pc_rel = 1;
+ inst.instruction |= (REG_PC << 16);
+ pre_inc = 1;
+ }
+
+ if (pre_inc && (flags & TRANS_BIT))
+ inst.error = _("Pre-increment instruction with translate");
+
+ inst.instruction |= flags | (pre_inc ? PRE_INDEX : 0);
+ end_of_line (str);
+ return;
+}
+
+static long
+reg_list (strp)
+ char ** strp;
+{
+ char * str = *strp;
+ long range = 0;
+ int another_range;
+
+ /* We come back here if we get ranges concatenated by '+' or '|' */
+ do
+ {
+ another_range = 0;
+
+ if (*str == '{')
+ {
+ int in_range = 0;
+ int cur_reg = -1;
+
+ str++;
+ do
+ {
+ int reg;
+
+ skip_whitespace (str);
+
+ if ((reg = reg_required_here (& str, -1)) == FAIL)
+ return FAIL;
+
+ if (in_range)
+ {
+ int i;
+
+ if (reg <= cur_reg)
+ {
+ inst.error = _("Bad range in register list");
+ return FAIL;
+ }
+
+ for (i = cur_reg + 1; i < reg; i++)
+ {
+ if (range & (1 << i))
+ as_tsktsk
+ (_("Warning: Duplicated register (r%d) in register list"),
+ i);
+ else
+ range |= 1 << i;
+ }
+ in_range = 0;
+ }
+
+ if (range & (1 << reg))
+ as_tsktsk (_("Warning: Duplicated register (r%d) in register list"),
+ reg);
+ else if (reg <= cur_reg)
+ as_tsktsk (_("Warning: Register range not in ascending order"));
+
+ range |= 1 << reg;
+ cur_reg = reg;
+ } while (skip_past_comma (&str) != FAIL
+ || (in_range = 1, *str++ == '-'));
+ str--;
+ skip_whitespace (str);
+
+ if (*str++ != '}')
+ {
+ inst.error = _("Missing `}'");
+ return FAIL;
+ }
+ }
+ else
+ {
+ expressionS expr;
+
+ if (my_get_expression (&expr, &str))
+ return FAIL;
+
+ if (expr.X_op == O_constant)
+ {
+ if (expr.X_add_number
+ != (expr.X_add_number & 0x0000ffff))
+ {
+ inst.error = _("invalid register mask");
+ return FAIL;
+ }
+
+ if ((range & expr.X_add_number) != 0)
+ {
+ int regno = range & expr.X_add_number;
+
+ regno &= -regno;
+ regno = (1 << regno) - 1;
+ as_tsktsk
+ (_("Warning: Duplicated register (r%d) in register list"),
+ regno);
+ }
+
+ range |= expr.X_add_number;
+ }
+ else
+ {
+ if (inst.reloc.type != 0)
+ {
+ inst.error = _("expression too complex");
+ return FAIL;
+ }
+
+ memcpy (&inst.reloc.exp, &expr, sizeof (expressionS));
+ inst.reloc.type = BFD_RELOC_ARM_MULTI;
+ inst.reloc.pc_rel = 0;
+ }
+ }
+
+ skip_whitespace (str);
+
+ if (*str == '|' || *str == '+')
+ {
+ str++;
+ another_range = 1;
+ }
+ } while (another_range);
+
+ *strp = str;
+ return range;
+}
+
+static void
+do_ldmstm (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int base_reg;
+ long range;
+
+ skip_whitespace (str);
+
+ if ((base_reg = reg_required_here (&str, 16)) == FAIL)
+ return;
+
+ if (base_reg == REG_PC)
+ {
+ inst.error = _("r15 not allowed as base register");
+ return;
+ }
+
+ skip_whitespace (str);
+
+ if (*str == '!')
+ {
+ flags |= WRITE_BACK;
+ str++;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || (range = reg_list (&str)) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (*str == '^')
+ {
+ str++;
+ flags |= LDM_TYPE_2_OR_3;
+ }
+
+ inst.instruction |= flags | range;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_swi (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ /* Allow optional leading '#'. */
+ if (is_immediate_prefix (*str))
+ str++;
+
+ if (my_get_expression (& inst.reloc.exp, & str))
+ return;
+
+ inst.reloc.type = BFD_RELOC_ARM_SWI;
+ inst.reloc.pc_rel = 0;
+ inst.instruction |= flags;
+
+ end_of_line (str);
+
+ return;
+}
+
+static void
+do_swap (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int reg;
+
+ skip_whitespace (str);
+
+ if ((reg = reg_required_here (&str, 12)) == FAIL)
+ return;
+
+ if (reg == REG_PC)
+ {
+ inst.error = _("r15 not allowed in swap");
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || (reg = reg_required_here (&str, 0)) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (reg == REG_PC)
+ {
+ inst.error = _("r15 not allowed in swap");
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || *str++ != '[')
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ skip_whitespace (str);
+
+ if ((reg = reg_required_here (&str, 16)) == FAIL)
+ return;
+
+ if (reg == REG_PC)
+ {
+ inst.error = BAD_PC;
+ return;
+ }
+
+ skip_whitespace (str);
+
+ if (*str++ != ']')
+ {
+ inst.error = _("missing ]");
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_branch (str, flags)
+ char * str;
+ unsigned long flags ATTRIBUTE_UNUSED;
+{
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+
+#ifdef OBJ_ELF
+ {
+ char * save_in;
+
+ /* ScottB: February 5, 1998 */
+ /* Check to see of PLT32 reloc required for the instruction. */
+
+ /* arm_parse_reloc() works on input_line_pointer.
+ We actually want to parse the operands to the branch instruction
+ passed in 'str'. Save the input pointer and restore it later. */
+ save_in = input_line_pointer;
+ input_line_pointer = str;
+ if (inst.reloc.exp.X_op == O_symbol
+ && *str == '('
+ && arm_parse_reloc () == BFD_RELOC_ARM_PLT32)
+ {
+ inst.reloc.type = BFD_RELOC_ARM_PLT32;
+ inst.reloc.pc_rel = 0;
+ /* Modify str to point to after parsed operands, otherwise
+ end_of_line() will complain about the (PLT) left in str. */
+ str = input_line_pointer;
+ }
+ else
+ {
+ inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH;
+ inst.reloc.pc_rel = 1;
+ }
+ input_line_pointer = save_in;
+ }
+#else
+ inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH;
+ inst.reloc.pc_rel = 1;
+#endif /* OBJ_ELF */
+
+ end_of_line (str);
+ return;
+}
+
+static void
+do_bx (str, flags)
+ char * str;
+ unsigned long flags ATTRIBUTE_UNUSED;
+{
+ int reg;
+
+ skip_whitespace (str);
+
+ if ((reg = reg_required_here (&str, 0)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (reg == REG_PC)
+ inst.error = BAD_PC;
+
+ end_of_line (str);
+}
+
+static void
+do_cdp (str, flags)
+ char * str;
+ unsigned long flags ATTRIBUTE_UNUSED;
+{
+ /* Co-processor data operation.
+ Format: CDP{cond} CP#,<expr>,CRd,CRn,CRm{,<expr>} */
+ skip_whitespace (str);
+
+ if (co_proc_number (&str) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_opc_expr (&str, 20,4) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_reg_required_here (&str, 12) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_reg_required_here (&str, 16) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_reg_required_here (&str, 0) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == SUCCESS)
+ {
+ if (cp_opc_expr (&str, 5, 3) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+ }
+
+ end_of_line (str);
+ return;
+}
+
+static void
+do_lstc (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ /* Co-processor register load/store.
+ Format: <LDC|STC{cond}[L] CP#,CRd,<address> */
+
+ skip_whitespace (str);
+
+ if (co_proc_number (&str) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_reg_required_here (&str, 12) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_address_required_here (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_co_reg (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ /* Co-processor register transfer.
+ Format: <MCR|MRC>{cond} CP#,<expr1>,Rd,CRn,CRm{,<expr2>} */
+
+ skip_whitespace (str);
+
+ if (co_proc_number (&str) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_opc_expr (&str, 21, 3) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || reg_required_here (&str, 12) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_reg_required_here (&str, 16) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_reg_required_here (&str, 0) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == SUCCESS)
+ {
+ if (cp_opc_expr (&str, 5, 3) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+ }
+ if (flags)
+ {
+ inst.error = BAD_COND;
+ }
+
+ end_of_line (str);
+ return;
+}
+
+static void
+do_fp_ctrl (str, flags)
+ char * str;
+ unsigned long flags ATTRIBUTE_UNUSED;
+{
+ /* FP control registers.
+ Format: <WFS|RFS|WFC|RFC>{cond} Rn */
+
+ skip_whitespace (str);
+
+ if (reg_required_here (&str, 12) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ end_of_line (str);
+ return;
+}
+
+static void
+do_fp_ldst (str, flags)
+ char * str;
+ unsigned long flags ATTRIBUTE_UNUSED;
+{
+ skip_whitespace (str);
+
+ switch (inst.suffix)
+ {
+ case SUFF_S:
+ break;
+ case SUFF_D:
+ inst.instruction |= CP_T_X;
+ break;
+ case SUFF_E:
+ inst.instruction |= CP_T_Y;
+ break;
+ case SUFF_P:
+ inst.instruction |= CP_T_X | CP_T_Y;
+ break;
+ default:
+ abort ();
+ }
+
+ if (fp_reg_required_here (&str, 12) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || cp_address_required_here (&str) == FAIL)
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ end_of_line (str);
+}
+
+static void
+do_fp_ldmstm (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int num_regs;
+
+ skip_whitespace (str);
+
+ if (fp_reg_required_here (&str, 12) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ /* Get Number of registers to transfer */
+ if (skip_past_comma (&str) == FAIL
+ || my_get_expression (&inst.reloc.exp, &str))
+ {
+ if (! inst.error)
+ inst.error = _("constant expression expected");
+ return;
+ }
+
+ if (inst.reloc.exp.X_op != O_constant)
+ {
+ inst.error = _("Constant value required for number of registers");
+ return;
+ }
+
+ num_regs = inst.reloc.exp.X_add_number;
+
+ if (num_regs < 1 || num_regs > 4)
+ {
+ inst.error = _("number of registers must be in the range [1:4]");
+ return;
+ }
+
+ switch (num_regs)
+ {
+ case 1:
+ inst.instruction |= CP_T_X;
+ break;
+ case 2:
+ inst.instruction |= CP_T_Y;
+ break;
+ case 3:
+ inst.instruction |= CP_T_Y | CP_T_X;
+ break;
+ case 4:
+ break;
+ default:
+ abort ();
+ }
+
+ if (flags)
+ {
+ int reg;
+ int write_back;
+ int offset;
+
+ /* The instruction specified "ea" or "fd", so we can only accept
+ [Rn]{!}. The instruction does not really support stacking or
+ unstacking, so we have to emulate these by setting appropriate
+ bits and offsets. */
+ if (skip_past_comma (&str) == FAIL
+ || *str != '[')
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ str++;
+ skip_whitespace (str);
+
+ if ((reg = reg_required_here (&str, 16)) == FAIL)
+ return;
+
+ skip_whitespace (str);
+
+ if (*str != ']')
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ str++;
+ if (*str == '!')
+ {
+ write_back = 1;
+ str++;
+ if (reg == REG_PC)
+ {
+ inst.error = _("R15 not allowed as base register with write-back");
+ return;
+ }
+ }
+ else
+ write_back = 0;
+
+ if (flags & CP_T_Pre)
+ {
+ /* Pre-decrement */
+ offset = 3 * num_regs;
+ if (write_back)
+ flags |= CP_T_WB;
+ }
+ else
+ {
+ /* Post-increment */
+ if (write_back)
+ {
+ flags |= CP_T_WB;
+ offset = 3 * num_regs;
+ }
+ else
+ {
+ /* No write-back, so convert this into a standard pre-increment
+ instruction -- aesthetically more pleasing. */
+ flags = CP_T_Pre | CP_T_UD;
+ offset = 0;
+ }
+ }
+
+ inst.instruction |= flags | offset;
+ }
+ else if (skip_past_comma (&str) == FAIL
+ || cp_address_required_here (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ end_of_line (str);
+}
+
+static void
+do_fp_dyadic (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ switch (inst.suffix)
+ {
+ case SUFF_S:
+ break;
+ case SUFF_D:
+ inst.instruction |= 0x00000080;
+ break;
+ case SUFF_E:
+ inst.instruction |= 0x00080000;
+ break;
+ default:
+ abort ();
+ }
+
+ if (fp_reg_required_here (&str, 12) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || fp_reg_required_here (&str, 16) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || fp_op2 (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_fp_monadic (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ switch (inst.suffix)
+ {
+ case SUFF_S:
+ break;
+ case SUFF_D:
+ inst.instruction |= 0x00000080;
+ break;
+ case SUFF_E:
+ inst.instruction |= 0x00080000;
+ break;
+ default:
+ abort ();
+ }
+
+ if (fp_reg_required_here (&str, 12) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || fp_op2 (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_fp_cmp (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ if (fp_reg_required_here (&str, 16) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || fp_op2 (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_fp_from_reg (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ switch (inst.suffix)
+ {
+ case SUFF_S:
+ break;
+ case SUFF_D:
+ inst.instruction |= 0x00000080;
+ break;
+ case SUFF_E:
+ inst.instruction |= 0x00080000;
+ break;
+ default:
+ abort ();
+ }
+
+ if (fp_reg_required_here (&str, 16) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) == FAIL
+ || reg_required_here (&str, 12) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_fp_to_reg (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ skip_whitespace (str);
+
+ if (reg_required_here (&str, 12) == FAIL)
+ return;
+
+ if (skip_past_comma (&str) == FAIL
+ || fp_reg_required_here (&str, 0) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.instruction |= flags;
+ end_of_line (str);
+ return;
+}
+
+/* Thumb specific routines */
+
+/* Parse and validate that a register is of the right form, this saves
+ repeated checking of this information in many similar cases.
+ Unlike the 32-bit case we do not insert the register into the opcode
+ here, since the position is often unknown until the full instruction
+ has been parsed. */
+static int
+thumb_reg (strp, hi_lo)
+ char ** strp;
+ int hi_lo;
+{
+ int reg;
+
+ if ((reg = reg_required_here (strp, -1)) == FAIL)
+ return FAIL;
+
+ switch (hi_lo)
+ {
+ case THUMB_REG_LO:
+ if (reg > 7)
+ {
+ inst.error = _("lo register required");
+ return FAIL;
+ }
+ break;
+
+ case THUMB_REG_HI:
+ if (reg < 8)
+ {
+ inst.error = _("hi register required");
+ return FAIL;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return reg;
+}
+
+/* Parse an add or subtract instruction, SUBTRACT is non-zero if the opcode
+ was SUB. */
+static void
+thumb_add_sub (str, subtract)
+ char * str;
+ int subtract;
+{
+ int Rd, Rs, Rn = FAIL;
+
+ skip_whitespace (str);
+
+ if ((Rd = thumb_reg (&str, THUMB_REG_ANY)) == FAIL
+ || skip_past_comma (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (is_immediate_prefix (*str))
+ {
+ Rs = Rd;
+ str++;
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+ }
+ else
+ {
+ if ((Rs = thumb_reg (&str, THUMB_REG_ANY)) == FAIL)
+ return;
+
+ if (skip_past_comma (&str) == FAIL)
+ {
+ /* Two operand format, shuffle the registers and pretend there
+ are 3 */
+ Rn = Rs;
+ Rs = Rd;
+ }
+ else if (is_immediate_prefix (*str))
+ {
+ str++;
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+ }
+ else if ((Rn = thumb_reg (&str, THUMB_REG_ANY)) == FAIL)
+ return;
+ }
+
+ /* We now have Rd and Rs set to registers, and Rn set to a register or FAIL;
+ for the latter case, EXPR contains the immediate that was found. */
+ if (Rn != FAIL)
+ {
+ /* All register format. */
+ if (Rd > 7 || Rs > 7 || Rn > 7)
+ {
+ if (Rs != Rd)
+ {
+ inst.error = _("dest and source1 must be the same register");
+ return;
+ }
+
+ /* Can't do this for SUB */
+ if (subtract)
+ {
+ inst.error = _("subtract valid only on lo regs");
+ return;
+ }
+
+ inst.instruction = (T_OPCODE_ADD_HI
+ | (Rd > 7 ? THUMB_H1 : 0)
+ | (Rn > 7 ? THUMB_H2 : 0));
+ inst.instruction |= (Rd & 7) | ((Rn & 7) << 3);
+ }
+ else
+ {
+ inst.instruction = subtract ? T_OPCODE_SUB_R3 : T_OPCODE_ADD_R3;
+ inst.instruction |= Rd | (Rs << 3) | (Rn << 6);
+ }
+ }
+ else
+ {
+ /* Immediate expression, now things start to get nasty. */
+
+ /* First deal with HI regs, only very restricted cases allowed:
+ Adjusting SP, and using PC or SP to get an address. */
+ if ((Rd > 7 && (Rd != REG_SP || Rs != REG_SP))
+ || (Rs > 7 && Rs != REG_SP && Rs != REG_PC))
+ {
+ inst.error = _("invalid Hi register with immediate");
+ return;
+ }
+
+ if (inst.reloc.exp.X_op != O_constant)
+ {
+ /* Value isn't known yet, all we can do is store all the fragments
+ we know about in the instruction and let the reloc hacking
+ work it all out. */
+ inst.instruction = (subtract ? 0x8000 : 0) | (Rd << 4) | Rs;
+ inst.reloc.type = BFD_RELOC_ARM_THUMB_ADD;
+ }
+ else
+ {
+ int offset = inst.reloc.exp.X_add_number;
+
+ if (subtract)
+ offset = -offset;
+
+ if (offset < 0)
+ {
+ offset = -offset;
+ subtract = 1;
+
+ /* Quick check, in case offset is MIN_INT */
+ if (offset < 0)
+ {
+ inst.error = _("immediate value out of range");
+ return;
+ }
+ }
+ else
+ subtract = 0;
+
+ if (Rd == REG_SP)
+ {
+ if (offset & ~0x1fc)
+ {
+ inst.error = _("invalid immediate value for stack adjust");
+ return;
+ }
+ inst.instruction = subtract ? T_OPCODE_SUB_ST : T_OPCODE_ADD_ST;
+ inst.instruction |= offset >> 2;
+ }
+ else if (Rs == REG_PC || Rs == REG_SP)
+ {
+ if (subtract
+ || (offset & ~0x3fc))
+ {
+ inst.error = _("invalid immediate for address calculation");
+ return;
+ }
+ inst.instruction = (Rs == REG_PC ? T_OPCODE_ADD_PC
+ : T_OPCODE_ADD_SP);
+ inst.instruction |= (Rd << 8) | (offset >> 2);
+ }
+ else if (Rs == Rd)
+ {
+ if (offset & ~0xff)
+ {
+ inst.error = _("immediate value out of range");
+ return;
+ }
+ inst.instruction = subtract ? T_OPCODE_SUB_I8 : T_OPCODE_ADD_I8;
+ inst.instruction |= (Rd << 8) | offset;
+ }
+ else
+ {
+ if (offset & ~0x7)
+ {
+ inst.error = _("immediate value out of range");
+ return;
+ }
+ inst.instruction = subtract ? T_OPCODE_SUB_I3 : T_OPCODE_ADD_I3;
+ inst.instruction |= Rd | (Rs << 3) | (offset << 6);
+ }
+ }
+ }
+
+ end_of_line (str);
+}
+
+static void
+thumb_shift (str, shift)
+ char * str;
+ int shift;
+{
+ int Rd, Rs, Rn = FAIL;
+
+ skip_whitespace (str);
+
+ if ((Rd = thumb_reg (&str, THUMB_REG_LO)) == FAIL
+ || skip_past_comma (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (is_immediate_prefix (*str))
+ {
+ /* Two operand immediate format, set Rs to Rd. */
+ Rs = Rd;
+ str ++;
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+ }
+ else
+ {
+ if ((Rs = thumb_reg (&str, THUMB_REG_LO)) == FAIL)
+ return;
+
+ if (skip_past_comma (&str) == FAIL)
+ {
+ /* Two operand format, shuffle the registers and pretend there
+ are 3 */
+ Rn = Rs;
+ Rs = Rd;
+ }
+ else if (is_immediate_prefix (*str))
+ {
+ str++;
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+ }
+ else if ((Rn = thumb_reg (&str, THUMB_REG_LO)) == FAIL)
+ return;
+ }
+
+ /* We now have Rd and Rs set to registers, and Rn set to a register or FAIL;
+ for the latter case, EXPR contains the immediate that was found. */
+
+ if (Rn != FAIL)
+ {
+ if (Rs != Rd)
+ {
+ inst.error = _("source1 and dest must be same register");
+ return;
+ }
+
+ switch (shift)
+ {
+ case THUMB_ASR: inst.instruction = T_OPCODE_ASR_R; break;
+ case THUMB_LSL: inst.instruction = T_OPCODE_LSL_R; break;
+ case THUMB_LSR: inst.instruction = T_OPCODE_LSR_R; break;
+ }
+
+ inst.instruction |= Rd | (Rn << 3);
+ }
+ else
+ {
+ switch (shift)
+ {
+ case THUMB_ASR: inst.instruction = T_OPCODE_ASR_I; break;
+ case THUMB_LSL: inst.instruction = T_OPCODE_LSL_I; break;
+ case THUMB_LSR: inst.instruction = T_OPCODE_LSR_I; break;
+ }
+
+ if (inst.reloc.exp.X_op != O_constant)
+ {
+ /* Value isn't known yet, create a dummy reloc and let reloc
+ hacking fix it up */
+
+ inst.reloc.type = BFD_RELOC_ARM_THUMB_SHIFT;
+ }
+ else
+ {
+ unsigned shift_value = inst.reloc.exp.X_add_number;
+
+ if (shift_value > 32 || (shift_value == 32 && shift == THUMB_LSL))
+ {
+ inst.error = _("Invalid immediate for shift");
+ return;
+ }
+
+ /* Shifts of zero are handled by converting to LSL */
+ if (shift_value == 0)
+ inst.instruction = T_OPCODE_LSL_I;
+
+ /* Shifts of 32 are encoded as a shift of zero */
+ if (shift_value == 32)
+ shift_value = 0;
+
+ inst.instruction |= shift_value << 6;
+ }
+
+ inst.instruction |= Rd | (Rs << 3);
+ }
+
+ end_of_line (str);
+}
+
+static void
+thumb_mov_compare (str, move)
+ char * str;
+ int move;
+{
+ int Rd, Rs = FAIL;
+
+ skip_whitespace (str);
+
+ if ((Rd = thumb_reg (&str, THUMB_REG_ANY)) == FAIL
+ || skip_past_comma (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (is_immediate_prefix (*str))
+ {
+ str++;
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+ }
+ else if ((Rs = thumb_reg (&str, THUMB_REG_ANY)) == FAIL)
+ return;
+
+ if (Rs != FAIL)
+ {
+ if (Rs < 8 && Rd < 8)
+ {
+ if (move == THUMB_MOVE)
+ /* A move of two lowregs is encoded as ADD Rd, Rs, #0
+ since a MOV instruction produces unpredictable results */
+ inst.instruction = T_OPCODE_ADD_I3;
+ else
+ inst.instruction = T_OPCODE_CMP_LR;
+ inst.instruction |= Rd | (Rs << 3);
+ }
+ else
+ {
+ if (move == THUMB_MOVE)
+ inst.instruction = T_OPCODE_MOV_HR;
+ else
+ inst.instruction = T_OPCODE_CMP_HR;
+
+ if (Rd > 7)
+ inst.instruction |= THUMB_H1;
+
+ if (Rs > 7)
+ inst.instruction |= THUMB_H2;
+
+ inst.instruction |= (Rd & 7) | ((Rs & 7) << 3);
+ }
+ }
+ else
+ {
+ if (Rd > 7)
+ {
+ inst.error = _("only lo regs allowed with immediate");
+ return;
+ }
+
+ if (move == THUMB_MOVE)
+ inst.instruction = T_OPCODE_MOV_I8;
+ else
+ inst.instruction = T_OPCODE_CMP_I8;
+
+ inst.instruction |= Rd << 8;
+
+ if (inst.reloc.exp.X_op != O_constant)
+ inst.reloc.type = BFD_RELOC_ARM_THUMB_IMM;
+ else
+ {
+ unsigned value = inst.reloc.exp.X_add_number;
+
+ if (value > 255)
+ {
+ inst.error = _("invalid immediate");
+ return;
+ }
+
+ inst.instruction |= value;
+ }
+ }
+
+ end_of_line (str);
+}
+
+static void
+thumb_load_store (str, load_store, size)
+ char * str;
+ int load_store;
+ int size;
+{
+ int Rd, Rb, Ro = FAIL;
+
+ skip_whitespace (str);
+
+ if ((Rd = thumb_reg (&str, THUMB_REG_LO)) == FAIL
+ || skip_past_comma (&str) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (*str == '[')
+ {
+ str++;
+ if ((Rb = thumb_reg (&str, THUMB_REG_ANY)) == FAIL)
+ return;
+
+ if (skip_past_comma (&str) != FAIL)
+ {
+ if (is_immediate_prefix (*str))
+ {
+ str++;
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+ }
+ else if ((Ro = thumb_reg (&str, THUMB_REG_LO)) == FAIL)
+ return;
+ }
+ else
+ {
+ inst.reloc.exp.X_op = O_constant;
+ inst.reloc.exp.X_add_number = 0;
+ }
+
+ if (*str != ']')
+ {
+ inst.error = _("expected ']'");
+ return;
+ }
+ str++;
+ }
+ else if (*str == '=')
+ {
+ /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op */
+ str++;
+
+ skip_whitespace (str);
+
+ if (my_get_expression (& inst.reloc.exp, & str))
+ return;
+
+ end_of_line (str);
+
+ if ( inst.reloc.exp.X_op != O_constant
+ && inst.reloc.exp.X_op != O_symbol)
+ {
+ inst.error = "Constant expression expected";
+ return;
+ }
+
+ if (inst.reloc.exp.X_op == O_constant
+ && ((inst.reloc.exp.X_add_number & ~0xFF) == 0))
+ {
+ /* This can be done with a mov instruction */
+
+ inst.instruction = T_OPCODE_MOV_I8 | (Rd << 8);
+ inst.instruction |= inst.reloc.exp.X_add_number;
+ return;
+ }
+
+ /* Insert into literal pool */
+ if (add_to_lit_pool () == FAIL)
+ {
+ if (!inst.error)
+ inst.error = "literal pool insertion failed";
+ return;
+ }
+
+ inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET;
+ inst.reloc.pc_rel = 1;
+ inst.instruction = T_OPCODE_LDR_PC | (Rd << 8);
+ inst.reloc.exp.X_add_number += 4; /* Adjust ARM pipeline offset to Thumb */
+
+ return;
+ }
+ else
+ {
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+
+ inst.instruction = T_OPCODE_LDR_PC | (Rd << 8);
+ inst.reloc.pc_rel = 1;
+ inst.reloc.exp.X_add_number -= 4; /* Pipeline offset */
+ inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET;
+ end_of_line (str);
+ return;
+ }
+
+ if (Rb == REG_PC || Rb == REG_SP)
+ {
+ if (size != THUMB_WORD)
+ {
+ inst.error = _("byte or halfword not valid for base register");
+ return;
+ }
+ else if (Rb == REG_PC && load_store != THUMB_LOAD)
+ {
+ inst.error = _("R15 based store not allowed");
+ return;
+ }
+ else if (Ro != FAIL)
+ {
+ inst.error = _("Invalid base register for register offset");
+ return;
+ }
+
+ if (Rb == REG_PC)
+ inst.instruction = T_OPCODE_LDR_PC;
+ else if (load_store == THUMB_LOAD)
+ inst.instruction = T_OPCODE_LDR_SP;
+ else
+ inst.instruction = T_OPCODE_STR_SP;
+
+ inst.instruction |= Rd << 8;
+ if (inst.reloc.exp.X_op == O_constant)
+ {
+ unsigned offset = inst.reloc.exp.X_add_number;
+
+ if (offset & ~0x3fc)
+ {
+ inst.error = _("invalid offset");
+ return;
+ }
+
+ inst.instruction |= offset >> 2;
+ }
+ else
+ inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET;
+ }
+ else if (Rb > 7)
+ {
+ inst.error = _("invalid base register in load/store");
+ return;
+ }
+ else if (Ro == FAIL)
+ {
+ /* Immediate offset */
+ if (size == THUMB_WORD)
+ inst.instruction = (load_store == THUMB_LOAD
+ ? T_OPCODE_LDR_IW : T_OPCODE_STR_IW);
+ else if (size == THUMB_HALFWORD)
+ inst.instruction = (load_store == THUMB_LOAD
+ ? T_OPCODE_LDR_IH : T_OPCODE_STR_IH);
+ else
+ inst.instruction = (load_store == THUMB_LOAD
+ ? T_OPCODE_LDR_IB : T_OPCODE_STR_IB);
+
+ inst.instruction |= Rd | (Rb << 3);
+
+ if (inst.reloc.exp.X_op == O_constant)
+ {
+ unsigned offset = inst.reloc.exp.X_add_number;
+
+ if (offset & ~(0x1f << size))
+ {
+ inst.error = _("Invalid offset");
+ return;
+ }
+ inst.instruction |= (offset >> size) << 6;
+ }
+ else
+ inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET;
+ }
+ else
+ {
+ /* Register offset */
+ if (size == THUMB_WORD)
+ inst.instruction = (load_store == THUMB_LOAD
+ ? T_OPCODE_LDR_RW : T_OPCODE_STR_RW);
+ else if (size == THUMB_HALFWORD)
+ inst.instruction = (load_store == THUMB_LOAD
+ ? T_OPCODE_LDR_RH : T_OPCODE_STR_RH);
+ else
+ inst.instruction = (load_store == THUMB_LOAD
+ ? T_OPCODE_LDR_RB : T_OPCODE_STR_RB);
+
+ inst.instruction |= Rd | (Rb << 3) | (Ro << 6);
+ }
+
+ end_of_line (str);
+}
+
+static void
+do_t_nop (str)
+ char * str;
+{
+ /* Do nothing */
+ end_of_line (str);
+ return;
+}
+
+/* Handle the Format 4 instructions that do not have equivalents in other
+ formats. That is, ADC, AND, EOR, SBC, ROR, TST, NEG, CMN, ORR, MUL,
+ BIC and MVN. */
+static void
+do_t_arit (str)
+ char * str;
+{
+ int Rd, Rs, Rn;
+
+ skip_whitespace (str);
+
+ if ((Rd = thumb_reg (&str, THUMB_REG_LO)) == FAIL
+ || skip_past_comma (&str) == FAIL
+ || (Rs = thumb_reg (&str, THUMB_REG_LO)) == FAIL)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (skip_past_comma (&str) != FAIL)
+ {
+ /* Three operand format not allowed for TST, CMN, NEG and MVN.
+ (It isn't allowed for CMP either, but that isn't handled by this
+ function.) */
+ if (inst.instruction == T_OPCODE_TST
+ || inst.instruction == T_OPCODE_CMN
+ || inst.instruction == T_OPCODE_NEG
+ || inst.instruction == T_OPCODE_MVN)
+ {
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if ((Rn = thumb_reg (&str, THUMB_REG_LO)) == FAIL)
+ return;
+
+ if (Rs != Rd)
+ {
+ inst.error = _("dest and source1 one must be the same register");
+ return;
+ }
+ Rs = Rn;
+ }
+
+ if (inst.instruction == T_OPCODE_MUL
+ && Rs == Rd)
+ as_tsktsk (_("Rs and Rd must be different in MUL"));
+
+ inst.instruction |= Rd | (Rs << 3);
+ end_of_line (str);
+}
+
+static void
+do_t_add (str)
+ char * str;
+{
+ thumb_add_sub (str, 0);
+}
+
+static void
+do_t_asr (str)
+ char * str;
+{
+ thumb_shift (str, THUMB_ASR);
+}
+
+static void
+do_t_branch9 (str)
+ char * str;
+{
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+ inst.reloc.type = BFD_RELOC_THUMB_PCREL_BRANCH9;
+ inst.reloc.pc_rel = 1;
+ end_of_line (str);
+}
+
+static void
+do_t_branch12 (str)
+ char * str;
+{
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+ inst.reloc.type = BFD_RELOC_THUMB_PCREL_BRANCH12;
+ inst.reloc.pc_rel = 1;
+ end_of_line (str);
+}
+
+/* Find the real, Thumb encoded start of a Thumb function. */
+
+static symbolS *
+find_real_start (symbolP)
+ symbolS * symbolP;
+{
+ char * real_start;
+ const char * name = S_GET_NAME (symbolP);
+ symbolS * new_target;
+
+ /* This definiton must agree with the one in gcc/config/arm/thumb.c */
+#define STUB_NAME ".real_start_of"
+
+ if (name == NULL)
+ abort();
+
+ /* Names that start with '.' are local labels, not function entry points.
+ The compiler may generate BL instructions to these labels because it
+ needs to perform a branch to a far away location. */
+ if (name[0] == '.')
+ return symbolP;
+
+ real_start = malloc (strlen (name) + strlen (STUB_NAME) + 1);
+ sprintf (real_start, "%s%s", STUB_NAME, name);
+
+ new_target = symbol_find (real_start);
+
+ if (new_target == NULL)
+ {
+ as_warn ("Failed to find real start of function: %s\n", name);
+ new_target = symbolP;
+ }
+
+ free (real_start);
+
+ return new_target;
+}
+
+
+static void
+do_t_branch23 (str)
+ char * str;
+{
+ if (my_get_expression (& inst.reloc.exp, & str))
+ return;
+
+ inst.reloc.type = BFD_RELOC_THUMB_PCREL_BRANCH23;
+ inst.reloc.pc_rel = 1;
+ end_of_line (str);
+
+ /* If the destination of the branch is a defined symbol which does not have
+ the THUMB_FUNC attribute, then we must be calling a function which has
+ the (interfacearm) attribute. We look for the Thumb entry point to that
+ function and change the branch to refer to that function instead. */
+ if ( inst.reloc.exp.X_op == O_symbol
+ && inst.reloc.exp.X_add_symbol != NULL
+ && S_IS_DEFINED (inst.reloc.exp.X_add_symbol)
+ && ! THUMB_IS_FUNC (inst.reloc.exp.X_add_symbol))
+ inst.reloc.exp.X_add_symbol = find_real_start (inst.reloc.exp.X_add_symbol);
+}
+
+static void
+do_t_bx (str)
+ char * str;
+{
+ int reg;
+
+ skip_whitespace (str);
+
+ if ((reg = thumb_reg (&str, THUMB_REG_ANY)) == FAIL)
+ return;
+
+ /* This sets THUMB_H2 from the top bit of reg. */
+ inst.instruction |= reg << 3;
+
+ /* ??? FIXME: Should add a hacky reloc here if reg is REG_PC. The reloc
+ should cause the alignment to be checked once it is known. This is
+ because BX PC only works if the instruction is word aligned. */
+
+ end_of_line (str);
+}
+
+static void
+do_t_compare (str)
+ char * str;
+{
+ thumb_mov_compare (str, THUMB_COMPARE);
+}
+
+static void
+do_t_ldmstm (str)
+ char * str;
+{
+ int Rb;
+ long range;
+
+ skip_whitespace (str);
+
+ if ((Rb = thumb_reg (&str, THUMB_REG_LO)) == FAIL)
+ return;
+
+ if (*str != '!')
+ as_warn (_("Inserted missing '!': load/store multiple always writes back base register"));
+ else
+ str++;
+
+ if (skip_past_comma (&str) == FAIL
+ || (range = reg_list (&str)) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (inst.reloc.type != BFD_RELOC_NONE)
+ {
+ /* This really doesn't seem worth it. */
+ inst.reloc.type = BFD_RELOC_NONE;
+ inst.error = _("Expression too complex");
+ return;
+ }
+
+ if (range & ~0xff)
+ {
+ inst.error = _("only lo-regs valid in load/store multiple");
+ return;
+ }
+
+ inst.instruction |= (Rb << 8) | range;
+ end_of_line (str);
+}
+
+static void
+do_t_ldr (str)
+ char * str;
+{
+ thumb_load_store (str, THUMB_LOAD, THUMB_WORD);
+}
+
+static void
+do_t_ldrb (str)
+ char * str;
+{
+ thumb_load_store (str, THUMB_LOAD, THUMB_BYTE);
+}
+
+static void
+do_t_ldrh (str)
+ char * str;
+{
+ thumb_load_store (str, THUMB_LOAD, THUMB_HALFWORD);
+}
+
+static void
+do_t_lds (str)
+ char * str;
+{
+ int Rd, Rb, Ro;
+
+ skip_whitespace (str);
+
+ if ((Rd = thumb_reg (&str, THUMB_REG_LO)) == FAIL
+ || skip_past_comma (&str) == FAIL
+ || *str++ != '['
+ || (Rb = thumb_reg (&str, THUMB_REG_LO)) == FAIL
+ || skip_past_comma (&str) == FAIL
+ || (Ro = thumb_reg (&str, THUMB_REG_LO)) == FAIL
+ || *str++ != ']')
+ {
+ if (! inst.error)
+ inst.error = _("Syntax: ldrs[b] Rd, [Rb, Ro]");
+ return;
+ }
+
+ inst.instruction |= Rd | (Rb << 3) | (Ro << 6);
+ end_of_line (str);
+}
+
+static void
+do_t_lsl (str)
+ char * str;
+{
+ thumb_shift (str, THUMB_LSL);
+}
+
+static void
+do_t_lsr (str)
+ char * str;
+{
+ thumb_shift (str, THUMB_LSR);
+}
+
+static void
+do_t_mov (str)
+ char * str;
+{
+ thumb_mov_compare (str, THUMB_MOVE);
+}
+
+static void
+do_t_push_pop (str)
+ char * str;
+{
+ long range;
+
+ skip_whitespace (str);
+
+ if ((range = reg_list (&str)) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ if (inst.reloc.type != BFD_RELOC_NONE)
+ {
+ /* This really doesn't seem worth it. */
+ inst.reloc.type = BFD_RELOC_NONE;
+ inst.error = _("Expression too complex");
+ return;
+ }
+
+ if (range & ~0xff)
+ {
+ if ((inst.instruction == T_OPCODE_PUSH
+ && (range & ~0xff) == 1 << REG_LR)
+ || (inst.instruction == T_OPCODE_POP
+ && (range & ~0xff) == 1 << REG_PC))
+ {
+ inst.instruction |= THUMB_PP_PC_LR;
+ range &= 0xff;
+ }
+ else
+ {
+ inst.error = _("invalid register list to push/pop instruction");
+ return;
+ }
+ }
+
+ inst.instruction |= range;
+ end_of_line (str);
+}
+
+static void
+do_t_str (str)
+ char * str;
+{
+ thumb_load_store (str, THUMB_STORE, THUMB_WORD);
+}
+
+static void
+do_t_strb (str)
+ char * str;
+{
+ thumb_load_store (str, THUMB_STORE, THUMB_BYTE);
+}
+
+static void
+do_t_strh (str)
+ char * str;
+{
+ thumb_load_store (str, THUMB_STORE, THUMB_HALFWORD);
+}
+
+static void
+do_t_sub (str)
+ char * str;
+{
+ thumb_add_sub (str, 1);
+}
+
+static void
+do_t_swi (str)
+ char * str;
+{
+ skip_whitespace (str);
+
+ if (my_get_expression (&inst.reloc.exp, &str))
+ return;
+
+ inst.reloc.type = BFD_RELOC_ARM_SWI;
+ end_of_line (str);
+ return;
+}
+
+static void
+do_t_adr (str)
+ char * str;
+{
+ int reg;
+
+ /* This is a pseudo-op of the form "adr rd, label" to be converted
+ into a relative address of the form "add rd, pc, #label-.-4". */
+ skip_whitespace (str);
+
+ /* Store Rd in temporary location inside instruction. */
+ if ((reg = reg_required_here (&str, 4)) == FAIL
+ || (reg > 7) /* For Thumb reg must be r0..r7. */
+ || skip_past_comma (&str) == FAIL
+ || my_get_expression (&inst.reloc.exp, &str))
+ {
+ if (!inst.error)
+ inst.error = BAD_ARGS;
+ return;
+ }
+
+ inst.reloc.type = BFD_RELOC_ARM_THUMB_ADD;
+ inst.reloc.exp.X_add_number -= 4; /* PC relative adjust. */
+ inst.reloc.pc_rel = 1;
+ inst.instruction |= REG_PC; /* Rd is already placed into the instruction. */
+
+ end_of_line (str);
+}
+
+static void
+insert_reg (entry)
+ int entry;
+{
+ int len = strlen (reg_table[entry].name) + 2;
+ char * buf = (char *) xmalloc (len);
+ char * buf2 = (char *) xmalloc (len);
+ int i = 0;
+
+#ifdef REGISTER_PREFIX
+ buf[i++] = REGISTER_PREFIX;
+#endif
+
+ strcpy (buf + i, reg_table[entry].name);
+
+ for (i = 0; buf[i]; i++)
+ buf2[i] = islower (buf[i]) ? toupper (buf[i]) : buf[i];
+
+ buf2[i] = '\0';
+
+ hash_insert (arm_reg_hsh, buf, (PTR) &reg_table[entry]);
+ hash_insert (arm_reg_hsh, buf2, (PTR) &reg_table[entry]);
+}
+
+static void
+insert_reg_alias (str, regnum)
+ char *str;
+ int regnum;
+{
+ struct reg_entry *new =
+ (struct reg_entry *)xmalloc (sizeof (struct reg_entry));
+ char *name = xmalloc (strlen (str) + 1);
+ strcpy (name, str);
+
+ new->name = name;
+ new->number = regnum;
+
+ hash_insert (arm_reg_hsh, name, (PTR) new);
+}
+
+static void
+set_constant_flonums ()
+{
+ int i;
+
+ for (i = 0; i < NUM_FLOAT_VALS; i++)
+ if (atof_ieee ((char *)fp_const[i], 'x', fp_values[i]) == NULL)
+ abort ();
+}
+
+void
+md_begin ()
+{
+ unsigned mach;
+ unsigned int i;
+
+ if ( (arm_ops_hsh = hash_new ()) == NULL
+ || (arm_tops_hsh = hash_new ()) == NULL
+ || (arm_cond_hsh = hash_new ()) == NULL
+ || (arm_shift_hsh = hash_new ()) == NULL
+ || (arm_reg_hsh = hash_new ()) == NULL
+ || (arm_psr_hsh = hash_new ()) == NULL)
+ as_fatal (_("Virtual memory exhausted"));
+
+ for (i = 0; i < sizeof (insns) / sizeof (struct asm_opcode); i++)
+ hash_insert (arm_ops_hsh, insns[i].template, (PTR) (insns + i));
+ for (i = 0; i < sizeof (tinsns) / sizeof (struct thumb_opcode); i++)
+ hash_insert (arm_tops_hsh, tinsns[i].template, (PTR) (tinsns + i));
+ for (i = 0; i < sizeof (conds) / sizeof (struct asm_cond); i++)
+ hash_insert (arm_cond_hsh, conds[i].template, (PTR) (conds + i));
+ for (i = 0; i < sizeof (shift) / sizeof (struct asm_shift); i++)
+ hash_insert (arm_shift_hsh, shift[i].template, (PTR) (shift + i));
+ for (i = 0; i < sizeof (psrs) / sizeof (struct asm_psr); i++)
+ hash_insert (arm_psr_hsh, psrs[i].template, (PTR) (psrs + i));
+
+ for (i = 0; reg_table[i].name; i++)
+ insert_reg (i);
+
+ set_constant_flonums ();
+
+#if defined OBJ_COFF || defined OBJ_ELF
+ {
+ unsigned int flags = 0;
+
+ /* Set the flags in the private structure. */
+ if (uses_apcs_26) flags |= F_APCS26;
+ if (support_interwork) flags |= F_INTERWORK;
+ if (uses_apcs_float) flags |= F_APCS_FLOAT;
+ if (pic_code) flags |= F_PIC;
+ if ((cpu_variant & FPU_ALL) == FPU_NONE) flags |= F_SOFT_FLOAT;
+
+ bfd_set_private_flags (stdoutput, flags);
+ }
+#endif
+
+ /* Record the CPU type as well. */
+ switch (cpu_variant & ARM_CPU_MASK)
+ {
+ case ARM_2:
+ mach = bfd_mach_arm_2;
+ break;
+
+ case ARM_3: /* Also ARM_250. */
+ mach = bfd_mach_arm_2a;
+ break;
+
+ default:
+ case ARM_6 | ARM_3 | ARM_2: /* Actually no CPU type defined. */
+ mach = bfd_mach_arm_4;
+ break;
+
+ case ARM_7: /* Also ARM_6. */
+ mach = bfd_mach_arm_3;
+ break;
+ }
+
+ /* Catch special cases. */
+ if (cpu_variant != (FPU_DEFAULT | CPU_DEFAULT))
+ {
+ if (cpu_variant & (ARM_EXT_V5 & ARM_THUMB))
+ mach = bfd_mach_arm_5T;
+ else if (cpu_variant & ARM_EXT_V5)
+ mach = bfd_mach_arm_5;
+ else if (cpu_variant & ARM_THUMB)
+ mach = bfd_mach_arm_4T;
+ else if ((cpu_variant & ARM_ARCH_V4) == ARM_ARCH_V4)
+ mach = bfd_mach_arm_4;
+ else if (cpu_variant & ARM_LONGMUL)
+ mach = bfd_mach_arm_3M;
+ }
+
+ bfd_set_arch_mach (stdoutput, TARGET_ARCH, mach);
+}
+
+/* Turn an integer of n bytes (in val) into a stream of bytes appropriate
+ for use in the a.out file, and stores them in the array pointed to by buf.
+ This knows about the endian-ness of the target machine and does
+ THE RIGHT THING, whatever it is. Possible values for n are 1 (byte)
+ 2 (short) and 4 (long) Floating numbers are put out as a series of
+ LITTLENUMS (shorts, here at least). */
+void
+md_number_to_chars (buf, val, n)
+ char * buf;
+ valueT val;
+ int n;
+{
+ if (target_big_endian)
+ number_to_chars_bigendian (buf, val, n);
+ else
+ number_to_chars_littleendian (buf, val, n);
+}
+
+static valueT
+md_chars_to_number (buf, n)
+ char * buf;
+ int n;
+{
+ valueT result = 0;
+ unsigned char * where = (unsigned char *) buf;
+
+ if (target_big_endian)
+ {
+ while (n--)
+ {
+ result <<= 8;
+ result |= (*where++ & 255);
+ }
+ }
+ else
+ {
+ while (n--)
+ {
+ result <<= 8;
+ result |= (where[n] & 255);
+ }
+ }
+
+ return result;
+}
+
+/* Turn a string in input_line_pointer into a floating point constant
+ of type TYPE, and store the appropriate bytes in *litP. The number
+ of LITTLENUMS emitted is stored in *sizeP . An error message is
+ returned, or NULL on OK.
+
+ Note that fp constants aren't represent in the normal way on the ARM.
+ In big endian mode, things are as expected. However, in little endian
+ mode fp constants are big-endian word-wise, and little-endian byte-wise
+ within the words. For example, (double) 1.1 in big endian mode is
+ the byte sequence 3f f1 99 99 99 99 99 9a, and in little endian mode is
+ the byte sequence 99 99 f1 3f 9a 99 99 99.
+
+ ??? The format of 12 byte floats is uncertain according to gcc's arm.h. */
+
+char *
+md_atof (type, litP, sizeP)
+ char type;
+ char * litP;
+ int * sizeP;
+{
+ int prec;
+ LITTLENUM_TYPE words[MAX_LITTLENUMS];
+ char *t;
+ int i;
+
+ switch (type)
+ {
+ case 'f':
+ case 'F':
+ case 's':
+ case 'S':
+ prec = 2;
+ break;
+
+ case 'd':
+ case 'D':
+ case 'r':
+ case 'R':
+ prec = 4;
+ break;
+
+ case 'x':
+ case 'X':
+ prec = 6;
+ break;
+
+ case 'p':
+ case 'P':
+ prec = 6;
+ break;
+
+ default:
+ *sizeP = 0;
+ return _("Bad call to MD_ATOF()");
+ }
+
+ t = atof_ieee (input_line_pointer, type, words);
+ if (t)
+ input_line_pointer = t;
+ *sizeP = prec * 2;
+
+ if (target_big_endian)
+ {
+ for (i = 0; i < prec; i++)
+ {
+ md_number_to_chars (litP, (valueT) words[i], 2);
+ litP += 2;
+ }
+ }
+ else
+ {
+ /* For a 4 byte float the order of elements in `words' is 1 0. For an
+ 8 byte float the order is 1 0 3 2. */
+ for (i = 0; i < prec; i += 2)
+ {
+ md_number_to_chars (litP, (valueT) words[i + 1], 2);
+ md_number_to_chars (litP + 2, (valueT) words[i], 2);
+ litP += 4;
+ }
+ }
+
+ return 0;
+}
+
+/* The knowledge of the PC's pipeline offset is built into the insns themselves. */
+long
+md_pcrel_from (fixP)
+ fixS * fixP;
+{
+ if ( fixP->fx_addsy
+ && S_GET_SEGMENT (fixP->fx_addsy) == undefined_section
+ && fixP->fx_subsy == NULL)
+ return 0;
+
+ if (fixP->fx_pcrel && (fixP->fx_r_type == BFD_RELOC_ARM_THUMB_ADD))
+ {
+ /* PC relative addressing on the Thumb is slightly odd
+ as the bottom two bits of the PC are forced to zero
+ for the calculation. */
+ return (fixP->fx_where + fixP->fx_frag->fr_address) & ~3;
+ }
+
+#ifdef TE_WINCE
+ /* The pattern was adjusted to accomodate CE's off-by-one fixups,
+ so we un-adjust here to compensate for the accomodation. */
+ return fixP->fx_where + fixP->fx_frag->fr_address + 8;
+#else
+ return fixP->fx_where + fixP->fx_frag->fr_address;
+#endif
+}
+
+/* Round up a section size to the appropriate boundary. */
+valueT
+md_section_align (segment, size)
+ segT segment ATTRIBUTE_UNUSED;
+ valueT size;
+{
+#ifdef OBJ_ELF
+ return size;
+#else
+ /* Round all sects to multiple of 4 */
+ return (size + 3) & ~3;
+#endif
+}
+
+/* Under ELF we need to default _GLOBAL_OFFSET_TABLE. Otherwise
+ we have no need to default values of symbols. */
+
+/* ARGSUSED */
+symbolS *
+md_undefined_symbol (name)
+ char * name ATTRIBUTE_UNUSED;
+{
+#ifdef OBJ_ELF
+ if (name[0] == '_' && name[1] == 'G'
+ && streq (name, GLOBAL_OFFSET_TABLE_NAME))
+ {
+ if (!GOT_symbol)
+ {
+ if (symbol_find (name))
+ as_bad ("GOT already in the symbol table");
+
+ GOT_symbol = symbol_new (name, undefined_section,
+ (valueT)0, & zero_address_frag);
+ }
+
+ return GOT_symbol;
+ }
+#endif
+
+ return 0;
+}
+
+/* arm_reg_parse () := if it looks like a register, return its token and
+ advance the pointer. */
+
+static int
+arm_reg_parse (ccp)
+ register char ** ccp;
+{
+ char * start = * ccp;
+ char c;
+ char * p;
+ struct reg_entry * reg;
+
+#ifdef REGISTER_PREFIX
+ if (*start != REGISTER_PREFIX)
+ return FAIL;
+ p = start + 1;
+#else
+ p = start;
+#ifdef OPTIONAL_REGISTER_PREFIX
+ if (*p == OPTIONAL_REGISTER_PREFIX)
+ p++, start++;
+#endif
+#endif
+ if (!isalpha (*p) || !is_name_beginner (*p))
+ return FAIL;
+
+ c = *p++;
+ while (isalpha (c) || isdigit (c) || c == '_')
+ c = *p++;
+
+ *--p = 0;
+ reg = (struct reg_entry *) hash_find (arm_reg_hsh, start);
+ *p = c;
+
+ if (reg)
+ {
+ *ccp = p;
+ return reg->number;
+ }
+
+ return FAIL;
+}
+
+int
+md_apply_fix3 (fixP, val, seg)
+ fixS * fixP;
+ valueT * val;
+ segT seg;
+{
+ offsetT value = * val;
+ offsetT newval;
+ unsigned int newimm;
+ unsigned long temp;
+ int sign;
+ char * buf = fixP->fx_where + fixP->fx_frag->fr_literal;
+ arm_fix_data * arm_data = (arm_fix_data *) fixP->tc_fix_data;
+
+ assert (fixP->fx_r_type < BFD_RELOC_UNUSED);
+
+ /* Note whether this will delete the relocation. */
+#if 0 /* patch from REarnshaw to JDavis (disabled for the moment, since it doesn't work fully) */
+ if ((fixP->fx_addsy == 0 || symbol_constant_p (fixP->fx_addsy))
+ && !fixP->fx_pcrel)
+#else
+ if (fixP->fx_addsy == 0 && !fixP->fx_pcrel)
+#endif
+ fixP->fx_done = 1;
+
+ /* If this symbol is in a different section then we need to leave it for
+ the linker to deal with. Unfortunately, md_pcrel_from can't tell,
+ so we have to undo it's effects here. */
+ if (fixP->fx_pcrel)
+ {
+ if (fixP->fx_addsy != NULL
+ && S_IS_DEFINED (fixP->fx_addsy)
+ && S_GET_SEGMENT (fixP->fx_addsy) != seg)
+ {
+ if (target_oabi
+ && (fixP->fx_r_type == BFD_RELOC_ARM_PCREL_BRANCH
+ ))
+ value = 0;
+ else
+ value += md_pcrel_from (fixP);
+ }
+ }
+
+ fixP->fx_addnumber = value; /* Remember value for emit_reloc. */
+
+ switch (fixP->fx_r_type)
+ {
+ case BFD_RELOC_ARM_IMMEDIATE:
+ newimm = validate_immediate (value);
+ temp = md_chars_to_number (buf, INSN_SIZE);
+
+ /* If the instruction will fail, see if we can fix things up by
+ changing the opcode. */
+ if (newimm == (unsigned int) FAIL
+ && (newimm = negate_data_op (&temp, value)) == (unsigned int) FAIL)
+ {
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("invalid constant (%lx) after fixup"),
+ (unsigned long) value);
+ break;
+ }
+
+ newimm |= (temp & 0xfffff000);
+ md_number_to_chars (buf, (valueT) newimm, INSN_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_ADRL_IMMEDIATE:
+ {
+ unsigned int highpart = 0;
+ unsigned int newinsn = 0xe1a00000; /* nop */
+ newimm = validate_immediate (value);
+ temp = md_chars_to_number (buf, INSN_SIZE);
+
+ /* If the instruction will fail, see if we can fix things up by
+ changing the opcode. */
+ if (newimm == (unsigned int) FAIL
+ && (newimm = negate_data_op (& temp, value)) == (unsigned int) FAIL)
+ {
+ /* No ? OK - try using two ADD instructions to generate the value. */
+ newimm = validate_immediate_twopart (value, & highpart);
+
+ /* Yes - then make sure that the second instruction is also an add. */
+ if (newimm != (unsigned int) FAIL)
+ newinsn = temp;
+ /* Still No ? Try using a negated value. */
+ else if (validate_immediate_twopart (- value, & highpart) != (unsigned int) FAIL)
+ temp = newinsn = (temp & OPCODE_MASK) | OPCODE_SUB << DATA_OP_SHIFT;
+ /* Otherwise - give up. */
+ else
+ {
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Unable to compute ADRL instructions for PC offset of 0x%x"), value);
+ break;
+ }
+
+ /* Replace the first operand in the 2nd instruction (which is the PC)
+ with the destination register. We have already added in the PC in the
+ first instruction and we do not want to do it again. */
+ newinsn &= ~ 0xf0000;
+ newinsn |= ((newinsn & 0x0f000) << 4);
+ }
+
+ newimm |= (temp & 0xfffff000);
+ md_number_to_chars (buf, (valueT) newimm, INSN_SIZE);
+
+ highpart |= (newinsn & 0xfffff000);
+ md_number_to_chars (buf + INSN_SIZE, (valueT) highpart, INSN_SIZE);
+ }
+ break;
+
+ case BFD_RELOC_ARM_OFFSET_IMM:
+ sign = value >= 0;
+
+ if (value < 0)
+ value = - value;
+
+ if (validate_offset_imm (value, 0) == FAIL)
+ {
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("bad immediate value for offset (%ld)"), (long) value);
+ break;
+ }
+
+ newval = md_chars_to_number (buf, INSN_SIZE);
+ newval &= 0xff7ff000;
+ newval |= value | (sign ? INDEX_UP : 0);
+ md_number_to_chars (buf, newval, INSN_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_OFFSET_IMM8:
+ case BFD_RELOC_ARM_HWLITERAL:
+ sign = value >= 0;
+
+ if (value < 0)
+ value = - value;
+
+ if (validate_offset_imm (value, 1) == FAIL)
+ {
+ if (fixP->fx_r_type == BFD_RELOC_ARM_HWLITERAL)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("invalid literal constant: pool needs to be closer"));
+ else
+ as_bad (_("bad immediate value for half-word offset (%ld)"),
+ (long) value);
+ break;
+ }
+
+ newval = md_chars_to_number (buf, INSN_SIZE);
+ newval &= 0xff7ff0f0;
+ newval |= ((value >> 4) << 8) | (value & 0xf) | (sign ? INDEX_UP : 0);
+ md_number_to_chars (buf, newval, INSN_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_LITERAL:
+ sign = value >= 0;
+
+ if (value < 0)
+ value = - value;
+
+ if (validate_offset_imm (value, 0) == FAIL)
+ {
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("invalid literal constant: pool needs to be closer"));
+ break;
+ }
+
+ newval = md_chars_to_number (buf, INSN_SIZE);
+ newval &= 0xff7ff000;
+ newval |= value | (sign ? INDEX_UP : 0);
+ md_number_to_chars (buf, newval, INSN_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_SHIFT_IMM:
+ newval = md_chars_to_number (buf, INSN_SIZE);
+ if (((unsigned long) value) > 32
+ || (value == 32
+ && (((newval & 0x60) == 0) || (newval & 0x60) == 0x60)))
+ {
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("shift expression is too large"));
+ break;
+ }
+
+ if (value == 0)
+ newval &= ~0x60; /* Shifts of zero must be done as lsl */
+ else if (value == 32)
+ value = 0;
+ newval &= 0xfffff07f;
+ newval |= (value & 0x1f) << 7;
+ md_number_to_chars (buf, newval , INSN_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_SWI:
+ if (arm_data->thumb_mode)
+ {
+ if (((unsigned long) value) > 0xff)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid swi expression"));
+ newval = md_chars_to_number (buf, THUMB_SIZE) & 0xff00;
+ newval |= value;
+ md_number_to_chars (buf, newval, THUMB_SIZE);
+ }
+ else
+ {
+ if (((unsigned long) value) > 0x00ffffff)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid swi expression"));
+ newval = md_chars_to_number (buf, INSN_SIZE) & 0xff000000;
+ newval |= value;
+ md_number_to_chars (buf, newval , INSN_SIZE);
+ }
+ break;
+
+ case BFD_RELOC_ARM_MULTI:
+ if (((unsigned long) value) > 0xffff)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid expression in load/store multiple"));
+ newval = value | md_chars_to_number (buf, INSN_SIZE);
+ md_number_to_chars (buf, newval, INSN_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_PCREL_BRANCH:
+ newval = md_chars_to_number (buf, INSN_SIZE);
+
+ /* Sign-extend a 24-bit number. */
+#define SEXT24(x) ((((x) & 0xffffff) ^ (~ 0x7fffff)) + 0x800000)
+
+#ifdef OBJ_ELF
+ if (! target_oabi)
+ value = fixP->fx_offset;
+#endif
+
+ /* We are going to store value (shifted right by two) in the
+ instruction, in a 24 bit, signed field. Thus we need to check
+ that none of the top 8 bits of the shifted value (top 7 bits of
+ the unshifted, unsigned value) are set, or that they are all set. */
+ if ((value & 0xfe000000UL) != 0
+ && ((value & 0xfe000000UL) != 0xfe000000UL))
+ {
+#ifdef OBJ_ELF
+ /* Normally we would be stuck at this point, since we cannot store
+ the absolute address that is the destination of the branch in the
+ 24 bits of the branch instruction. If however, we happen to know
+ that the destination of the branch is in the same section as the
+ branch instruciton itself, then we can compute the relocation for
+ ourselves and not have to bother the linker with it.
+
+ FIXME: The tests for OBJ_ELF and ! target_oabi are only here
+ because I have not worked out how to do this for OBJ_COFF or
+ target_oabi. */
+ if (! target_oabi
+ && fixP->fx_addsy != NULL
+ && S_IS_DEFINED (fixP->fx_addsy)
+ && S_GET_SEGMENT (fixP->fx_addsy) == seg)
+ {
+ /* Get pc relative value to go into the branch. */
+ value = * val;
+
+ /* Permit a backward branch provided that enough bits are set.
+ Allow a forwards branch, provided that enough bits are clear. */
+ if ((value & 0xfe000000UL) == 0xfe000000UL
+ || (value & 0xfe000000UL) == 0)
+ fixP->fx_done = 1;
+ }
+
+ if (! fixP->fx_done)
+#endif
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("gas can't handle same-section branch dest >= 0x04000000"));
+ }
+
+ value >>= 2;
+ value += SEXT24 (newval);
+
+ if ((value & 0xff000000UL) != 0
+ && ((value & 0xff000000UL) != 0xff000000UL))
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("out of range branch"));
+
+ newval = (value & 0x00ffffff) | (newval & 0xff000000);
+ md_number_to_chars (buf, newval, INSN_SIZE);
+ break;
+
+
+ case BFD_RELOC_THUMB_PCREL_BRANCH9: /* conditional branch */
+ newval = md_chars_to_number (buf, THUMB_SIZE);
+ {
+ addressT diff = (newval & 0xff) << 1;
+ if (diff & 0x100)
+ diff |= ~0xff;
+
+ value += diff;
+ if ((value & ~0xff) && ((value & ~0xff) != ~0xff))
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Branch out of range"));
+ newval = (newval & 0xff00) | ((value & 0x1ff) >> 1);
+ }
+ md_number_to_chars (buf, newval, THUMB_SIZE);
+ break;
+
+ case BFD_RELOC_THUMB_PCREL_BRANCH12: /* unconditional branch */
+ newval = md_chars_to_number (buf, THUMB_SIZE);
+ {
+ addressT diff = (newval & 0x7ff) << 1;
+ if (diff & 0x800)
+ diff |= ~0x7ff;
+
+ value += diff;
+ if ((value & ~0x7ff) && ((value & ~0x7ff) != ~0x7ff))
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Branch out of range"));
+ newval = (newval & 0xf800) | ((value & 0xfff) >> 1);
+ }
+ md_number_to_chars (buf, newval, THUMB_SIZE);
+ break;
+
+ case BFD_RELOC_THUMB_PCREL_BRANCH23:
+ {
+ offsetT newval2;
+ addressT diff;
+
+ newval = md_chars_to_number (buf, THUMB_SIZE);
+ newval2 = md_chars_to_number (buf + THUMB_SIZE, THUMB_SIZE);
+ diff = ((newval & 0x7ff) << 12) | ((newval2 & 0x7ff) << 1);
+ if (diff & 0x400000)
+ diff |= ~0x3fffff;
+#ifdef OBJ_ELF
+ value = fixP->fx_offset;
+#endif
+ value += diff;
+ if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff))
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Branch with link out of range"));
+
+ newval = (newval & 0xf800) | ((value & 0x7fffff) >> 12);
+ newval2 = (newval2 & 0xf800) | ((value & 0xfff) >> 1);
+ md_number_to_chars (buf, newval, THUMB_SIZE);
+ md_number_to_chars (buf + THUMB_SIZE, newval2, THUMB_SIZE);
+ }
+ break;
+
+ case BFD_RELOC_8:
+ if (fixP->fx_done || fixP->fx_pcrel)
+ md_number_to_chars (buf, value, 1);
+#ifdef OBJ_ELF
+ else if (!target_oabi)
+ {
+ value = fixP->fx_offset;
+ md_number_to_chars (buf, value, 1);
+ }
+#endif
+ break;
+
+ case BFD_RELOC_16:
+ if (fixP->fx_done || fixP->fx_pcrel)
+ md_number_to_chars (buf, value, 2);
+#ifdef OBJ_ELF
+ else if (!target_oabi)
+ {
+ value = fixP->fx_offset;
+ md_number_to_chars (buf, value, 2);
+ }
+#endif
+ break;
+
+#ifdef OBJ_ELF
+ case BFD_RELOC_ARM_GOT32:
+ case BFD_RELOC_ARM_GOTOFF:
+ md_number_to_chars (buf, 0, 4);
+ break;
+#endif
+
+ case BFD_RELOC_RVA:
+ case BFD_RELOC_32:
+ if (fixP->fx_done || fixP->fx_pcrel)
+ md_number_to_chars (buf, value, 4);
+#ifdef OBJ_ELF
+ else if (!target_oabi)
+ {
+ value = fixP->fx_offset;
+ md_number_to_chars (buf, value, 4);
+ }
+#endif
+ break;
+
+#ifdef OBJ_ELF
+ case BFD_RELOC_ARM_PLT32:
+ /* It appears the instruction is fully prepared at this point. */
+ break;
+#endif
+
+ case BFD_RELOC_ARM_GOTPC:
+ md_number_to_chars (buf, value, 4);
+ break;
+
+ case BFD_RELOC_ARM_CP_OFF_IMM:
+ sign = value >= 0;
+ if (value < -1023 || value > 1023 || (value & 3))
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Illegal value for co-processor offset"));
+ if (value < 0)
+ value = -value;
+ newval = md_chars_to_number (buf, INSN_SIZE) & 0xff7fff00;
+ newval |= (value >> 2) | (sign ? INDEX_UP : 0);
+ md_number_to_chars (buf, newval , INSN_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_THUMB_OFFSET:
+ newval = md_chars_to_number (buf, THUMB_SIZE);
+ /* Exactly what ranges, and where the offset is inserted depends on
+ the type of instruction, we can establish this from the top 4 bits */
+ switch (newval >> 12)
+ {
+ case 4: /* PC load */
+ /* Thumb PC loads are somewhat odd, bit 1 of the PC is
+ forced to zero for these loads, so we will need to round
+ up the offset if the instruction address is not word
+ aligned (since the final address produced must be, and
+ we can only describe word-aligned immediate offsets). */
+
+ if ((fixP->fx_frag->fr_address + fixP->fx_where + value) & 3)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid offset, target not word aligned (0x%08X)"),
+ (unsigned int)(fixP->fx_frag->fr_address + fixP->fx_where + value));
+
+ if ((value + 2) & ~0x3fe)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid offset, value too big (0x%08X)"), value);
+
+ /* Round up, since pc will be rounded down. */
+ newval |= (value + 2) >> 2;
+ break;
+
+ case 9: /* SP load/store */
+ if (value & ~0x3fc)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid offset, value too big (0x%08X)"), value);
+ newval |= value >> 2;
+ break;
+
+ case 6: /* Word load/store */
+ if (value & ~0x7c)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid offset, value too big (0x%08X)"), value);
+ newval |= value << 4; /* 6 - 2 */
+ break;
+
+ case 7: /* Byte load/store */
+ if (value & ~0x1f)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid offset, value too big (0x%08X)"), value);
+ newval |= value << 6;
+ break;
+
+ case 8: /* Halfword load/store */
+ if (value & ~0x3e)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid offset, value too big (0x%08X)"), value);
+ newval |= value << 5; /* 6 - 1 */
+ break;
+
+ default:
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ "Unable to process relocation for thumb opcode: %lx",
+ (unsigned long) newval);
+ break;
+ }
+ md_number_to_chars (buf, newval, THUMB_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_THUMB_ADD:
+ /* This is a complicated relocation, since we use it for all of
+ the following immediate relocations:
+ 3bit ADD/SUB
+ 8bit ADD/SUB
+ 9bit ADD/SUB SP word-aligned
+ 10bit ADD PC/SP word-aligned
+
+ The type of instruction being processed is encoded in the
+ instruction field:
+ 0x8000 SUB
+ 0x00F0 Rd
+ 0x000F Rs
+ */
+ newval = md_chars_to_number (buf, THUMB_SIZE);
+ {
+ int rd = (newval >> 4) & 0xf;
+ int rs = newval & 0xf;
+ int subtract = newval & 0x8000;
+
+ if (rd == REG_SP)
+ {
+ if (value & ~0x1fc)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid immediate for stack address calculation"));
+ newval = subtract ? T_OPCODE_SUB_ST : T_OPCODE_ADD_ST;
+ newval |= value >> 2;
+ }
+ else if (rs == REG_PC || rs == REG_SP)
+ {
+ if (subtract ||
+ value & ~0x3fc)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid immediate for address calculation (value = 0x%08lX)"),
+ (unsigned long) value);
+ newval = (rs == REG_PC ? T_OPCODE_ADD_PC : T_OPCODE_ADD_SP);
+ newval |= rd << 8;
+ newval |= value >> 2;
+ }
+ else if (rs == rd)
+ {
+ if (value & ~0xff)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid 8bit immediate"));
+ newval = subtract ? T_OPCODE_SUB_I8 : T_OPCODE_ADD_I8;
+ newval |= (rd << 8) | value;
+ }
+ else
+ {
+ if (value & ~0x7)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid 3bit immediate"));
+ newval = subtract ? T_OPCODE_SUB_I3 : T_OPCODE_ADD_I3;
+ newval |= rd | (rs << 3) | (value << 6);
+ }
+ }
+ md_number_to_chars (buf, newval , THUMB_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_THUMB_IMM:
+ newval = md_chars_to_number (buf, THUMB_SIZE);
+ switch (newval >> 11)
+ {
+ case 0x04: /* 8bit immediate MOV */
+ case 0x05: /* 8bit immediate CMP */
+ if (value < 0 || value > 255)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Invalid immediate: %ld is too large"),
+ (long) value);
+ newval |= value;
+ break;
+
+ default:
+ abort ();
+ }
+ md_number_to_chars (buf, newval , THUMB_SIZE);
+ break;
+
+ case BFD_RELOC_ARM_THUMB_SHIFT:
+ /* 5bit shift value (0..31) */
+ if (value < 0 || value > 31)
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Illegal Thumb shift value: %ld"), (long) value);
+ newval = md_chars_to_number (buf, THUMB_SIZE) & 0xf03f;
+ newval |= value << 6;
+ md_number_to_chars (buf, newval , THUMB_SIZE);
+ break;
+
+ case BFD_RELOC_VTABLE_INHERIT:
+ case BFD_RELOC_VTABLE_ENTRY:
+ fixP->fx_done = 0;
+ return 1;
+
+ case BFD_RELOC_NONE:
+ default:
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("Bad relocation fixup type (%d)"), fixP->fx_r_type);
+ }
+
+ return 1;
+}
+
+/* Translate internal representation of relocation info to BFD target
+ format. */
+arelent *
+tc_gen_reloc (section, fixp)
+ asection * section ATTRIBUTE_UNUSED;
+ fixS * fixp;
+{
+ arelent * reloc;
+ bfd_reloc_code_real_type code;
+
+ reloc = (arelent *) xmalloc (sizeof (arelent));
+
+ reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
+ *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
+ reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
+
+ /* @@ Why fx_addnumber sometimes and fx_offset other times? */
+#ifndef OBJ_ELF
+ if (fixp->fx_pcrel == 0)
+ reloc->addend = fixp->fx_offset;
+ else
+ reloc->addend = fixp->fx_offset = reloc->address;
+#else /* OBJ_ELF */
+ reloc->addend = fixp->fx_offset;
+#endif
+
+ switch (fixp->fx_r_type)
+ {
+ case BFD_RELOC_8:
+ if (fixp->fx_pcrel)
+ {
+ code = BFD_RELOC_8_PCREL;
+ break;
+ }
+
+ case BFD_RELOC_16:
+ if (fixp->fx_pcrel)
+ {
+ code = BFD_RELOC_16_PCREL;
+ break;
+ }
+
+ case BFD_RELOC_32:
+ if (fixp->fx_pcrel)
+ {
+ code = BFD_RELOC_32_PCREL;
+ break;
+ }
+
+ case BFD_RELOC_ARM_PCREL_BRANCH:
+ case BFD_RELOC_RVA:
+ case BFD_RELOC_THUMB_PCREL_BRANCH9:
+ case BFD_RELOC_THUMB_PCREL_BRANCH12:
+ case BFD_RELOC_THUMB_PCREL_BRANCH23:
+ case BFD_RELOC_VTABLE_ENTRY:
+ case BFD_RELOC_VTABLE_INHERIT:
+ code = fixp->fx_r_type;
+ break;
+
+ case BFD_RELOC_ARM_LITERAL:
+ case BFD_RELOC_ARM_HWLITERAL:
+ /* If this is called then the a literal has been referenced across
+ a section boundary - possibly due to an implicit dump */
+ as_bad_where (fixp->fx_file, fixp->fx_line,
+ _("Literal referenced across section boundary (Implicit dump?)"));
+ return NULL;
+
+#ifdef OBJ_ELF
+ case BFD_RELOC_ARM_GOT32:
+ case BFD_RELOC_ARM_GOTOFF:
+ case BFD_RELOC_ARM_PLT32:
+ code = fixp->fx_r_type;
+ break;
+#endif
+
+ case BFD_RELOC_ARM_IMMEDIATE:
+ as_bad_where (fixp->fx_file, fixp->fx_line,
+ _("Internal_relocation (type %d) not fixed up (IMMEDIATE)"),
+ fixp->fx_r_type);
+ return NULL;
+
+ case BFD_RELOC_ARM_ADRL_IMMEDIATE:
+ as_bad_where (fixp->fx_file, fixp->fx_line,
+ _("ADRL used for a symbol not defined in the same file"),
+ fixp->fx_r_type);
+ return NULL;
+
+ case BFD_RELOC_ARM_OFFSET_IMM:
+ as_bad_where (fixp->fx_file, fixp->fx_line,
+ _("Internal_relocation (type %d) not fixed up (OFFSET_IMM)"),
+ fixp->fx_r_type);
+ return NULL;
+
+ default:
+ {
+ char * type;
+ switch (fixp->fx_r_type)
+ {
+ case BFD_RELOC_ARM_IMMEDIATE: type = "IMMEDIATE"; break;
+ case BFD_RELOC_ARM_OFFSET_IMM: type = "OFFSET_IMM"; break;
+ case BFD_RELOC_ARM_OFFSET_IMM8: type = "OFFSET_IMM8"; break;
+ case BFD_RELOC_ARM_SHIFT_IMM: type = "SHIFT_IMM"; break;
+ case BFD_RELOC_ARM_SWI: type = "SWI"; break;
+ case BFD_RELOC_ARM_MULTI: type = "MULTI"; break;
+ case BFD_RELOC_ARM_CP_OFF_IMM: type = "CP_OFF_IMM"; break;
+ case BFD_RELOC_ARM_THUMB_ADD: type = "THUMB_ADD"; break;
+ case BFD_RELOC_ARM_THUMB_SHIFT: type = "THUMB_SHIFT"; break;
+ case BFD_RELOC_ARM_THUMB_IMM: type = "THUMB_IMM"; break;
+ case BFD_RELOC_ARM_THUMB_OFFSET: type = "THUMB_OFFSET"; break;
+ default: type = _("<unknown>"); break;
+ }
+ as_bad_where (fixp->fx_file, fixp->fx_line,
+ _("Can not represent %s relocation in this object file format (%d)"),
+ type, fixp->fx_pcrel);
+ return NULL;
+ }
+ }
+
+#ifdef OBJ_ELF
+ if (code == BFD_RELOC_32_PCREL
+ && GOT_symbol
+ && fixp->fx_addsy == GOT_symbol)
+ {
+ code = BFD_RELOC_ARM_GOTPC;
+ reloc->addend = fixp->fx_offset = reloc->address;
+ }
+#endif
+
+ reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
+
+ if (reloc->howto == NULL)
+ {
+ as_bad_where (fixp->fx_file, fixp->fx_line,
+ _("Can not represent %s relocation in this object file format"),
+ bfd_get_reloc_code_name (code));
+ return NULL;
+ }
+
+ /* HACK: Since arm ELF uses Rel instead of Rela, encode the
+ vtable entry to be used in the relocation's section offset. */
+ if (fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
+ reloc->address = fixp->fx_offset;
+
+ return reloc;
+}
+
+int
+md_estimate_size_before_relax (fragP, segtype)
+ fragS * fragP ATTRIBUTE_UNUSED;
+ segT segtype ATTRIBUTE_UNUSED;
+{
+ as_fatal (_("md_estimate_size_before_relax\n"));
+ return 1;
+}
+
+static void
+output_inst PARAMS ((void))
+{
+ char * to = NULL;
+
+ if (inst.error)
+ {
+ as_bad (inst.error);
+ return;
+ }
+
+ to = frag_more (inst.size);
+
+ if (thumb_mode && (inst.size > THUMB_SIZE))
+ {
+ assert (inst.size == (2 * THUMB_SIZE));
+ md_number_to_chars (to, inst.instruction >> 16, THUMB_SIZE);
+ md_number_to_chars (to + THUMB_SIZE, inst.instruction, THUMB_SIZE);
+ }
+ else if (inst.size > INSN_SIZE)
+ {
+ assert (inst.size == (2 * INSN_SIZE));
+ md_number_to_chars (to, inst.instruction, INSN_SIZE);
+ md_number_to_chars (to + INSN_SIZE, inst.instruction, INSN_SIZE);
+ }
+ else
+ md_number_to_chars (to, inst.instruction, inst.size);
+
+ if (inst.reloc.type != BFD_RELOC_NONE)
+ fix_new_arm (frag_now, to - frag_now->fr_literal,
+ inst.size, & inst.reloc.exp, inst.reloc.pc_rel,
+ inst.reloc.type);
+
+ return;
+}
+
+void
+md_assemble (str)
+ char * str;
+{
+ char c;
+ char * p;
+ char * q;
+ char * start;
+
+ /* Align the instruction.
+ This may not be the right thing to do but ... */
+ /* arm_align (2, 0); */
+ listing_prev_line (); /* Defined in listing.h */
+
+ /* Align the previous label if needed. */
+ if (last_label_seen != NULL)
+ {
+ symbol_set_frag (last_label_seen, frag_now);
+ S_SET_VALUE (last_label_seen, (valueT) frag_now_fix ());
+ S_SET_SEGMENT (last_label_seen, now_seg);
+ }
+
+ memset (&inst, '\0', sizeof (inst));
+ inst.reloc.type = BFD_RELOC_NONE;
+
+ skip_whitespace (str);
+
+ /* Scan up to the end of the op-code, which must end in white space or
+ end of string. */
+ for (start = p = str; *p != '\0'; p++)
+ if (*p == ' ')
+ break;
+
+ if (p == str)
+ {
+ as_bad (_("No operator -- statement `%s'\n"), str);
+ return;
+ }
+
+ if (thumb_mode)
+ {
+ CONST struct thumb_opcode * opcode;
+
+ c = *p;
+ *p = '\0';
+ opcode = (CONST struct thumb_opcode *) hash_find (arm_tops_hsh, str);
+ *p = c;
+
+ if (opcode)
+ {
+ /* Check that this instruction is supported for this CPU. */
+ if (thumb_mode == 1 && (opcode->variants & cpu_variant) == 0)
+ {
+ as_bad (_("selected processor does not support this opcode"));
+ return;
+ }
+
+ inst.instruction = opcode->value;
+ inst.size = opcode->size;
+ (*opcode->parms)(p);
+ output_inst ();
+ return;
+ }
+ }
+ else
+ {
+ CONST struct asm_opcode * opcode;
+ unsigned long cond_code;
+
+ inst.size = INSN_SIZE;
+ /* p now points to the end of the opcode, probably white space, but we
+ have to break the opcode up in case it contains condionals and flags;
+ keep trying with progressively smaller basic instructions until one
+ matches, or we run out of opcode. */
+ q = (p - str > LONGEST_INST) ? str + LONGEST_INST : p;
+ for (; q != str; q--)
+ {
+ c = *q;
+ *q = '\0';
+ opcode = (CONST struct asm_opcode *) hash_find (arm_ops_hsh, str);
+ *q = c;
+
+ if (opcode && opcode->template)
+ {
+ unsigned long flag_bits = 0;
+ char * r;
+
+ /* Check that this instruction is supported for this CPU. */
+ if ((opcode->variants & cpu_variant) == 0)
+ goto try_shorter;
+
+ inst.instruction = opcode->value;
+ if (q == p) /* Just a simple opcode. */
+ {
+ if (opcode->comp_suffix)
+ {
+ if (*opcode->comp_suffix != '\0')
+ as_bad (_("Opcode `%s' must have suffix from list: <%s>"),
+ str, opcode->comp_suffix);
+ else
+ /* Not a conditional instruction. */
+ (*opcode->parms)(q, 0);
+ }
+ else
+ {
+ /* A conditional instruction with default condition. */
+ inst.instruction |= COND_ALWAYS;
+ (*opcode->parms)(q, 0);
+ }
+ output_inst ();
+ return;
+ }
+
+ /* Not just a simple opcode. Check if extra is a conditional. */
+ r = q;
+ if (p - r >= 2)
+ {
+ CONST struct asm_cond *cond;
+ char d = *(r + 2);
+
+ *(r + 2) = '\0';
+ cond = (CONST struct asm_cond *) hash_find (arm_cond_hsh, r);
+ *(r + 2) = d;
+ if (cond)
+ {
+ if (cond->value == 0xf0000000)
+ as_tsktsk (
+_("Warning: Use of the 'nv' conditional is deprecated\n"));
+
+ cond_code = cond->value;
+ r += 2;
+ }
+ else
+ cond_code = COND_ALWAYS;
+ }
+ else
+ cond_code = COND_ALWAYS;
+
+ /* Apply the conditional, or complain it's not allowed. */
+ if (opcode->comp_suffix && *opcode->comp_suffix == '\0')
+ {
+ /* Instruction isn't conditional */
+ if (cond_code != COND_ALWAYS)
+ {
+ as_bad (_("Opcode `%s' is unconditional\n"), str);
+ return;
+ }
+ }
+ else
+ /* Instruction is conditional: set the condition into it. */
+ inst.instruction |= cond_code;
+
+
+ /* If there is a compulsory suffix, it should come here, before
+ any optional flags. */
+ if (opcode->comp_suffix && *opcode->comp_suffix != '\0')
+ {
+ CONST char *s = opcode->comp_suffix;
+
+ while (*s)
+ {
+ inst.suffix++;
+ if (*r == *s)
+ break;
+ s++;
+ }
+
+ if (*s == '\0')
+ {
+ as_bad (_("Opcode `%s' must have suffix from <%s>\n"), str,
+ opcode->comp_suffix);
+ return;
+ }
+
+ r++;
+ }
+
+ /* The remainder, if any should now be flags for the instruction;
+ Scan these checking each one found with the opcode. */
+ if (r != p)
+ {
+ char d;
+ CONST struct asm_flg *flag = opcode->flags;
+
+ if (flag)
+ {
+ int flagno;
+
+ d = *p;
+ *p = '\0';
+
+ for (flagno = 0; flag[flagno].template; flagno++)
+ {
+ if (streq (r, flag[flagno].template))
+ {
+ flag_bits |= flag[flagno].set_bits;
+ break;
+ }
+ }
+
+ *p = d;
+ if (! flag[flagno].template)
+ goto try_shorter;
+ }
+ else
+ goto try_shorter;
+ }
+
+ (*opcode->parms) (p, flag_bits);
+ output_inst ();
+ return;
+ }
+
+ try_shorter:
+ ;
+ }
+ }
+
+ /* It wasn't an instruction, but it might be a register alias of the form
+ alias .req reg */
+ q = p;
+ skip_whitespace (q);
+
+ c = *p;
+ *p = '\0';
+
+ if (*q && !strncmp (q, ".req ", 4))
+ {
+ int reg;
+ char * copy_of_str = str;
+ char * r;
+
+ q += 4;
+ skip_whitespace (q);
+
+ for (r = q; *r != '\0'; r++)
+ if (*r == ' ')
+ break;
+
+ if (r != q)
+ {
+ int regnum;
+ char d = *r;
+
+ *r = '\0';
+ regnum = arm_reg_parse (& q);
+ *r = d;
+
+ reg = arm_reg_parse (& str);
+
+ if (reg == FAIL)
+ {
+ if (regnum != FAIL)
+ insert_reg_alias (str, regnum);
+ else
+ as_warn (_("register '%s' does not exist\n"), q);
+ }
+ else if (regnum != FAIL)
+ {
+ if (reg != regnum)
+ as_warn (_("ignoring redefinition of register alias '%s'"),
+ copy_of_str );
+
+ /* Do not warn about redefinitions to the same alias. */
+ }
+ else
+ as_warn (_("ignoring redefinition of register alias '%s' to non-existant register '%s'"),
+ copy_of_str, q);
+ }
+ else
+ as_warn (_("ignoring incomplete .req pseuso op"));
+
+ *p = c;
+ return;
+ }
+
+ *p = c;
+ as_bad (_("bad instruction `%s'"), start);
+}
+
+/*
+ * md_parse_option
+ * Invocation line includes a switch not recognized by the base assembler.
+ * See if it's a processor-specific option. These are:
+ * Cpu variants, the arm part is optional:
+ * -m[arm]1 Currently not supported.
+ * -m[arm]2, -m[arm]250 Arm 2 and Arm 250 processor
+ * -m[arm]3 Arm 3 processor
+ * -m[arm]6[xx], Arm 6 processors
+ * -m[arm]7[xx][t][[d]m] Arm 7 processors
+ * -m[arm]8[10] Arm 8 processors
+ * -m[arm]9[20][tdmi] Arm 9 processors
+ * -mstrongarm[110[0]] StrongARM processors
+ * -m[arm]v[2345[t]] Arm architectures
+ * -mall All (except the ARM1)
+ * FP variants:
+ * -mfpa10, -mfpa11 FPA10 and 11 co-processor instructions
+ * -mfpe-old (No float load/store multiples)
+ * -mno-fpu Disable all floating point instructions
+ * Run-time endian selection:
+ * -EB big endian cpu
+ * -EL little endian cpu
+ * ARM Procedure Calling Standard:
+ * -mapcs-32 32 bit APCS
+ * -mapcs-26 26 bit APCS
+ * -mapcs-float Pass floats in float regs
+ * -mapcs-reentrant Position independent code
+ * -mthumb-interwork Code supports Arm/Thumb interworking
+ * -moabi Old ELF ABI
+ */
+
+CONST char * md_shortopts = "m:k";
+struct option md_longopts[] =
+{
+#ifdef ARM_BI_ENDIAN
+#define OPTION_EB (OPTION_MD_BASE + 0)
+ {"EB", no_argument, NULL, OPTION_EB},
+#define OPTION_EL (OPTION_MD_BASE + 1)
+ {"EL", no_argument, NULL, OPTION_EL},
+#ifdef OBJ_ELF
+#define OPTION_OABI (OPTION_MD_BASE +2)
+ {"oabi", no_argument, NULL, OPTION_OABI},
+#endif
+#endif
+ {NULL, no_argument, NULL, 0}
+};
+size_t md_longopts_size = sizeof (md_longopts);
+
+int
+md_parse_option (c, arg)
+ int c;
+ char * arg;
+{
+ char * str = arg;
+
+ switch (c)
+ {
+#ifdef ARM_BI_ENDIAN
+ case OPTION_EB:
+ target_big_endian = 1;
+ break;
+ case OPTION_EL:
+ target_big_endian = 0;
+ break;
+#endif
+
+ case 'm':
+ switch (*str)
+ {
+ case 'f':
+ if (streq (str, "fpa10"))
+ cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_FPA10;
+ else if (streq (str, "fpa11"))
+ cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_FPA11;
+ else if (streq (str, "fpe-old"))
+ cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_CORE;
+ else
+ goto bad;
+ break;
+
+ case 'n':
+ if (streq (str, "no-fpu"))
+ cpu_variant &= ~FPU_ALL;
+ break;
+
+#ifdef OBJ_ELF
+ case 'o':
+ if (streq (str, "oabi"))
+ target_oabi = true;
+ break;
+#endif
+
+ case 't':
+ /* Limit assembler to generating only Thumb instructions: */
+ if (streq (str, "thumb"))
+ {
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_THUMB;
+ cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_NONE;
+ thumb_mode = 1;
+ }
+ else if (streq (str, "thumb-interwork"))
+ {
+ if ((cpu_variant & ARM_THUMB) == 0)
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_ARCH_V4T;
+#if defined OBJ_COFF || defined OBJ_ELF
+ support_interwork = true;
+#endif
+ }
+ else
+ goto bad;
+ break;
+
+ default:
+ if (streq (str, "all"))
+ {
+ cpu_variant = ARM_ALL | FPU_ALL;
+ return 1;
+ }
+#if defined OBJ_COFF || defined OBJ_ELF
+ if (! strncmp (str, "apcs-", 5))
+ {
+ /* GCC passes on all command line options starting "-mapcs-..."
+ to us, so we must parse them here. */
+
+ str += 5;
+
+ if (streq (str, "32"))
+ {
+ uses_apcs_26 = false;
+ return 1;
+ }
+ else if (streq (str, "26"))
+ {
+ uses_apcs_26 = true;
+ return 1;
+ }
+ else if (streq (str, "frame"))
+ {
+ /* Stack frames are being generated - does not affect
+ linkage of code. */
+ return 1;
+ }
+ else if (streq (str, "stack-check"))
+ {
+ /* Stack checking is being performed - does not affect
+ linkage, but does require that the functions
+ __rt_stkovf_split_small and __rt_stkovf_split_big be
+ present in the final link. */
+
+ return 1;
+ }
+ else if (streq (str, "float"))
+ {
+ /* Floating point arguments are being passed in the floating
+ point registers. This does affect linking, since this
+ version of the APCS is incompatible with the version that
+ passes floating points in the integer registers. */
+
+ uses_apcs_float = true;
+ return 1;
+ }
+ else if (streq (str, "reentrant"))
+ {
+ /* Reentrant code has been generated. This does affect
+ linking, since there is no point in linking reentrant/
+ position independent code with absolute position code. */
+ pic_code = true;
+ return 1;
+ }
+
+ as_bad (_("Unrecognised APCS switch -m%s"), arg);
+ return 0;
+ }
+#endif
+ /* Strip off optional "arm" */
+ if (! strncmp (str, "arm", 3))
+ str += 3;
+
+ switch (*str)
+ {
+ case '1':
+ if (streq (str, "1"))
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_1;
+ else
+ goto bad;
+ break;
+
+ case '2':
+ if (streq (str, "2"))
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_2;
+ else if (streq (str, "250"))
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_250;
+ else
+ goto bad;
+ break;
+
+ case '3':
+ if (streq (str, "3"))
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_3;
+ else
+ goto bad;
+ break;
+
+ case '6':
+ switch (strtol (str, NULL, 10))
+ {
+ case 6:
+ case 60:
+ case 600:
+ case 610:
+ case 620:
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_6;
+ break;
+ default:
+ goto bad;
+ }
+ break;
+
+ case '7':
+ switch (strtol (str, & str, 10)) /* Eat the processor name */
+ {
+ case 7:
+ case 70:
+ case 700:
+ case 710:
+ case 720:
+ case 7100:
+ case 7500:
+ break;
+ default:
+ goto bad;
+ }
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7;
+ for (; *str; str++)
+ {
+ switch (* str)
+ {
+ case 't':
+ cpu_variant |= (ARM_THUMB | ARM_ARCH_V4);
+ break;
+
+ case 'm':
+ cpu_variant |= ARM_LONGMUL;
+ break;
+
+ case 'f': /* fe => fp enabled cpu. */
+ if (str[1] == 'e')
+ ++ str;
+ else
+ goto bad;
+
+ case 'c': /* Left over from 710c processor name. */
+ case 'd': /* Debug */
+ case 'i': /* Embedded ICE */
+ /* Included for completeness in ARM processor naming. */
+ break;
+
+ default:
+ goto bad;
+ }
+ }
+ break;
+
+ case '8':
+ if (streq (str, "8") || streq (str, "810"))
+ cpu_variant = (cpu_variant & ~ARM_ANY)
+ | ARM_8 | ARM_ARCH_V4 | ARM_LONGMUL;
+ else
+ goto bad;
+ break;
+
+ case '9':
+ if (streq (str, "9"))
+ cpu_variant = (cpu_variant & ~ARM_ANY)
+ | ARM_9 | ARM_ARCH_V4 | ARM_LONGMUL | ARM_THUMB;
+ else if (streq (str, "920"))
+ cpu_variant = (cpu_variant & ~ARM_ANY)
+ | ARM_9 | ARM_ARCH_V4 | ARM_LONGMUL;
+ else if (streq (str, "920t"))
+ cpu_variant = (cpu_variant & ~ARM_ANY)
+ | ARM_9 | ARM_ARCH_V4 | ARM_LONGMUL | ARM_THUMB;
+ else if (streq (str, "9tdmi"))
+ cpu_variant = (cpu_variant & ~ARM_ANY)
+ | ARM_9 | ARM_ARCH_V4 | ARM_LONGMUL | ARM_THUMB;
+ else
+ goto bad;
+ break;
+
+
+ case 's':
+ if (streq (str, "strongarm")
+ || streq (str, "strongarm110")
+ || streq (str, "strongarm1100"))
+ cpu_variant = (cpu_variant & ~ARM_ANY)
+ | ARM_8 | ARM_ARCH_V4 | ARM_LONGMUL;
+ else
+ goto bad;
+ break;
+
+ case 'v':
+ /* Select variant based on architecture rather than processor. */
+ switch (*++str)
+ {
+ case '2':
+ switch (*++str)
+ {
+ case 'a':
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_3;
+ break;
+ case 0:
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_2;
+ break;
+ default:
+ as_bad (_("Invalid architecture variant -m%s"), arg);
+ break;
+ }
+ break;
+
+ case '3':
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7;
+
+ switch (*++str)
+ {
+ case 'm': cpu_variant |= ARM_LONGMUL; break;
+ case 0: break;
+ default:
+ as_bad (_("Invalid architecture variant -m%s"), arg);
+ break;
+ }
+ break;
+
+ case '4':
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_ARCH_V4;
+
+ switch (*++str)
+ {
+ case 't': cpu_variant |= ARM_THUMB; break;
+ case 0: break;
+ default:
+ as_bad (_("Invalid architecture variant -m%s"), arg);
+ break;
+ }
+ break;
+
+ case '5':
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_ARCH_V5;
+ switch (*++str)
+ {
+ case 't': cpu_variant |= ARM_THUMB; break;
+ case 'e': cpu_variant |= ARM_EXT_V5E; break;
+ case 0: break;
+ default:
+ as_bad (_("Invalid architecture variant -m%s"), arg);
+ break;
+ }
+ break;
+
+ default:
+ as_bad (_("Invalid architecture variant -m%s"), arg);
+ break;
+ }
+ break;
+
+ default:
+ bad:
+ as_bad (_("Invalid processor variant -m%s"), arg);
+ return 0;
+ }
+ }
+ break;
+
+#if defined OBJ_ELF || defined OBJ_COFF
+ case 'k':
+ pic_code = 1;
+ break;
+#endif
+
+ default:
+ return 0;
+ }
+
+ return 1;
+}
+
+void
+md_show_usage (fp)
+ FILE * fp;
+{
+ fprintf (fp, _("\
+ ARM Specific Assembler Options:\n\
+ -m[arm][<processor name>] select processor variant\n\
+ -m[arm]v[2|2a|3|3m|4|4t|5[t][e]] select architecture variant\n\
+ -mthumb only allow Thumb instructions\n\
+ -mthumb-interwork mark the assembled code as supporting interworking\n\
+ -mall allow any instruction\n\
+ -mfpa10, -mfpa11 select floating point architecture\n\
+ -mfpe-old don't allow floating-point multiple instructions\n\
+ -mno-fpu don't allow any floating-point instructions.\n\
+ -k generate PIC code.\n"));
+#if defined OBJ_COFF || defined OBJ_ELF
+ fprintf (fp, _("\
+ -mapcs-32, -mapcs-26 specify which ARM Procedure Calling Standard to use\n\
+ -mapcs-float floating point args are passed in FP regs\n\
+ -mapcs-reentrant the code is position independent/reentrant\n"));
+ #endif
+#ifdef OBJ_ELF
+ fprintf (fp, _("\
+ -moabi support the old ELF ABI\n"));
+#endif
+#ifdef ARM_BI_ENDIAN
+ fprintf (fp, _("\
+ -EB assemble code for a big endian cpu\n\
+ -EL assemble code for a little endian cpu\n"));
+#endif
+}
+
+/* We need to be able to fix up arbitrary expressions in some statements.
+ This is so that we can handle symbols that are an arbitrary distance from
+ the pc. The most common cases are of the form ((+/-sym -/+ . - 8) & mask),
+ which returns part of an address in a form which will be valid for
+ a data instruction. We do this by pushing the expression into a symbol
+ in the expr_section, and creating a fix for that. */
+
+static void
+fix_new_arm (frag, where, size, exp, pc_rel, reloc)
+ fragS * frag;
+ int where;
+ short int size;
+ expressionS * exp;
+ int pc_rel;
+ int reloc;
+{
+ fixS * new_fix;
+ arm_fix_data * arm_data;
+
+ switch (exp->X_op)
+ {
+ case O_constant:
+ case O_symbol:
+ case O_add:
+ case O_subtract:
+ new_fix = fix_new_exp (frag, where, size, exp, pc_rel, reloc);
+ break;
+
+ default:
+ new_fix = fix_new (frag, where, size, make_expr_symbol (exp), 0,
+ pc_rel, reloc);
+ break;
+ }
+
+ /* Mark whether the fix is to a THUMB instruction, or an ARM instruction */
+ arm_data = (arm_fix_data *) obstack_alloc (& notes, sizeof (arm_fix_data));
+ new_fix->tc_fix_data = (PTR) arm_data;
+ arm_data->thumb_mode = thumb_mode;
+
+ return;
+}
+
+
+/* This fix_new is called by cons via TC_CONS_FIX_NEW. */
+void
+cons_fix_new_arm (frag, where, size, exp)
+ fragS * frag;
+ int where;
+ int size;
+ expressionS * exp;
+{
+ bfd_reloc_code_real_type type;
+ int pcrel = 0;
+
+ /* Pick a reloc.
+ FIXME: @@ Should look at CPU word size. */
+ switch (size)
+ {
+ case 1:
+ type = BFD_RELOC_8;
+ break;
+ case 2:
+ type = BFD_RELOC_16;
+ break;
+ case 4:
+ default:
+ type = BFD_RELOC_32;
+ break;
+ case 8:
+ type = BFD_RELOC_64;
+ break;
+ }
+
+ fix_new_exp (frag, where, (int) size, exp, pcrel, type);
+}
+
+/* A good place to do this, although this was probably not intended
+ for this kind of use. We need to dump the literal pool before
+ references are made to a null symbol pointer. */
+void
+arm_cleanup ()
+{
+ if (current_poolP == NULL)
+ return;
+
+ subseg_set (text_section, 0); /* Put it at the end of text section. */
+ s_ltorg (0);
+ listing_prev_line ();
+}
+
+void
+arm_start_line_hook ()
+{
+ last_label_seen = NULL;
+}
+
+void
+arm_frob_label (sym)
+ symbolS * sym;
+{
+ last_label_seen = sym;
+
+ ARM_SET_THUMB (sym, thumb_mode);
+
+#if defined OBJ_COFF || defined OBJ_ELF
+ ARM_SET_INTERWORK (sym, support_interwork);
+#endif
+
+ if (label_is_thumb_function_name)
+ {
+ /* When the address of a Thumb function is taken the bottom
+ bit of that address should be set. This will allow
+ interworking between Arm and Thumb functions to work
+ correctly. */
+
+ THUMB_SET_FUNC (sym, 1);
+
+ label_is_thumb_function_name = false;
+ }
+}
+
+/* Adjust the symbol table. This marks Thumb symbols as distinct from
+ ARM ones. */
+
+void
+arm_adjust_symtab ()
+{
+#ifdef OBJ_COFF
+ symbolS * sym;
+
+ for (sym = symbol_rootP; sym != NULL; sym = symbol_next (sym))
+ {
+ if (ARM_IS_THUMB (sym))
+ {
+ if (THUMB_IS_FUNC (sym))
+ {
+ /* Mark the symbol as a Thumb function. */
+ if ( S_GET_STORAGE_CLASS (sym) == C_STAT
+ || S_GET_STORAGE_CLASS (sym) == C_LABEL) /* This can happen! */
+ S_SET_STORAGE_CLASS (sym, C_THUMBSTATFUNC);
+
+ else if (S_GET_STORAGE_CLASS (sym) == C_EXT)
+ S_SET_STORAGE_CLASS (sym, C_THUMBEXTFUNC);
+ else
+ as_bad (_("%s: unexpected function type: %d"),
+ S_GET_NAME (sym), S_GET_STORAGE_CLASS (sym));
+ }
+ else switch (S_GET_STORAGE_CLASS (sym))
+ {
+ case C_EXT:
+ S_SET_STORAGE_CLASS (sym, C_THUMBEXT);
+ break;
+ case C_STAT:
+ S_SET_STORAGE_CLASS (sym, C_THUMBSTAT);
+ break;
+ case C_LABEL:
+ S_SET_STORAGE_CLASS (sym, C_THUMBLABEL);
+ break;
+ default: /* do nothing */
+ break;
+ }
+ }
+
+ if (ARM_IS_INTERWORK (sym))
+ coffsymbol (symbol_get_bfdsym (sym))->native->u.syment.n_flags = 0xFF;
+ }
+#endif
+#ifdef OBJ_ELF
+ symbolS * sym;
+ char bind;
+
+ for (sym = symbol_rootP; sym != NULL; sym = symbol_next (sym))
+ {
+ if (ARM_IS_THUMB (sym))
+ {
+ elf_symbol_type * elf_sym;
+
+ elf_sym = elf_symbol (symbol_get_bfdsym (sym));
+ bind = ELF_ST_BIND (elf_sym);
+
+ /* If it's a .thumb_func, declare it as so,
+ otherwise tag label as .code 16. */
+ if (THUMB_IS_FUNC (sym))
+ elf_sym->internal_elf_sym.st_info =
+ ELF_ST_INFO (bind, STT_ARM_TFUNC);
+ else
+ elf_sym->internal_elf_sym.st_info =
+ ELF_ST_INFO (bind, STT_ARM_16BIT);
+ }
+ }
+#endif
+}
+
+int
+arm_data_in_code ()
+{
+ if (thumb_mode && ! strncmp (input_line_pointer + 1, "data:", 5))
+ {
+ *input_line_pointer = '/';
+ input_line_pointer += 5;
+ *input_line_pointer = 0;
+ return 1;
+ }
+
+ return 0;
+}
+
+char *
+arm_canonicalize_symbol_name (name)
+ char * name;
+{
+ int len;
+
+ if (thumb_mode && (len = strlen (name)) > 5
+ && streq (name + len - 5, "/data"))
+ *(name + len - 5) = 0;
+
+ return name;
+}
+
+boolean
+arm_validate_fix (fixP)
+ fixS * fixP;
+{
+ /* If the destination of the branch is a defined symbol which does not have
+ the THUMB_FUNC attribute, then we must be calling a function which has
+ the (interfacearm) attribute. We look for the Thumb entry point to that
+ function and change the branch to refer to that function instead. */
+ if ( fixP->fx_r_type == BFD_RELOC_THUMB_PCREL_BRANCH23
+ && fixP->fx_addsy != NULL
+ && S_IS_DEFINED (fixP->fx_addsy)
+ && ! THUMB_IS_FUNC (fixP->fx_addsy))
+ {
+ fixP->fx_addsy = find_real_start (fixP->fx_addsy);
+ return true;
+ }
+
+ return false;
+}
+
+#ifdef OBJ_ELF
+/* Relocations against Thumb function names must be left unadjusted,
+ so that the linker can use this information to correctly set the
+ bottom bit of their addresses. The MIPS version of this function
+ also prevents relocations that are mips-16 specific, but I do not
+ know why it does this.
+
+ FIXME:
+ There is one other problem that ought to be addressed here, but
+ which currently is not: Taking the address of a label (rather
+ than a function) and then later jumping to that address. Such
+ addresses also ought to have their bottom bit set (assuming that
+ they reside in Thumb code), but at the moment they will not. */
+
+boolean
+arm_fix_adjustable (fixP)
+ fixS * fixP;
+{
+ if (fixP->fx_addsy == NULL)
+ return 1;
+
+ /* Prevent all adjustments to global symbols. */
+ if (S_IS_EXTERN (fixP->fx_addsy))
+ return 0;
+
+ if (S_IS_WEAK (fixP->fx_addsy))
+ return 0;
+
+ if (THUMB_IS_FUNC (fixP->fx_addsy)
+ && fixP->fx_subsy == NULL)
+ return 0;
+
+ /* We need the symbol name for the VTABLE entries */
+ if ( fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
+ || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
+ return 0;
+
+ return 1;
+}
+
+const char *
+elf32_arm_target_format ()
+{
+ if (target_big_endian)
+ if (target_oabi)
+ return "elf32-bigarm-oabi";
+ else
+ return "elf32-bigarm";
+ else
+ if (target_oabi)
+ return "elf32-littlearm-oabi";
+ else
+ return "elf32-littlearm";
+}
+
+void
+armelf_frob_symbol (symp, puntp)
+ symbolS * symp;
+ int * puntp;
+{
+ elf_frob_symbol (symp, puntp);
+}
+
+int
+arm_force_relocation (fixp)
+ struct fix * fixp;
+{
+ if ( fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
+ || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY
+ || fixp->fx_r_type == BFD_RELOC_ARM_PCREL_BRANCH
+ || fixp->fx_r_type == BFD_RELOC_THUMB_PCREL_BRANCH23)
+ return 1;
+
+ return 0;
+}
+
+static bfd_reloc_code_real_type
+arm_parse_reloc ()
+{
+ char id[16];
+ char * ip;
+ unsigned int i;
+ static struct
+ {
+ char * str;
+ int len;
+ bfd_reloc_code_real_type reloc;
+ }
+ reloc_map[] =
+ {
+#define MAP(str,reloc) { str, sizeof (str)-1, reloc }
+ MAP ("(got)", BFD_RELOC_ARM_GOT32),
+ MAP ("(gotoff)", BFD_RELOC_ARM_GOTOFF),
+ /* ScottB: Jan 30, 1998 */
+ /* Added support for parsing "var(PLT)" branch instructions */
+ /* generated by GCC for PLT relocs */
+ MAP ("(plt)", BFD_RELOC_ARM_PLT32),
+ { NULL, 0, BFD_RELOC_UNUSED }
+#undef MAP
+ };
+
+ for (i = 0, ip = input_line_pointer;
+ i < sizeof (id) && (isalnum (*ip) || ispunct (*ip));
+ i++, ip++)
+ id[i] = tolower (*ip);
+
+ for (i = 0; reloc_map[i].str; i++)
+ if (strncmp (id, reloc_map[i].str, reloc_map[i].len) == 0)
+ break;
+
+ input_line_pointer += reloc_map[i].len;
+
+ return reloc_map[i].reloc;
+}
+
+static void
+s_arm_elf_cons (nbytes)
+ int nbytes;
+{
+ expressionS exp;
+
+#ifdef md_flush_pending_output
+ md_flush_pending_output ();
+#endif
+
+ if (is_it_end_of_statement ())
+ {
+ demand_empty_rest_of_line ();
+ return;
+ }
+
+#ifdef md_cons_align
+ md_cons_align (nbytes);
+#endif
+
+ do
+ {
+ bfd_reloc_code_real_type reloc;
+
+ expression (& exp);
+
+ if (exp.X_op == O_symbol
+ && * input_line_pointer == '('
+ && (reloc = arm_parse_reloc()) != BFD_RELOC_UNUSED)
+ {
+ reloc_howto_type * howto = bfd_reloc_type_lookup (stdoutput, reloc);
+ int size = bfd_get_reloc_size (howto);
+
+ if (size > nbytes)
+ as_bad ("%s relocations do not fit in %d bytes",
+ howto->name, nbytes);
+ else
+ {
+ register char * p = frag_more ((int) nbytes);
+ int offset = nbytes - size;
+
+ fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size,
+ & exp, 0, reloc);
+ }
+ }
+ else
+ emit_expr (& exp, (unsigned int) nbytes);
+ }
+ while (*input_line_pointer++ == ',');
+
+ input_line_pointer--; /* Put terminator back into stream. */
+ demand_empty_rest_of_line ();
+}
+
+#endif /* OBJ_ELF */
diff --git a/contrib/binutils/gas/doc/c-arm.texi b/contrib/binutils/gas/doc/c-arm.texi
new file mode 100644
index 000000000000..e35498240325
--- /dev/null
+++ b/contrib/binutils/gas/doc/c-arm.texi
@@ -0,0 +1,294 @@
+@c Copyright (C) 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
+@c This is part of the GAS manual.
+@c For copying conditions, see the file as.texinfo.
+
+@ifset GENERIC
+@page
+@node ARM-Dependent
+@chapter ARM Dependent Features
+@end ifset
+
+@ifclear GENERIC
+@node Machine Dependencies
+@chapter ARM Dependent Features
+@end ifclear
+
+@cindex ARM support
+@cindex Thumb support
+@menu
+* ARM Options:: Options
+* ARM Syntax:: Syntax
+* ARM Floating Point:: Floating Point
+* ARM Directives:: ARM Machine Directives
+* ARM Opcodes:: Opcodes
+@end menu
+
+@node ARM Options
+@section Options
+@cindex ARM options (none)
+@cindex options for ARM (none)
+
+@table @code
+
+@cindex @code{-marm} command line option, ARM
+@item -marm@code{[2|250|3|6|60|600|610|620|7|7m|7d|7dm|7di|7dmi|70|700|700i|710|710c|7100|7500|7500fe|7tdmi|8|810|9|9tdmi|920|strongarm|strongarm110|strongarm1100]}
+This option specifies the target processor. The assembler will issue an
+error message if an attempt is made to assemble an instruction which
+will not execute on the target processor.
+
+@cindex @code{-marmv} command line option, ARM
+@item -marmv@code{[2|2a|3|3m|4|4t|5|5t]}
+This option specifies the target architecture. The assembler will issue
+an error message if an attempt is made to assemble an instruction which
+will not execute on the target architecture.
+
+@cindex @code{-mthumb} command line option, ARM
+@item -mthumb
+This option specifies that only Thumb instructions should be assembled.
+
+@cindex @code{-mall} command line option, ARM
+@item -mall
+This option specifies that any Arm or Thumb instruction should be assembled.
+
+@cindex @code{-mfpa} command line option, ARM
+@item -mfpa @var{[10|11]}
+This option specifies the floating point architecture in use on the
+target processor.
+
+@cindex @code{-mfpe-old} command line option, ARM
+@item -mfpe-old
+Do not allow the assemble of floating point multiple instructions.
+
+@cindex @code{-mno-fpu} command line option, ARM
+@item -mno-fpu
+Do not allow the assembly of any floating point instructions.
+
+@cindex @code{-mthumb-interwork} command line option, ARM
+@item -mthumb-interwork
+This option specifies that the output generated by the assembler should
+be marked as supporting interworking.
+
+@cindex @code{-mapcs} command line option, ARM
+@item -mapcs @var{[26|32]}
+This option specifies that the output generated by the assembler should
+be marked as supporting the indicated version of the Arm Procedure.
+Calling Standard.
+
+@cindex @code{-mapcs-float} command line option, ARM
+@item -mapcs-float
+This indicates the the floating point variant of the APCS should be
+used. In this variant floating point arguments are passed in FP
+registers rather than integer registers.
+
+@cindex @code{-mapcs-reentrant} command line option, ARM
+@item -mapcs-reentrant
+This indicates that the reentrant variant of the APCS should be used.
+This variant supports position independent code.
+
+@cindex @code{-EB} command line option, ARM
+@item -EB
+This option specifies that the output generated by the assembler should
+be marked as being encoded for a big-endian processor.
+
+@cindex @code{-EL} command line option, ARM
+@item -EL
+This option specifies that the output generated by the assembler should
+be marked as being encoded for a little-endian processor.
+
+@cindex @code{-k} command line option, ARM
+@cindex PIC code generation for ARM
+@item -k
+This option enables the generation of PIC (position independent code).
+
+@cindex @code{-moabi} command line option, ARM
+@item -moabi
+This indicates that the code should be assembled using the old ARM ELF
+conventions, based on a beta release release of the ARM-ELF
+specifications, rather than the default conventions which are based on
+the final release of the ARM-ELF specifications.
+
+@end table
+
+
+@node ARM Syntax
+@section Syntax
+@menu
+* ARM-Chars:: Special Characters
+* ARM-Regs:: Register Names
+@end menu
+
+@node ARM-Chars
+@subsection Special Characters
+
+@cindex line comment character, ARM
+@cindex ARM line comment character
+The presence of a @samp{@@} on a line indicates the start of a comment
+that extends to the end of the current line. If a @samp{#} appears as
+the first character of a line, the whole line is treated as a comment.
+
+@cindex line separator, ARM
+@cindex statement separator, ARM
+@cindex ARM line separator
+On ARM systems running the GNU/Linux operating system, @samp{;} can be
+used instead of a newline to separate statements.
+
+@cindex immediate character, ARM
+@cindex ARM immediate character
+Either @samp{#} or @samp{$} can be used to indicate immediate operands.
+
+@cindex identifiers, ARM
+@cindex ARM identifiers
+*TODO* Explain about /data modifier on symbols.
+
+@node ARM-Regs
+@subsection Register Names
+
+@cindex ARM register names
+@cindex register names, ARM
+*TODO* Explain about ARM register naming, and the predefined names.
+
+@node ARM Floating Point
+@section Floating Point
+
+@cindex floating point, ARM (@sc{ieee})
+@cindex ARM floating point (@sc{ieee})
+The ARM family uses @sc{ieee} floating-point numbers.
+
+
+
+@node ARM Directives
+@section ARM Machine Directives
+
+@cindex machine directives, ARM
+@cindex ARM machine directives
+@table @code
+
+@cindex @code{align} directive, ARM
+@item .align @var{expression} [, @var{expression}]
+This is the generic @var{.align} directive. For the ARM however if the
+first argument is zero (ie no alignment is needed) the assembler will
+behave as if the argument had been 2 (ie pad to the next four byte
+boundary). This is for compatability with ARM's own assembler.
+
+@cindex @code{req} directive, ARM
+@item @var{name} .req @var{register name}
+This creates an alias for @var{register name} called @var{name}. For
+example:
+
+@smallexample
+ foo .req r0
+@end smallexample
+
+@cindex @code{code} directive, ARM
+@item .code @var{[16|32]}
+This directive selects the instruction set being generated. The value 16
+selects Thumb, with the value 32 selecting ARM.
+
+@cindex @code{thumb} directive, ARM
+@item .thumb
+This performs the same action as @var{.code 16}.
+
+@cindex @code{arm} directive, ARM
+@item .arm
+This performs the same action as @var{.code 32}.
+
+@cindex @code{force_thumb} directive, ARM
+@item .force_thumb
+This directive forces the selection of Thumb instructions, even if the
+target processor does not support those instructions
+
+@cindex @code{thumb_func} directive, ARM
+@item .thumb_func
+This directive specifies that the following symbol is the name of a
+Thumb encoded function. This information is necessary in order to allow
+the assembler and linker to generate correct code for interworking
+between Arm and Thumb instructions and should be used even if
+interworking is not going to be performed.
+
+@cindex @code{thumb_set} directive, ARM
+@item .thumb_set
+This performs the equivalent of a @code{.set} directive in that it
+creates a symbol which is an alias for another symbol (possibly not yet
+defined). This directive also has the added property in that it marks
+the aliased symbol as being a thumb function entry point, in the same
+way that the @code{.thumb_func} directive does.
+
+@cindex @code{.ltorg} directive, ARM
+@item .ltorg
+This directive causes the current contents of the literal pool to be
+dumped into the current section (which is assumed to be the .text
+section) at the current location (aligned to a word boundary).
+
+@cindex @code{.pool} directive, ARM
+@item .pool
+This is a synonym for .ltorg.
+
+@end table
+
+@node ARM Opcodes
+@section Opcodes
+
+@cindex ARM opcodes
+@cindex opcodes for ARM
+@code{@value{AS}} implements all the standard ARM opcodes. It also
+implements several pseudo opcodes, including several synthetic load
+instructions.
+
+@table @code
+
+@cindex @code{NOP} pseudo op, ARM
+@item NOP
+@smallexample
+ nop
+@end smallexample
+
+This pseudo op will always evaluate to a legal ARM instruction that does
+nothing. Currently it will evaluate to MOV r0, r0.
+
+@cindex @code{LDR reg,=<label>} pseudo op, ARM
+@item LDR
+@smallexample
+ ldr <register> , = <expression>
+@end smallexample
+
+If expression evaluates to a numeric constant then a MOV or MVN
+instruction will be used in place of the LDR instruction, if the
+constant can be generated by either of these instructions. Otherwise
+the constant will be placed into the nearest literal pool (if it not
+already there) and a PC relative LDR instruction will be generated.
+
+@cindex @code{ADR reg,<label>} pseudo op, ARM
+@item ADR
+@smallexample
+ adr <register> <label>
+@end smallexample
+
+This instruction will load the address of @var{label} into the indicated
+register. The instruction will evaluate to a PC relative ADD or SUB
+instruction depending upon where the label is located. If the label is
+out of range, or if it is not defined in the same file (and section) as
+the ADR instruction, then an error will be generated. This instruction
+will not make use of the literal pool.
+
+@cindex @code{ADRL reg,<label>} pseudo op, ARM
+@item ADRL
+@smallexample
+ adrl <register> <label>
+@end smallexample
+
+This instruction will load the address of @var{label} into the indicated
+register. The instruction will evaluate to one or two a PC relative ADD
+or SUB instructions depending upon where the label is located. If a
+second instruction is not needed a NOP instruction will be generated in
+its place, so that this instruction is always 8 bytes long.
+
+If the label is out of range, or if it is not defined in the same file
+(and section) as the ADRL instruction, then an error will be generated.
+This instruction will not make use of the literal pool.
+
+@end table
+
+For information on the ARM or Thumb instruction sets, see @cite{ARM
+Software Development Toolkit Reference Manual}, Advanced RISC Machines
+Ltd.
+
diff --git a/contrib/binutils/include/filenames.h b/contrib/binutils/include/filenames.h
new file mode 100644
index 000000000000..ba933c8530ee
--- /dev/null
+++ b/contrib/binutils/include/filenames.h
@@ -0,0 +1,51 @@
+/* Macros for taking apart, interpreting and processing file names.
+
+ These are here because some non-Posix (a.k.a. DOSish) systems have
+ drive letter brain-damage at the beginning of an absolute file name,
+ use forward- and back-slash in path names interchangeably, and
+ some of them have case-insensitive file names.
+
+ Copyright 2000 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef FILENAMES_H
+#define FILENAMES_H
+
+#if defined(__MSDOS__) || defined(_WIN32) || defined(__OS2__)
+
+#ifndef HAVE_DOS_BASED_FILE_SYSTEM
+#define HAVE_DOS_BASED_FILE_SYSTEM 1
+#endif
+
+#define IS_DIR_SEPARATOR(c) ((c) == '/' || (c) == '\\')
+/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is
+ only semi-absolute. This is because the users of IS_ABSOLUTE_PATH
+ want to know whether to prepend the current working directory to
+ a file name, which should not be done with a name like d:foo. */
+#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || (((f)[0]) && ((f)[1] == ':')))
+#define FILENAME_CMP(s1, s2) strcasecmp(s1, s2)
+
+#else /* not DOSish */
+
+#define IS_DIR_SEPARATOR(c) ((c) == '/')
+#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]))
+#define FILENAME_CMP(s1, s2) strcmp(s1, s2)
+
+#endif /* not DOSish */
+
+#endif /* FILENAMES_H */
diff --git a/contrib/binutils/opcodes/arm-dis.c b/contrib/binutils/opcodes/arm-dis.c
new file mode 100644
index 000000000000..a3e7112b3fc1
--- /dev/null
+++ b/contrib/binutils/opcodes/arm-dis.c
@@ -0,0 +1,1071 @@
+/* Instruction printing code for the ARM
+ Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+ Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+ Modification by James G. Smith (jsmith@cygnus.co.uk)
+
+This file is part of libopcodes.
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "sysdep.h"
+#include "dis-asm.h"
+#define DEFINE_TABLE
+#include "arm-opc.h"
+#include "coff/internal.h"
+#include "libcoff.h"
+#include "opintl.h"
+
+/* FIXME: This shouldn't be done here */
+#include "elf-bfd.h"
+#include "elf/internal.h"
+#include "elf/arm.h"
+
+#ifndef streq
+#define streq(a,b) (strcmp ((a), (b)) == 0)
+#endif
+
+#ifndef strneq
+#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
+#endif
+
+#ifndef NUM_ELEM
+#define NUM_ELEM(a) (sizeof (a) / sizeof (a)[0])
+#endif
+
+static char * arm_conditional[] =
+{"eq", "ne", "cs", "cc", "mi", "pl", "vs", "vc",
+ "hi", "ls", "ge", "lt", "gt", "le", "", "nv"};
+
+typedef struct
+{
+ const char * name;
+ const char * description;
+ const char * reg_names[16];
+}
+arm_regname;
+
+static arm_regname regnames[] =
+{
+ { "raw" , "Select raw register names",
+ { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"}},
+ { "std", "Select register names used in ARM's ISA documentation",
+ { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "sp", "lr", "pc" }},
+ { "apcs", "Select register names used in the APCS",
+ { "a1", "a2", "a3", "a4", "v1", "v2", "v3", "v4", "v5", "v6", "sl", "fp", "ip", "sp", "lr", "pc" }},
+ { "atpcs", "Select register names used in the ATPCS",
+ { "a1", "a2", "a3", "a4", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "IP", "SP", "LR", "PC" }},
+ { "special-atpcs", "Select special register names used in the ATPCS",
+ { "a1", "a2", "a3", "a4", "v1", "v2", "v3", "WR", "v5", "SB", "SL", "FP", "IP", "SP", "LR", "PC" }}
+};
+
+/* Default to standard register name set. */
+static unsigned int regname_selected = 1;
+
+#define NUM_ARM_REGNAMES NUM_ELEM (regnames)
+#define arm_regnames regnames[regname_selected].reg_names
+
+static boolean force_thumb = false;
+
+static char * arm_fp_const[] =
+{"0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "0.5", "10.0"};
+
+static char * arm_shift[] =
+{"lsl", "lsr", "asr", "ror"};
+
+/* Forward declarations. */
+static void arm_decode_shift PARAMS ((long, fprintf_ftype, void *));
+static int print_insn_arm PARAMS ((bfd_vma, struct disassemble_info *, long));
+static int print_insn_thumb PARAMS ((bfd_vma, struct disassemble_info *, long));
+static void parse_disassembler_options PARAMS ((char *));
+static int print_insn PARAMS ((bfd_vma, struct disassemble_info *, boolean));
+int get_arm_regname_num_options (void);
+int set_arm_regname_option (int option);
+int get_arm_regnames (int option, const char **setname,
+ const char **setdescription,
+ const char ***register_names);
+
+/* Functions. */
+int
+get_arm_regname_num_options (void)
+{
+ return NUM_ARM_REGNAMES;
+}
+
+int
+set_arm_regname_option (int option)
+{
+ int old = regname_selected;
+ regname_selected = option;
+ return old;
+}
+
+int
+get_arm_regnames (int option, const char **setname,
+ const char **setdescription,
+ const char ***register_names)
+{
+ *setname = regnames[option].name;
+ *setdescription = regnames[option].description;
+ *register_names = regnames[option].reg_names;
+ return 16;
+}
+
+static void
+arm_decode_shift (given, func, stream)
+ long given;
+ fprintf_ftype func;
+ void * stream;
+{
+ func (stream, "%s", arm_regnames[given & 0xf]);
+
+ if ((given & 0xff0) != 0)
+ {
+ if ((given & 0x10) == 0)
+ {
+ int amount = (given & 0xf80) >> 7;
+ int shift = (given & 0x60) >> 5;
+
+ if (amount == 0)
+ {
+ if (shift == 3)
+ {
+ func (stream, ", rrx");
+ return;
+ }
+
+ amount = 32;
+ }
+
+ func (stream, ", %s #%d", arm_shift[shift], amount);
+ }
+ else
+ func (stream, ", %s %s", arm_shift[(given & 0x60) >> 5],
+ arm_regnames[(given & 0xf00) >> 8]);
+ }
+}
+
+/* Print one instruction from PC on INFO->STREAM.
+ Return the size of the instruction (always 4 on ARM). */
+static int
+print_insn_arm (pc, info, given)
+ bfd_vma pc;
+ struct disassemble_info * info;
+ long given;
+{
+ struct arm_opcode * insn;
+ void * stream = info->stream;
+ fprintf_ftype func = info->fprintf_func;
+
+ for (insn = arm_opcodes; insn->assembler; insn++)
+ {
+ if ((given & insn->mask) == insn->value)
+ {
+ char * c;
+
+ for (c = insn->assembler; *c; c++)
+ {
+ if (*c == '%')
+ {
+ switch (*++c)
+ {
+ case '%':
+ func (stream, "%%");
+ break;
+
+ case 'a':
+ if (((given & 0x000f0000) == 0x000f0000)
+ && ((given & 0x02000000) == 0))
+ {
+ int offset = given & 0xfff;
+
+ func (stream, "[pc");
+
+ if (given & 0x01000000)
+ {
+ if ((given & 0x00800000) == 0)
+ offset = - offset;
+
+ /* pre-indexed */
+ func (stream, ", #%x]", offset);
+
+ offset += pc + 8;
+
+ /* Cope with the possibility of write-back
+ being used. Probably a very dangerous thing
+ for the programmer to do, but who are we to
+ argue ? */
+ if (given & 0x00200000)
+ func (stream, "!");
+ }
+ else
+ {
+ /* Post indexed. */
+ func (stream, "], #%x", offset);
+
+ offset = pc + 8; /* ie ignore the offset. */
+ }
+
+ func (stream, "\t; ");
+ info->print_address_func (offset, info);
+ }
+ else
+ {
+ func (stream, "[%s",
+ arm_regnames[(given >> 16) & 0xf]);
+ if ((given & 0x01000000) != 0)
+ {
+ if ((given & 0x02000000) == 0)
+ {
+ int offset = given & 0xfff;
+ if (offset)
+ func (stream, ", %s#%d",
+ (((given & 0x00800000) == 0)
+ ? "-" : ""), offset);
+ }
+ else
+ {
+ func (stream, ", %s",
+ (((given & 0x00800000) == 0)
+ ? "-" : ""));
+ arm_decode_shift (given, func, stream);
+ }
+
+ func (stream, "]%s",
+ ((given & 0x00200000) != 0) ? "!" : "");
+ }
+ else
+ {
+ if ((given & 0x02000000) == 0)
+ {
+ int offset = given & 0xfff;
+ if (offset)
+ func (stream, "], %s#%d",
+ (((given & 0x00800000) == 0)
+ ? "-" : ""), offset);
+ else
+ func (stream, "]");
+ }
+ else
+ {
+ func (stream, "], %s",
+ (((given & 0x00800000) == 0)
+ ? "-" : ""));
+ arm_decode_shift (given, func, stream);
+ }
+ }
+ }
+ break;
+
+ case 's':
+ if ((given & 0x004f0000) == 0x004f0000)
+ {
+ /* PC relative with immediate offset. */
+ int offset = ((given & 0xf00) >> 4) | (given & 0xf);
+
+ if ((given & 0x00800000) == 0)
+ offset = -offset;
+
+ func (stream, "[pc, #%x]\t; ", offset);
+
+ (*info->print_address_func)
+ (offset + pc + 8, info);
+ }
+ else
+ {
+ func (stream, "[%s",
+ arm_regnames[(given >> 16) & 0xf]);
+ if ((given & 0x01000000) != 0)
+ {
+ /* Pre-indexed. */
+ if ((given & 0x00400000) == 0x00400000)
+ {
+ /* Immediate. */
+ int offset = ((given & 0xf00) >> 4) | (given & 0xf);
+ if (offset)
+ func (stream, ", %s#%d",
+ (((given & 0x00800000) == 0)
+ ? "-" : ""), offset);
+ }
+ else
+ {
+ /* Register. */
+ func (stream, ", %s%s",
+ (((given & 0x00800000) == 0)
+ ? "-" : ""),
+ arm_regnames[given & 0xf]);
+ }
+
+ func (stream, "]%s",
+ ((given & 0x00200000) != 0) ? "!" : "");
+ }
+ else
+ {
+ /* Post-indexed. */
+ if ((given & 0x00400000) == 0x00400000)
+ {
+ /* Immediate. */
+ int offset = ((given & 0xf00) >> 4) | (given & 0xf);
+ if (offset)
+ func (stream, "], %s#%d",
+ (((given & 0x00800000) == 0)
+ ? "-" : ""), offset);
+ else
+ func (stream, "]");
+ }
+ else
+ {
+ /* Register. */
+ func (stream, "], %s%s",
+ (((given & 0x00800000) == 0)
+ ? "-" : ""),
+ arm_regnames[given & 0xf]);
+ }
+ }
+ }
+ break;
+
+ case 'b':
+ (*info->print_address_func)
+ (BDISP (given) * 4 + pc + 8, info);
+ break;
+
+ case 'c':
+ func (stream, "%s",
+ arm_conditional [(given >> 28) & 0xf]);
+ break;
+
+ case 'm':
+ {
+ int started = 0;
+ int reg;
+
+ func (stream, "{");
+ for (reg = 0; reg < 16; reg++)
+ if ((given & (1 << reg)) != 0)
+ {
+ if (started)
+ func (stream, ", ");
+ started = 1;
+ func (stream, "%s", arm_regnames[reg]);
+ }
+ func (stream, "}");
+ }
+ break;
+
+ case 'o':
+ if ((given & 0x02000000) != 0)
+ {
+ int rotate = (given & 0xf00) >> 7;
+ int immed = (given & 0xff);
+ immed = (((immed << (32 - rotate))
+ | (immed >> rotate)) & 0xffffffff);
+ func (stream, "#%d\t; 0x%x", immed, immed);
+ }
+ else
+ arm_decode_shift (given, func, stream);
+ break;
+
+ case 'p':
+ if ((given & 0x0000f000) == 0x0000f000)
+ func (stream, "p");
+ break;
+
+ case 't':
+ if ((given & 0x01200000) == 0x00200000)
+ func (stream, "t");
+ break;
+
+ case 'h':
+ if ((given & 0x00000020) == 0x00000020)
+ func (stream, "h");
+ else
+ func (stream, "b");
+ break;
+
+ case 'A':
+ func (stream, "[%s", arm_regnames [(given >> 16) & 0xf]);
+ if ((given & 0x01000000) != 0)
+ {
+ int offset = given & 0xff;
+ if (offset)
+ func (stream, ", %s#%d]%s",
+ ((given & 0x00800000) == 0 ? "-" : ""),
+ offset * 4,
+ ((given & 0x00200000) != 0 ? "!" : ""));
+ else
+ func (stream, "]");
+ }
+ else
+ {
+ int offset = given & 0xff;
+ if (offset)
+ func (stream, "], %s#%d",
+ ((given & 0x00800000) == 0 ? "-" : ""),
+ offset * 4);
+ else
+ func (stream, "]");
+ }
+ break;
+
+ case 'C':
+ switch (given & 0x000f0000)
+ {
+ default:
+ func (stream, "_???");
+ break;
+ case 0x90000:
+ func (stream, "_all");
+ break;
+ case 0x10000:
+ func (stream, "_c");
+ break;
+ case 0x20000:
+ func (stream, "_x");
+ break;
+ case 0x40000:
+ func (stream, "_s");
+ break;
+ case 0x80000:
+ func (stream, "_f");
+ break;
+ }
+ break;
+
+ case 'F':
+ switch (given & 0x00408000)
+ {
+ case 0:
+ func (stream, "4");
+ break;
+ case 0x8000:
+ func (stream, "1");
+ break;
+ case 0x00400000:
+ func (stream, "2");
+ break;
+ default:
+ func (stream, "3");
+ }
+ break;
+
+ case 'P':
+ switch (given & 0x00080080)
+ {
+ case 0:
+ func (stream, "s");
+ break;
+ case 0x80:
+ func (stream, "d");
+ break;
+ case 0x00080000:
+ func (stream, "e");
+ break;
+ default:
+ func (stream, _("<illegal precision>"));
+ break;
+ }
+ break;
+ case 'Q':
+ switch (given & 0x00408000)
+ {
+ case 0:
+ func (stream, "s");
+ break;
+ case 0x8000:
+ func (stream, "d");
+ break;
+ case 0x00400000:
+ func (stream, "e");
+ break;
+ default:
+ func (stream, "p");
+ break;
+ }
+ break;
+ case 'R':
+ switch (given & 0x60)
+ {
+ case 0:
+ break;
+ case 0x20:
+ func (stream, "p");
+ break;
+ case 0x40:
+ func (stream, "m");
+ break;
+ default:
+ func (stream, "z");
+ break;
+ }
+ break;
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ int bitstart = *c++ - '0';
+ int bitend = 0;
+ while (*c >= '0' && *c <= '9')
+ bitstart = (bitstart * 10) + *c++ - '0';
+
+ switch (*c)
+ {
+ case '-':
+ c++;
+
+ while (*c >= '0' && *c <= '9')
+ bitend = (bitend * 10) + *c++ - '0';
+
+ if (!bitend)
+ abort ();
+
+ switch (*c)
+ {
+ case 'r':
+ {
+ long reg;
+
+ reg = given >> bitstart;
+ reg &= (2 << (bitend - bitstart)) - 1;
+
+ func (stream, "%s", arm_regnames[reg]);
+ }
+ break;
+ case 'd':
+ {
+ long reg;
+
+ reg = given >> bitstart;
+ reg &= (2 << (bitend - bitstart)) - 1;
+
+ func (stream, "%d", reg);
+ }
+ break;
+ case 'x':
+ {
+ long reg;
+
+ reg = given >> bitstart;
+ reg &= (2 << (bitend - bitstart)) - 1;
+
+ func (stream, "0x%08x", reg);
+
+ /* Some SWI instructions have special
+ meanings. */
+ if ((given & 0x0fffffff) == 0x0FF00000)
+ func (stream, "\t; IMB");
+ else if ((given & 0x0fffffff) == 0x0FF00001)
+ func (stream, "\t; IMBRange");
+ }
+ break;
+ case 'X':
+ {
+ long reg;
+
+ reg = given >> bitstart;
+ reg &= (2 << (bitend - bitstart)) - 1;
+
+ func (stream, "%01x", reg & 0xf);
+ }
+ break;
+ case 'f':
+ {
+ long reg;
+
+ reg = given >> bitstart;
+ reg &= (2 << (bitend - bitstart)) - 1;
+
+ if (reg > 7)
+ func (stream, "#%s",
+ arm_fp_const[reg & 7]);
+ else
+ func (stream, "f%d", reg);
+ }
+ break;
+ default:
+ abort ();
+ }
+ break;
+
+ case '`':
+ c++;
+ if ((given & (1 << bitstart)) == 0)
+ func (stream, "%c", *c);
+ break;
+ case '\'':
+ c++;
+ if ((given & (1 << bitstart)) != 0)
+ func (stream, "%c", *c);
+ break;
+ case '?':
+ ++c;
+ if ((given & (1 << bitstart)) != 0)
+ func (stream, "%c", *c++);
+ else
+ func (stream, "%c", *++c);
+ break;
+ default:
+ abort ();
+ }
+ break;
+
+ default:
+ abort ();
+ }
+ }
+ }
+ else
+ func (stream, "%c", *c);
+ }
+ return 4;
+ }
+ }
+ abort ();
+}
+
+/* Print one instruction from PC on INFO->STREAM.
+ Return the size of the instruction. */
+static int
+print_insn_thumb (pc, info, given)
+ bfd_vma pc;
+ struct disassemble_info * info;
+ long given;
+{
+ struct thumb_opcode * insn;
+ void * stream = info->stream;
+ fprintf_ftype func = info->fprintf_func;
+
+ for (insn = thumb_opcodes; insn->assembler; insn++)
+ {
+ if ((given & insn->mask) == insn->value)
+ {
+ char * c = insn->assembler;
+
+ /* Special processing for Thumb 2 instruction BL sequence: */
+ if (!*c) /* Check for empty (not NULL) assembler string. */
+ {
+ info->bytes_per_chunk = 4;
+ info->bytes_per_line = 4;
+
+ func (stream, "bl\t");
+
+ info->print_address_func (BDISP23 (given) * 2 + pc + 4, info);
+ return 4;
+ }
+ else
+ {
+ info->bytes_per_chunk = 2;
+ info->bytes_per_line = 4;
+
+ given &= 0xffff;
+
+ for (; *c; c++)
+ {
+ if (*c == '%')
+ {
+ int domaskpc = 0;
+ int domasklr = 0;
+
+ switch (*++c)
+ {
+ case '%':
+ func (stream, "%%");
+ break;
+
+ case 'S':
+ {
+ long reg;
+
+ reg = (given >> 3) & 0x7;
+ if (given & (1 << 6))
+ reg += 8;
+
+ func (stream, "%s", arm_regnames[reg]);
+ }
+ break;
+
+ case 'D':
+ {
+ long reg;
+
+ reg = given & 0x7;
+ if (given & (1 << 7))
+ reg += 8;
+
+ func (stream, "%s", arm_regnames[reg]);
+ }
+ break;
+
+ case 'T':
+ func (stream, "%s",
+ arm_conditional [(given >> 8) & 0xf]);
+ break;
+
+ case 'N':
+ if (given & (1 << 8))
+ domasklr = 1;
+ /* Fall through. */
+ case 'O':
+ if (*c == 'O' && (given & (1 << 8)))
+ domaskpc = 1;
+ /* Fall through. */
+ case 'M':
+ {
+ int started = 0;
+ int reg;
+
+ func (stream, "{");
+
+ /* It would be nice if we could spot
+ ranges, and generate the rS-rE format: */
+ for (reg = 0; (reg < 8); reg++)
+ if ((given & (1 << reg)) != 0)
+ {
+ if (started)
+ func (stream, ", ");
+ started = 1;
+ func (stream, "%s", arm_regnames[reg]);
+ }
+
+ if (domasklr)
+ {
+ if (started)
+ func (stream, ", ");
+ started = 1;
+ func (stream, arm_regnames[14] /* "lr" */);
+ }
+
+ if (domaskpc)
+ {
+ if (started)
+ func (stream, ", ");
+ func (stream, arm_regnames[15] /* "pc" */);
+ }
+
+ func (stream, "}");
+ }
+ break;
+
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ int bitstart = *c++ - '0';
+ int bitend = 0;
+
+ while (*c >= '0' && *c <= '9')
+ bitstart = (bitstart * 10) + *c++ - '0';
+
+ switch (*c)
+ {
+ case '-':
+ {
+ long reg;
+
+ c++;
+ while (*c >= '0' && *c <= '9')
+ bitend = (bitend * 10) + *c++ - '0';
+ if (!bitend)
+ abort ();
+ reg = given >> bitstart;
+ reg &= (2 << (bitend - bitstart)) - 1;
+ switch (*c)
+ {
+ case 'r':
+ func (stream, "%s", arm_regnames[reg]);
+ break;
+
+ case 'd':
+ func (stream, "%d", reg);
+ break;
+
+ case 'H':
+ func (stream, "%d", reg << 1);
+ break;
+
+ case 'W':
+ func (stream, "%d", reg << 2);
+ break;
+
+ case 'a':
+ /* PC-relative address -- the bottom two
+ bits of the address are dropped
+ before the calculation. */
+ info->print_address_func
+ (((pc + 4) & ~3) + (reg << 2), info);
+ break;
+
+ case 'x':
+ func (stream, "0x%04x", reg);
+ break;
+
+ case 'I':
+ reg = ((reg ^ (1 << bitend)) - (1 << bitend));
+ func (stream, "%d", reg);
+ break;
+
+ case 'B':
+ reg = ((reg ^ (1 << bitend)) - (1 << bitend));
+ (*info->print_address_func)
+ (reg * 2 + pc + 4, info);
+ break;
+
+ default:
+ abort ();
+ }
+ }
+ break;
+
+ case '\'':
+ c++;
+ if ((given & (1 << bitstart)) != 0)
+ func (stream, "%c", *c);
+ break;
+
+ case '?':
+ ++c;
+ if ((given & (1 << bitstart)) != 0)
+ func (stream, "%c", *c++);
+ else
+ func (stream, "%c", *++c);
+ break;
+
+ default:
+ abort ();
+ }
+ }
+ break;
+
+ default:
+ abort ();
+ }
+ }
+ else
+ func (stream, "%c", *c);
+ }
+ }
+ return 2;
+ }
+ }
+
+ /* No match. */
+ abort ();
+}
+
+/* Parse an individual disassembler option. */
+void
+parse_arm_disassembler_option (option)
+ char * option;
+{
+ if (option == NULL)
+ return;
+
+ if (strneq (option, "reg-names-", 10))
+ {
+ int i;
+
+ option += 10;
+
+ for (i = NUM_ARM_REGNAMES; i--;)
+ if (streq (option, regnames[i].name))
+ {
+ regname_selected = i;
+ break;
+ }
+
+ if (i < 0)
+ fprintf (stderr, _("Unrecognised register name set: %s\n"), option);
+ }
+ else if (streq (option, "force-thumb"))
+ force_thumb = 1;
+ else if (streq (option, "no-force-thumb"))
+ force_thumb = 0;
+ else
+ fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
+
+ return;
+}
+
+/* Parse the string of disassembler options, spliting it at whitespaces. */
+static void
+parse_disassembler_options (options)
+ char * options;
+{
+ char * space;
+
+ if (options == NULL)
+ return;
+
+ do
+ {
+ space = strchr (options, ' ');
+
+ if (space)
+ {
+ * space = '\0';
+ parse_arm_disassembler_option (options);
+ * space = ' ';
+ options = space + 1;
+ }
+ else
+ parse_arm_disassembler_option (options);
+ }
+ while (space);
+}
+
+/* NOTE: There are no checks in these routines that
+ the relevant number of data bytes exist. */
+static int
+print_insn (pc, info, little)
+ bfd_vma pc;
+ struct disassemble_info * info;
+ boolean little;
+{
+ unsigned char b[4];
+ long given;
+ int status;
+ int is_thumb;
+
+ if (info->disassembler_options)
+ {
+ parse_disassembler_options (info->disassembler_options);
+
+ /* To avoid repeated parsing of these options, we remove them here. */
+ info->disassembler_options = NULL;
+ }
+
+ is_thumb = force_thumb;
+
+ if (!is_thumb && info->symbols != NULL)
+ {
+ if (bfd_asymbol_flavour (*info->symbols) == bfd_target_coff_flavour)
+ {
+ coff_symbol_type * cs;
+
+ cs = coffsymbol (*info->symbols);
+ is_thumb = ( cs->native->u.syment.n_sclass == C_THUMBEXT
+ || cs->native->u.syment.n_sclass == C_THUMBSTAT
+ || cs->native->u.syment.n_sclass == C_THUMBLABEL
+ || cs->native->u.syment.n_sclass == C_THUMBEXTFUNC
+ || cs->native->u.syment.n_sclass == C_THUMBSTATFUNC);
+ }
+ else if (bfd_asymbol_flavour (*info->symbols) == bfd_target_elf_flavour)
+ {
+ elf_symbol_type * es;
+ unsigned int type;
+
+ es = *(elf_symbol_type **)(info->symbols);
+ type = ELF_ST_TYPE (es->internal_elf_sym.st_info);
+
+ is_thumb = (type == STT_ARM_TFUNC) || (type == STT_ARM_16BIT);
+ }
+ }
+
+ info->bytes_per_chunk = 4;
+ info->display_endian = little ? BFD_ENDIAN_LITTLE : BFD_ENDIAN_BIG;
+
+ if (little)
+ {
+ status = info->read_memory_func (pc, (bfd_byte *) &b[0], 4, info);
+ if (status != 0 && is_thumb)
+ {
+ info->bytes_per_chunk = 2;
+
+ status = info->read_memory_func (pc, (bfd_byte *) b, 2, info);
+ b[3] = b[2] = 0;
+ }
+
+ if (status != 0)
+ {
+ info->memory_error_func (status, pc, info);
+ return -1;
+ }
+
+ given = (b[0]) | (b[1] << 8) | (b[2] << 16) | (b[3] << 24);
+ }
+ else
+ {
+ status = info->read_memory_func
+ (pc & ~ 0x3, (bfd_byte *) &b[0], 4, info);
+ if (status != 0)
+ {
+ info->memory_error_func (status, pc, info);
+ return -1;
+ }
+
+ if (is_thumb)
+ {
+ if (pc & 0x2)
+ {
+ given = (b[2] << 8) | b[3];
+
+ status = info->read_memory_func
+ ((pc + 4) & ~ 0x3, (bfd_byte *) b, 4, info);
+ if (status != 0)
+ {
+ info->memory_error_func (status, pc + 4, info);
+ return -1;
+ }
+
+ given |= (b[0] << 24) | (b[1] << 16);
+ }
+ else
+ given = (b[0] << 8) | b[1] | (b[2] << 24) | (b[3] << 16);
+ }
+ else
+ given = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | (b[3]);
+ }
+
+ if (is_thumb)
+ status = print_insn_thumb (pc, info, given);
+ else
+ status = print_insn_arm (pc, info, given);
+
+ return status;
+}
+
+int
+print_insn_big_arm (pc, info)
+ bfd_vma pc;
+ struct disassemble_info * info;
+{
+ return print_insn (pc, info, false);
+}
+
+int
+print_insn_little_arm (pc, info)
+ bfd_vma pc;
+ struct disassemble_info * info;
+{
+ return print_insn (pc, info, true);
+}
+
+void
+print_arm_disassembler_options (FILE * stream)
+{
+ int i;
+
+ fprintf (stream, _("\n\
+The following ARM specific disassembler options are supported for use with\n\
+the -M switch:\n"));
+
+ for (i = NUM_ARM_REGNAMES; i--;)
+ fprintf (stream, " reg-names-%s %*c%s\n",
+ regnames[i].name,
+ 14 - strlen (regnames[i].name), ' ',
+ regnames[i].description);
+
+ fprintf (stream, " force-thumb Assume all insns are Thumb insns\n");
+ fprintf (stream, " no-force-thumb Examine preceeding label to determine an insn's type\n\n");
+}
diff --git a/contrib/binutils/opcodes/arm-opc.h b/contrib/binutils/opcodes/arm-opc.h
new file mode 100644
index 000000000000..5ecde4be6add
--- /dev/null
+++ b/contrib/binutils/opcodes/arm-opc.h
@@ -0,0 +1,284 @@
+/* Opcode table for the ARM.
+
+ Copyright 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+struct arm_opcode {
+ unsigned long value, mask; /* recognise instruction if (op&mask)==value */
+ char *assembler; /* how to disassemble this instruction */
+};
+
+struct thumb_opcode
+{
+ unsigned short value, mask; /* recognise instruction if (op&mask)==value */
+ char * assembler; /* how to disassemble this instruction */
+};
+
+/* format of the assembler string :
+
+ %% %
+ %<bitfield>d print the bitfield in decimal
+ %<bitfield>x print the bitfield in hex
+ %<bitfield>X print the bitfield as 1 hex digit without leading "0x"
+ %<bitfield>r print as an ARM register
+ %<bitfield>f print a floating point constant if >7 else a
+ floating point register
+ %c print condition code (always bits 28-31)
+ %P print floating point precision in arithmetic insn
+ %Q print floating point precision in ldf/stf insn
+ %R print floating point rounding mode
+ %<bitnum>'c print specified char iff bit is one
+ %<bitnum>`c print specified char iff bit is zero
+ %<bitnum>?ab print a if bit is one else print b
+ %p print 'p' iff bits 12-15 are 15
+ %t print 't' iff bit 21 set and bit 24 clear
+ %h print 'h' iff bit 5 set, else print 'b'
+ %o print operand2 (immediate or register + shift)
+ %a print address for ldr/str instruction
+ %s print address for ldr/str halfword/signextend instruction
+ %b print branch destination
+ %A print address for ldc/stc/ldf/stf instruction
+ %m print register mask for ldm/stm instruction
+ %C print the PSR sub type.
+ %F print the COUNT field of a LFM/SFM instruction.
+Thumb specific format options:
+ %D print Thumb register (bits 0..2 as high number if bit 7 set)
+ %S print Thumb register (bits 3..5 as high number if bit 6 set)
+ %<bitfield>I print bitfield as a signed decimal
+ (top bit of range being the sign bit)
+ %M print Thumb register mask
+ %N print Thumb register mask (with LR)
+ %O print Thumb register mask (with PC)
+ %T print Thumb condition code (always bits 8-11)
+ %<bitfield>B print Thumb branch destination (signed displacement)
+ %<bitfield>W print (bitfield * 4) as a decimal
+ %<bitfield>H print (bitfield * 2) as a decimal
+ %<bitfield>a print (bitfield * 4) as a pc-rel offset + decoded symbol
+*/
+
+/* Note: There is a partial ordering in this table - it must be searched from
+ the top to obtain a correct match. */
+
+static struct arm_opcode arm_opcodes[] =
+{
+ /* ARM instructions */
+ {0xe1a00000, 0xffffffff, "nop\t\t\t(mov r0,r0)"},
+ {0x012FFF10, 0x0ffffff0, "bx%c\t%0-3r"},
+ {0x00000090, 0x0fe000f0, "mul%c%20's\t%16-19r, %0-3r, %8-11r"},
+ {0x00200090, 0x0fe000f0, "mla%c%20's\t%16-19r, %0-3r, %8-11r, %12-15r"},
+ {0x01000090, 0x0fb00ff0, "swp%c%22'b\t%12-15r, %0-3r, [%16-19r]"},
+ {0x00800090, 0x0fa000f0, "%22?sumull%c%20's\t%12-15r, %16-19r, %0-3r, %8-11r"},
+ {0x00a00090, 0x0fa000f0, "%22?sumlal%c%20's\t%12-15r, %16-19r, %0-3r, %8-11r"},
+ {0x00000090, 0x0e100090, "str%c%6's%h\t%12-15r, %s"},
+ {0x00100090, 0x0e100090, "ldr%c%6's%h\t%12-15r, %s"},
+ {0x00000000, 0x0de00000, "and%c%20's\t%12-15r, %16-19r, %o"},
+ {0x00200000, 0x0de00000, "eor%c%20's\t%12-15r, %16-19r, %o"},
+ {0x00400000, 0x0de00000, "sub%c%20's\t%12-15r, %16-19r, %o"},
+ {0x00600000, 0x0de00000, "rsb%c%20's\t%12-15r, %16-19r, %o"},
+ {0x00800000, 0x0de00000, "add%c%20's\t%12-15r, %16-19r, %o"},
+ {0x00a00000, 0x0de00000, "adc%c%20's\t%12-15r, %16-19r, %o"},
+ {0x00c00000, 0x0de00000, "sbc%c%20's\t%12-15r, %16-19r, %o"},
+ {0x00e00000, 0x0de00000, "rsc%c%20's\t%12-15r, %16-19r, %o"},
+ {0x0120f000, 0x0db0f000, "msr%c\t%22?SCPSR%C, %o"},
+ {0x010f0000, 0x0fbf0fff, "mrs%c\t%12-15r, %22?SCPSR"},
+ {0x01000000, 0x0de00000, "tst%c%p\t%16-19r, %o"},
+ {0x01200000, 0x0de00000, "teq%c%p\t%16-19r, %o"},
+ {0x01400000, 0x0de00000, "cmp%c%p\t%16-19r, %o"},
+ {0x01600000, 0x0de00000, "cmn%c%p\t%16-19r, %o"},
+ {0x01800000, 0x0de00000, "orr%c%20's\t%12-15r, %16-19r, %o"},
+ {0x01a00000, 0x0de00000, "mov%c%20's\t%12-15r, %o"},
+ {0x01c00000, 0x0de00000, "bic%c%20's\t%12-15r, %16-19r, %o"},
+ {0x01e00000, 0x0de00000, "mvn%c%20's\t%12-15r, %o"},
+ {0x04000000, 0x0e100000, "str%c%22'b%t\t%12-15r, %a"},
+ {0x06000000, 0x0e100ff0, "str%c%22'b%t\t%12-15r, %a"},
+ {0x04000000, 0x0c100010, "str%c%22'b%t\t%12-15r, %a"},
+ {0x06000010, 0x0e000010, "undefined"},
+ {0x04100000, 0x0c100000, "ldr%c%22'b%t\t%12-15r, %a"},
+ {0x08000000, 0x0e100000, "stm%c%23?id%24?ba\t%16-19r%21'!, %m%22'^"},
+ {0x08100000, 0x0e100000, "ldm%c%23?id%24?ba\t%16-19r%21'!, %m%22'^"},
+ {0x0a000000, 0x0e000000, "b%24'l%c\t%b"},
+ {0x0f000000, 0x0f000000, "swi%c\t%0-23x"},
+
+ /* Floating point coprocessor instructions */
+ {0x0e000100, 0x0ff08f10, "adf%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e100100, 0x0ff08f10, "muf%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e200100, 0x0ff08f10, "suf%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e300100, 0x0ff08f10, "rsf%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e400100, 0x0ff08f10, "dvf%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e500100, 0x0ff08f10, "rdf%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e600100, 0x0ff08f10, "pow%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e700100, 0x0ff08f10, "rpw%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e800100, 0x0ff08f10, "rmf%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e900100, 0x0ff08f10, "fml%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0ea00100, 0x0ff08f10, "fdv%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0eb00100, 0x0ff08f10, "frd%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0ec00100, 0x0ff08f10, "pol%c%P%R\t%12-14f, %16-18f, %0-3f"},
+ {0x0e008100, 0x0ff08f10, "mvf%c%P%R\t%12-14f, %0-3f"},
+ {0x0e108100, 0x0ff08f10, "mnf%c%P%R\t%12-14f, %0-3f"},
+ {0x0e208100, 0x0ff08f10, "abs%c%P%R\t%12-14f, %0-3f"},
+ {0x0e308100, 0x0ff08f10, "rnd%c%P%R\t%12-14f, %0-3f"},
+ {0x0e408100, 0x0ff08f10, "sqt%c%P%R\t%12-14f, %0-3f"},
+ {0x0e508100, 0x0ff08f10, "log%c%P%R\t%12-14f, %0-3f"},
+ {0x0e608100, 0x0ff08f10, "lgn%c%P%R\t%12-14f, %0-3f"},
+ {0x0e708100, 0x0ff08f10, "exp%c%P%R\t%12-14f, %0-3f"},
+ {0x0e808100, 0x0ff08f10, "sin%c%P%R\t%12-14f, %0-3f"},
+ {0x0e908100, 0x0ff08f10, "cos%c%P%R\t%12-14f, %0-3f"},
+ {0x0ea08100, 0x0ff08f10, "tan%c%P%R\t%12-14f, %0-3f"},
+ {0x0eb08100, 0x0ff08f10, "asn%c%P%R\t%12-14f, %0-3f"},
+ {0x0ec08100, 0x0ff08f10, "acs%c%P%R\t%12-14f, %0-3f"},
+ {0x0ed08100, 0x0ff08f10, "atn%c%P%R\t%12-14f, %0-3f"},
+ {0x0ee08100, 0x0ff08f10, "urd%c%P%R\t%12-14f, %0-3f"},
+ {0x0ef08100, 0x0ff08f10, "nrm%c%P%R\t%12-14f, %0-3f"},
+ {0x0e000110, 0x0ff00f1f, "flt%c%P%R\t%16-18f, %12-15r"},
+ {0x0e100110, 0x0fff0f98, "fix%c%R\t%12-15r, %0-2f"},
+ {0x0e200110, 0x0fff0fff, "wfs%c\t%12-15r"},
+ {0x0e300110, 0x0fff0fff, "rfs%c\t%12-15r"},
+ {0x0e400110, 0x0fff0fff, "wfc%c\t%12-15r"},
+ {0x0e500110, 0x0fff0fff, "rfc%c\t%12-15r"},
+ {0x0e90f110, 0x0ff8fff0, "cmf%c\t%16-18f, %0-3f"},
+ {0x0eb0f110, 0x0ff8fff0, "cnf%c\t%16-18f, %0-3f"},
+ {0x0ed0f110, 0x0ff8fff0, "cmfe%c\t%16-18f, %0-3f"},
+ {0x0ef0f110, 0x0ff8fff0, "cnfe%c\t%16-18f, %0-3f"},
+ {0x0c000100, 0x0e100f00, "stf%c%Q\t%12-14f, %A"},
+ {0x0c100100, 0x0e100f00, "ldf%c%Q\t%12-14f, %A"},
+ {0x0c000200, 0x0e100f00, "sfm%c\t%12-14f, %F, %A"},
+ {0x0c100200, 0x0e100f00, "lfm%c\t%12-14f, %F, %A"},
+
+ /* Generic coprocessor instructions */
+ {0x0e000000, 0x0f000010, "cdp%c\t%8-11d, %20-23d, cr%12-15d, cr%16-19d, cr%0-3d, {%5-7d}"},
+ {0x0e100010, 0x0f100010, "mrc%c\t%8-11d, %21-23d, %12-15r, cr%16-19d, cr%0-3d, {%5-7d}"},
+ {0x0e000010, 0x0f100010, "mcr%c\t%8-11d, %21-23d, %12-15r, cr%16-19d, cr%0-3d, {%5-7d}"},
+ {0x0c000000, 0x0e100000, "stc%c%22'l\t%8-11d, cr%12-15d, %A"},
+ {0x0c100000, 0x0e100000, "ldc%c%22'l\t%8-11d, cr%12-15d, %A"},
+
+ /* The rest. */
+ {0x00000000, 0x00000000, "undefined instruction %0-31x"},
+ {0x00000000, 0x00000000, 0}
+};
+
+#define BDISP(x) ((((x) & 0xffffff) ^ 0x800000) - 0x800000) /* 26 bit */
+
+static struct thumb_opcode thumb_opcodes[] =
+{
+ /* Thumb instructions */
+ {0x46C0, 0xFFFF, "nop\t\t\t(mov r8,r8)"}, /* format 5 instructions do not update the PSR */
+ {0x1C00, 0xFFC0, "mov\t%0-2r, %3-5r\t\t(add %0-2r, %3-5r, #%6-8d)"},
+ /* format 4 */
+ {0x4000, 0xFFC0, "and\t%0-2r, %3-5r"},
+ {0x4040, 0xFFC0, "eor\t%0-2r, %3-5r"},
+ {0x4080, 0xFFC0, "lsl\t%0-2r, %3-5r"},
+ {0x40C0, 0xFFC0, "lsr\t%0-2r, %3-5r"},
+ {0x4100, 0xFFC0, "asr\t%0-2r, %3-5r"},
+ {0x4140, 0xFFC0, "adc\t%0-2r, %3-5r"},
+ {0x4180, 0xFFC0, "sbc\t%0-2r, %3-5r"},
+ {0x41C0, 0xFFC0, "ror\t%0-2r, %3-5r"},
+ {0x4200, 0xFFC0, "tst\t%0-2r, %3-5r"},
+ {0x4240, 0xFFC0, "neg\t%0-2r, %3-5r"},
+ {0x4280, 0xFFC0, "cmp\t%0-2r, %3-5r"},
+ {0x42C0, 0xFFC0, "cmn\t%0-2r, %3-5r"},
+ {0x4300, 0xFFC0, "orr\t%0-2r, %3-5r"},
+ {0x4340, 0xFFC0, "mul\t%0-2r, %3-5r"},
+ {0x4380, 0xFFC0, "bic\t%0-2r, %3-5r"},
+ {0x43C0, 0xFFC0, "mvn\t%0-2r, %3-5r"},
+ /* format 13 */
+ {0xB000, 0xFF80, "add\tsp, #%0-6W"},
+ {0xB080, 0xFF80, "sub\tsp, #%0-6W"},
+ /* format 5 */
+ {0x4700, 0xFF80, "bx\t%S"},
+ {0x4400, 0xFF00, "add\t%D, %S"},
+ {0x4500, 0xFF00, "cmp\t%D, %S"},
+ {0x4600, 0xFF00, "mov\t%D, %S"},
+ /* format 14 */
+ {0xB400, 0xFE00, "push\t%N"},
+ {0xBC00, 0xFE00, "pop\t%O"},
+ /* format 2 */
+ {0x1800, 0xFE00, "add\t%0-2r, %3-5r, %6-8r"},
+ {0x1A00, 0xFE00, "sub\t%0-2r, %3-5r, %6-8r"},
+ {0x1C00, 0xFE00, "add\t%0-2r, %3-5r, #%6-8d"},
+ {0x1E00, 0xFE00, "sub\t%0-2r, %3-5r, #%6-8d"},
+ /* format 8 */
+ {0x5200, 0xFE00, "strh\t%0-2r, [%3-5r, %6-8r]"},
+ {0x5A00, 0xFE00, "ldrh\t%0-2r, [%3-5r, %6-8r]"},
+ {0x5600, 0xF600, "ldrs%11?hb\t%0-2r, [%3-5r, %6-8r]"},
+ /* format 7 */
+ {0x5000, 0xFA00, "str%10'b\t%0-2r, [%3-5r, %6-8r]"},
+ {0x5800, 0xFA00, "ldr%10'b\t%0-2r, [%3-5r, %6-8r]"},
+ /* format 1 */
+ {0x0000, 0xF800, "lsl\t%0-2r, %3-5r, #%6-10d"},
+ {0x0800, 0xF800, "lsr\t%0-2r, %3-5r, #%6-10d"},
+ {0x1000, 0xF800, "asr\t%0-2r, %3-5r, #%6-10d"},
+ /* format 3 */
+ {0x2000, 0xF800, "mov\t%8-10r, #%0-7d"},
+ {0x2800, 0xF800, "cmp\t%8-10r, #%0-7d"},
+ {0x3000, 0xF800, "add\t%8-10r, #%0-7d"},
+ {0x3800, 0xF800, "sub\t%8-10r, #%0-7d"},
+ /* format 6 */
+ {0x4800, 0xF800, "ldr\t%8-10r, [pc, #%0-7W]\t(%0-7a)"}, /* TODO: Disassemble PC relative "LDR rD,=<symbolic>" */
+ /* format 9 */
+ {0x6000, 0xF800, "str\t%0-2r, [%3-5r, #%6-10W]"},
+ {0x6800, 0xF800, "ldr\t%0-2r, [%3-5r, #%6-10W]"},
+ {0x7000, 0xF800, "strb\t%0-2r, [%3-5r, #%6-10d]"},
+ {0x7800, 0xF800, "ldrb\t%0-2r, [%3-5r, #%6-10d]"},
+ /* format 10 */
+ {0x8000, 0xF800, "strh\t%0-2r, [%3-5r, #%6-10H]"},
+ {0x8800, 0xF800, "ldrh\t%0-2r, [%3-5r, #%6-10H]"},
+ /* format 11 */
+ {0x9000, 0xF800, "str\t%8-10r, [sp, #%0-7W]"},
+ {0x9800, 0xF800, "ldr\t%8-10r, [sp, #%0-7W]"},
+ /* format 12 */
+ {0xA000, 0xF800, "add\t%8-10r, pc, #%0-7W\t(adr %8-10r,%0-7a)"},
+ {0xA800, 0xF800, "add\t%8-10r, sp, #%0-7W"},
+ /* format 15 */
+ {0xC000, 0xF800, "stmia\t%8-10r!,%M"},
+ {0xC800, 0xF800, "ldmia\t%8-10r!,%M"},
+ /* format 18 */
+ {0xE000, 0xF800, "b\t%0-10B"},
+ {0xE800, 0xF800, "undefined"},
+ /* format 19 */
+ {0xF000, 0xF800, ""}, /* special processing required in disassembler */
+ {0xF800, 0xF800, "second half of BL instruction %0-15x"},
+ /* format 16 */
+ {0xD000, 0xFF00, "beq\t%0-7B"},
+ {0xD100, 0xFF00, "bne\t%0-7B"},
+ {0xD200, 0xFF00, "bcs\t%0-7B"},
+ {0xD300, 0xFF00, "bcc\t%0-7B"},
+ {0xD400, 0xFF00, "bmi\t%0-7B"},
+ {0xD500, 0xFF00, "bpl\t%0-7B"},
+ {0xD600, 0xFF00, "bvs\t%0-7B"},
+ {0xD700, 0xFF00, "bvc\t%0-7B"},
+ {0xD800, 0xFF00, "bhi\t%0-7B"},
+ {0xD900, 0xFF00, "bls\t%0-7B"},
+ {0xDA00, 0xFF00, "bge\t%0-7B"},
+ {0xDB00, 0xFF00, "blt\t%0-7B"},
+ {0xDC00, 0xFF00, "bgt\t%0-7B"},
+ {0xDD00, 0xFF00, "ble\t%0-7B"},
+ /* format 17 */
+ {0xDE00, 0xFF00, "bal\t%0-7B"},
+ {0xDF00, 0xFF00, "swi\t%0-7d"},
+ /* format 9 */
+ {0x6000, 0xF800, "str\t%0-2r, [%3-5r, #%6-10W]"},
+ {0x6800, 0xF800, "ldr\t%0-2r, [%3-5r, #%6-10W]"},
+ {0x7000, 0xF800, "strb\t%0-2r, [%3-5r, #%6-10d]"},
+ {0x7800, 0xF800, "ldrb\t%0-2r, [%3-5r, #%6-10d]"},
+ /* the rest */
+ {0x0000, 0x0000, "undefined instruction %0-15x"},
+ {0x0000, 0x0000, 0}
+};
+
+#define BDISP23(x) ((((((x) & 0x07ff) << 11) | (((x) & 0x07ff0000) >> 16)) \
+ ^ 0x200000) - 0x200000) /* 23bit */
+
diff --git a/contrib/isc-dhcp/Makefile.conf b/contrib/isc-dhcp/Makefile.conf
new file mode 100644
index 000000000000..d2fb53499fc5
--- /dev/null
+++ b/contrib/isc-dhcp/Makefile.conf
@@ -0,0 +1,332 @@
+# Makefile.conf
+#
+# Copyright (c) 1996, 1997, 1998, 1999 The Internet Software Consortium.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of The Internet Software Consortium nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
+# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+# THE INTERNET SOFTWARE CONSORTIUM OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+## Defaults...
+SCRIPT = none
+BINDIR = /usr/sbin
+CLIENTBINDIR=/sbin
+ADMMANEXT = .0
+FFMANEXT = .0
+ADMMANDIR = /usr/share/man/cat8
+FFMANDIR = /usr/share/man/cat5
+INSTALL = install -c
+MANINSTALL = install -c -m 444
+CHMOD = chmod
+CATMANPAGES =
+MANCAT = cat
+ETC = /etc
+VARRUN = /var/run
+VARDB = /var/db
+
+# Major version number (if applicable)
+##--majver--
+MAJORVERSION=MajorVersion
+##--majver--
+
+# Minor version number (if applicable)
+##--minver--
+MINORVERSION=MinorVersion
+##--minver--
+
+## Porting::
+#
+# For each supported operating system, there is a block of text below
+# beginning with #--os-name-- and ending with #--os-name--. Between
+# these delimiters are assignments, commented out, which define the
+# Makefile variables required for that operating system.
+#
+# The configure shell script figures out what operating system it's
+# being run on and then runs Makefile.dist through a sed script which
+# removes the comment characters from the appropriate set of
+# assignments, and writes the output to Makefile.
+
+## AIX 4.1.5.0
+##--aix--
+#CF = cf/aix.h
+#CC=cc -Daix
+#INSTALL=/usr/ucb/install
+#MANINSTALL=/usr/ucb/install
+#ADMMANEXT = .8
+#FFMANEXT = .5
+#VARRUN = /etc
+#VARDB = /etc
+##--aix--
+
+## NEXTSTEP 3.x,4.x
+##--nextstep--
+#LIBS =
+#CF = cf/nextstep.h
+#CC=cc
+#COPTS = -Wall
+#BINDIR=/usr/etc
+#ADMMANDIR = /usr/local/man/cat8
+#FFMANDIR = /usr/local/man/cat5
+#ADMMANEXT = .8
+#FFMANEXT = .5
+#VARRUN = /etc
+#VARDB = /etc
+##--nextstep--
+
+## SunOS 4.1
+##--sunos4--
+#LIBS = -lresolv
+#CF = cf/sunos4.h
+#BINDIR=/usr/etc
+#CLIENTBINDIR=/etc
+#ADMMANEXT = .8
+#FFMANEXT = .5
+#VARRUN = /etc
+#VARDB = /etc
+##--sunos4--
+
+## Solaris 2.5 (with gcc)
+##--sunos5-gcc--
+#INSTALL=/usr/ucb/install
+#MANINSTALL=/usr/ucb/install
+#LIBS = -lresolv -lsocket -lnsl -lgen
+#CC=gcc
+#COPTS = -Wall -Wno-unused -Wno-implicit -Wno-comment \
+# -Wno-uninitialized -Wno-char-subscripts -Werror
+#CF = cf/sunos5-5.h
+#ADMMANDIR = /usr/share/man/cat1m
+#ADMMANEXT = .1m
+#FFMANDIR = /usr/share/man/cat4
+#FFMANEXT = .4
+#VARRUN = /etc
+#VARDB = /etc
+#SCRIPT=solaris
+##--sunos5-gcc--
+
+## Solaris 2.5 (with Sun cc)
+##--sunos5-cc--
+#INSTALL=/usr/ucb/install
+#MANINSTALL=/usr/ucb/install
+#LIBS = -lresolv -lsocket -lnsl -lgen
+#CC=cc
+#COPTS = -D__svr4__
+#CF = cf/sunos5-5.h
+#ADMMANDIR = /usr/share/man/cat1m
+#ADMMANEXT = .1m
+#FFMANDIR = /usr/share/man/cat4
+#FFMANEXT = .4
+#VARRUN = /etc
+#VARDB = /etc
+#SCRIPT=solaris
+##--sunos5-cc--
+
+## DEC Alpha/OSF1
+##--alphaosf--
+#CC=cc -std0
+#INSTALL=/usr/ucb/installbsd
+#MANINSTALL=/usr/ucb/installbsd
+#LIBS=
+#CF = cf/alphaosf.h
+#ADMMANEXT = .8
+#FFMANEXT = .5
+#VARDB = /etc
+##--alphaosf--
+
+## BSD/OS 2.1
+##--bsdos--
+#LIBS= -lresolv
+#CC=gcc2
+#CF = cf/bsdos.h
+##--bsdos--
+
+## FreeBSD
+##--freebsd--
+#CF = cf/freebsd.h
+#SCRIPT=freebsd
+##--freebsd--
+
+## Rhapsody
+##--rhapsody--
+#CF = cf/rhapsody.h
+#COPTS = -Wall -Wno-unused -Wno-implicit -Wno-comment \
+# -Wno-uninitialized -Werror -pipe
+#SCRIPT=rhapsody
+##--rhapsody--
+
+## NetBSD
+##--netbsd--
+#CF = cf/netbsd.h
+#COPTS = -Wall -Wstrict-prototypes -Wno-unused -Wno-implicit -Wno-comment \
+# -Wno-uninitialized -Werror -pipe
+#SCRIPT=netbsd
+##--netbsd--
+
+## Ultrix
+##--ultrix--
+#BINDIR = /usr/etc
+#CLIENTBINDIR=/etc
+#VARRUN = /etc
+#VARDB = /etc
+#CF = cf/ultrix.h
+#ADMMANDIR = /usr/man/man8
+#ADMMANEXT = .8
+#FFMANDIR = /usr/man/man5
+#FFMANEXT = .5
+##--ultrix--
+
+## Linux 1.x
+##--linux-1--
+#COPTS = -DLINUX_MAJOR=$(MAJORVERSION) -DLINUX_MINOR=$(MINORVERSION)
+#CF = cf/linux.h
+#ADMMANDIR = /usr/man/man8
+#ADMMANEXT = .8
+#FFMANDIR = /usr/man/man5
+#FFMANEXT = .5
+#MANCAT = man
+#VARRUN = /var/run
+#VARDB = /var/state/dhcp # see rationale in includes/cf/linux.h
+#SCRIPT=linux
+##--linux-1--
+
+## Linux 2.0
+##--linux-2.0--
+#COPTS = -DLINUX_MAJOR=$(MAJORVERSION) -DLINUX_MINOR=$(MINORVERSION)
+#CF = cf/linux.h
+#ADMMANDIR = /usr/man/man8
+#ADMMANEXT = .8
+#FFMANDIR = /usr/man/man5
+#FFMANEXT = .5
+#MANCAT = man
+#VARRUN = /var/run
+#VARDB = /var/state/dhcp # see rationale in includes/cf/linux.h
+#SCRIPT=linux
+##--linux-2.0--
+
+## Linux 2.1
+##--linux-2.1--
+#COPTS = -DLINUX_MAJOR=$(MAJORVERSION) -DLINUX_MINOR=$(MINORVERSION)
+#CF = cf/linux.h
+#ADMMANDIR = /usr/man/man8
+#ADMMANEXT = .8
+#FFMANDIR = /usr/share/man/man5
+#FFMANEXT = .5
+#MANCAT = man
+#VARRUN = /var/run
+#VARDB = /var/state/dhcp # see rationale in includes/cf/linux.h
+#SCRIPT=linux
+##--linux-2.1--
+
+## Linux 2.2
+##--linux-2.2--
+#COPTS = -DLINUX_MAJOR=$(MAJORVERSION) -DLINUX_MINOR=$(MINORVERSION)
+#CF = cf/linux.h
+#ADMMANDIR = /usr/man/man8
+#ADMMANEXT = .8
+#FFMANDIR = /usr/share/man/man5
+#FFMANEXT = .5
+#MANCAT = man
+#VARRUN = /var/run
+#VARDB = /var/state/dhcp # see rationale in includes/cf/linux.h
+#SCRIPT=linux
+##--linux-2.2--
+
+## SCO
+##--sco--
+#CF = cf/sco.h
+#PREDEFINES=-DSCO -DBROKEN_ANSI
+#BINDIR = /usr/etc
+#CLIENTBINDIR=/etc
+#ADMMANDIR = /usr/man/cat.ADMN
+#ADMMANEXT = .ADMN.Z
+#FFMANDIR = /usr/man/cat.SFF
+#FFMANEXT = .SFF.Z
+#INSTALL = cp
+#MANFROM = <
+#MANINSTALL = compress
+#MANTO = >
+#VARRUN = /etc
+#VARDB = /etc
+#CATMANPAGES=
+##--sco--
+
+## QNX
+##--qnx--
+#CF = cf/qnx.h
+#ADMMANDIR = /usr/man/man8
+#ADMMANEXT = .8
+#FFMANDIR = /usr/man/man5
+#FFMANEXT = .5
+#MANCAT = man
+#VARRUN = /etc
+#COPTS=-w3 -Dlint
+#LFLAGS=$(DEBUG) "-Wl,op symfile" -l socket
+#MANINSTALL = /bin/true
+#INSTALL = cp
+#BINDIR = /etc
+#CLIENTBINDIR = /etc
+##--qnx--
+
+## CygWin32
+##--cygwin32--
+#CF = cf/cygwin32.h
+#ADMMANDIR = /usr/man/man8
+#ADMMANEXT = .8
+#FFMANDIR = /usr/man/man5
+#FFMANEXT = .5
+#VARRUN = /etc
+#MANINSTALL = /bin/true
+#INSTALL = cp
+#BINDIR = /etc
+#CLIENTBINDIR = /etc
+#CC=/usr/local/i386-unknown-cygwin32/bin/gcc
+#AR=/usr/local/i386-unknown-cygwin32/bin/ar
+#AS=/usr/local/i386-unknown-cygwin32/bin/as
+#LD=/usr/local/i386-unknown-cygwin32/bin/ld
+#NM=/usr/local/i386-unknown-cygwin32/bin/nm
+#RANLIB=/usr/local/i386-unknown-cygwin32/bin/ranlib
+#STRIP=/usr/local/i386-unknown-cygwin32/bin/strip
+##--cygwin32--
+
+## IRIX 6.x
+##--irix--
+#LIBS = -lbind
+#LFLAGS=$(DEBUG) -L/usr/local/lib -Wl,-woff,84 -Wl,-woff,85 -Wl,-woff,134
+#CC=gcc
+#COPTS = -I/usr/local/include
+#CF = cf/irix.h
+#BINDIR = /usr/local/etc
+#ADMMANDIR = /usr/local/man/man8
+#ADMMANEXT = .8
+#FFMANDIR = /usr/local/man/man5
+#FFMANEXT = .5
+#MANCAT = man
+#INSTALL = install
+#MANINSTALL = install
+#CHMOD = chmod
+#ETC = /etc
+#VARRUN = /etc
+#VARDB = /usr/local/etc/dhcp
+##--irix--
diff --git a/contrib/isc-dhcp/Makefile.dist b/contrib/isc-dhcp/Makefile.dist
new file mode 100644
index 000000000000..e2dc4e28e7fb
--- /dev/null
+++ b/contrib/isc-dhcp/Makefile.dist
@@ -0,0 +1,94 @@
+# Makefile.dist
+#
+# Copyright (c) 1996, 1997 The Internet Software Consortium.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of The Internet Software Consortium nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
+# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+# THE INTERNET SOFTWARE CONSORTIUM OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+SUBDIRS= common server client relay
+
+all:
+ @for dir in ${SUBDIRS}; do \
+ echo "Making all in $$dir"; \
+ (cd $$dir; $(MAKE) all) || exit 1; \
+ done
+ @if [ `uname` = Linux ]; then \
+ echo; \
+ echo " !!!! WARNING !!!!"; \
+ echo ; \
+ echo "The default location for the dhcpd.leases file has \
+changed!!!"; \
+ echo; \
+ echo "It is now in /var/state/dhcp. If you are not"; \
+ echo "installing this for the first time, please move your"; \
+ echo "lease database to the new location before using this"; \
+ echo "software."; \
+ echo; \
+ echo " !!!! WARNING !!!!"; \
+ echo; \
+ fi
+
+install:
+ @for dir in ${SUBDIRS}; do \
+ echo "Installing in $$dir"; \
+ (cd $$dir; $(MAKE) install) || exit 1; \
+ done
+ @if [ `uname` = Linux ]; then \
+ echo; \
+ echo " !!!! WARNING !!!!"; \
+ echo ; \
+ echo "The default location for the dhcpd.leases file has \
+changed!!!"; \
+ echo; \
+ echo "It is now in /var/state/dhcp. If you are not"; \
+ echo "installing this for the first time, please move your"; \
+ echo "lease database to the new location before using this"; \
+ echo "software."; \
+ echo; \
+ echo " !!!! WARNING !!!!"; \
+ echo; \
+ fi
+
+clean:
+ @for dir in ${SUBDIRS}; do \
+ echo "Cleaning in $$dir"; \
+ (cd $$dir; $(MAKE) clean) || exit 1; \
+ done
+
+realclean:
+ @for dir in ${SUBDIRS}; do \
+ echo "Really cleaning in $$dir"; \
+ (cd $$dir; $(MAKE) realclean) || exit 1; \
+ done
+
+distclean:
+ @for dir in ${SUBDIRS}; do \
+ echo "Really, really cleaning in $$dir"; \
+ (cd $$dir; $(MAKE) distclean) || exit 1; \
+ done
+ @rm -f Makefile
diff --git a/contrib/isc-dhcp/client/Makefile.dist b/contrib/isc-dhcp/client/Makefile.dist
new file mode 100644
index 000000000000..2109d3977c83
--- /dev/null
+++ b/contrib/isc-dhcp/client/Makefile.dist
@@ -0,0 +1,136 @@
+# Makefile.dist
+#
+# Copyright (c) 1996, 1997, 1999 The Internet Software Consortium.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of The Internet Software Consortium nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
+# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+# THE INTERNET SOFTWARE CONSORTIUM OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+CATMANPAGES = dhclient.cat8 dhclient.conf.cat5 dhclient-script.cat8 \
+ dhclient.leases.cat5
+SEDMANPAGES = dhclient.man8 dhclient.conf.man5 dhclient-script.man8 \
+ dhclient.leases.man5
+SRCS = dhclient.c clparse.c
+OBJS = dhclient.o clparse.o
+PROG = dhclient
+MAN = dhclient.8 dhclient.conf.5 dhclient-script.8 dhclient.leases.5
+
+DEBUG = -g
+INCLUDES = -I.. -I../includes
+DHCPLIB = ../common/libdhcp.a
+CFLAGS = $(DEBUG) $(PREDEFINES) $(INCLUDES) $(COPTS)
+
+all: $(PROG) $(CATMANPAGES)
+
+install: all
+ for dir in $(CLIENTBINDIR) $(ETC) $(FFMANDIR) $(ADMMANDIR) $(VARDB); \
+ do \
+ foo=""; \
+ for bar in `echo $(DESTDIR)$${dir} |tr / ' '`; do \
+ foo=$${foo}/$$bar; \
+ if [ ! -d $$foo ]; then \
+ mkdir $$foo; \
+ chmod 755 $$foo; \
+ fi; \
+ done; \
+ done
+ $(INSTALL) dhclient $(DESTDIR)$(CLIENTBINDIR)
+ $(CHMOD) 755 $(DESTDIR)$(CLIENTBINDIR)/dhclient
+ if [ x$(SCRIPT) = xnone ]; then \
+ echo "No client script available."; \
+ else \
+ $(INSTALL) scripts/$(SCRIPT) $(DESTDIR)$(ETC)/dhclient-script; \
+ $(CHMOD) 700 $(DESTDIR)$(ETC)/dhclient-script; \
+ fi
+ $(MANINSTALL) $(MANFROM) dhclient.$(MANCAT)8 $(MANTO) \
+ $(DESTDIR)$(ADMMANDIR)/dhclient$(ADMMANEXT)
+ $(MANINSTALL) $(MANFROM) dhclient-script.$(MANCAT)8 $(MANTO) \
+ $(DESTDIR)$(ADMMANDIR)/dhclient-script$(ADMMANEXT)
+ $(MANINSTALL) $(MANFROM) dhclient.conf.$(MANCAT)5 $(MANTO) \
+ $(DESTDIR)$(FFMANDIR)/dhclient.conf$(FFMANEXT)
+ $(MANINSTALL) $(MANFROM) dhclient.leases.$(MANCAT)5 $(MANTO) \
+ $(DESTDIR)$(FFMANDIR)/dhclient.leases$(FFMANEXT)
+
+clean:
+ -rm -f $(OBJS)
+
+realclean: clean
+ -rm -f $(PROG) $(CATMANPAGES) $(SEDMANPAGES) *~ #*
+
+distclean: realclean
+ -rm -f Makefile
+
+# These should only be done on 4.4 BSD-based systems, since the mandoc
+# macros aren't available on older unices. Catted man pages are
+# provided in the distribution so that this doesn't become a problem.
+
+dhclient.cat8: dhclient.man8
+ nroff -man dhclient.man8 >dhclient.cat8
+
+dhclient.man8: dhclient.8
+ sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \
+ -e "s#RUNDIR#$(VARRUN)#g" < dhclient.8 >dhclient.man8
+
+dhclient-script.cat8: dhclient-script.man8
+ nroff -man dhclient-script.man8 >dhclient-script.cat8
+
+dhclient-script.man8: dhclient-script.8
+ sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \
+ -e "s#RUNDIR#$(VARRUN)#g" < dhclient-script.8 \
+ >dhclient-script.man8
+
+dhclient.conf.man5: dhclient.conf.5
+ sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \
+ -e "s#RUNDIR#$(VARRUN)#g" < dhclient.conf.5 \
+ >dhclient.conf.man5
+
+dhclient.conf.cat5: dhclient.conf.man5
+ nroff -man dhclient.conf.man5 >dhclient.conf.cat5
+
+dhclient.leases.man5: dhclient.leases.5
+ sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \
+ -e "s#RUNDIR#$(VARRUN)#g" < dhclient.leases.5 \
+ >dhclient.leases.man5
+
+dhclient.leases.cat5: dhclient.leases.man5
+ nroff -man dhclient.leases.man5 >dhclient.leases.cat5
+
+dhclient: $(OBJS) $(DHCPLIB)
+ $(CC) $(LFLAGS) -o $(PROG) $(OBJS) $(DHCPLIB) $(LIBS)
+
+# Dependencies (semi-automatically-generated)
+
+dhclient.o: dhclient.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h ../includes/version.h
+clparse.o: clparse.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h ../includes/dhctoken.h
diff --git a/contrib/isc-dhcp/common/Makefile.dist b/contrib/isc-dhcp/common/Makefile.dist
new file mode 100644
index 000000000000..1e3e062cd775
--- /dev/null
+++ b/contrib/isc-dhcp/common/Makefile.dist
@@ -0,0 +1,206 @@
+# Makefile.dist
+#
+# Copyright (c) 1996, 1999 The Internet Software Consortium.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# 3. Neither the name of The Internet Software Consortium nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
+# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+# THE INTERNET SOFTWARE CONSORTIUM OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+CATMANPAGES = dhcp-options.cat5
+SEDMANPAGES = dhcp-options.man5
+SRC = raw.c parse.c nit.c icmp.c dispatch.c conflex.c upf.c bpf.c socket.c \
+ lpf.c packet.c memory.c print.c options.c inet.c convert.c \
+ tree.c tables.c hash.c alloc.c errwarn.c inet_addr.c dlpi.c \
+ tr.c ethernet.c
+OBJ = raw.o parse.o nit.o icmp.o dispatch.o conflex.o upf.o bpf.o socket.o \
+ lpf.o packet.o memory.o print.o options.o inet.o convert.o \
+ tree.o tables.o hash.o alloc.o errwarn.o inet_addr.o dlpi.o \
+ tr.o ethernet.o
+MAN = dhcp-options.5
+
+DEBUG = -g
+INCLUDES = -I.. -I../includes
+CFLAGS = $(DEBUG) $(PREDEFINES) $(INCLUDES) $(COPTS)
+
+all: libdhcp.a $(CATMANPAGES)
+
+libdhcp.a: $(OBJ)
+ rm -f libdhcp.a
+ ar cruv libdhcp.a $(OBJ)
+ ranlib libdhcp.a
+
+install: all
+ for dir in $(FFMANDIR); do \
+ foo=""; \
+ for bar in `echo $(DESTDIR)$${dir} |tr / ' '`; do \
+ foo=$${foo}/$$bar; \
+ if [ ! -d $$foo ]; then \
+ mkdir $$foo; \
+ chmod 755 $$foo; \
+ fi; \
+ done; \
+ done
+ $(MANINSTALL) $(MANFROM) dhcp-options.$(MANCAT)5 $(MANTO) \
+ $(DESTDIR)$(FFMANDIR)/dhcp-options$(FFMANEXT)
+
+
+clean:
+ -rm -f $(OBJ)
+
+realclean: clean
+ -rm -f libdhcp.a *~ #* $(CATMANPAGES) $(SEDMANPAGES)
+
+distclean: realclean
+ -rm -f Makefile
+
+dhcp-options.cat5: dhcp-options.man5
+ nroff -man dhcp-options.man5 >dhcp-options.cat5
+
+dhcp-options.man5: dhcp-options.5
+ sed -e "s#ETCDIR#$(ETC)#g" -e "s#DBDIR#$(VARDB)#g" \
+ -e "s#RUNDIR#$(VARRUN)#g" < dhcp-options.5 >dhcp-options.man5
+
+# Dependencies (semi-automatically-generated)
+
+raw.o: raw.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+parse.o: parse.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h \
+ ../includes/dhcp.h ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h ../includes/dhctoken.h
+nit.o: nit.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+icmp.o: icmp.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h ../includes/netinet/ip.h \
+ ../includes/netinet/ip_icmp.h
+dispatch.o: dispatch.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h \
+ conflex.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h ../includes/dhctoken.h
+upf.o: upf.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+bpf.o: bpf.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h ../includes/netinet/ip.h ../includes/netinet/udp.h \
+ ../includes/netinet/if_ether.h
+socket.o: socket.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+lpf.o: lpf.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+packet.o: packet.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h ../includes/netinet/ip.h \
+ ../includes/netinet/udp.h ../includes/netinet/if_ether.h
+memory.o: memory.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+print.o: print.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+options.o: options.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+inet.o: inet.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+convert.o: convert.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+tree.o: tree.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+tables.o: tables.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+hash.o: hash.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+alloc.o: alloc.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+errwarn.o: errwarn.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+inet_addr.o: inet_addr.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
+dlpi.o: dlpi.c ../includes/dhcpd.h \
+ ../includes/cdefs.h ../includes/osdep.h ../includes/site.h \
+ ../includes/cf/netbsd.h ../includes/dhcp.h \
+ ../includes/tree.h ../includes/hash.h ../includes/inet.h \
+ ../includes/sysconf.h
diff --git a/contrib/isc-dhcp/configure b/contrib/isc-dhcp/configure
new file mode 100755
index 000000000000..190b3c500854
--- /dev/null
+++ b/contrib/isc-dhcp/configure
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+sysname=$1
+
+uname=`uname -s`
+machine=`uname -m`
+
+if [ "$sysname" = "" ]; then
+ case $uname in
+ AIX)
+ sysname=aix;;
+ Rhapsody)
+ sysname=rhapsody;;
+ ULTRIX)
+ sysname=ultrix;;
+ BSD/OS)
+ sysname=bsdos;;
+ OSF1)
+ if [ $machine = 'alpha' ]; then
+ sysname=alphaosf
+ fi;;
+ Linux)
+ release=`uname -r`
+ minor=`echo $release |sed -e 's/[0-9]*\.\([0-9][0-9]*\)\(\..*\)*$/\1/'`
+ major=`echo $release |sed -e 's/\([0-9][0-9]*\)\..*$/\1/'`
+
+ case $major in
+ 1) sysname=linux-1 ;;
+ 2) case $minor in
+ 0) sysname=linux-2.0 ;;
+ 1) sysname=linux-2.1 ;;
+ 2) sysname=linux-2.2 ;;
+ *) sysname=linux-2.2 ;;
+ esac;;
+ esac;;
+ SunOS)
+ case `uname -r` in
+ 4*) sysname=sunos4;;
+ 5*)
+ set `which gcc`
+ if [ $# = 1 ]; then
+ sysname=sunos5-gcc
+ else
+ sysname=sunos5-cc
+ fi;;
+ esac;;
+ NetBSD)
+ sysname=netbsd;;
+ FreeBSD)
+ sysname=freebsd;;
+ hpux)
+ sysname=hpux;;
+ HP-UX)
+ sysname=hpux;;
+ QNX)
+ sysname=qnx;;
+ NEXTSTEP)
+ sysname=nextstep;;
+ esac
+fi
+
+if [ "$sysname" = "" ]; then
+ echo "UNIX name: $uname machine: $machine"
+ echo
+ echo "Unknown system. If this is an SCO system running ODT 3.0 or"
+ echo "higher, type \`\`./configure sco''. Otherwise, this is a"
+ echo "configuration that isn't supported or hasn't been tested."
+ echo
+ echo "Supported configurations are:"
+ echo " aix AIX 4.1.5.0"
+ echo " ultrix ULTRIX 4.2A or higher"
+ echo " bsdos BSDI BSD/OS 2.1"
+ echo " alphaosf DEC Alpha OSF/1"
+ echo " linux Linux"
+ echo " sunos4 Sunos 4.1.4 (earlier releases may work)"
+ echo " sunos5-cc Solaris 2.4 or higher with Sun cc"
+ echo " sunos5-gcc Solaris 2.4 or higher with gcc"
+ echo " netbsd NetBSD 1.1 or higher"
+ echo " freebsd FreeBSD"
+ echo " hpux HP-UX"
+ echo " qnx QNX 4.2 or higher"
+ echo " NEXTSTEP NeXTSTEP"
+ exit 1;
+fi
+
+echo "System Type: $sysname"
+
+if [ x$major != x ] && [ x$minor != x ]; then
+ majversubst="-e /^##--majver--/,/^##--majver--/s/MajorVersion/$major/"
+ minversubst="-e /^##--minver--/,/^##--minver--/s/MinorVersion/$minor/"
+fi
+
+for foo in . client server relay common; do
+ (sed $majversubst $minversubst \
+ -e "/^##--${sysname}--/,/^##--${sysname}--/s/^#//" \
+ <Makefile.conf; cat $foo/Makefile.dist) \
+ >$foo/Makefile
+done
+
+exit 0
diff --git a/gnu/usr.bin/perl/library/B/Makefile b/gnu/usr.bin/perl/library/B/Makefile
new file mode 100644
index 000000000000..fae4d74cc087
--- /dev/null
+++ b/gnu/usr.bin/perl/library/B/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= B
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/DB_File/Makefile b/gnu/usr.bin/perl/library/DB_File/Makefile
new file mode 100644
index 000000000000..b35ab1022b04
--- /dev/null
+++ b/gnu/usr.bin/perl/library/DB_File/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= DB_File
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/Dumper/Makefile b/gnu/usr.bin/perl/library/Dumper/Makefile
new file mode 100644
index 000000000000..f10206748fa2
--- /dev/null
+++ b/gnu/usr.bin/perl/library/Dumper/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+MODULE= Dumper
+MODULEDIR= Data/Dumper
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/Errno/Makefile b/gnu/usr.bin/perl/library/Errno/Makefile
new file mode 100644
index 000000000000..2210e033b6d2
--- /dev/null
+++ b/gnu/usr.bin/perl/library/Errno/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= Errno
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/Fcntl/Makefile b/gnu/usr.bin/perl/library/Fcntl/Makefile
new file mode 100644
index 000000000000..d2a0a68f6ebb
--- /dev/null
+++ b/gnu/usr.bin/perl/library/Fcntl/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= Fcntl
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/IO/Makefile b/gnu/usr.bin/perl/library/IO/Makefile
new file mode 100644
index 000000000000..69a7753c3880
--- /dev/null
+++ b/gnu/usr.bin/perl/library/IO/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= IO
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/NDBM_File/Makefile b/gnu/usr.bin/perl/library/NDBM_File/Makefile
new file mode 100644
index 000000000000..1395f67f8569
--- /dev/null
+++ b/gnu/usr.bin/perl/library/NDBM_File/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= NDBM_File
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/Opcode/Makefile b/gnu/usr.bin/perl/library/Opcode/Makefile
new file mode 100644
index 000000000000..5497061b89dc
--- /dev/null
+++ b/gnu/usr.bin/perl/library/Opcode/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= Opcode
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/POSIX/Makefile b/gnu/usr.bin/perl/library/POSIX/Makefile
new file mode 100644
index 000000000000..7345909a2f7f
--- /dev/null
+++ b/gnu/usr.bin/perl/library/POSIX/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= POSIX
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/SDBM_File/Makefile b/gnu/usr.bin/perl/library/SDBM_File/Makefile
new file mode 100644
index 000000000000..3695e76c0777
--- /dev/null
+++ b/gnu/usr.bin/perl/library/SDBM_File/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= SDBM_File
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/Socket/Makefile b/gnu/usr.bin/perl/library/Socket/Makefile
new file mode 100644
index 000000000000..4102086f2368
--- /dev/null
+++ b/gnu/usr.bin/perl/library/Socket/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= Socket
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/SysV/Makefile b/gnu/usr.bin/perl/library/SysV/Makefile
new file mode 100644
index 000000000000..2386888238cf
--- /dev/null
+++ b/gnu/usr.bin/perl/library/SysV/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+MODULE= SysV
+MODULEDIR= IPC/SysV
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/attrs/Makefile b/gnu/usr.bin/perl/library/attrs/Makefile
new file mode 100644
index 000000000000..462815b3efbc
--- /dev/null
+++ b/gnu/usr.bin/perl/library/attrs/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= attrs
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/perl/library/re/Makefile b/gnu/usr.bin/perl/library/re/Makefile
new file mode 100644
index 000000000000..175265163d89
--- /dev/null
+++ b/gnu/usr.bin/perl/library/re/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+MODULE= re
+
+.include "../Makefile.inc"
+.include <bsd.obj.mk>
diff --git a/lib/libalias/alias_pptp.c b/lib/libalias/alias_pptp.c
new file mode 100644
index 000000000000..822cfa61ddff
--- /dev/null
+++ b/lib/libalias/alias_pptp.c
@@ -0,0 +1,279 @@
+/*
+ * alias_pptp.c
+ *
+ * Copyright (c) 2000 Whistle Communications, Inc.
+ * All rights reserved.
+ *
+ * Subject to the following obligations and disclaimer of warranty, use and
+ * redistribution of this software, in source or object code forms, with or
+ * without modifications are expressly permitted by Whistle Communications;
+ * provided, however, that:
+ * 1. Any and all reproductions of the source or object code must include the
+ * copyright notice above and the following disclaimer of warranties; and
+ * 2. No rights are granted, in any manner or form, to use Whistle
+ * Communications, Inc. trademarks, including the mark "WHISTLE
+ * COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+ * such appears in the above copyright notice or in the software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+ * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+ * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+ * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+ * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+ * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+ * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+ * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+ * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+ * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * Author: Erik Salander <erik@whistle.com>
+ *
+ * $FreeBSD$
+ */
+
+/*
+ Alias_pptp.c performs special processing for PPTP sessions under TCP.
+ Specifically, watch PPTP control messages and alias the Call ID or the
+ Peer's Call ID in the appropriate messages. Note, PPTP requires
+ "de-aliasing" of incoming packets, this is different than any other
+ TCP applications that are currently (ie. FTP, IRC and RTSP) aliased.
+
+ For Call IDs encountered for the first time, a GRE alias link is created.
+ The GRE alias link uses the Call ID in place of the original port number.
+ An alias Call ID is created.
+
+ For this routine to work, the PPTP control messages must fit entirely
+ into a single TCP packet. This is typically the case, but is not
+ required by the spec.
+
+ Unlike some of the other TCP applications that are aliased (ie. FTP,
+ IRC and RTSP), the PPTP control messages that need to be aliased are
+ guaranteed to remain the same length. The aliased Call ID is a fixed
+ length field.
+
+ Reference: RFC 2637
+
+ Initial version: May, 2000 (eds)
+
+*/
+
+/* Includes */
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <netinet/in_systm.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+
+#include "alias_local.h"
+
+/*
+ * PPTP definitions
+ */
+
+struct grehdr /* Enhanced GRE header. */
+{
+ u_char gh_recursion:3, /* Recursion control. */
+ gh_ssr_flag:1, /* Strict source route present. */
+ gh_seq_no_flag:1, /* Sequence number present. */
+ gh_key_flag:1, /* Key present. */
+ gh_rt_flag:1, /* Routing present. */
+ gh_cksum_flag:1; /* Checksum present. */
+ u_char gh_version:3, /* GRE version. */
+ gh_flags:4, /* Flags. */
+ gh_ack_no_flag:1; /* Acknowledgment sequence number present. */
+ u_short gh_protocol; /* Protocol type. */
+ u_short gh_length; /* Payload length. */
+ u_short gh_call_id; /* Call ID. */
+ u_int32_t gh_seq_no; /* Sequence number (optional). */
+ u_int32_t gh_ack_no; /* Acknowledgment number (optional). */
+};
+
+/* The PPTP protocol ID used in the GRE 'proto' field. */
+#define PPTP_GRE_PROTO 0x880b
+
+/* Bits that must be set a certain way in all PPTP/GRE packets. */
+#define PPTP_INIT_VALUE ((0x2001 << 16) | PPTP_GRE_PROTO)
+#define PPTP_INIT_MASK 0xef7fffff
+
+#define PPTP_MAGIC 0x1a2b3c4d
+#define PPTP_CTRL_MSG_TYPE 1
+
+enum {
+ PPTP_StartCtrlConnRequest = 1,
+ PPTP_StartCtrlConnReply = 2,
+ PPTP_StopCtrlConnRequest = 3,
+ PPTP_StopCtrlConnReply = 4,
+ PPTP_EchoRequest = 5,
+ PPTP_statoReply = 6,
+ PPTP_OutCallRequest = 7,
+ PPTP_OutCallReply = 8,
+ PPTP_InCallRequest = 9,
+ PPTP_InCallReply = 10,
+ PPTP_InCallConn = 11,
+ PPTP_CallClearRequest = 12,
+ PPTP_CallDiscNotify = 13,
+ PPTP_WanErrorNotify = 14,
+ PPTP_SetLinkInfo = 15,
+};
+
+ /* Message structures */
+ struct pptpMsgHead {
+ u_int16_t length; /* total length */
+ u_int16_t msgType; /* PPTP message type */
+ u_int32_t magic; /* magic cookie */
+ u_int16_t type; /* control message type */
+ u_int16_t resv0; /* reserved */
+ };
+ typedef struct pptpMsgHead *PptpMsgHead;
+
+ struct pptpCallIds {
+ u_int16_t cid1; /* Call ID field #1 */
+ u_int16_t cid2; /* Call ID field #2 */
+ };
+ typedef struct pptpCallIds *PptpCallId;
+
+static PptpCallId AliasVerifyPptp(struct ip *, u_int16_t *);
+
+int
+PptpGetCallID(struct ip *pip,
+ u_short *call_id)
+{
+ struct grehdr *gr;
+
+ gr = (struct grehdr *)((char *)pip + (pip->ip_hl << 2));
+
+ /* Check GRE header bits. */
+ if ((ntohl(*((u_int32_t *)gr)) & PPTP_INIT_MASK) == PPTP_INIT_VALUE) {
+ *call_id = gr->gh_call_id;
+ return 1;
+ } else
+ return 0;
+};
+
+void PptpSetCallID(struct ip *pip, u_short call_id)
+{
+ struct grehdr *gr;
+
+ gr = (struct grehdr *)((char *)pip + (pip->ip_hl << 2));
+ gr->gh_call_id = call_id;
+};
+
+void
+AliasHandlePptpOut(struct ip *pip, /* IP packet to examine/patch */
+ struct alias_link *link) /* The PPTP control link */
+{
+ struct alias_link *gre_link;
+ PptpCallId cptr;
+ u_int16_t ctl_type; /* control message type */
+ struct tcphdr *tc;
+
+ /* Verify valid PPTP control message */
+ if ((cptr = AliasVerifyPptp(pip, &ctl_type)) == NULL)
+ return;
+
+ /* Modify certain PPTP messages */
+ if ((ctl_type >= PPTP_OutCallRequest) &&
+ (ctl_type <= PPTP_CallDiscNotify)) {
+
+ /* Establish GRE link for address and Call ID found in PPTP Control Msg */
+ gre_link = FindPptpOut(GetOriginalAddress(link), GetDestAddress(link),
+ cptr->cid1);
+
+ if (gre_link != NULL) {
+ /* alias the Call Id */
+ cptr->cid1 = GetAliasPort(gre_link);
+
+ /* Compute TCP checksum for revised packet */
+ tc = (struct tcphdr *) ((char *) pip + (pip->ip_hl << 2));
+ tc->th_sum = 0;
+ tc->th_sum = TcpChecksum(pip);
+ }
+ }
+}
+
+void
+AliasHandlePptpIn(struct ip *pip, /* IP packet to examine/patch */
+ struct alias_link *link) /* The PPTP control link */
+{
+ struct alias_link *gre_link;
+ PptpCallId cptr;
+ u_int16_t *pcall_id;
+ u_int16_t ctl_type; /* control message type */
+ struct tcphdr *tc;
+
+ /* Verify valid PPTP control message */
+ if ((cptr = AliasVerifyPptp(pip, &ctl_type)) == NULL)
+ return;
+
+ /* Modify certain PPTP messages */
+ switch (ctl_type)
+ {
+ case PPTP_InCallConn:
+ case PPTP_WanErrorNotify:
+ case PPTP_SetLinkInfo:
+ pcall_id = &cptr->cid1;
+ break;
+ case PPTP_OutCallReply:
+ case PPTP_InCallReply:
+ pcall_id = &cptr->cid2;
+ break;
+ default:
+ return;
+ break;
+ }
+
+ /* Find GRE link for address and Call ID found in PPTP Control Msg */
+ gre_link = FindPptpIn(GetDestAddress(link), GetAliasAddress(link),
+ *pcall_id);
+
+ if (gre_link != NULL) {
+ /* alias the Call Id */
+ *pcall_id = GetOriginalPort(gre_link);
+
+ /* Compute TCP checksum for modified packet */
+ tc = (struct tcphdr *) ((char *) pip + (pip->ip_hl << 2));
+ tc->th_sum = 0;
+ tc->th_sum = TcpChecksum(pip);
+ }
+}
+
+PptpCallId
+AliasVerifyPptp(struct ip *pip, u_int16_t *ptype) /* IP packet to examine/patch */
+{
+ int hlen, tlen, dlen;
+ PptpMsgHead hptr;
+ struct tcphdr *tc;
+
+ /* Calculate some lengths */
+ tc = (struct tcphdr *) ((char *) pip + (pip->ip_hl << 2));
+ hlen = (pip->ip_hl + tc->th_off) << 2;
+ tlen = ntohs(pip->ip_len);
+ dlen = tlen - hlen;
+
+ /* Verify data length */
+ if (dlen < (sizeof(struct pptpMsgHead) + sizeof(struct pptpCallIds)))
+ return(NULL);
+
+ /* Move up to PPTP message header */
+ hptr = (PptpMsgHead)(((char *) pip) + hlen);
+
+ /* Return the control message type */
+ *ptype = ntohs(hptr->type);
+
+ /* Verify PPTP Control Message */
+ if ((ntohs(hptr->msgType) != PPTP_CTRL_MSG_TYPE) ||
+ (ntohl(hptr->magic) != PPTP_MAGIC))
+ return(NULL);
+ else
+ return((PptpCallId)(((char *)hptr) + sizeof(struct pptpMsgHead)));
+}
diff --git a/lib/libc/gen/strtofflags.3 b/lib/libc/gen/strtofflags.3
new file mode 100644
index 000000000000..10f86c935917
--- /dev/null
+++ b/lib/libc/gen/strtofflags.3
@@ -0,0 +1,99 @@
+.\" Copyright (c) 1989, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)setmode.3 8.2 (Berkeley) 4/28/95
+.\" $FreeBSD$
+.\"
+.Dd January 1, 2000
+.Dt STRTOFFLAGS 3
+.Os
+.Sh NAME
+.Nm fflagstostr ,
+.Nm strtofflags
+.Nd convert between file flag bits and their string names
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.Fd #include <unistd.h>
+.Ft char *
+.Fn fflagstostr "u_long flags"
+.Ft int
+.Fn strtofflags "char **stringp" "u_long *setp" "u_long *clrp"
+.Sh DESCRIPTION
+The
+.Fn fflagstostr
+function returns a comma separated string of the file flags represented by
+.Fa flags .
+If no flags are set a zero length string is returned.
+.Pp
+If memory cannot be allocated for the return value,
+.Fn fflagstostr
+returns
+.Dv NULL .
+.Pp
+The value returned from
+.Fn fflagstostr
+is obtained from
+.Fn malloc
+and should be returned to the system with
+.Fn free
+when the program is done with it.
+.Pp
+The
+.Fn strtofflags
+function takes a string of file flags, as described in
+.Xr chflags 1 ,
+parses it, and returns the 'set' flags and 'clear' flags
+such as would be given as arguments to
+.Xr chflags 2 .
+On success
+.Fn strtofflags
+returns 0, otherwise it returns non-zero and
+.Fa stringp
+is left pointing to the offending token.
+.Sh ERRORS
+The
+.Fn fflagstostr
+function
+may fail and set errno for any of the errors specified for the library
+routine
+.Xr malloc 3 .
+.Sh SEE ALSO
+.Xr chflags 1 ,
+.Xr chflags 2 ,
+.Xr malloc 3
+.Sh HISTORY
+The
+.Fn fflagstostr
+and
+.Fn strtofflags
+functions first appeared in
+.Fx 4.0 .
diff --git a/lib/libc/gen/strtofflags.c b/lib/libc/gen/strtofflags.c
new file mode 100644
index 000000000000..4c9e8d562aa8
--- /dev/null
+++ b/lib/libc/gen/strtofflags.c
@@ -0,0 +1,158 @@
+/*-
+ * Copyright (c) 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)stat_flags.c 8.1 (Berkeley) 5/31/93";
+#else
+static const char rcsid[] =
+ "$FreeBSD$";
+#endif
+#endif /* not lint */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+static struct {
+ char *name;
+ u_long flag;
+ int invert;
+} mapping[] = {
+ /* shorter names per flag first, all prefixed by "no" */
+ { "nosappnd", SF_APPEND, 0 },
+ { "nosappend", SF_APPEND, 0 },
+ { "noarch", SF_ARCHIVED, 0 },
+ { "noarchived", SF_ARCHIVED, 0 },
+ { "noschg", SF_IMMUTABLE, 0 },
+ { "noschange", SF_IMMUTABLE, 0 },
+ { "nosimmutable", SF_IMMUTABLE, 0 },
+ { "nosunlnk", SF_NOUNLINK, 0 },
+ { "nosunlink", SF_NOUNLINK, 0 },
+ { "nouappnd", UF_APPEND, 0 },
+ { "nouappend", UF_APPEND, 0 },
+ { "nouchg", UF_IMMUTABLE, 0 },
+ { "nouchange", UF_IMMUTABLE, 0 },
+ { "nouimmutable", UF_IMMUTABLE, 0 },
+ { "nodump", UF_NODUMP, 1 },
+ { "noopaque", UF_OPAQUE, 0 },
+ { "nouunlnk", UF_NOUNLINK, 0 },
+ { "nouunlink", UF_NOUNLINK, 0 }
+};
+#define longestflaglen 12
+#define nmappings (sizeof(mapping) / sizeof(mapping[0]))
+
+/*
+ * fflagstostr --
+ * Convert file flags to a comma-separated string. If no flags
+ * are set, return the empty string.
+ */
+char *
+fflagstostr(flags)
+ u_long flags;
+{
+ char *string;
+ char *sp, *dp;
+ u_long setflags;
+ int i;
+
+ if ((string = (char *)malloc(nmappings * (longestflaglen + 1))) == NULL)
+ return (NULL);
+
+ setflags = flags;
+ dp = string;
+ for (i = 0; i < nmappings; i++) {
+ if (setflags & mapping[i].flag) {
+ if (dp > string)
+ *dp++ = ',';
+ for (sp = mapping[i].invert ? mapping[i].name :
+ mapping[i].name + 2; *sp; *dp++ = *sp++) ;
+ setflags &= ~mapping[i].flag;
+ }
+ }
+ *dp = '\0';
+ return (string);
+}
+
+/*
+ * strtofflags --
+ * Take string of arguments and return file flags. Return 0 on
+ * success, 1 on failure. On failure, stringp is set to point
+ * to the offending token.
+ */
+int
+strtofflags(stringp, setp, clrp)
+ char **stringp;
+ u_long *setp, *clrp;
+{
+ char *string, *p;
+ int i;
+
+ if (setp)
+ *setp = 0;
+ if (clrp)
+ *clrp = 0;
+ string = *stringp;
+ while ((p = strsep(&string, "\t ,")) != NULL) {
+ *stringp = p;
+ if (*p == '\0')
+ continue;
+ for (i = 0; i < nmappings; i++) {
+ if (strcmp(p, mapping[i].name + 2) == 0) {
+ if (mapping[i].invert) {
+ if (clrp)
+ *clrp |= mapping[i].flag;
+ } else {
+ if (setp)
+ *setp |= mapping[i].flag;
+ }
+ break;
+ } else if (strcmp(p, mapping[i].name) == 0) {
+ if (mapping[i].invert) {
+ if (setp)
+ *setp |= mapping[i].flag;
+ } else {
+ if (clrp)
+ *clrp |= mapping[i].flag;
+ }
+ break;
+ }
+ }
+ if (i == nmappings)
+ return 1;
+ }
+ return 0;
+}
diff --git a/sys/alpha/alpha/api_up1000.c b/sys/alpha/alpha/api_up1000.c
new file mode 100644
index 000000000000..26e8e2fc1192
--- /dev/null
+++ b/sys/alpha/alpha/api_up1000.c
@@ -0,0 +1,127 @@
+/*-
+ * Copyright (c) 2000 Andrew Gallatin
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include "opt_ddb.h"
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/bus.h>
+#include <machine/intr.h>
+
+#include <sys/termios.h>
+
+#include <machine/rpb.h>
+#include <machine/cpuconf.h>
+#include <machine/clock.h>
+#include <pci/pcireg.h>
+#include <pci/pcivar.h>
+#include <alpha/pci/irongatereg.h>
+#include <alpha/pci/irongatevar.h>
+
+#include "sio.h"
+#include "sc.h"
+
+#ifndef CONSPEED
+#define CONSPEED TTYDEF_SPEED
+#endif
+static int comcnrate = CONSPEED;
+
+void api_up1000_init __P((void));
+static void api_up1000_cons_init __P((void));
+
+extern int siocnattach __P((int, int));
+extern int siogdbattach __P((int, int));
+extern int sccnattach __P((void));
+
+void
+api_up1000_init()
+{
+ platform.family = "UP1000";
+
+ if ((platform.model = alpha_dsr_sysname()) == NULL) {
+ /* XXX Don't know the system variations, yet. */
+ platform.model = alpha_unknown_sysname();
+ }
+
+ platform.iobus = "irongate";
+ platform.cons_init = api_up1000_cons_init;
+}
+
+extern int comconsole;
+
+static void
+api_up1000_cons_init()
+{
+ struct ctb *ctb;
+
+ irongate_init();
+#ifdef DDB
+ siogdbattach(0x2f8, 57600);
+#endif
+
+ ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
+
+ switch (ctb->ctb_term_type) {
+ case 2:
+ /* serial console ... */
+ /* XXX */
+ {
+ /*
+ * Delay to allow PROM putchars to complete.
+ * FIFO depth * character time,
+ * character time = (1000000 / (defaultrate / 10))
+ */
+ DELAY(160000000 / comcnrate);
+ comconsole = 0;
+ if (siocnattach(0x3f8, comcnrate))
+ panic("can't init serial console");
+
+ break;
+ }
+
+ case 3:
+ /* display console ... */
+ /* XXX */
+#if NSC > 0
+ sccnattach();
+#else
+ panic("not configured to use display && keyboard console");
+#endif
+ break;
+
+ default:
+ printf("ctb->ctb_term_type = 0x%lx\n", ctb->ctb_term_type);
+ printf("ctb->ctb_turboslot = 0x%lx\n", ctb->ctb_turboslot);
+
+ panic("consinit: unknown console type %ld\n",
+ ctb->ctb_term_type);
+ }
+}
+
+
diff --git a/sys/alpha/pci/irongate.c b/sys/alpha/pci/irongate.c
new file mode 100644
index 000000000000..296d09dcd4a0
--- /dev/null
+++ b/sys/alpha/pci/irongate.c
@@ -0,0 +1,420 @@
+/*-
+ * Copyright (c) 2000 Andrew Gallatin
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include "opt_cpu.h"
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/bus.h>
+#include <machine/bus.h>
+#include <sys/rman.h>
+#include <sys/malloc.h>
+
+#include <pci/pcivar.h>
+#include <pci/pcireg.h>
+#include <alpha/isa/isavar.h>
+#include <alpha/pci/irongatereg.h>
+#include <alpha/pci/irongatevar.h>
+#include <alpha/pci/pcibus.h>
+#include <machine/bwx.h>
+#include <machine/intr.h>
+#include <machine/intrcnt.h>
+#include <machine/cpuconf.h>
+#include <machine/rpb.h>
+#include <machine/resource.h>
+#include <machine/sgmap.h>
+
+#include <vm/vm.h>
+#include <vm/vm_page.h>
+
+#define KV(pa) ALPHA_PHYS_TO_K0SEG(pa)
+
+static devclass_t irongate_devclass;
+static device_t irongate0; /* XXX only one for now */
+
+struct irongate_softc {
+ int junk; /* no softc */
+};
+
+#define IRONGATE_SOFTC(dev) (struct irongate_softc*) device_get_softc(dev)
+
+static alpha_chipset_inb_t irongate_inb;
+static alpha_chipset_inw_t irongate_inw;
+static alpha_chipset_inl_t irongate_inl;
+static alpha_chipset_outb_t irongate_outb;
+static alpha_chipset_outw_t irongate_outw;
+static alpha_chipset_outl_t irongate_outl;
+static alpha_chipset_readb_t irongate_readb;
+static alpha_chipset_readw_t irongate_readw;
+static alpha_chipset_readl_t irongate_readl;
+static alpha_chipset_writeb_t irongate_writeb;
+static alpha_chipset_writew_t irongate_writew;
+static alpha_chipset_writel_t irongate_writel;
+static alpha_chipset_maxdevs_t irongate_maxdevs;
+static alpha_chipset_cfgreadb_t irongate_cfgreadb;
+static alpha_chipset_cfgreadw_t irongate_cfgreadw;
+static alpha_chipset_cfgreadl_t irongate_cfgreadl;
+static alpha_chipset_cfgwriteb_t irongate_cfgwriteb;
+static alpha_chipset_cfgwritew_t irongate_cfgwritew;
+static alpha_chipset_cfgwritel_t irongate_cfgwritel;
+static alpha_chipset_addrcvt_t irongate_cvt_dense, irongate_cvt_bwx;
+
+static alpha_chipset_read_hae_t irongate_read_hae;
+static alpha_chipset_write_hae_t irongate_write_hae;
+
+static alpha_chipset_t irongate_chipset = {
+ irongate_inb,
+ irongate_inw,
+ irongate_inl,
+ irongate_outb,
+ irongate_outw,
+ irongate_outl,
+ irongate_readb,
+ irongate_readw,
+ irongate_readl,
+ irongate_writeb,
+ irongate_writew,
+ irongate_writel,
+ irongate_maxdevs,
+ irongate_cfgreadb,
+ irongate_cfgreadw,
+ irongate_cfgreadl,
+ irongate_cfgwriteb,
+ irongate_cfgwritew,
+ irongate_cfgwritel,
+ irongate_cvt_dense,
+ irongate_cvt_bwx,
+ irongate_read_hae,
+ irongate_write_hae,
+};
+
+static u_int8_t
+irongate_inb(u_int32_t port)
+{
+ alpha_mb();
+ return ldbu(KV(IRONGATE_IO + port));
+}
+
+static u_int16_t
+irongate_inw(u_int32_t port)
+{
+ alpha_mb();
+ return ldwu(KV(IRONGATE_IO + port));
+}
+
+static u_int32_t
+irongate_inl(u_int32_t port)
+{
+ alpha_mb();
+ return ldl(KV(IRONGATE_IO + port));
+}
+
+static void
+irongate_outb(u_int32_t port, u_int8_t data)
+{
+ stb(KV(IRONGATE_IO + port), data);
+ alpha_mb();
+}
+
+static void
+irongate_outw(u_int32_t port, u_int16_t data)
+{
+ stw(KV(IRONGATE_IO + port), data);
+ alpha_mb();
+}
+
+static void
+irongate_outl(u_int32_t port, u_int32_t data)
+{
+ stl(KV(IRONGATE_IO + port), data);
+ alpha_mb();
+}
+
+static u_int8_t
+irongate_readb(u_int32_t pa)
+{
+ alpha_mb();
+ return ldbu(KV(IRONGATE_MEM + pa));
+}
+
+static u_int16_t
+irongate_readw(u_int32_t pa)
+{
+ alpha_mb();
+ return ldwu(KV(IRONGATE_MEM + pa));
+}
+
+static u_int32_t
+irongate_readl(u_int32_t pa)
+{
+ alpha_mb();
+ return ldl(KV(IRONGATE_MEM + pa));
+}
+
+static void
+irongate_writeb(u_int32_t pa, u_int8_t data)
+{
+ stb(KV(IRONGATE_MEM + pa), data);
+ alpha_mb();
+}
+
+static void
+irongate_writew(u_int32_t pa, u_int16_t data)
+{
+ stw(KV(IRONGATE_MEM + pa), data);
+ alpha_mb();
+}
+
+static void
+irongate_writel(u_int32_t pa, u_int32_t data)
+{
+ stl(KV(IRONGATE_MEM + pa), data);
+ alpha_mb();
+}
+
+static int
+irongate_maxdevs(u_int b)
+{
+ return 12; /* XXX */
+}
+
+static void
+irongate_clear_abort(void)
+{
+ alpha_mb();
+ alpha_pal_draina();
+}
+
+static int
+irongate_check_abort(void)
+{
+ alpha_pal_draina();
+ alpha_mb();
+
+ return 0;
+}
+
+#define IRONGATE_CFGADDR(b, s, f, r) \
+ KV(IRONGATE_CONF | ((b) << 16) | ((s) << 11) | ((f) << 8) | (r))
+
+#define CFGREAD(h, b, s, f, r, op, width, type) \
+ vm_offset_t va; \
+ type data; \
+ va = IRONGATE_CFGADDR(b, s, f, r); \
+ irongate_clear_abort(); \
+ if (badaddr((caddr_t)va, width)) { \
+ irongate_check_abort(); \
+ return ~0; \
+ } \
+ data = ##op##(va); \
+ if (irongate_check_abort()) \
+ return ~0; \
+ return data;
+
+#define CFWRITE(h, b, s, f, r, data, op, width) \
+ vm_offset_t va; \
+ va = IRONGATE_CFGADDR(b, s, f, r); \
+ irongate_clear_abort(); \
+ if (badaddr((caddr_t)va, width)) \
+ return; \
+ ##op##(va, data); \
+ irongate_check_abort();
+
+
+
+
+static u_int8_t
+irongate_cfgreadb(u_int h, u_int b, u_int s, u_int f, u_int r)
+{
+ CFGREAD(h, b, s, f, r, ldbu, 1, u_int8_t)
+}
+
+static u_int16_t
+irongate_cfgreadw(u_int h, u_int b, u_int s, u_int f, u_int r)
+{
+ CFGREAD(h, b, s, f, r, ldwu, 2, u_int16_t)
+}
+
+static u_int32_t
+irongate_cfgreadl(u_int h, u_int b, u_int s, u_int f, u_int r)
+{
+ CFGREAD(h, b, s, f, r, ldl, 4, u_int32_t)
+}
+
+static void
+irongate_cfgwriteb(u_int h, u_int b, u_int s, u_int f, u_int r, u_int8_t data)
+{
+ CFWRITE(h, b, s, f, r, data, stb, 1)
+}
+
+static void
+irongate_cfgwritew(u_int h, u_int b, u_int s, u_int f, u_int r, u_int16_t data)
+{
+ CFWRITE(h, b, s, f, r, data, stw, 2)
+}
+
+static void
+irongate_cfgwritel(u_int h, u_int b, u_int s, u_int f, u_int r, u_int32_t data)
+{
+ CFWRITE(h, b, s, f, r, data, stl, 4)
+}
+
+
+vm_offset_t
+irongate_cvt_bwx(vm_offset_t addr)
+{
+ addr &= 0xffffffffUL;
+ return (KV(addr | IRONGATE_MEM));
+}
+
+vm_offset_t
+irongate_cvt_dense(vm_offset_t addr)
+{
+ return irongate_cvt_bwx(addr);
+}
+
+
+/*
+ * There doesn't appear to be an hae on this platform
+ */
+
+
+static u_int64_t
+irongate_read_hae(void)
+{
+ return 0;
+}
+
+static void
+irongate_write_hae(u_int64_t hae)
+{
+}
+
+static int irongate_probe(device_t dev);
+static int irongate_attach(device_t dev);
+
+static device_method_t irongate_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, irongate_probe),
+ DEVMETHOD(device_attach, irongate_attach),
+
+ /* Bus interface */
+ DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(bus_alloc_resource, pci_alloc_resource),
+ DEVMETHOD(bus_release_resource, pci_release_resource),
+ DEVMETHOD(bus_activate_resource, pci_activate_resource),
+ DEVMETHOD(bus_deactivate_resource, pci_deactivate_resource),
+ DEVMETHOD(bus_setup_intr, isa_setup_intr),
+ DEVMETHOD(bus_teardown_intr, isa_teardown_intr),
+
+ { 0, 0 }
+};
+
+static driver_t irongate_driver = {
+ "irongate",
+ irongate_methods,
+ sizeof(struct irongate_softc),
+};
+
+void
+irongate_init()
+{
+ static int initted = 0;
+
+ if (initted) return;
+ initted = 1;
+
+ chipset = irongate_chipset;
+ alpha_XXX_dmamap_or = 0UL;
+
+ if (platform.pci_intr_init)
+ platform.pci_intr_init();
+}
+
+static int
+irongate_probe(device_t dev)
+{
+
+ if (irongate0)
+ return ENXIO;
+ irongate0 = dev;
+ device_set_desc(dev, "AMD 751 Core Logic chipset");
+ pci_init_resources();
+ isa_init_intr();
+ device_add_child(dev, "pcib", 0);
+ return 0;
+}
+
+
+
+static int
+irongate_attach(device_t dev)
+{
+ u_int8_t value;
+ pcicfgregs southbridge;
+
+
+ irongate_init();
+
+ if (!platform.iointr) /* XXX */
+ set_iointr(alpha_dispatch_intr);
+
+ snprintf(chipset_type, sizeof(chipset_type), "irongate");
+ chipset_bwx = 1;
+
+ chipset_ports = IRONGATE_IO;
+ chipset_memory = IRONGATE_MEM;
+ chipset_dense = IRONGATE_MEM;
+ /* no s/g support in this chipset, must use bounce-buffers */
+ chipset.sgmap = NULL;
+
+ /*
+ * XXX -- The SRM console doesn't properly initialize
+ * the AcerLabs M1533C southbridge. We must turn off 32-bit
+ * DMA support.
+ */
+
+ southbridge.hose = 0;
+ southbridge.bus = 0;
+ southbridge.slot = 7;
+ southbridge.func = 0;
+ if ((0x153310b9 == pci_cfgread(&southbridge, PCIR_DEVVENDOR, 4))) {
+ value = (u_int8_t)pci_cfgread(&southbridge, 0x42, 1);
+ value &= ~0x40;
+ pci_cfgwrite(&southbridge, 0x42, 0, 1);
+ }
+
+ bus_generic_attach(dev);
+
+ return 0;
+}
+
+DRIVER_MODULE(irongate, root, irongate_driver, irongate_devclass, 0, 0);
+
diff --git a/sys/alpha/pci/irongate_pci.c b/sys/alpha/pci/irongate_pci.c
new file mode 100644
index 000000000000..e8cf2917b819
--- /dev/null
+++ b/sys/alpha/pci/irongate_pci.c
@@ -0,0 +1,95 @@
+/*-
+ * Copyright (c) 2000 Andrew Gallatin
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/malloc.h>
+#include <sys/bus.h>
+#include <machine/bus.h>
+#include <machine/md_var.h>
+#include <sys/rman.h>
+#include <pci/pcivar.h>
+#include <alpha/pci/irongatereg.h>
+#include <alpha/pci/irongatevar.h>
+
+
+static devclass_t pcib_devclass;
+
+
+static int
+irongate_pcib_probe(device_t dev)
+{
+
+ device_set_desc(dev, "AMD 751 PCI host bus adapter");
+
+ device_add_child(dev, "pci", -1);
+
+ return 0;
+}
+
+static int
+irongate_pcib_read_ivar(device_t dev, device_t child, int which, u_long *result)
+{
+ if (which == PCIB_IVAR_HOSE) {
+ *result = 0;
+ return 0;
+ }
+ return ENOENT;
+}
+
+static device_method_t irongate_pcib_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, irongate_pcib_probe),
+ DEVMETHOD(device_attach, bus_generic_attach),
+
+ /* Bus interface */
+ DEVMETHOD(bus_print_child, bus_generic_print_child),
+ DEVMETHOD(bus_read_ivar, irongate_pcib_read_ivar),
+ DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource),
+ DEVMETHOD(bus_release_resource, bus_generic_release_resource),
+ DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
+ DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource),
+ DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
+ DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
+
+ { 0, 0 }
+};
+
+
+static driver_t irongate_pcib_driver = {
+ "pcib",
+ irongate_pcib_methods,
+ 1,
+};
+
+
+DRIVER_MODULE(pcib, irongate, irongate_pcib_driver, pcib_devclass, 0, 0);
+
+
diff --git a/sys/alpha/pci/irongatereg.h b/sys/alpha/pci/irongatereg.h
new file mode 100644
index 000000000000..0d10d1514717
--- /dev/null
+++ b/sys/alpha/pci/irongatereg.h
@@ -0,0 +1,43 @@
+/*-
+ * Copyright (c) 2000 Andrew Gallatin
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * AMD-751 Chipset registers and constants.
+ *
+ */
+
+
+/*
+ * memory / i/o space macros
+ *
+ */
+
+#define IRONGATE_MEM 0x10000000000UL
+#define IRONGATE_IACK_SC 0x101F8000000UL
+#define IRONGATE_IO 0x101FC000000UL
+#define IRONGATE_CONF 0x101FE000000UL
diff --git a/sys/alpha/pci/irongatevar.h b/sys/alpha/pci/irongatevar.h
new file mode 100644
index 000000000000..31012d97f8d5
--- /dev/null
+++ b/sys/alpha/pci/irongatevar.h
@@ -0,0 +1,30 @@
+/*-
+ * Copyright (c) 2000 Andrew Gallatin
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+extern void irongate_init(void);
+
diff --git a/sys/boot/common/loader.8 b/sys/boot/common/loader.8
new file mode 100644
index 000000000000..8569709779c9
--- /dev/null
+++ b/sys/boot/common/loader.8
@@ -0,0 +1,801 @@
+.\" Copyright (c) 1999 Daniel C. Sobral
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" Note: The date here should be updated whenever a non-trivial
+.\" change is made to the manual page.
+.Dd March 14, 1999
+.Dt LOADER 8
+.Os
+.Sh NAME
+.Nm loader
+.Nd kernel bootstrapping final stage
+.Sh DESCRIPTION
+The program called
+.Nm
+is the final stage of FreeBSD's kernel bootstrapping process.
+On IA32 (i386) architectures, it is a
+.Pa BTX
+client.
+It is linked statically to
+.Xr libstand 3
+and usually located in the directory
+.Pa /boot .
+.Pp
+It provides a scripting language that can be used to
+automate tasks, do pre-configuration or assist in recovery
+procedures.
+This scripting language is roughly divided in
+two main components.
+The smaller one is a set of commands
+designed for direct use by the casual user, called "builtin
+commands" for historical reasons.
+The main drive behind these commands is user-friendlyness.
+The bigger component is an
+.Tn ANS
+Forth compatible Forth interpreter based on ficl, by
+.An John Sadler .
+.Pp
+During initialization,
+.Nm
+will probe for a console and set the
+.Va console
+variable, or set it to serial console
+.Pq Dq comconsole
+if the previous boot stage used that.
+Then, devices are probed,
+.Va currdev
+and
+.Va loaddev
+are set, and
+.Va LINES
+is set to 24.
+Next,
+.Tn FICL
+is initialized, the builtin words are added to its vocabulary, and
+.Pa /boot/boot.4th
+will be processed if it exists.
+No disk switching is possible while that file is being read.
+The inner interpreter
+.Nm
+will use with
+.Tn FICL
+is then set to
+.Ic interpret ,
+which is
+.Tn FICL Ns 's
+default.
+After that,
+.Pa /boot/loader.rc
+is processed if available, and, failing that,
+.Pa /boot/boot.conf
+will be read for historical reasons.
+These files are processed through the
+.Ic include
+command, which read all of them into memory before processing them,
+making disk changes possible.
+.Pp
+At this point, if an
+.Ic autoboot
+has not been tried, and if
+.Va autoboot_delay
+is not set to
+.Dq NO
+(not case sensitive), then an
+.Ic autoboot
+will be tried.
+If the system gets past this point,
+.Va prompt
+will be set and
+.Nm
+will engage interactive mode.
+.Sh BUILTIN COMMANDS
+.Nm Loader Ns No 's
+builtin commands take its parameters from the command line.
+Presently,
+the only way to call them from a script is by using
+.Pa evaluate
+on a string.
+If an error condition occurs, an exception will be generated,
+which can be intercepted using
+.Tn ANS
+Forth exception handling
+words.
+If not intercepted, an error message will be displayed and
+the interpreter's state will be reset, emptying the stack and restoring
+interpreting mode.
+.Pp
+The builtin commands available are:
+.Pp
+.Bl -tag -width Ds -compact -offset indent
+.It Ic autoboot Op Ar seconds
+Proceeds to bootstrap the system after a number of seconds, if not
+interrupted by the user.
+Displays a countdown prompt
+warning the user the system is about to be booted,
+unless interrupted by a key press.
+The kernel will be loaded first if necessary.
+Defaults to 10 seconds.
+.Pp
+.It Ic bcachestat
+Displays statistics about disk cache usage.
+For depuration only.
+.Pp
+.It Ic boot
+.It Ic boot Ar kernelname Op Cm ...
+.It Ic boot Fl flag Cm ...
+Immediately proceeds to bootstrap the system, loading the kernel
+if necessary.
+Any flags or arguments are passed to the kernel, but they
+must precede the kernel name, if a kernel name is provided.
+.Pp
+.It Ic echo Xo
+.Op Fl n
+.Op Aq message
+.Xc
+Displays a text on the screen.
+A new line will be printed unless
+.Fl n
+is specified.
+.Pp
+.It Ic heap
+Displays memory usage statistics.
+For debugging purposes only.
+.Pp
+.It Ic help Op topic Op subtopic
+Shows help messages read from
+.Pa /boot/loader.help .
+The special topic
+.Em index
+will list the topics available.
+.Pp
+.It Ic include Ar file Op Ar
+Process script files.
+Each file is, at a turn, completely read into memory,
+and then have each of its lines passed to the command line interpreter.
+If any error is returned by the interpreter, the include
+commands aborts immediately, without reading any other files, and
+returns an error itself (see
+.Sx ERRORS ) .
+.Pp
+.It Ic load Xo
+.Op Fl t Ar type
+.Ar file Cm ...
+.Xc
+Loads a kernel, kernel loadable module (kld), or a file of opaque
+contents tagged as being of the type
+.Ar type .
+Kernel and modules can be either in a.out or elf format.
+Any arguments passed after the name of the file to be loaded
+will be passed as arguments to that file.
+Notice, though, that, at the present, this does not work for the kernel.
+.Pp
+.It Ic ls Xo
+.Op Fl l
+.Op Ar path
+.Xc
+Displays a listing of files in the directory
+.Ar path ,
+or the root directory if
+.Ar path
+is not specified.
+If
+.Fl l
+is specified, file sizes will be shown too.
+.Pp
+.It Ic lsdev Op Fl v
+Lists all of the devices from which it may be possible to load modules.
+If
+.Fl v
+is specified, more details are printed.
+.Pp
+.It Ic lsmod Op Fl v
+Displays loaded modules.
+If
+.Fl v
+is specified, more details are shown.
+.Pp
+.It Ic more Ar file Op Ar
+Display the files specified, with a pause at each
+.Va LINES
+displayed.
+.Pp
+.It Ic pnpscan Op Fl v
+Scans for Plug-and-Play devices.
+This is not functional at the present.
+.Pp
+.It Ic read Xo
+.Op Fl t Ar seconds
+.Op Fl p Ar prompt
+.Op Va variable
+.Xc
+Reads a line of input from the terminal, storing it in
+.Va variable
+if specified.
+A timeout can be specified with
+.Fl t ,
+though it will be canceled at the first key pressed.
+A prompt may also be displayed through the
+.Fl p
+flag.
+.Pp
+.It Ic reboot
+Immediately reboots the system.
+.Pp
+.It Ic set Ar variable
+.It Ic set Ar variable Ns = Ns Ar value
+Set loader's environment variables.
+.Pp
+.It Ic show Op Va variable
+Displays the specified variable's value, or all variables and their
+values if
+.Va variable
+is not specified.
+.Pp
+.It Ic unload
+Remove all modules from memory.
+.Pp
+.It Ic unset Va variable
+Removes
+.Va variable
+from the environment.
+.Pp
+.It Ic \&?
+Same as
+.Dq help index .
+.Pp
+.El
+.Ss BUILTIN ENVIRONMENT VARIABLES
+The
+.Nm
+has actually two different kinds of
+.Sq environment
+variables.
+There are ANS Forth's
+.Em environmental queries ,
+and a separate space of environment variables used by builtins, which
+are not directly available to Forth words.
+It is the later ones that this session covers.
+.Pp
+Environment variables can be set and unset through the use of the
+.Ic set
+and
+.Ic unset
+builtins, and have their value interactively examined through the
+use of the
+.Ic show
+builtin.
+Their values can also be accessed as described in
+.Sx BUILTIN PARSER .
+.Pp
+Notice that this environment variables are not inherited by any shell
+after the system has been booted.
+.Pp
+A few variables are set automatically by
+.Nm loader .
+Others can affect either
+.Nm
+or kernel's behavior at boot.
+While some of these may require a value,
+others define behavior just by being set.
+These are described below.
+.Bl -tag -width bootfile -offset indent
+.It Va autoboot_delay
+Number of seconds
+.Ic autoboot
+will wait before booting.
+If this variable is not defined,
+.Ic autoboot
+will default to 10 seconds.
+.Pp
+If set to
+.Dq NO ,
+no
+.Ic autoboot
+will be automatically attempted after processing
+.Pa /boot/loader.rc ,
+though explict
+.Ic autoboot Ns 's
+will be processed normally, defaulting to 10 seconds delay.
+.It Va boot_askname
+Instructs the kernel to prompt the user for the name of the root device
+when the kernel is booted.
+.It Va boot_ddb
+Instructs the kernel to start in the DDB debugger, rather than
+proceeding to initialise when booted.
+.It Va boot_gdb
+Selects gdb-remote mode for the kernel debugger by default.
+.It Va boot_single
+Prevents the kernel from initiating a multi-user startup, single-user
+mode will be entered when the kernel has finished device probes.
+.It Va boot_userconfig
+Requests that the kernel's interactive device configuration program
+be run when the kernel is booted.
+.It Va boot_verbose
+Setting this variable causes extra debugging information to be printed
+by the kernel during the boot phase.
+.It Va bootfile
+List of semicolon-separated search path for bootable kernels.
+The default is
+.Li Dq kernel;kernel.old .
+.It Va console
+Defines the current console.
+.It Va currdev
+Selects the default device.
+Syntax for devices is odd.
+.It Va init_path
+Sets the list of binaries which the kernel will try to run as initial
+process.
+The default is
+.Li Dq /sbin/init:/sbin/oinit:/sbin/init.bak:/stand/sysinstall .
+.It Va interpret
+Has the value
+.Li Dq ok
+if the Forth's current state is interpreting.
+.It Va LINES
+Define the number of lines on the screen, to be used by the pager.
+.It Va module_path
+Sets the list of directories which will be searched in for modules
+named in a load command or implicitly required by a dependancy.
+The default value for this variable is
+.Li Dq /;/boot;/modules .
+.It Va num_ide_disks
+Sets the number of IDE disks as a work around for some problems in
+finding the root disk at boot.
+This has been deprecated in favour of
+.Va root_disk_unit .
+.It Va prompt
+Value of
+.Nm Ns No 's
+prompt.
+Defaults to
+.Li Dq "${currdev}>" .
+.It Va root_disk_unit
+If the code which detects the disk unit number for the root disk is
+confused, eg. by a mix of SCSI and IDE disks, or IDE disks with
+gaps in the sequence (eg. no primary slave), the unit number can
+be forced by setting this variable.
+.It Va rootdev
+By default the value of
+.Va currdev
+is used to set the root filesystem
+when the kernel is booted.
+This can be overridden by setting
+.Va rootdev
+explicitly.
+.El
+.Pp
+Other variables are used to override kernel tunable parameters.
+The following tunables are available:
+.Bl -tag -width Va -offset indent
+.It Va kern.ipc.nmbclusters
+Set the number of mbuf clusters to be allocated.
+The value cannot be set below the default
+determined when the kernel was compiled.
+Modifies
+.Va NMBCLUSTERS .
+.It Va kern.vm.kmem.size
+Sets the size of kernel memory (bytes).
+This overrides completely the value
+determined when the kernel was compiled.
+Modifies
+.Va VM_KMEM_SIZE .
+.It Va machdep.pccard.pcic_irq
+Overrides the IRQ normally assigned to a PCCARD controller.
+Typically the first available interrupt will be allocated,
+which may conflict with other hardware.
+If this value is set to 0,
+an interrupt will not be assigned
+and the controller will operate in polled mode only.
+.It Va net.inet.tcp.tcbhashsize
+Overrides the compile-time set value of
+.Va TCBHASHSIZE
+or the preset default of 512.
+Must be a power of 2.
+.El
+.Ss BUILTIN PARSER
+When a builtin command is executed, the rest of the line is taken
+by it as arguments, and it is processed by a special parser which
+is not used for regular Forth commands.
+.Pp
+This special parser applies the following rules to the parsed text:
+.Pp
+.Bl -enum
+.It
+All backslash characters are preprocessed.
+.Bl -bullet
+.It
+\eb , \ef , \er , \en and \et are processed as in C.
+.It
+\es is converted to a space.
+.It
+\ev is converted to
+.Tn ASCII
+11.
+.It
+\ez is just skipped.
+Useful for things like
+.Dq \e0xf\ez\e0xf .
+.It
+\e0xN and \e0xNN are replaced by the hex N or NN.
+.It
+\eNNN is replaced by the octal NNN
+.Tn ASCII
+character.
+.It
+\e" , \e' and \e$ will escape these characters, preventing them from
+receiving special semantics on the step 2 described below.
+.It
+\e\e will be replaced with a single \e .
+.It
+In any other occurance, backslash will just be removed.
+.El
+.It
+Every string between non-escaped quotes or double-quotes will be treated
+as a single word for the purposes of the remaining steps.
+.It
+Replace any
+.Li $VARIABLE
+or
+.Li ${VARIABLE}
+with the value of the environemnt variable
+.Va VARIABLE .
+.It
+Passes multiple space-delimited arguments to the builtin command called.
+Spaces can also be escaped through the use of \e\e .
+.El
+.Pp
+An exception to this parsing rule exists, and is described in
+.Sx BUILTINS AND FORTH .
+.Ss BUILTINS AND FORTH
+All builtin words are state-smart, immediate words.
+If interpreted, they behave exactly as described previously.
+If they are compiled, though,
+they extract their arguments from the stack instead of the command line.
+.Pp
+If compiled, the builtin words expect to find, at execution time, the
+following parameters on the stack:
+.D1 Ar addrN lenN ... addr2 len2 addr1 len1 N
+where
+.Ar addrX lenX
+are strings which will compose the command line that will be parsed
+into the builtin's arguments.
+Internally, these strings are concatenated in from 1 to N,
+with a space put between each one.
+.Pp
+If no arguments are passed, a 0
+.Em must
+be passed, even if the builtin accepts no arguments.
+.Pp
+While this behavior has benefits, it has its trade-offs.
+If the execution token of a builtin is acquired (through
+.Ic No '
+or
+.Ic No ['] ) ,
+and then passed to
+.Ic catch
+or
+.Ic execute ,
+the builtin behavior will depend on the system state
+.Bf Em
+at the time
+.Ic catch
+or
+.Ic execute
+is processed
+.Ef
+\&! This is particular annoying for programs that want or need to
+treat exceptions.
+In this case, it is recommended the use of a proxy.
+For example:
+.Dl : (boot) boot ;
+.Sh FICL
+.Tn FICL
+is a Forth interpreter written in C, in the form of a forth
+virtual machine library that can be called by C functions and vice
+versa.
+.Pp
+In
+.Nm No ,
+each line read interactively is then fed to
+.Tn FICL ,
+which may call
+.Nm
+back to execute the builtin words.
+The builtin
+.Ic include
+will also feed
+.Tn FICL ,
+one line at a time.
+.Pp
+The words available to
+.Tn FICL
+can be classified in four groups.
+The
+.Tn ANS
+Forth standard words, extra
+.Tn FICL
+words, extra
+.Os
+words, and the builtin commands.
+The later were already described.
+The
+.Tn ANS
+Forth standard words are listed in the
+.Sx STANDARDS
+section.
+The words falling in the two other groups are described in the
+following subsections.
+.Ss FICL EXTRA WORDS
+.Bl -tag -width wid-set-super -offset indent
+.It Ic .env
+.It Ic .ver
+.It Ic -roll
+.It Ic 2constant
+.It Ic >name
+.It Ic body>
+.It Ic compare
+This the STRING word set's
+.Ic compare .
+.It Ic compile-only
+.It Ic endif
+.It Ic forget-wid
+.It Ic parse-word
+.It Ic sliteral
+This is the STRING word set's
+.Ic sliteral .
+.It Ic wid-set-super
+.It Ic w@
+.It Ic w!
+.It Ic x.
+.It Ic empty
+.It Ic cell-
+.It Ic -rot
+.El
+.Ss FREEBSD EXTRA WORDS
+.Bl -tag -width XXXXXXXX -offset indent
+.It Ic \&$ Pq --
+Evaluates the remainder of the input buffer, after having printed it first.
+.It Ic \&% Pq --
+Evaluates the remainder of the input buffer under a
+.Ic catch
+exception guard.
+.It Ic .#
+Works like
+.Ic .
+but without outputting a trailing space.
+.It Ic fclose Pq Ar fd --
+Closes a file.
+.It Ic fkey Pq Ar fd -- char
+Reads a single character from a file.
+.It Ic fload Pq Ar fd --
+Process file
+.Em fd .
+.It Ic fopen Pq Ar addr len -- fd
+Open a file.
+Returns a file descriptor, or -1 in case of failure.
+.It Xo
+.Ic fread
+.Pq Ar fd addr len -- len'
+.Xc
+Tries to read
+.Em len
+bytes from file
+.Em fd
+into buffer
+.Em addr .
+Returns the actual number of bytes read, or -1 in case of error or end of
+file.
+.It Ic heap? Pq -- Ar cells
+Return the space remaining in the dictionary heap, in cells.
+This is not related to the heap used by dynamic memory allocation words.
+.It Ic inb Pq Ar port -- char
+Reads a byte from a port.
+.It Ic key Pq -- Ar char
+Reads a single character from the console.
+.It Ic key? Pq -- Ar flag
+Returns
+.Ic true
+if there is a character available to be read from the console.
+.It Ic ms Pq Ar u --
+Waits
+.Em u
+microseconds.
+.It Ic outb Pq Ar port char --
+Writes a byte to a port.
+.It Ic seconds Pq -- Ar u
+Returns the number of seconds since midnight.
+.It Ic tib> Pq -- Ar addr len
+Returns the remainder of the input buffer as a string on the stack.
+.It Ic trace! Pq Ar flag --
+Activates or deactivates tracing.
+Does not work with
+.Ic catch .
+.El
+.Ss FREEBSD DEFINED ENVIRONMENTAL QUERIES
+.Bl -tag -width Ds -offset indent
+.It arch-i386
+.Ic TRUE
+if the architecture is IA32.
+.It arch-alpha
+.Ic TRUE
+if the architecture is AXP.
+.It FreeBSD_version
+.Fx
+version at compile time.
+.It loader_version
+.Nm
+version.
+.El
+.Ss SYSTEM DOCUMENTATION
+.Sh FILES
+.Bl -tag -width /dev/loader.helpX -compact
+.It Pa /boot/loader
+.Nm
+itself.
+.It Pa /boot/boot.4th
+Additional
+.Tn FICL
+initialization.
+.It Pa /boot/boot.conf
+.Nm
+bootstrapping script.
+Deprecated.
+.It Pa /boot/loader.rc
+.Nm
+bootstrapping script.
+.It Pa /boot/loader.help
+Loaded by
+.Ic help .
+Contains the help messages.
+.El
+.Sh EXAMPLES
+Boot in single user mode:
+.Pp
+.Dl boot -s
+.Pp
+Loads kernel's user configuration file.
+Notice that a kernel must be loaded before any other
+.Ic load
+command is attempted.
+.Pp
+.Bd -literal -offset indent -compact
+load kernel
+load -t userconfig_script /boot/kernel.conf
+.Ed
+.Pp
+Loads the kernel, a splash screen, and then autoboots in five seconds.
+.Pp
+.Bd -literal -offset indent -compact
+load kernel
+load splash_bmp
+load -t splash_image_data /boot/chuckrulez.bmp
+autoboot 5
+.Ed
+.Pp
+Sets the disk unit of the root device to 2, and then boots.
+This would be needed in the case of a two IDE disks system,
+with the second IDE hardwired to wd2 instead of wd1.
+.Pp
+.Bd -literal -offset indent -compact
+set root_disk_unit=2
+boot /kernel
+.Ed
+.Pp
+See also:
+.Bl -tag -width /usr/share/examples/bootforth/X
+.It Pa /boot/loader.4th
+Extra builtin-like words.
+.It Pa /boot/support.4th
+.Pa loader.conf
+processing words.
+.It Pa /usr/share/examples/bootforth/
+Assorted examples.
+.El
+.Sh ERRORS
+The following values are thrown by
+.Nm :
+.Bl -tag -width XXXXX -offset indent
+.It 100
+Any type of error in the processing of a builtin.
+.It -1
+.Ic Abort
+executed.
+.It -2
+.Ic Abort"
+executed.
+.It -56
+.Ic Quit
+executed.
+.It -256
+Out of interpreting text.
+.It -257
+Need more text to succeed -- will finish on next run.
+.It -258
+.Ic Bye
+executed.
+.It -259
+Unspecified error.
+.El
+.Sh SEE ALSO
+.Xr libstand 3 ,
+.Xr loader.conf 5 ,
+.Xr boot 8 ,
+.Xr btxld 8
+.Sh STANDARDS
+For the purposes of ANS Forth compliance, loader is an
+.Bf Em
+ANS Forth System with Environmental Restrictions, Providing
+.Ef
+.Bf Li
+.No .( ,
+.No :noname ,
+.No ?do ,
+parse, pick, roll, refill, to, value, \e, false, true,
+.No <> ,
+.No 0<> ,
+compile\&, , erase, nip, tuck
+.Ef
+.Em and
+.Li marker
+.Bf Em
+from the Core Extensions word set, Providing the Exception Extensions
+word set, Providing the Locals Extensions word set, Providing the
+Memory-Allocation Extensions word set, Providing
+.Ef
+.Bf Li
+\&.s ,
+bye, forget, see, words,
+\&[if] ,
+\&[else]
+.Ef
+.Em and
+.Li No [then]
+.Bf Em
+from the Programming-Tools extension word set, Providing the
+Search-Order extensions word set.
+.Ef
+.Sh HISTORY
+.Nm
+first appeared in
+.Fx 3.1 .
+.Sh AUTHORS
+.Bl -item
+.It
+.Nm
+was written by
+.An Michael Smith Aq msmith@freebsd.org .
+.It
+.Tn FICL
+was written by
+.An John Sadler Aq john_sadler@alum.mit.edu .
+.El
+.Sh BUGS
+The
+.Ic expect
+and
+.Ic accept
+words will read from the input buffer instead of the console.
+The latter will be fixed, but the former will not.
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk
new file mode 100644
index 000000000000..803593b24f9a
--- /dev/null
+++ b/sys/conf/kmod.mk
@@ -0,0 +1,301 @@
+# From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
+# $FreeBSD$
+#
+# The include file <bsd.kmod.mk> handles installing Kernel Loadable Device
+# drivers (KLD's).
+#
+#
+# +++ variables +++
+#
+# CLEANFILES Additional files to remove for the clean and cleandir targets.
+#
+# DISTRIBUTION Name of distribution. [bin]
+#
+# KMOD The name of the kernel module to build.
+#
+# KMODDIR Base path for kernel modules (see kld(4)). [/modules]
+#
+# KMODOWN KLD owner. [${BINOWN}]
+#
+# KMODGRP KLD group. [${BINGRP}]
+#
+# KMODMODE KLD mode. [${BINMODE}]
+#
+# LINKS The list of KLD links; should be full pathnames, the
+# linked-to file coming first, followed by the linked
+# file. The files are hard-linked. For example, to link
+# /modules/master and /modules/meister, use:
+#
+# LINKS= /modules/master /modules/meister
+#
+# KMODLOAD Command to load a kernel module [/sbin/kldload]
+#
+# KMODUNLOAD Command to unload a kernel module [/sbin/kldunload]
+#
+# NOMAN KLD does not have a manual page if set.
+#
+# PROG The name of the kernel module to build.
+# If not supplied, ${KMOD}.o is used.
+#
+# SRCS List of source files
+#
+# SUBDIR A list of subdirectories that should be built as well.
+# Each of the targets will execute the same target in the
+# subdirectories.
+#
+# SYMLINKS Same as LINKS, except it creates symlinks and the
+# linked-to pathname may be relative.
+#
+# DESTDIR, DISTDIR are set by other Makefiles (e.g. bsd.own.mk)
+#
+# MFILES Optionally a list of interfaces used by the module.
+# This file contains a default list of interfaces.
+#
+# +++ targets +++
+#
+# distribute:
+# This is a variant of install, which will
+# put the stuff into the right "distribution".
+#
+# install:
+# install the program and its manual pages; if the Makefile
+# does not itself define the target install, the targets
+# beforeinstall and afterinstall may also be used to cause
+# actions immediately before and after the install target
+# is executed.
+#
+# load:
+# Load KLD.
+#
+# unload:
+# Unload KLD.
+#
+# bsd.obj.mk: clean, cleandir and obj
+# bsd.dep.mk: cleandepend, depend and tags
+# bsd.man.mk: maninstall
+#
+
+KMODLOAD?= /sbin/kldload
+KMODUNLOAD?= /sbin/kldunload
+
+.if !target(__initialized__)
+__initialized__:
+.if exists(${.CURDIR}/../Makefile.inc)
+.include "${.CURDIR}/../Makefile.inc"
+.endif
+.endif
+
+.SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S
+
+CFLAGS+= ${COPTS} -D_KERNEL ${CWARNFLAGS}
+CFLAGS+= -DKLD_MODULE
+
+# Don't use any standard or source-relative include directories.
+# Since -nostdinc will annull any previous -I paths, we repeat all
+# such paths after -nostdinc. It doesn't seem to be possible to
+# add to the front of `make' variable.
+_ICFLAGS:= ${CFLAGS:M-I*}
+CFLAGS+= -nostdinc -I- ${_ICFLAGS}
+
+# Add -I paths for system headers. Individual KLD makefiles don't
+# need any -I paths for this. Similar defaults for .PATH can't be
+# set because there are no standard paths for non-headers.
+CFLAGS+= -I. -I@
+
+# Add a -I path to standard headers like <stddef.h>. Use a relative
+# path to src/include if possible. If the @ symlink hasn't been built
+# yet, then we can't tell if the relative path exists. Add both the
+# potential relative path and an absolute path in that case.
+.if exists(@)
+.if exists(@/../include)
+CFLAGS+= -I@/../include
+.else
+CFLAGS+= -I${DESTDIR}/usr/include
+.endif
+.else # !@
+CFLAGS+= -I@/../include -I${DESTDIR}/usr/include
+.endif # @
+
+CFLAGS+= ${DEBUG_FLAGS}
+
+.if ${OBJFORMAT} == elf
+CLEANFILES+= setdef0.c setdef1.c setdefs.h
+CLEANFILES+= setdef0.o setdef1.o
+.endif
+
+OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
+
+.if !defined(PROG)
+PROG= ${KMOD}.ko
+.endif
+
+${PROG}: ${KMOD}.kld
+.if ${OBJFORMAT} == elf
+ gensetdefs ${KMOD}.kld
+ ${CC} ${CFLAGS} -c setdef0.c
+ ${CC} ${CFLAGS} -c setdef1.c
+ ${LD} -Bshareable ${LDFLAGS} -o ${.TARGET} setdef0.o ${KMOD}.kld setdef1.o
+.else
+ ${LD} -Bshareable ${LDFLAGS} -o ${.TARGET} ${KMOD}.kld
+.endif
+
+${KMOD}.kld: ${OBJS}
+ ${LD} ${LDFLAGS} -r -o ${.TARGET} ${OBJS}
+
+.if !defined(NOMAN)
+.include <bsd.man.mk>
+.if !defined(_MANPAGES) || empty(_MANPAGES)
+MAN1= ${KMOD}.4
+.endif
+
+.elif !target(maninstall)
+maninstall: _SUBDIR
+all-man:
+.endif
+
+_ILINKS=@ machine
+
+.MAIN: all
+all: objwarn ${PROG} all-man _SUBDIR
+
+beforedepend ${OBJS}: ${_ILINKS}
+
+# Search for kernel source tree in standard places.
+.for _dir in ${.CURDIR}/../.. ${.CURDIR}/../../.. /sys /usr/src/sys
+.if !defined(SYSDIR) && exists(${_dir}/kern/)
+SYSDIR= ${_dir}
+.endif
+.endfor
+.if !defined(SYSDIR) || !exists(${SYSDIR}/kern/)
+.error "can't find kernel source tree"
+.endif
+
+${_ILINKS}:
+ @case ${.TARGET} in \
+ machine) \
+ path=${SYSDIR}/${MACHINE_ARCH}/include ;; \
+ @) \
+ path=${SYSDIR} ;; \
+ esac ; \
+ path=`(cd $$path && /bin/pwd)` ; \
+ ${ECHO} ${.TARGET} "->" $$path ; \
+ ln -s $$path ${.TARGET}
+
+CLEANFILES+= ${PROG} ${KMOD}.kld ${OBJS} ${_ILINKS} symb.tmp tmp.o
+
+.if !target(install)
+.if !target(beforeinstall)
+beforeinstall:
+.endif
+.if !target(afterinstall)
+afterinstall:
+.endif
+
+_INSTALLFLAGS:= ${INSTALLFLAGS}
+.for ie in ${INSTALLFLAGS_EDIT}
+_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
+.endfor
+
+realinstall: _SUBDIR
+ ${INSTALL} ${COPY} -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \
+ ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${KMODDIR}
+.if defined(LINKS) && !empty(LINKS)
+ @set ${LINKS}; \
+ while test $$# -ge 2; do \
+ l=${DESTDIR}$$1; \
+ shift; \
+ t=${DESTDIR}$$1; \
+ shift; \
+ ${ECHO} $$t -\> $$l; \
+ ln -f $$l $$t; \
+ done; true
+.endif
+.if defined(SYMLINKS) && !empty(SYMLINKS)
+ @set ${SYMLINKS}; \
+ while test $$# -ge 2; do \
+ l=$$1; \
+ shift; \
+ t=${DESTDIR}$$1; \
+ shift; \
+ ${ECHO} $$t -\> $$l; \
+ ln -fs $$l $$t; \
+ done; true
+.endif
+
+install: afterinstall _SUBDIR
+.if !defined(NOMAN)
+afterinstall: realinstall maninstall
+.else
+afterinstall: realinstall
+.endif
+realinstall: beforeinstall
+.endif
+
+DISTRIBUTION?= bin
+.if !target(distribute)
+distribute: _SUBDIR
+.for dist in ${DISTRIBUTION}
+ cd ${.CURDIR} ; $(MAKE) install DESTDIR=${DISTDIR}/${dist} SHARED=copies
+.endfor
+.endif
+
+.if !target(load)
+load: ${PROG}
+ ${KMODLOAD} -v ./${KMOD}.ko
+.endif
+
+.if !target(unload)
+unload:
+ ${KMODUNLOAD} -v ${KMOD}
+.endif
+
+.for _src in ${SRCS:Mopt_*.h}
+CLEANFILES+= ${_src}
+.if !target(${_src})
+${_src}:
+ touch ${.TARGET}
+.endif
+.endfor
+
+MFILES?= kern/bus_if.m kern/device_if.m dev/iicbus/iicbb_if.m \
+ dev/iicbus/iicbus_if.m isa/isa_if.m dev/mii/miibus_if.m \
+ dev/pccard/card_if.m dev/pccard/power_if.m pci/pci_if.m \
+ dev/ppbus/ppbus_if.m dev/smbus/smbus_if.m dev/usb/usb_if.m
+
+.for _srcsrc in ${MFILES}
+.for _ext in c h
+.for _src in ${SRCS:M${_srcsrc:T:R}.${_ext}}
+CLEANFILES+= ${_src}
+.if !target(${_src})
+${_src}: @
+.if exists(@)
+${_src}: @/kern/makeobjops.pl @/${_srcsrc}
+.endif
+ perl @/kern/makeobjops.pl -${_ext} @/${_srcsrc}
+.endif
+.endfor # _src
+.endfor # _ext
+.endfor # _srcsrc
+
+.for _ext in c h
+.if ${SRCS:Mvnode_if.${_ext}} != ""
+CLEANFILES+= vnode_if.${_ext}
+vnode_if.${_ext}: @
+.if exists(@)
+vnode_if.${_ext}: @/kern/vnode_if.pl @/kern/vnode_if.src
+.endif
+ perl @/kern/vnode_if.pl -${_ext} @/kern/vnode_if.src
+.endif
+.endfor
+
+regress:
+
+.include <bsd.dep.mk>
+
+.if !exists(${DEPENDFILE})
+${OBJS}: ${SRCS:M*.h}
+.endif
+
+.include <bsd.obj.mk>
+
+.include <bsd.kern.mk>
diff --git a/sys/dev/ispfw/MAINTAINER b/sys/dev/ispfw/MAINTAINER
new file mode 100644
index 000000000000..bc6164b5de5c
--- /dev/null
+++ b/sys/dev/ispfw/MAINTAINER
@@ -0,0 +1,2 @@
+$FreeBSD$
+MAINTAINER = mjacob@freebsd.org
diff --git a/sys/dev/ispfw/asm_1040.h b/sys/dev/ispfw/asm_1040.h
new file mode 100644
index 000000000000..4f8bca2ca664
--- /dev/null
+++ b/sys/dev/ispfw/asm_1040.h
@@ -0,0 +1,3527 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (C) 1995, 1996, 1997, 1998, 1999 Qlogic, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted provided
+ * that the following conditions are met:
+ * 1. Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/************************************************************************
+ * *
+ * --- ISP1040 Initiator Firmware --- *
+ * 32 LUN Support *
+ * *
+ ************************************************************************/
+/*
+ * Firmware Version 4.65.00 (10:45 Aug 09, 1999)
+ */
+static const u_int16_t isp_1040_risc_code[] = {
+ 0x0078, 0x1041, 0x0000, 0x2c56, 0x0000, 0x2043, 0x4f50, 0x5952,
+ 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932, 0x2c31,
+ 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749, 0x4320,
+ 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049, 0x5350,
+ 0x3130, 0x3230, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056,
+ 0x6572, 0x7369, 0x6f6e, 0x2030, 0x342e, 0x3635, 0x2020, 0x2043,
+ 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, 0x3030, 0x2050,
+ 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, 0x3030, 0x2020,
+ 0x2400, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x0048, 0x104c,
+ 0x0038, 0x1052, 0x0078, 0x104e, 0x0028, 0x1052, 0x20b9, 0x1212,
+ 0x0078, 0x1054, 0x20b9, 0x1313, 0x2071, 0x0010, 0x70c3, 0x0004,
+ 0x20c9, 0x62ff, 0x2089, 0x1185, 0x70c7, 0x4953, 0x70cb, 0x5020,
+ 0x70cf, 0x2020, 0x70d3, 0x0004, 0x3f00, 0x70d6, 0x20c1, 0x0008,
+ 0x2019, 0x0000, 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, 0xa1ec,
+ 0x7fff, 0x2d64, 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, 0x205b,
+ 0x5050, 0x2114, 0xa286, 0xa5a5, 0x0040, 0x10c4, 0xa386, 0x000f,
+ 0x0040, 0x108a, 0x2c6a, 0x2a5a, 0x20c1, 0x0000, 0x2019, 0x000f,
+ 0x0078, 0x106a, 0x2c6a, 0x2a5a, 0x20c1, 0x0008, 0x2009, 0x7fff,
+ 0x2148, 0x2944, 0x204b, 0x0a0a, 0xa9bc, 0x3fff, 0x2734, 0x203b,
+ 0x5050, 0x2114, 0xa286, 0x0a0a, 0x0040, 0x10ae, 0x284a, 0x263a,
+ 0x20c1, 0x0004, 0x2009, 0x3fff, 0x2134, 0x200b, 0x5050, 0x2114,
+ 0xa286, 0x5050, 0x0040, 0x10af, 0x0078, 0x118d, 0x284a, 0x263a,
+ 0x98c0, 0xa188, 0x1000, 0x212c, 0x200b, 0xa5a5, 0x2114, 0xa286,
+ 0xa5a5, 0x0040, 0x10c1, 0x250a, 0xa18a, 0x1000, 0x98c1, 0x0078,
+ 0x10c6, 0x250a, 0x0078, 0x10c6, 0x2c6a, 0x2a5a, 0x2130, 0xa18a,
+ 0x0040, 0x2128, 0xa1a2, 0x3d00, 0x8424, 0x8424, 0x8424, 0x8424,
+ 0x8424, 0x8424, 0xa192, 0x6300, 0x2009, 0x0000, 0x2001, 0x002f,
+ 0x1078, 0x1ba0, 0x2218, 0x2079, 0x3d00, 0x2fa0, 0x2408, 0x2011,
+ 0x0000, 0x20a9, 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10e1, 0x7ee6,
+ 0x8528, 0x7dda, 0x7cde, 0x7be2, 0x787b, 0x0000, 0x2031, 0x0030,
+ 0x78c3, 0x0101, 0x780b, 0x0002, 0x780f, 0x0002, 0x784f, 0x0003,
+ 0x7803, 0x0002, 0x2069, 0x3d40, 0x2001, 0x04fd, 0x2004, 0xa082,
+ 0x0005, 0x0048, 0x1107, 0x0038, 0x1109, 0x0078, 0x110d, 0x00a8,
+ 0x110d, 0x681b, 0x003c, 0x0078, 0x110f, 0x681b, 0x0028, 0x6807,
+ 0x0007, 0x680b, 0x00fa, 0x680f, 0x0008, 0x6813, 0x0005, 0x681f,
+ 0x0000, 0x6823, 0x0006, 0x6817, 0x0008, 0x6827, 0x0000, 0x2069,
+ 0x3f80, 0x2011, 0x0020, 0x2009, 0x0010, 0x680b, 0x0c19, 0x680f,
+ 0x0019, 0x6803, 0xfd00, 0x6807, 0x0018, 0x6a1a, 0x2d00, 0xa0e8,
+ 0x0008, 0xa290, 0x0004, 0x8109, 0x00c0, 0x1125, 0x2069, 0x4000,
+ 0x2009, 0x0002, 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, 0x0040,
+ 0x7be4, 0xa386, 0xfeff, 0x00c0, 0x114b, 0x6817, 0x0100, 0x681f,
+ 0x0064, 0x0078, 0x114f, 0x6817, 0x0064, 0x681f, 0x0002, 0xade8,
+ 0x0010, 0x0070, 0x1155, 0x0078, 0x113c, 0x8109, 0x00c0, 0x113a,
+ 0x1078, 0x1ef7, 0x1078, 0x3735, 0x1078, 0x19b7, 0x1078, 0x3bed,
+ 0x3200, 0xa085, 0x000d, 0x2090, 0x70c3, 0x0000, 0x0090, 0x116f,
+ 0x70c0, 0xa086, 0x0002, 0x00c0, 0x116f, 0x1078, 0x12a4, 0x1078,
+ 0x11b6, 0x78c0, 0xa005, 0x00c0, 0x117b, 0x1078, 0x1bc9, 0x0068,
+ 0x117f, 0x1078, 0x1e1b, 0x0068, 0x117f, 0x1078, 0x1ab6, 0x00e0,
+ 0x116f, 0x1078, 0x3a64, 0x0078, 0x116f, 0x118d, 0x1192, 0x20bb,
+ 0x20bb, 0x37af, 0x37af, 0x20bb, 0x20bb, 0x0088, 0x118d, 0x2091,
+ 0x8001, 0x007c, 0x0088, 0x1192, 0x2091, 0x8001, 0x007c, 0x0078,
+ 0x1197, 0x0078, 0x1199, 0x2009, 0x0022, 0x2104, 0xa086, 0x4000,
+ 0x0040, 0x11b1, 0x7008, 0x800b, 0x00c8, 0x11b1, 0x7007, 0x0002,
+ 0xa08c, 0x01e0, 0x00c0, 0x11b2, 0xa084, 0x0008, 0x0040, 0x11b1,
+ 0x087a, 0x097a, 0x70c3, 0x4002, 0x0078, 0x12a7, 0x0068, 0x1221,
+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x1221, 0x7814,
+ 0xa005, 0x00c0, 0x11c7, 0x0010, 0x1222, 0x0078, 0x1221, 0x2009,
+ 0x3d68, 0x2104, 0xa005, 0x00c0, 0x1221, 0x2009, 0x3d71, 0x200b,
+ 0x0000, 0x7914, 0xa186, 0x0042, 0x00c0, 0x11ec, 0x7816, 0x2009,
+ 0x3d6f, 0x2164, 0x200b, 0x0000, 0x6018, 0x70c6, 0x6014, 0x70ca,
+ 0x611c, 0xa18c, 0xff00, 0x6020, 0xa084, 0x00ff, 0xa105, 0x70ce,
+ 0x1078, 0x19a9, 0x0078, 0x121f, 0x7814, 0xa086, 0x0018, 0x00c0,
+ 0x11f3, 0x1078, 0x16ba, 0x7817, 0x0000, 0x2009, 0x3d6f, 0x2104,
+ 0xa065, 0x0040, 0x120f, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x1a07,
+ 0x0c7f, 0x609f, 0x0000, 0x1078, 0x17a0, 0x2009, 0x0018, 0x6087,
+ 0x0103, 0x1078, 0x1930, 0x00c0, 0x121b, 0x1078, 0x19a9, 0x2009,
+ 0x3d6f, 0x200b, 0x0000, 0x2009, 0x3d69, 0x2104, 0x200b, 0x0000,
+ 0xa005, 0x0040, 0x121f, 0x2001, 0x4005, 0x0078, 0x12a6, 0x0078,
+ 0x12a4, 0x007c, 0x70c3, 0x0000, 0x70c7, 0x0000, 0x70cb, 0x0000,
+ 0x70cf, 0x0000, 0x70c0, 0xa0bc, 0xffc0, 0x00c0, 0x1272, 0x2038,
+ 0x0079, 0x1232, 0x12a4, 0x12ff, 0x12c3, 0x12ff, 0x1368, 0x1368,
+ 0x12ba, 0x17b8, 0x1373, 0x12b2, 0x12c7, 0x12c9, 0x12cb, 0x12cd,
+ 0x17bd, 0x12b2, 0x1385, 0x13bc, 0x16d2, 0x17b2, 0x12cf, 0x15e7,
+ 0x1609, 0x1627, 0x1654, 0x15a0, 0x15ae, 0x15c2, 0x15d6, 0x143b,
+ 0x12b2, 0x13e9, 0x13ef, 0x13f4, 0x13f9, 0x13ff, 0x1404, 0x1409,
+ 0x140e, 0x1413, 0x1417, 0x142c, 0x1438, 0x12b2, 0x12b2, 0x12b2,
+ 0x12b2, 0x1447, 0x1450, 0x145f, 0x1485, 0x148f, 0x1496, 0x14d6,
+ 0x14e5, 0x14f4, 0x1506, 0x1580, 0x1590, 0x12b2, 0x12b2, 0x12b2,
+ 0x12b2, 0x1595, 0xa0bc, 0xffa0, 0x00c0, 0x12b2, 0x2038, 0xa084,
+ 0x001f, 0x0079, 0x127b, 0x17d4, 0x17d7, 0x17e7, 0x188c, 0x18c5,
+ 0x1901, 0x191e, 0x1873, 0x12b2, 0x12b2, 0x1922, 0x192a, 0x12b2,
+ 0x12b2, 0x12b2, 0x12b2, 0x12f5, 0x135e, 0x137b, 0x13b2, 0x16c8,
+ 0x12b2, 0x12b2, 0x12b2, 0x12b2, 0x12b2, 0x18dd, 0x18e7, 0x18eb,
+ 0x18f9, 0x12b2, 0x12b2, 0x72ca, 0x71c6, 0x2001, 0x4006, 0x0078,
+ 0x12a6, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0068,
+ 0x12a7, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x2091,
+ 0x4080, 0x007c, 0x70c3, 0x4001, 0x0078, 0x12a7, 0x70c3, 0x4006,
+ 0x0078, 0x12a7, 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005,
+ 0x53a3, 0x0078, 0x12a4, 0x70c4, 0x70c3, 0x0004, 0x007a, 0x0078,
+ 0x12a4, 0x0078, 0x12a4, 0x0078, 0x12a4, 0x0078, 0x12a4, 0x2091,
+ 0x8000, 0x70c3, 0x0000, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf,
+ 0x2020, 0x70d3, 0x0004, 0x3f00, 0x70d6, 0x2079, 0x0000, 0x781b,
+ 0x0001, 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, 0x0457, 0x2051,
+ 0x0470, 0x2061, 0x0472, 0x20b9, 0xffff, 0x20c1, 0x0000, 0x2091,
+ 0x5000, 0x2091, 0x4080, 0x0078, 0x0455, 0x1078, 0x1b23, 0x00c0,
+ 0x12b6, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1302, 0x2029,
+ 0x0000, 0x2520, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x20a0, 0x2098,
+ 0x2031, 0x0030, 0x81ff, 0x0040, 0x12a4, 0x7007, 0x0004, 0x731a,
+ 0x721e, 0x7422, 0x7526, 0x2051, 0x0012, 0x2049, 0x133d, 0x2041,
+ 0x12a4, 0x7003, 0x0002, 0xa786, 0x0001, 0x0040, 0x1325, 0xa786,
+ 0x0050, 0x0040, 0x1325, 0x0078, 0x132b, 0x2049, 0x134a, 0x2041,
+ 0x1356, 0x7003, 0x0003, 0x7017, 0x0000, 0x810b, 0x7112, 0x00c8,
+ 0x1333, 0x7017, 0x0001, 0x7007, 0x0001, 0xa786, 0x0001, 0x0040,
+ 0x134a, 0xa786, 0x0050, 0x0040, 0x134a, 0x700c, 0xa084, 0x007f,
+ 0x2009, 0x0040, 0xa102, 0x8004, 0x094a, 0x20a8, 0x26a0, 0x53a6,
+ 0x0078, 0x119b, 0x700c, 0xa084, 0x007f, 0x0040, 0x134a, 0x80ac,
+ 0x0048, 0x134a, 0x2698, 0x53a5, 0x0078, 0x119b, 0x700c, 0xa084,
+ 0x007f, 0x80ac, 0x2698, 0x53a5, 0x0078, 0x12a4, 0x1078, 0x1b23,
+ 0x00c0, 0x12b6, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1302,
+ 0x71c4, 0x70c8, 0x2114, 0xa79e, 0x0004, 0x00c0, 0x1370, 0x200a,
+ 0x72ca, 0x0078, 0x12a3, 0x70c7, 0x0004, 0x70cb, 0x0041, 0x70cf,
+ 0x0000, 0x0078, 0x12a4, 0x1078, 0x1b23, 0x00c0, 0x12b6, 0x75d8,
+ 0x76dc, 0x75da, 0x76de, 0x0078, 0x1388, 0x2029, 0x0000, 0x2530,
+ 0x70c4, 0x72c8, 0x73cc, 0x74d0, 0x70c6, 0x72ca, 0x73ce, 0x74d2,
+ 0xa005, 0x0040, 0x13ac, 0x8001, 0x788a, 0xa084, 0xfc00, 0x0040,
+ 0x13a1, 0x78c0, 0xa085, 0x0001, 0x78c2, 0x2001, 0x4005, 0x0078,
+ 0x12a6, 0x7a92, 0x7b96, 0x7d9a, 0x7e9e, 0x7c8e, 0x78c0, 0xa084,
+ 0xfffc, 0x78c2, 0x0078, 0x13b0, 0x78c0, 0xa085, 0x0001, 0x78c2,
+ 0x0078, 0x12a4, 0x1078, 0x1b23, 0x00c0, 0x12b6, 0x75d8, 0x76dc,
+ 0x75da, 0x76de, 0x0078, 0x13bf, 0x2029, 0x0000, 0x2530, 0x70c4,
+ 0x72c8, 0x73cc, 0x74d4, 0x70c6, 0x72ca, 0x73ce, 0x74d6, 0xa005,
+ 0x0040, 0x13e3, 0x8001, 0x78a6, 0xa084, 0xfc00, 0x0040, 0x13d8,
+ 0x78c0, 0xa085, 0x0100, 0x78c2, 0x2001, 0x4005, 0x0078, 0x12a6,
+ 0x7aae, 0x7bb2, 0x7db6, 0x7eba, 0x7caa, 0x78c0, 0xa084, 0xfcff,
+ 0x78c2, 0x0078, 0x13e7, 0x78c0, 0xa085, 0x0100, 0x78c2, 0x0078,
+ 0x12a4, 0x2009, 0x3d5f, 0x210c, 0x7ae0, 0x0078, 0x12a2, 0x2009,
+ 0x3d41, 0x210c, 0x0078, 0x12a3, 0x2009, 0x3d42, 0x210c, 0x0078,
+ 0x12a3, 0x2061, 0x3d40, 0x610c, 0x6210, 0x0078, 0x12a2, 0x2009,
+ 0x3d45, 0x210c, 0x0078, 0x12a3, 0x2009, 0x3d46, 0x210c, 0x0078,
+ 0x12a3, 0x2009, 0x3d47, 0x210c, 0x0078, 0x12a3, 0x2009, 0x3d48,
+ 0x210c, 0x0078, 0x12a3, 0x7908, 0x7a0c, 0x0078, 0x12a2, 0x71c4,
+ 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, 0x3f80,
+ 0x6a00, 0x6804, 0xa084, 0x0008, 0x0040, 0x1429, 0x6b08, 0x0078,
+ 0x142a, 0x6b0c, 0x0078, 0x12a1, 0x77c4, 0x1078, 0x19c7, 0x2091,
+ 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, 0x0078, 0x12a1,
+ 0x794c, 0x0078, 0x12a3, 0x77c4, 0x1078, 0x19c7, 0x2091, 0x8000,
+ 0x6908, 0x6a18, 0x6b10, 0x2091, 0x8001, 0x0078, 0x12a1, 0x71c4,
+ 0xa182, 0x0010, 0x00c8, 0x129c, 0x1078, 0x1f8e, 0x0078, 0x12a1,
+ 0x71c4, 0xa182, 0x0010, 0x00c8, 0x129c, 0x2011, 0x3d41, 0x2204,
+ 0x007e, 0x2112, 0x1078, 0x1f47, 0x017f, 0x0078, 0x12a3, 0x71c4,
+ 0x2011, 0x147d, 0x20a9, 0x0008, 0x2204, 0xa106, 0x0040, 0x146f,
+ 0x8210, 0x0070, 0x146d, 0x0078, 0x1464, 0x0078, 0x129c, 0xa292,
+ 0x147d, 0x027e, 0x2011, 0x3d42, 0x2204, 0x2112, 0x017f, 0x007e,
+ 0x1078, 0x1f53, 0x017f, 0x0078, 0x12a3, 0x03e8, 0x00fa, 0x01f4,
+ 0x02ee, 0x0064, 0x0019, 0x0032, 0x004b, 0x2061, 0x3d40, 0x610c,
+ 0x6210, 0x70c4, 0x600e, 0x70c8, 0x6012, 0x0078, 0x12a2, 0x2061,
+ 0x3d40, 0x6114, 0x70c4, 0x6016, 0x0078, 0x12a3, 0x71c4, 0x2011,
+ 0x0004, 0x2019, 0x1212, 0xa186, 0x0028, 0x0040, 0x14af, 0x2011,
+ 0x0005, 0x2019, 0x1212, 0xa186, 0x0032, 0x0040, 0x14af, 0x2011,
+ 0x0006, 0x2019, 0x1313, 0xa186, 0x003c, 0x00c0, 0x129c, 0x2061,
+ 0x3d40, 0x6018, 0x007e, 0x611a, 0x7800, 0xa084, 0x0001, 0x00c0,
+ 0x14cc, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x0048, 0x14c4,
+ 0x0038, 0x14c8, 0x0078, 0x14cc, 0x0028, 0x14c8, 0x0078, 0x14cc,
+ 0x2019, 0x1313, 0x0078, 0x14ce, 0x2019, 0x1212, 0x23b8, 0x1078,
+ 0x1f64, 0x1078, 0x3bed, 0x017f, 0x0078, 0x12a3, 0x71c4, 0xa184,
+ 0xffcf, 0x00c0, 0x129c, 0x2011, 0x3d47, 0x2204, 0x2112, 0x007e,
+ 0x1078, 0x1f86, 0x017f, 0x0078, 0x12a3, 0x71c4, 0xa182, 0x0010,
+ 0x00c8, 0x129c, 0x2011, 0x3d48, 0x2204, 0x007e, 0x2112, 0x1078,
+ 0x1f75, 0x017f, 0x0078, 0x12a3, 0x71c4, 0x72c8, 0xa184, 0xfffd,
+ 0x00c0, 0x129b, 0xa284, 0xfffd, 0x00c0, 0x129b, 0x2100, 0x7908,
+ 0x780a, 0x2200, 0x7a0c, 0x780e, 0x0078, 0x12a2, 0x71c4, 0x8107,
+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, 0x3f80, 0x2019,
+ 0x0000, 0x72c8, 0xa284, 0x0080, 0x0040, 0x151c, 0x6c14, 0x84ff,
+ 0x00c0, 0x151c, 0x6817, 0x0040, 0xa284, 0x0040, 0x0040, 0x1526,
+ 0x6c10, 0x84ff, 0x00c0, 0x1526, 0x6813, 0x0001, 0x6800, 0x007e,
+ 0xa226, 0x0040, 0x1549, 0x6a02, 0xa484, 0x2000, 0x0040, 0x1532,
+ 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, 0x1538, 0xa39d, 0x0008,
+ 0xa484, 0x4000, 0x0040, 0x1549, 0x810f, 0xa284, 0x4000, 0x0040,
+ 0x1545, 0x1078, 0x1fa8, 0x0078, 0x1549, 0x1078, 0x1f9a, 0x0078,
+ 0x1549, 0x72cc, 0x6808, 0xa206, 0x0040, 0x1578, 0xa2a4, 0x00ff,
+ 0x2061, 0x3d40, 0x6118, 0xa186, 0x0028, 0x0040, 0x155f, 0xa186,
+ 0x0032, 0x0040, 0x1565, 0xa186, 0x003c, 0x0040, 0x156b, 0xa482,
+ 0x0064, 0x0048, 0x1575, 0x0078, 0x156f, 0xa482, 0x0050, 0x0048,
+ 0x1575, 0x0078, 0x156f, 0xa482, 0x0043, 0x0048, 0x1575, 0x71c4,
+ 0x71c6, 0x027f, 0x72ca, 0x0078, 0x129d, 0x6a0a, 0xa39d, 0x000a,
+ 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x71c4, 0x0078, 0x12a1,
+ 0x77c4, 0x1078, 0x19c7, 0x2091, 0x8000, 0x6a14, 0x6b1c, 0x2091,
+ 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e, 0x2708, 0x0078, 0x12a1,
+ 0x70c4, 0x794c, 0x784e, 0x0078, 0x12a3, 0x71c4, 0x72c8, 0x73cc,
+ 0xa182, 0x0010, 0x00c8, 0x129c, 0x1078, 0x1fb6, 0x0078, 0x12a1,
+ 0x77c4, 0x1078, 0x19c7, 0x2091, 0x8000, 0x6a08, 0xa295, 0x0002,
+ 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, 0x12a2, 0x77c4, 0x1078,
+ 0x19c7, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9, 0x6a0a, 0x6804,
+ 0xa005, 0x0040, 0x15bd, 0x1078, 0x1edc, 0x2091, 0x8001, 0x2708,
+ 0x0078, 0x12a2, 0x77c4, 0x1078, 0x19c7, 0x2091, 0x8000, 0x6a08,
+ 0xa295, 0x0004, 0x6a0a, 0x6804, 0xa005, 0x0040, 0x15d1, 0x1078,
+ 0x1edc, 0x2091, 0x8001, 0x2708, 0x0078, 0x12a2, 0x77c4, 0x2041,
+ 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078,
+ 0x19d4, 0x2091, 0x8001, 0x2708, 0x6a08, 0x0078, 0x12a2, 0x77c4,
+ 0x73c8, 0x72cc, 0x77c6, 0x73ca, 0x72ce, 0x1078, 0x1a4f, 0x00c0,
+ 0x1605, 0x6818, 0xa005, 0x0040, 0x15ff, 0x2708, 0x1078, 0x1fc6,
+ 0x00c0, 0x15ff, 0x7817, 0x0015, 0x2091, 0x8001, 0x007c, 0x2091,
+ 0x8001, 0x2001, 0x4005, 0x0078, 0x12a6, 0x2091, 0x8001, 0x0078,
+ 0x12a4, 0x77c4, 0x77c6, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051,
+ 0x0020, 0x2091, 0x8000, 0x1078, 0x19d4, 0x2061, 0x3d40, 0x60a3,
+ 0x0003, 0x67b6, 0x60c7, 0x000f, 0x60a7, 0x0000, 0x7817, 0x0016,
+ 0x2091, 0x8000, 0x1078, 0x1edc, 0x2091, 0x8001, 0x007c, 0x77c8,
+ 0x77ca, 0x77c4, 0x77c6, 0xa7bc, 0xff00, 0x2091, 0x8000, 0x2061,
+ 0x3d40, 0x60a3, 0x0002, 0x60a7, 0x0000, 0x67b6, 0x60c7, 0x000f,
+ 0x7817, 0x0017, 0x2091, 0x8000, 0x1078, 0x1edc, 0x2091, 0x8001,
+ 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x2091, 0x8000,
+ 0x1078, 0x19d4, 0x70c8, 0x6836, 0x8738, 0xa784, 0x001f, 0x00c0,
+ 0x1648, 0x2091, 0x8001, 0x007c, 0x78c0, 0xa084, 0x0003, 0x00c0,
+ 0x1678, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051,
+ 0x0008, 0x1078, 0x19c7, 0x2091, 0x8000, 0x6808, 0xa80d, 0x690a,
+ 0x2091, 0x8001, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1661, 0xa7bc,
+ 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1661,
+ 0x2091, 0x8000, 0x2069, 0x0100, 0x6830, 0xa084, 0x0040, 0x0040,
+ 0x16a1, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0004,
+ 0x0040, 0x168e, 0x0070, 0x168e, 0x0078, 0x1685, 0x684b, 0x0009,
+ 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040, 0x169b, 0x0070,
+ 0x169b, 0x0078, 0x1692, 0x20a9, 0x00fa, 0x0070, 0x16a1, 0x0078,
+ 0x169d, 0x2079, 0x3d00, 0x7817, 0x0018, 0x2061, 0x3d40, 0x60a3,
+ 0x0001, 0x60a7, 0x0000, 0x60c7, 0x000f, 0x78c0, 0xa085, 0x0002,
+ 0x78c2, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b, 0x0047, 0x2091,
+ 0x8001, 0x007c, 0x78c0, 0xa084, 0xfffd, 0x78c2, 0xa084, 0x0001,
+ 0x00c0, 0x16c4, 0x1078, 0x1a99, 0x71c4, 0x71c6, 0x794a, 0x007c,
+ 0x1078, 0x1b23, 0x00c0, 0x12b6, 0x75d8, 0x74dc, 0x75da, 0x74de,
+ 0x0078, 0x16d5, 0x2029, 0x0000, 0x2520, 0x71c4, 0x73c8, 0x72cc,
+ 0x71c6, 0x73ca, 0x72ce, 0x2079, 0x3d00, 0x1078, 0x19a0, 0x0040,
+ 0x179c, 0x20a9, 0x0005, 0x20a1, 0x3d16, 0x2091, 0x8000, 0x41a1,
+ 0x2091, 0x8001, 0x2009, 0x0040, 0x1078, 0x196a, 0x0040, 0x16f4,
+ 0x1078, 0x19a9, 0x0078, 0x179c, 0x6004, 0xa08c, 0x00ff, 0xa18e,
+ 0x0009, 0x00c0, 0x16ff, 0x007e, 0x1078, 0x1dfe, 0x007f, 0xa084,
+ 0xff00, 0x8007, 0x8009, 0x0040, 0x176a, 0x0c7e, 0x2c68, 0x1078,
+ 0x19a0, 0x0040, 0x1739, 0x2c00, 0x689e, 0x8109, 0x00c0, 0x1706,
+ 0x609f, 0x0000, 0x0c7f, 0x0c7e, 0x7218, 0x731c, 0x7420, 0x7524,
+ 0x2c68, 0x689c, 0xa065, 0x0040, 0x1769, 0x2009, 0x0040, 0x1078,
+ 0x196a, 0x00c0, 0x1752, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0002,
+ 0x00c0, 0x1739, 0x6004, 0xa084, 0x00ff, 0xa086, 0x000a, 0x00c0,
+ 0x1735, 0x017e, 0x1078, 0x1dfa, 0x017f, 0x2d00, 0x6002, 0x0078,
+ 0x1714, 0x0c7f, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x1a07, 0x0c7f,
+ 0x609f, 0x0000, 0x1078, 0x17a0, 0x2009, 0x0018, 0x6008, 0xa085,
+ 0x0200, 0x600a, 0x6004, 0x6086, 0x1078, 0x1930, 0x1078, 0x19a9,
+ 0x0078, 0x179c, 0x0c7f, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x1a07,
+ 0x0c7f, 0x609f, 0x0000, 0x1078, 0x17a0, 0x2009, 0x0018, 0x6087,
+ 0x0103, 0x601b, 0x0003, 0x1078, 0x1930, 0x1078, 0x19a9, 0x0078,
+ 0x179c, 0x0c7f, 0x74c4, 0x73c8, 0x72cc, 0x6014, 0x2091, 0x8000,
+ 0x7817, 0x0012, 0x0e7e, 0x2071, 0x3d40, 0x70a3, 0x0005, 0x70a7,
+ 0x0000, 0x73aa, 0x72ae, 0x74b2, 0x70b6, 0x70bb, 0x0000, 0x2c00,
+ 0x70be, 0x70c3, 0x0000, 0xa02e, 0x2530, 0x611c, 0xa184, 0x0060,
+ 0x0040, 0x178c, 0x1078, 0x36d9, 0x0e7f, 0x6596, 0x65a6, 0x669a,
+ 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000, 0x2091, 0x8000, 0x1078,
+ 0x1edc, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, 0x0078, 0x12a7,
+ 0x20a9, 0x0005, 0x2099, 0x3d16, 0x2091, 0x8000, 0x530a, 0x2091,
+ 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9,
+ 0x0000, 0x007c, 0x71c4, 0x70c7, 0x0000, 0x7906, 0x0078, 0x12a4,
+ 0x71c4, 0x71c6, 0x2168, 0x0078, 0x17bf, 0x2069, 0x1000, 0x690c,
+ 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x00c0, 0x17c1, 0xa285,
+ 0x0000, 0x00c0, 0x17cf, 0x70c3, 0x4000, 0x0078, 0x17d1, 0x70c3,
+ 0x4003, 0x70ca, 0x0078, 0x12a7, 0x79d8, 0x0078, 0x12a3, 0x71c4,
+ 0x71c6, 0x2198, 0x20a1, 0x0042, 0x20a9, 0x0004, 0x53a3, 0x21a0,
+ 0x2099, 0x0042, 0x20a9, 0x0004, 0x53a3, 0x0078, 0x12a4, 0x70c4,
+ 0x2068, 0x2079, 0x3d00, 0x1078, 0x19a0, 0x00c0, 0x17f3, 0x70c3,
+ 0x4005, 0x0078, 0x12a7, 0x6007, 0x0001, 0x600b, 0x0000, 0x602b,
+ 0x0000, 0x601b, 0x0006, 0x6a10, 0xa28c, 0x000f, 0xa284, 0x00f0,
+ 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0x6016, 0xa284, 0x0800,
+ 0x0040, 0x180e, 0x601b, 0x000a, 0x0078, 0x1814, 0xa284, 0x1000,
+ 0x0040, 0x1814, 0x601b, 0x000c, 0xa284, 0x0300, 0x0040, 0x181d,
+ 0x602b, 0x0001, 0x8004, 0x8004, 0x8004, 0xa085, 0x0001, 0x601e,
+ 0x6023, 0x0000, 0x6027, 0x0000, 0xa284, 0x0400, 0x0040, 0x182a,
+ 0x602b, 0x0000, 0x20a9, 0x0006, 0xac80, 0x000b, 0x20a0, 0xad80,
+ 0x0005, 0x2098, 0x53a3, 0xa284, 0x0300, 0x00c0, 0x183f, 0x6046,
+ 0x604a, 0x604e, 0x6052, 0x6096, 0x609a, 0x0078, 0x1849, 0x6800,
+ 0x6046, 0x6804, 0x604a, 0x6e08, 0x664e, 0x6d0c, 0x6552, 0x6596,
+ 0x669a, 0x6014, 0x2091, 0x8000, 0x7817, 0x0042, 0x2c08, 0x2061,
+ 0x3d40, 0x60a3, 0x0005, 0x60a7, 0x0000, 0x60ab, 0x0000, 0x60af,
+ 0x0000, 0x60b3, 0x0000, 0x60b6, 0x61be, 0xa284, 0x0400, 0x60c2,
+ 0x2091, 0x8001, 0x0e7e, 0x2071, 0x0020, 0x7007, 0x000a, 0x7007,
+ 0x0002, 0x7003, 0x0000, 0x0e7f, 0x2091, 0x8000, 0x1078, 0x1edc,
+ 0x2091, 0x8001, 0x007c, 0x70c4, 0x2068, 0x2079, 0x3d00, 0x1078,
+ 0x19a0, 0x0040, 0x1888, 0x6007, 0x0001, 0x600b, 0x0000, 0x602b,
+ 0x0000, 0x601b, 0x0006, 0x70c8, 0x6016, 0x6a10, 0x0078, 0x1806,
+ 0x70c3, 0x4005, 0x0078, 0x12a7, 0x78ec, 0xa005, 0x0040, 0x12b2,
+ 0x2091, 0x8000, 0x70c4, 0x800a, 0x2011, 0x0010, 0x810c, 0x0048,
+ 0x189e, 0x3a00, 0xa084, 0xfff7, 0x0078, 0x18a1, 0x3a00, 0xa085,
+ 0x0008, 0x20d0, 0x0005, 0x0005, 0xa084, 0xfffb, 0x20d0, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0xa085,
+ 0x0004, 0x20d0, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x8211, 0x00c0, 0x1896, 0x3a00, 0xa085, 0x0008,
+ 0x20d0, 0x2091, 0x8001, 0x0078, 0x12a4, 0x2011, 0x04fd, 0x2204,
+ 0xa082, 0x0004, 0x0048, 0x18d9, 0x78ef, 0x0001, 0x2009, 0xff01,
+ 0x200a, 0x2001, 0x000c, 0x20d8, 0x2001, 0x000c, 0x20d0, 0x0078,
+ 0x12a4, 0x2001, 0x4005, 0x0078, 0x12a6, 0x7978, 0x71c6, 0x71c4,
+ 0xa182, 0x0003, 0x00c8, 0x129c, 0x797a, 0x0078, 0x12a4, 0x7978,
+ 0x71c6, 0x0078, 0x12a4, 0x796c, 0x71c6, 0x71c4, 0x796e, 0x7970,
+ 0x71ca, 0x71c8, 0x7972, 0x7974, 0x71ce, 0x71cc, 0x7976, 0x0078,
+ 0x12a4, 0x796c, 0x71c6, 0x7970, 0x71ca, 0x7974, 0x71ce, 0x0078,
+ 0x12a4, 0x7900, 0x71c6, 0x71c4, 0x7902, 0x2001, 0x04fd, 0x2004,
+ 0xa082, 0x0005, 0x0048, 0x1910, 0x0038, 0x1912, 0x0078, 0x191c,
+ 0x00a8, 0x191c, 0xa18c, 0x0001, 0x00c0, 0x191a, 0x20b9, 0x1313,
+ 0x0078, 0x191c, 0x20b9, 0x1212, 0x0078, 0x12a4, 0x7900, 0x71c6,
+ 0x0078, 0x12a4, 0x2009, 0x3d79, 0x2104, 0x70c6, 0x70c4, 0x200a,
+ 0x0078, 0x12a4, 0x2009, 0x3d79, 0x2104, 0x70c6, 0x0078, 0x12a4,
+ 0x700c, 0xa084, 0x00ff, 0x0040, 0x193c, 0x7007, 0x0004, 0x7004,
+ 0xa084, 0x0004, 0x00c0, 0x1937, 0x7017, 0x0000, 0x7112, 0x721a,
+ 0x731e, 0x7422, 0x7526, 0xac80, 0x0001, 0x8108, 0x810c, 0x81a9,
+ 0x8098, 0x20a1, 0x0030, 0x6084, 0x20a2, 0x53a6, 0x780c, 0xa085,
+ 0x0000, 0x7002, 0x7007, 0x0001, 0x2009, 0x0022, 0x2104, 0xa084,
+ 0x4000, 0x00c0, 0x1954, 0x7108, 0x8103, 0x00c8, 0x1954, 0x7014,
+ 0xa005, 0x0040, 0x1954, 0x7007, 0x0002, 0xa184, 0x01e0, 0x7003,
+ 0x0000, 0x007c, 0x700c, 0xa084, 0x00ff, 0x0040, 0x1976, 0x7007,
+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x1971, 0x7017, 0x0000,
+ 0x7112, 0x721a, 0x7422, 0x7526, 0x731e, 0x2099, 0x0030, 0x8108,
+ 0x81ac, 0x780c, 0xa085, 0x0001, 0x7002, 0x7007, 0x0001, 0x2009,
+ 0x0022, 0x2104, 0xa084, 0x4000, 0x00c0, 0x1987, 0x7008, 0x800b,
+ 0x00c8, 0x1987, 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x199d,
+ 0xac80, 0x0001, 0x20a0, 0x53a5, 0xa006, 0x7003, 0x0000, 0x007c,
+ 0x7850, 0xa065, 0x0040, 0x19a8, 0x2c04, 0x7852, 0x2063, 0x0000,
+ 0x007c, 0x0f7e, 0x2079, 0x3d00, 0x7850, 0x2062, 0x2c00, 0xa005,
+ 0x00c0, 0x19b4, 0x1078, 0x209b, 0x7852, 0x0f7f, 0x007c, 0x2011,
+ 0x6300, 0x7a52, 0x7be0, 0x8319, 0x0040, 0x19c4, 0xa280, 0x002f,
+ 0x2012, 0x2010, 0x0078, 0x19bb, 0x2013, 0x0000, 0x007c, 0xa784,
+ 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, 0x8003,
+ 0xa105, 0xa0e8, 0x4000, 0x007c, 0x1078, 0x19c7, 0x2900, 0x682a,
+ 0x2a00, 0x682e, 0x6808, 0xa084, 0xffef, 0xa80d, 0x690a, 0x2009,
+ 0x3d4f, 0x210c, 0x6804, 0xa005, 0x0040, 0x19f1, 0xa116, 0x00c0,
+ 0x19f1, 0x2060, 0x6000, 0x6806, 0x017e, 0x200b, 0x0000, 0x0078,
+ 0x19f4, 0x2009, 0x0000, 0x017e, 0x6804, 0xa065, 0x0040, 0x1a03,
+ 0x6000, 0x6806, 0x1078, 0x1a14, 0x1078, 0x1b44, 0x6810, 0x8001,
+ 0x6812, 0x00c0, 0x19f4, 0x017f, 0x6902, 0x6906, 0x007c, 0xa065,
+ 0x0040, 0x1a13, 0x609c, 0x609f, 0x0000, 0x2008, 0x1078, 0x19a9,
+ 0x2100, 0x0078, 0x1a07, 0x007c, 0x6007, 0x0103, 0x608f, 0x0000,
+ 0x20a9, 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001, 0x0000, 0x40a4,
+ 0x6828, 0x601a, 0x682c, 0x6022, 0x007c, 0x0e7e, 0x2071, 0x3d40,
+ 0x7040, 0xa08c, 0x0200, 0x00c0, 0x1a33, 0xa088, 0x3d80, 0x2d0a,
+ 0x8000, 0x7042, 0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x3d40,
+ 0x2009, 0x3d80, 0x7240, 0x8221, 0x8211, 0x0048, 0x1a4d, 0x2104,
+ 0x8108, 0xad06, 0x00c0, 0x1a3c, 0x8119, 0x211e, 0x8108, 0x8318,
+ 0x8211, 0x00c8, 0x1a45, 0x7442, 0xa006, 0x0e7f, 0x007c, 0x1078,
+ 0x19c7, 0x2091, 0x8000, 0x6804, 0x781e, 0xa065, 0x0040, 0x1a98,
+ 0x0078, 0x1a60, 0x2c00, 0x781e, 0x6000, 0xa065, 0x0040, 0x1a98,
+ 0x6010, 0xa306, 0x00c0, 0x1a5a, 0x600c, 0xa206, 0x00c0, 0x1a5a,
+ 0x2c28, 0x2001, 0x3d4f, 0x2004, 0xac06, 0x00c0, 0x1a71, 0x0078,
+ 0x1a95, 0x6804, 0xac06, 0x00c0, 0x1a7f, 0x6000, 0x2060, 0x6806,
+ 0xa005, 0x00c0, 0x1a7f, 0x6803, 0x0000, 0x0078, 0x1a89, 0x6400,
+ 0x781c, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x1a89, 0x2c00,
+ 0x6802, 0x2560, 0x1078, 0x1a14, 0x601b, 0x0005, 0x6023, 0x0020,
+ 0x1078, 0x1b44, 0x6810, 0x8001, 0x6812, 0x2001, 0xffff, 0xa005,
+ 0x007c, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051,
+ 0x0008, 0x2091, 0x8000, 0x1078, 0x19d4, 0x8738, 0xa784, 0x001f,
+ 0x00c0, 0x1aa3, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784,
+ 0x0f00, 0x00c0, 0x1aa3, 0x2091, 0x8001, 0x007c, 0x2061, 0x0000,
+ 0x6018, 0xa084, 0x0001, 0x00c0, 0x1ac7, 0x2091, 0x8000, 0x78d4,
+ 0x78d7, 0x0000, 0x2091, 0x8001, 0xa005, 0x00c0, 0x1ac8, 0x007c,
+ 0xa08c, 0xfff0, 0x0040, 0x1ace, 0x1078, 0x209b, 0x0079, 0x1ad0,
+ 0x1ae0, 0x1ae3, 0x1ae9, 0x1aed, 0x1ae1, 0x1af1, 0x1ae1, 0x1af7,
+ 0x1afb, 0x1aff, 0x1b32, 0x1b36, 0x1ae1, 0x1ae1, 0x1ae1, 0x1ae1,
+ 0x007c, 0x1078, 0x209b, 0x1078, 0x1a99, 0x2001, 0x8001, 0x0078,
+ 0x1b3c, 0x2001, 0x8003, 0x0078, 0x1b3c, 0x2001, 0x8004, 0x0078,
+ 0x1b3c, 0x1078, 0x1a99, 0x2001, 0x8006, 0x0078, 0x1b3c, 0x2001,
+ 0x8008, 0x0078, 0x1b3c, 0x2001, 0x8009, 0x0078, 0x1b3c, 0x2091,
+ 0x8000, 0x2069, 0x3d40, 0x6800, 0xa086, 0x0000, 0x0040, 0x1b0d,
+ 0x2091, 0x8001, 0x78d7, 0x0009, 0x007c, 0x68b4, 0xa0bc, 0xff00,
+ 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x1078, 0x19d4,
+ 0x8738, 0xa784, 0x001f, 0x00c0, 0x1b16, 0x2091, 0x8001, 0x2001,
+ 0x800a, 0x0078, 0x1b3c, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0004,
+ 0x00c8, 0x1b2c, 0x0078, 0x1b2f, 0xa006, 0x0078, 0x1b31, 0xa085,
+ 0x0001, 0x007c, 0x2001, 0x800c, 0x0078, 0x1b3c, 0x1078, 0x1a99,
+ 0x2001, 0x800d, 0x0078, 0x1b3c, 0x70c2, 0x2061, 0x0000, 0x601b,
+ 0x0001, 0x2091, 0x4080, 0x007c, 0x6004, 0x6086, 0x2c08, 0x2063,
+ 0x0000, 0x787c, 0x8000, 0x787e, 0x7880, 0xa005, 0x7982, 0x0040,
+ 0x1b54, 0x2c02, 0x0078, 0x1b55, 0x7986, 0x007c, 0x0c7e, 0x2061,
+ 0x3d00, 0x6887, 0x0103, 0x2d08, 0x206b, 0x0000, 0x607c, 0x8000,
+ 0x607e, 0x6080, 0xa005, 0x6182, 0x0040, 0x1b69, 0x2d02, 0x0078,
+ 0x1b6a, 0x6186, 0x0c7f, 0x007c, 0x1078, 0x1b7d, 0x0040, 0x1b7c,
+ 0x0c7e, 0x609c, 0xa065, 0x0040, 0x1b77, 0x1078, 0x1a07, 0x0c7f,
+ 0x609f, 0x0000, 0x1078, 0x19a9, 0x007c, 0x7884, 0xa065, 0x0040,
+ 0x1b8f, 0x2091, 0x8000, 0x787c, 0x8001, 0x787e, 0x2c04, 0x7886,
+ 0xa005, 0x00c0, 0x1b8d, 0x7882, 0x8000, 0x2091, 0x8001, 0x007c,
+ 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, 0x1b99,
+ 0xa200, 0x0070, 0x1b9d, 0x0078, 0x1b94, 0x8086, 0x818e, 0x007c,
+ 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x1bc3, 0xa11a, 0x00c8,
+ 0x1bc3, 0x8213, 0x818d, 0x0048, 0x1bb4, 0xa11a, 0x00c8, 0x1bb5,
+ 0x0070, 0x1bbb, 0x0078, 0x1ba9, 0xa11a, 0x2308, 0x8210, 0x0070,
+ 0x1bbb, 0x0078, 0x1ba9, 0x007e, 0x3200, 0xa084, 0xf7ff, 0x2080,
+ 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, 0x0078,
+ 0x1bbf, 0x798c, 0x70d0, 0x007e, 0x007f, 0xa106, 0x0040, 0x1c45,
+ 0x7800, 0xa084, 0x0002, 0x0040, 0x1bdc, 0x2011, 0x04fd, 0x2204,
+ 0xa082, 0x0005, 0x00c8, 0x1bef, 0x2091, 0x8000, 0x2071, 0x0020,
+ 0x7004, 0xa005, 0x00c0, 0x1c45, 0x7008, 0x7208, 0xa206, 0x00c0,
+ 0x1c45, 0xa286, 0x0008, 0x00c0, 0x1c45, 0x2071, 0x0010, 0x1078,
+ 0x19a0, 0x0040, 0x1c45, 0x7a94, 0x7b90, 0x7c9c, 0x7d98, 0xa184,
+ 0xff00, 0x0040, 0x1c13, 0x2031, 0x0000, 0x810b, 0x86b5, 0x810b,
+ 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b,
+ 0x86b5, 0x2100, 0xa210, 0x2600, 0xa319, 0xa4a1, 0x0000, 0xa5a9,
+ 0x0000, 0x0078, 0x1c1d, 0x8107, 0x8004, 0x8004, 0xa210, 0xa399,
+ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x2009, 0x0040, 0x1078,
+ 0x196a, 0x2091, 0x8001, 0x0040, 0x1c3c, 0x1078, 0x19a9, 0x78a0,
+ 0x8000, 0x78a2, 0xa086, 0x0002, 0x00c0, 0x1c45, 0x2091, 0x8000,
+ 0x78d7, 0x0002, 0x78a3, 0x0000, 0x78c0, 0xa085, 0x0003, 0x78c2,
+ 0x2091, 0x8001, 0x0078, 0x1c45, 0x78a3, 0x0000, 0x1078, 0x1de4,
+ 0x6004, 0xa084, 0x000f, 0x0079, 0x1c4a, 0x2071, 0x0010, 0x2091,
+ 0x8001, 0x007c, 0x1c5a, 0x1c7c, 0x1ca2, 0x1c5a, 0x1cb4, 0x1c69,
+ 0x1c5a, 0x1c5a, 0x1c5a, 0x1c76, 0x1c9c, 0x1c5a, 0x1c5a, 0x1c5a,
+ 0x1c5a, 0x1c5a, 0x2039, 0x0400, 0x78d0, 0xa705, 0x78d2, 0x6008,
+ 0xa705, 0x600a, 0x1078, 0x1cff, 0x609c, 0x78ce, 0x1078, 0x1dcc,
+ 0x007c, 0x78d0, 0xa084, 0x0100, 0x0040, 0x1c70, 0x0078, 0x1c5a,
+ 0x601c, 0xa085, 0x0080, 0x601e, 0x0078, 0x1c83, 0x1078, 0x1b23,
+ 0x00c0, 0x1c5a, 0x1078, 0x1dfe, 0x78d0, 0xa084, 0x0100, 0x0040,
+ 0x1c83, 0x0078, 0x1c5a, 0x78d3, 0x0000, 0x6004, 0x8007, 0xa084,
+ 0x00ff, 0x78c6, 0x8001, 0x609f, 0x0000, 0x0040, 0x1c99, 0x1078,
+ 0x1cff, 0x0040, 0x1c99, 0x78d0, 0xa085, 0x0100, 0x78d2, 0x0078,
+ 0x1c9b, 0x1078, 0x1d23, 0x007c, 0x1078, 0x1b23, 0x00c0, 0x1c5a,
+ 0x1078, 0x1dfa, 0x78d0, 0xa08c, 0x0e00, 0x00c0, 0x1cab, 0xa084,
+ 0x0100, 0x00c0, 0x1cad, 0x0078, 0x1c5a, 0x1078, 0x1cff, 0x00c0,
+ 0x1cb3, 0x1078, 0x1d23, 0x007c, 0x78d0, 0xa084, 0x0100, 0x0040,
+ 0x1cbb, 0x0078, 0x1c5a, 0x78d3, 0x0000, 0x6714, 0x2011, 0x0001,
+ 0x20a9, 0x0001, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0040, 0x1cde,
+ 0x2011, 0x0001, 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, 0x0001,
+ 0x0040, 0x1cde, 0x2039, 0x0000, 0x2011, 0x0002, 0x20a9, 0x0100,
+ 0xa08e, 0x0002, 0x0040, 0x1cde, 0x0078, 0x1cfc, 0x1078, 0x19c7,
+ 0x2d00, 0x2091, 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, 0x6808,
+ 0xa084, 0xffde, 0x680a, 0x2d00, 0xa080, 0x0010, 0x2068, 0x2091,
+ 0x8001, 0x0070, 0x1cf5, 0x0078, 0x1ce1, 0x8211, 0x0040, 0x1cfc,
+ 0x20a9, 0x0100, 0x0078, 0x1ce1, 0x1078, 0x19a9, 0x007c, 0x78c8,
+ 0xa06d, 0x00c0, 0x1d0a, 0x2c00, 0x78ca, 0x78ce, 0x609f, 0x0000,
+ 0x0078, 0x1d16, 0x2c00, 0x689e, 0x609f, 0x0000, 0x78ca, 0x2d00,
+ 0x6002, 0x78cc, 0xad06, 0x00c0, 0x1d16, 0x6002, 0x78c4, 0x8001,
+ 0x78c6, 0x00c0, 0x1d22, 0x78d0, 0xa084, 0x0000, 0x78d2, 0x78cc,
+ 0x2060, 0xa006, 0x007c, 0xa02e, 0x2530, 0x611c, 0x61a2, 0xa184,
+ 0xe1ff, 0x601e, 0xa184, 0x0060, 0x0040, 0x1d32, 0x0e7e, 0x1078,
+ 0x36d9, 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000,
+ 0x60b3, 0x0000, 0x6714, 0x1078, 0x19c7, 0x2091, 0x8000, 0x60a0,
+ 0xa084, 0x8000, 0x00c0, 0x1d59, 0x6808, 0xa084, 0x0001, 0x0040,
+ 0x1d59, 0x2091, 0x8001, 0x1078, 0x1a14, 0x2091, 0x8000, 0x1078,
+ 0x1b44, 0x2091, 0x8001, 0x78cb, 0x0000, 0x78cf, 0x0000, 0x0078,
+ 0x1dcb, 0x6024, 0xa096, 0x0001, 0x00c0, 0x1d60, 0x8000, 0x6026,
+ 0x6a10, 0x6814, 0x2091, 0x8001, 0xa202, 0x0048, 0x1d6f, 0x0040,
+ 0x1d6f, 0x2039, 0x0200, 0x1078, 0x1dcc, 0x0078, 0x1dcb, 0x2c08,
+ 0x2091, 0x8000, 0x60a0, 0xa084, 0x8000, 0x0040, 0x1d9c, 0x6800,
+ 0xa065, 0x0040, 0x1da1, 0x6a04, 0x0e7e, 0x2071, 0x3d40, 0x7000,
+ 0xa084, 0x0001, 0x0040, 0x1d96, 0x703c, 0xa206, 0x00c0, 0x1d96,
+ 0x6b04, 0x231c, 0x2160, 0x6302, 0x2300, 0xa005, 0x00c0, 0x1d91,
+ 0x6902, 0x2260, 0x6102, 0x0e7f, 0x0078, 0x1da8, 0x2160, 0x6202,
+ 0x6906, 0x0e7f, 0x0078, 0x1da8, 0x6800, 0xa065, 0x0040, 0x1da1,
+ 0x6102, 0x6902, 0x00c0, 0x1da5, 0x6906, 0x2160, 0x6003, 0x0000,
+ 0x2160, 0x60a0, 0xa084, 0x8000, 0x0040, 0x1db2, 0x6808, 0xa084,
+ 0xfffc, 0x680a, 0x6810, 0x8000, 0x6812, 0x2091, 0x8001, 0x6808,
+ 0xa08c, 0x0040, 0x0040, 0x1dc1, 0xa086, 0x0040, 0x680a, 0x1078,
+ 0x1a25, 0x2091, 0x8000, 0x1078, 0x1edc, 0x2091, 0x8001, 0x78cf,
+ 0x0000, 0x78cb, 0x0000, 0x007c, 0x6008, 0xa705, 0x600a, 0x2091,
+ 0x8000, 0x1078, 0x1b44, 0x2091, 0x8001, 0x78cc, 0xa065, 0x0040,
+ 0x1ddf, 0x609c, 0x78ce, 0x609f, 0x0000, 0x0078, 0x1dcf, 0x78cb,
+ 0x0000, 0x78cf, 0x0000, 0x007c, 0x7988, 0x788c, 0x8000, 0xa10a,
+ 0x00c8, 0x1deb, 0xa006, 0x788e, 0x70d2, 0x7804, 0xa005, 0x0040,
+ 0x1df9, 0x8001, 0x7806, 0x00c0, 0x1df9, 0x0068, 0x1df9, 0x2091,
+ 0x4080, 0x007c, 0x2039, 0x1e12, 0x0078, 0x1e00, 0x2039, 0x1e18,
+ 0x2704, 0xa005, 0x0040, 0x1e11, 0xac00, 0x2068, 0x6b08, 0x6c0c,
+ 0x6910, 0x6a14, 0x690a, 0x6a0e, 0x6b12, 0x6c16, 0x8738, 0x0078,
+ 0x1e00, 0x007c, 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, 0x0000,
+ 0x0015, 0x001b, 0x0000, 0x0068, 0x1e61, 0x2029, 0x0000, 0x7884,
+ 0xa065, 0x0040, 0x1e5c, 0x2009, 0x3d79, 0x2104, 0xa084, 0x0001,
+ 0x0040, 0x1e4f, 0x6084, 0xa086, 0x0103, 0x00c0, 0x1e4f, 0x6018,
+ 0xa005, 0x00c0, 0x1e4f, 0x6014, 0xa005, 0x00c0, 0x1e4f, 0x0d7e,
+ 0x2069, 0x0000, 0x6818, 0xa084, 0x0001, 0x00c0, 0x1e4e, 0x600c,
+ 0x70c6, 0x6010, 0x70ca, 0x70c3, 0x8020, 0x681b, 0x0001, 0x2091,
+ 0x4080, 0x0d7f, 0x1078, 0x1b6c, 0x0078, 0x1e5c, 0x0d7f, 0x1078,
+ 0x1e62, 0x0040, 0x1e5c, 0x057e, 0x1078, 0x1e73, 0x057f, 0x00c0,
+ 0x1e5c, 0x8528, 0x0078, 0x1e1f, 0x85ff, 0x0040, 0x1e61, 0x2091,
+ 0x4080, 0x007c, 0x7ba4, 0x79a8, 0x70d4, 0x007e, 0x007f, 0xa102,
+ 0x00c0, 0x1e6d, 0x2300, 0xa005, 0x007c, 0x0048, 0x1e71, 0xa302,
+ 0x007c, 0x8002, 0x007c, 0x7800, 0xa084, 0x0002, 0x0040, 0x1e7f,
+ 0x2011, 0x04fd, 0x2204, 0xa082, 0x0005, 0x00c8, 0x1e92, 0x2091,
+ 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x1ec3, 0x7008,
+ 0x7208, 0xa206, 0x00c0, 0x1ec3, 0xa286, 0x0008, 0x00c0, 0x1ec3,
+ 0x2071, 0x0010, 0x1078, 0x1ec8, 0x2009, 0x0018, 0x6028, 0xa005,
+ 0x0040, 0x1e9c, 0x2009, 0x0040, 0x1078, 0x1930, 0x0040, 0x1eb5,
+ 0x78bc, 0x8000, 0x78be, 0xa086, 0x0002, 0x00c0, 0x1ec3, 0x2091,
+ 0x8000, 0x78d7, 0x0003, 0x78bf, 0x0000, 0x78c0, 0xa085, 0x0300,
+ 0x78c2, 0x2091, 0x8001, 0x0078, 0x1ec3, 0x78bf, 0x0000, 0x1078,
+ 0x1b6c, 0x79a4, 0x78a8, 0x8000, 0xa10a, 0x00c8, 0x1ec0, 0xa006,
+ 0x78aa, 0x70d6, 0xa006, 0x2071, 0x0010, 0x2091, 0x8001, 0x007c,
+ 0x8107, 0x8004, 0x8004, 0x7ab0, 0x7bac, 0x7cb8, 0x7db4, 0xa210,
+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, 0x2009,
+ 0x3d68, 0x2091, 0x8000, 0x200a, 0x0f7e, 0x2079, 0x0100, 0x2009,
+ 0x3d40, 0x2104, 0xa086, 0x0000, 0x00c0, 0x1ef5, 0x2009, 0x3d12,
+ 0x2104, 0xa005, 0x00c0, 0x1ef5, 0x7830, 0xa084, 0x00c0, 0x00c0,
+ 0x1ef5, 0x0018, 0x1ef5, 0x781b, 0x0045, 0x0f7f, 0x007c, 0x127e,
+ 0x2091, 0x2300, 0x2071, 0x3d40, 0x2079, 0x0100, 0x784b, 0x000f,
+ 0x2019, 0x359d, 0x20a1, 0x012b, 0x2304, 0xa005, 0x0040, 0x1f11,
+ 0x789a, 0x8318, 0x23ac, 0x8318, 0x2398, 0x53a6, 0x3318, 0x0078,
+ 0x1f04, 0x789b, 0x0020, 0x20a9, 0x0010, 0x78af, 0x0000, 0x78af,
+ 0x0020, 0x0070, 0x1f1d, 0x0078, 0x1f15, 0x7003, 0x0000, 0x1078,
+ 0x202f, 0x7004, 0xa084, 0x000f, 0x017e, 0x2009, 0x04fd, 0x210c,
+ 0xa18a, 0x0005, 0x0048, 0x1f34, 0x0038, 0x1f30, 0x0078, 0x1f34,
+ 0xa085, 0x62c0, 0x0078, 0x1f36, 0xa085, 0x6280, 0x017f, 0x7806,
+ 0x780f, 0x9200, 0x7843, 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008,
+ 0x7047, 0x3d7f, 0x7043, 0x0000, 0x127f, 0x2000, 0x007c, 0xa18c,
+ 0x000f, 0x2011, 0x0101, 0x2204, 0xa084, 0xfff0, 0xa105, 0x2012,
+ 0x1078, 0x202f, 0x007c, 0x2011, 0x0101, 0x20a9, 0x0009, 0x810b,
+ 0x0070, 0x1f5c, 0x0078, 0x1f57, 0xa18c, 0x0e00, 0x2204, 0xa084,
+ 0xf1ff, 0xa105, 0x2012, 0x007c, 0x2009, 0x0101, 0x20a9, 0x0005,
+ 0x8213, 0x0070, 0x1f6d, 0x0078, 0x1f68, 0xa294, 0x00e0, 0x2104,
+ 0xa084, 0xff1f, 0xa205, 0x200a, 0x007c, 0x2011, 0x0101, 0x20a9,
+ 0x000c, 0x810b, 0x0070, 0x1f7e, 0x0078, 0x1f79, 0xa18c, 0xf000,
+ 0x2204, 0xa084, 0x0fff, 0xa105, 0x2012, 0x007c, 0x2011, 0x0102,
+ 0x2204, 0xa084, 0xffcf, 0xa105, 0x2012, 0x007c, 0x8103, 0x8003,
+ 0xa080, 0x0020, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x62ac, 0x63ac,
+ 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0022, 0x0c7e, 0x2061,
+ 0x0100, 0x609a, 0x60a4, 0xa084, 0xffdf, 0x60ae, 0x0c7f, 0x007c,
+ 0x8103, 0x8003, 0xa080, 0x0022, 0x0c7e, 0x2061, 0x0100, 0x609a,
+ 0x60a4, 0xa085, 0x0020, 0x60ae, 0x0c7f, 0x007c, 0x8103, 0x8003,
+ 0xa080, 0x0020, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0x62ae,
+ 0x2010, 0x60a4, 0x63ae, 0x2018, 0x0c7f, 0x007c, 0x2091, 0x8000,
+ 0x0c7e, 0x0e7e, 0x6818, 0xa005, 0x0040, 0x200d, 0x2061, 0x6100,
+ 0x1078, 0x2015, 0x0040, 0x1ff9, 0x20a9, 0x0000, 0x2061, 0x6000,
+ 0x0c7e, 0x1078, 0x2015, 0x0040, 0x1fe5, 0x0c7f, 0x8c60, 0x0070,
+ 0x1fe3, 0x0078, 0x1fd8, 0x0078, 0x200d, 0x007f, 0xa082, 0x6000,
+ 0x2071, 0x3d40, 0x70ba, 0x6020, 0xa085, 0x0800, 0x6022, 0x71b6,
+ 0x2001, 0x0004, 0x70a2, 0x70c7, 0x000f, 0x1078, 0x1ed7, 0x0078,
+ 0x2009, 0x2071, 0x3d40, 0x6020, 0xa085, 0x0800, 0x6022, 0x71b6,
+ 0x2c00, 0x70be, 0x2001, 0x0006, 0x70a2, 0x70c7, 0x000f, 0x1078,
+ 0x1ed7, 0x2001, 0x0000, 0x0078, 0x200f, 0x2001, 0x0001, 0x2091,
+ 0x8001, 0xa005, 0x0e7f, 0x0c7f, 0x007c, 0x2c04, 0xa005, 0x0040,
+ 0x202c, 0x2060, 0x6010, 0xa306, 0x00c0, 0x2029, 0x600c, 0xa206,
+ 0x00c0, 0x2029, 0x6014, 0xa106, 0x00c0, 0x2029, 0xa006, 0x0078,
+ 0x202e, 0x6000, 0x0078, 0x2016, 0xa085, 0x0001, 0x007c, 0x2011,
+ 0x3d41, 0x220c, 0xa18c, 0x000f, 0x2011, 0x013b, 0x2204, 0xa084,
+ 0x0100, 0x0040, 0x2045, 0x2021, 0xff04, 0x2122, 0x810b, 0x810b,
+ 0x810b, 0x810b, 0xa18d, 0x0f00, 0x2104, 0x007c, 0x0e7e, 0x68e4,
+ 0xa08c, 0x0020, 0x0040, 0x2099, 0xa084, 0x0006, 0x00c0, 0x2099,
+ 0x6014, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0f0,
+ 0x3f80, 0x7004, 0xa084, 0x000a, 0x00c0, 0x2099, 0x7108, 0xa194,
+ 0xff00, 0x0040, 0x2099, 0xa18c, 0x00ff, 0x2001, 0x000c, 0xa106,
+ 0x0040, 0x2080, 0x2001, 0x0012, 0xa106, 0x0040, 0x2084, 0x2001,
+ 0x0014, 0xa106, 0x0040, 0x2088, 0x2001, 0x0019, 0xa106, 0x0040,
+ 0x208c, 0x2001, 0x0032, 0xa106, 0x0040, 0x2090, 0x0078, 0x2094,
+ 0x2009, 0x0012, 0x0078, 0x2096, 0x2009, 0x0014, 0x0078, 0x2096,
+ 0x2009, 0x0019, 0x0078, 0x2096, 0x2009, 0x0020, 0x0078, 0x2096,
+ 0x2009, 0x003f, 0x0078, 0x2096, 0x2011, 0x0000, 0x2100, 0xa205,
+ 0x700a, 0x0e7f, 0x007c, 0x0068, 0x209b, 0x2091, 0x8000, 0x2071,
+ 0x0000, 0x007e, 0x7018, 0xa084, 0x0001, 0x00c0, 0x20a2, 0x007f,
+ 0x2071, 0x0010, 0x70ca, 0x007f, 0x70c6, 0x70c3, 0x8002, 0x70db,
+ 0x0441, 0x70df, 0x0000, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091,
+ 0x4080, 0x0078, 0x20b9, 0x107e, 0x007e, 0x127e, 0x2091, 0x2300,
+ 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x2009, 0x3d74, 0x78a0, 0x200a,
+ 0x8108, 0x250a, 0x8108, 0x240a, 0x8108, 0x260a, 0x8108, 0x270a,
+ 0xa594, 0x003f, 0xa484, 0x4000, 0x0040, 0x20df, 0xa784, 0x007d,
+ 0x00c0, 0x3526, 0xd784, 0x00c0, 0x2c9c, 0x1078, 0x209b, 0xa49c,
+ 0x000f, 0xa382, 0x0004, 0x0050, 0x20e7, 0x1078, 0x209b, 0x8507,
+ 0xa084, 0x000f, 0x0079, 0x20ec, 0x25a2, 0x265d, 0x2685, 0x2912,
+ 0x2b8c, 0x2bcf, 0x2c17, 0x2c9c, 0x2d43, 0x2dd4, 0x2114, 0x20fc,
+ 0x23eb, 0x24c2, 0x2b67, 0x20fc, 0x1078, 0x209b, 0x0018, 0x20c0,
+ 0x127f, 0x2091, 0x8001, 0x007f, 0x107f, 0x007c, 0x7003, 0x0000,
+ 0x703f, 0x0000, 0x7030, 0xa005, 0x0040, 0x2110, 0x7033, 0x0000,
+ 0x1078, 0x34fc, 0x0018, 0x20c0, 0x2009, 0x3d0f, 0x200b, 0x0000,
+ 0x705c, 0xa005, 0x00c0, 0x21e9, 0x70a0, 0xa084, 0x0007, 0x0079,
+ 0x2121, 0x2215, 0x2129, 0x2137, 0x2154, 0x2176, 0x21c3, 0x219c,
+ 0x2129, 0x7808, 0xa084, 0xfffd, 0x780a, 0x2009, 0x0047, 0x1078,
+ 0x2a46, 0x00c0, 0x2135, 0x7003, 0x0004, 0x0078, 0x20fe, 0x1078,
+ 0x34e3, 0x00c0, 0x2152, 0x70b4, 0x8007, 0x7882, 0x789b, 0x0010,
+ 0x78ab, 0x000c, 0x789b, 0x0060, 0x78ab, 0x0001, 0x785b, 0x0004,
+ 0x2009, 0x00fc, 0x1078, 0x2a44, 0x00c0, 0x2152, 0x7003, 0x0004,
+ 0x70c7, 0x000f, 0x0078, 0x20fe, 0x1078, 0x34e3, 0x00c0, 0x2174,
+ 0x71b4, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d,
+ 0x00c0, 0x79aa, 0x78ab, 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002,
+ 0x785b, 0x0004, 0x2009, 0x00fc, 0x1078, 0x2a44, 0x00c0, 0x2174,
+ 0x7003, 0x0004, 0x70c7, 0x000f, 0x0078, 0x20fe, 0x1078, 0x34e3,
+ 0x00c0, 0x219a, 0x71b4, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c,
+ 0x001f, 0xa18d, 0x00c0, 0x79aa, 0x78ab, 0x0020, 0x71b8, 0x79aa,
+ 0x78ab, 0x000d, 0x789b, 0x0060, 0x78ab, 0x0004, 0x785b, 0x0004,
+ 0x2009, 0x00fc, 0x1078, 0x2a44, 0x00c0, 0x219a, 0x7003, 0x0004,
+ 0x70c7, 0x000f, 0x0078, 0x20fe, 0x1078, 0x34e3, 0x00c0, 0x21c1,
+ 0x71b4, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d,
+ 0x00c0, 0x79aa, 0x78ab, 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002,
+ 0x785b, 0x0004, 0x2009, 0x00fc, 0x1078, 0x2a44, 0x00c0, 0x21c1,
+ 0x70bc, 0x70bf, 0x0000, 0x2068, 0x703e, 0x7003, 0x0002, 0x70c7,
+ 0x000f, 0x0078, 0x20fe, 0x1078, 0x34e3, 0x00c0, 0x20fe, 0x70bc,
+ 0x2068, 0x6f14, 0x1078, 0x33ea, 0x2c50, 0x1078, 0x358b, 0x789b,
+ 0x0010, 0x6814, 0xa084, 0x001f, 0xa085, 0x0080, 0x007e, 0x007f,
+ 0x78aa, 0x6e1c, 0x067e, 0x067f, 0x2041, 0x0001, 0x70c0, 0xa084,
+ 0x0400, 0x2001, 0x0004, 0x0040, 0x21e7, 0x2001, 0x0006, 0x0078,
+ 0x2307, 0x1078, 0x34e3, 0x00c0, 0x20fe, 0x789b, 0x0010, 0x705c,
+ 0x2068, 0x6f14, 0x1078, 0x33ea, 0x2c50, 0x1078, 0x358b, 0x6008,
+ 0xa085, 0x0010, 0x600a, 0x6824, 0xa005, 0x0040, 0x2207, 0xa082,
+ 0x0006, 0x0048, 0x2205, 0x0078, 0x2207, 0x6827, 0x0005, 0x6814,
+ 0xa084, 0x001f, 0xa085, 0x0080, 0x78aa, 0x2031, 0x0020, 0x2041,
+ 0x0001, 0x2001, 0x0003, 0x0078, 0x2307, 0x0018, 0x20c0, 0x7440,
+ 0xa485, 0x0000, 0x0040, 0x223f, 0xa080, 0x3d80, 0x2030, 0x7144,
+ 0x0018, 0x20c0, 0x8108, 0xa12a, 0x0048, 0x2228, 0x2009, 0x3d80,
+ 0x2164, 0x6504, 0x85ff, 0x00c0, 0x224c, 0x8421, 0x00c0, 0x2220,
+ 0x017e, 0x2009, 0x3d0f, 0x2104, 0xa005, 0x00c0, 0x223d, 0x017e,
+ 0x2009, 0x3d10, 0x2104, 0x017f, 0x200a, 0x017f, 0x7146, 0x7003,
+ 0x0000, 0x703f, 0x0000, 0x0078, 0x20fe, 0x7640, 0xa6b0, 0x3d80,
+ 0x7144, 0x2600, 0x0078, 0x222d, 0x7146, 0x2568, 0x2558, 0x753e,
+ 0x2c50, 0x6034, 0xa085, 0x0000, 0x00c0, 0x2249, 0x6708, 0x7736,
+ 0xa784, 0x013f, 0x0040, 0x227a, 0xa784, 0x0021, 0x00c0, 0x2249,
+ 0xa784, 0x0002, 0x0040, 0x226b, 0xa784, 0x0004, 0x0040, 0x2249,
+ 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0018, 0x00c0, 0x2249, 0xa784,
+ 0x0100, 0x0040, 0x227a, 0x6018, 0xa005, 0x00c0, 0x2249, 0xa7bc,
+ 0xfeff, 0x670a, 0x6823, 0x0000, 0x6e1c, 0xa684, 0x000e, 0x6118,
+ 0x0040, 0x228a, 0x601c, 0xa102, 0x0048, 0x228d, 0x0040, 0x228d,
+ 0x0078, 0x2245, 0x81ff, 0x00c0, 0x2245, 0xa784, 0x0080, 0x00c0,
+ 0x2293, 0x700c, 0x6022, 0xa7bc, 0xff7f, 0x670a, 0x1078, 0x358b,
+ 0x0018, 0x20c0, 0x789b, 0x0010, 0xa046, 0x1078, 0x34e3, 0x00c0,
+ 0x20fe, 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, 0x704c, 0xa084,
+ 0x8000, 0x0040, 0x22af, 0xa684, 0x0001, 0x0040, 0x22b1, 0xa39c,
+ 0xffbf, 0xa684, 0x0010, 0x0040, 0x22b7, 0xa39d, 0x0020, 0x7baa,
+ 0x8840, 0xa684, 0x000e, 0x00c0, 0x22c2, 0xa7bd, 0x0010, 0x670a,
+ 0x0078, 0x2303, 0x714c, 0xa18c, 0x0800, 0x0040, 0x2fef, 0x2011,
+ 0x0021, 0x8004, 0x8004, 0x0048, 0x22d9, 0x2011, 0x0022, 0x8004,
+ 0x0048, 0x22d9, 0x2011, 0x0020, 0x8004, 0x0048, 0x22d9, 0x0040,
+ 0x2303, 0x7aaa, 0x8840, 0x1078, 0x34fc, 0x6a14, 0x610c, 0x8108,
+ 0xa18c, 0x00ff, 0xa1e0, 0x6000, 0x2c64, 0x8cff, 0x0040, 0x22fa,
+ 0x6014, 0xa206, 0x00c0, 0x22e4, 0x60b8, 0x8001, 0x60ba, 0x00c0,
+ 0x22df, 0x0c7e, 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, 0x0c7f,
+ 0x0078, 0x2215, 0x1078, 0x34e3, 0x00c0, 0x20fe, 0x2a60, 0x610e,
+ 0x79aa, 0x8840, 0x712e, 0x0018, 0x20c0, 0x2001, 0x0001, 0x007e,
+ 0x7150, 0xa184, 0x0018, 0x0040, 0x2322, 0xa184, 0x0010, 0x0040,
+ 0x2315, 0x1078, 0x3214, 0x00c0, 0x2345, 0xa184, 0x0008, 0x0040,
+ 0x2322, 0x69a0, 0xa184, 0x0600, 0x00c0, 0x2322, 0x1078, 0x3110,
+ 0x0078, 0x2345, 0x69a0, 0xa184, 0x0800, 0x0040, 0x2339, 0x0c7e,
+ 0x027e, 0x2960, 0x6000, 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d,
+ 0x0010, 0x6106, 0x027f, 0x0c7f, 0x1078, 0x3214, 0x00c0, 0x2345,
+ 0x69a0, 0xa184, 0x0200, 0x0040, 0x2341, 0x1078, 0x315f, 0x0078,
+ 0x2345, 0xa184, 0x0400, 0x00c0, 0x231e, 0x69a0, 0xa184, 0x1000,
+ 0x0040, 0x2350, 0x6914, 0xa18c, 0xff00, 0x810f, 0x1078, 0x1f9a,
+ 0x007f, 0x0018, 0x20c0, 0x7002, 0xa68c, 0x00e0, 0xa684, 0x0060,
+ 0x0040, 0x2360, 0xa086, 0x0060, 0x00c0, 0x2360, 0xa18d, 0x4000,
+ 0x88ff, 0x0040, 0x2365, 0xa18d, 0x0004, 0x795a, 0x69b6, 0x789b,
+ 0x0060, 0x2800, 0x78aa, 0x789b, 0x0061, 0x6818, 0xa08d, 0x8000,
+ 0xa084, 0x7fff, 0x691a, 0xa68c, 0x0080, 0x0040, 0x2384, 0x70cb,
+ 0x0000, 0xa08a, 0x000d, 0x0050, 0x2382, 0xa08a, 0x000c, 0x71ca,
+ 0x2001, 0x000c, 0x800c, 0x71ce, 0x78aa, 0x8008, 0x810c, 0x0040,
+ 0x2ff5, 0xa18c, 0x00f8, 0x00c0, 0x2ff5, 0x157e, 0x137e, 0x147e,
+ 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b,
+ 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6814, 0x8007, 0x7882,
+ 0x6d94, 0x7dd6, 0x7dde, 0x6e98, 0x7ed2, 0x7eda, 0x7830, 0xa084,
+ 0x00c0, 0x00c0, 0x23ad, 0x0098, 0x23b5, 0x6008, 0xa084, 0xffef,
+ 0x600a, 0x1078, 0x34fc, 0x0078, 0x2106, 0x7200, 0xa284, 0x0007,
+ 0xa086, 0x0001, 0x00c0, 0x23c2, 0x781b, 0x004a, 0x1078, 0x34fc,
+ 0x0078, 0x23d3, 0x6ab4, 0xa295, 0x2000, 0x7a5a, 0x781b, 0x004a,
+ 0x1078, 0x34fc, 0x7200, 0x2500, 0xa605, 0x0040, 0x23d3, 0xa284,
+ 0x0007, 0x1079, 0x23e1, 0xad80, 0x0009, 0x7032, 0xa284, 0x0007,
+ 0xa086, 0x0001, 0x00c0, 0x20fe, 0x6018, 0x8000, 0x601a, 0x0078,
+ 0x20fe, 0x23e9, 0x3943, 0x3943, 0x3932, 0x3943, 0x23e9, 0x3932,
+ 0x23e9, 0x1078, 0x209b, 0x7808, 0xa084, 0xfffd, 0x780a, 0x0f7e,
+ 0x2079, 0x3d00, 0x78c0, 0x0f7f, 0xa084, 0x0001, 0x0040, 0x2411,
+ 0x70a0, 0xa086, 0x0001, 0x00c0, 0x2400, 0x70a2, 0x0078, 0x24a4,
+ 0x70a0, 0xa086, 0x0005, 0x00c0, 0x240f, 0x70bc, 0x2068, 0x681b,
+ 0x0004, 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, 0x6822, 0x70a3,
+ 0x0000, 0x157e, 0x2011, 0x0004, 0x71a0, 0xa186, 0x0001, 0x0040,
+ 0x2433, 0xa186, 0x0007, 0x00c0, 0x2423, 0x2009, 0x3d35, 0x200b,
+ 0x0005, 0x0078, 0x2433, 0x2009, 0x3d13, 0x2104, 0x2009, 0x3d12,
+ 0x200a, 0x2009, 0x3d35, 0x200b, 0x0001, 0x70a3, 0x0000, 0x70a7,
+ 0x0001, 0x0078, 0x2435, 0x70a3, 0x0000, 0x1078, 0x368f, 0x20a9,
+ 0x0010, 0x2039, 0x0000, 0x1078, 0x32e1, 0xa7b8, 0x0100, 0x0070,
+ 0x2443, 0x0078, 0x243b, 0x7000, 0x0079, 0x2446, 0x2476, 0x245d,
+ 0x245d, 0x2450, 0x2476, 0x2476, 0x2476, 0x244e, 0x1078, 0x209b,
+ 0x2021, 0x3d57, 0x2404, 0xa005, 0x0040, 0x2476, 0xad06, 0x00c0,
+ 0x245d, 0x6800, 0x2022, 0x0078, 0x246d, 0x6820, 0xa084, 0x0001,
+ 0x00c0, 0x2469, 0x6f14, 0x1078, 0x33ea, 0x1078, 0x2fc6, 0x0078,
+ 0x246d, 0x7054, 0x2060, 0x6800, 0x6002, 0x6a1a, 0x6817, 0x0000,
+ 0x6820, 0xa085, 0x0008, 0x6822, 0x1078, 0x1b56, 0x2021, 0x6100,
+ 0x1078, 0x24aa, 0x2021, 0x3d57, 0x1078, 0x24aa, 0x20a9, 0x0000,
+ 0x2021, 0x6000, 0x1078, 0x24aa, 0x8420, 0x0070, 0x2489, 0x0078,
+ 0x2482, 0x2061, 0x4000, 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018,
+ 0x6110, 0x81ff, 0x0040, 0x2498, 0xa102, 0x0050, 0x2498, 0x6012,
+ 0x601b, 0x0000, 0xace0, 0x0010, 0x0070, 0x24a0, 0x0078, 0x248f,
+ 0x8421, 0x00c0, 0x248d, 0x157f, 0x7003, 0x0000, 0x703f, 0x0000,
+ 0x0078, 0x20fe, 0x047e, 0x2404, 0xa005, 0x0040, 0x24be, 0x2068,
+ 0x6800, 0x007e, 0x6a1a, 0x6817, 0x0000, 0x6820, 0xa085, 0x0008,
+ 0x6822, 0x1078, 0x1b56, 0x007f, 0x0078, 0x24ac, 0x047f, 0x2023,
+ 0x0000, 0x007c, 0xa282, 0x0003, 0x0050, 0x24c8, 0x1078, 0x209b,
+ 0x2300, 0x0079, 0x24cb, 0x24ce, 0x2541, 0x255e, 0xa282, 0x0002,
+ 0x0040, 0x24d4, 0x1078, 0x209b, 0x70a0, 0x70a3, 0x0000, 0x70c7,
+ 0x0000, 0x0079, 0x24db, 0x24e3, 0x24e3, 0x24e5, 0x2519, 0x2ffb,
+ 0x24e3, 0x2519, 0x24e3, 0x1078, 0x209b, 0x77b4, 0x1078, 0x32e1,
+ 0x77b4, 0xa7bc, 0x0f00, 0x1078, 0x33ea, 0x6018, 0xa005, 0x0040,
+ 0x2510, 0x2021, 0x6100, 0x2009, 0x0004, 0x2011, 0x0010, 0x1078,
+ 0x257b, 0x0040, 0x2510, 0x157e, 0x20a9, 0x0000, 0x2021, 0x6000,
+ 0x047e, 0x2009, 0x0004, 0x2011, 0x0010, 0x1078, 0x257b, 0x047f,
+ 0x0040, 0x250f, 0x8420, 0x0070, 0x250f, 0x0078, 0x2500, 0x157f,
+ 0x8738, 0xa784, 0x001f, 0x00c0, 0x24eb, 0x0078, 0x2106, 0x0078,
+ 0x2106, 0x77b4, 0x1078, 0x33ea, 0x6018, 0xa005, 0x0040, 0x253f,
+ 0x2021, 0x6100, 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x257b,
+ 0x0040, 0x253f, 0x157e, 0x20a9, 0x0000, 0x2021, 0x6000, 0x047e,
+ 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x257b, 0x047f, 0x0040,
+ 0x253e, 0x8420, 0x0070, 0x253e, 0x0078, 0x252f, 0x157f, 0x0078,
+ 0x2106, 0x2200, 0x0079, 0x2544, 0x2547, 0x2549, 0x2549, 0x1078,
+ 0x209b, 0x2009, 0x0012, 0x70a0, 0xa086, 0x0002, 0x0040, 0x2552,
+ 0x2009, 0x000e, 0x6818, 0xa084, 0x8000, 0x0040, 0x2558, 0x691a,
+ 0x70a3, 0x0000, 0x70a7, 0x0001, 0x0078, 0x347b, 0x2200, 0x0079,
+ 0x2561, 0x2566, 0x2549, 0x2564, 0x1078, 0x209b, 0x7000, 0xa086,
+ 0x0001, 0x00c0, 0x2577, 0x1078, 0x2fdc, 0x6008, 0xa084, 0xffef,
+ 0x600a, 0x1078, 0x2f7e, 0x0040, 0x2577, 0x0078, 0x2215, 0x1078,
+ 0x2a53, 0x0078, 0x2f8b, 0x2404, 0xa005, 0x0040, 0x259e, 0x2068,
+ 0x2d04, 0x007e, 0x6814, 0xa706, 0x0040, 0x258a, 0x2d20, 0x007f,
+ 0x0078, 0x257c, 0x007f, 0x2022, 0x691a, 0x6817, 0x0000, 0x6820,
+ 0xa205, 0x6822, 0x1078, 0x1b56, 0x6010, 0x8001, 0x6012, 0x6008,
+ 0xa084, 0xffef, 0x600a, 0x1078, 0x2fdc, 0x007c, 0xa085, 0x0001,
+ 0x0078, 0x259d, 0x2300, 0x0079, 0x25a5, 0x25aa, 0x25a8, 0x2603,
+ 0x1078, 0x209b, 0x78e4, 0xa005, 0x00d0, 0x25cd, 0x0018, 0x20fe,
+ 0x2008, 0xa084, 0x0030, 0x00c0, 0x25b9, 0x781b, 0x004a, 0x0078,
+ 0x20fe, 0x78ec, 0xa084, 0x0003, 0x0040, 0x25b5, 0x2100, 0xa084,
+ 0x0007, 0x0079, 0x25c3, 0x25de, 0x25e9, 0x25d1, 0x25cb, 0x34d6,
+ 0x34d6, 0x25cb, 0x25f6, 0x1078, 0x209b, 0x2001, 0x0003, 0x0078,
+ 0x2926, 0x6818, 0xa084, 0x8000, 0x0040, 0x25d8, 0x681b, 0x001d,
+ 0x1078, 0x32c4, 0x781b, 0x0053, 0x0078, 0x20fe, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x25e5, 0x681b, 0x001d, 0x1078, 0x32c4, 0x0078,
+ 0x34a7, 0x6818, 0xa084, 0x8000, 0x0040, 0x25f0, 0x681b, 0x001d,
+ 0x1078, 0x32c4, 0x781b, 0x00e5, 0x0078, 0x20fe, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x25fd, 0x681b, 0x001d, 0x1078, 0x32c4, 0x781b,
+ 0x009c, 0x0078, 0x20fe, 0xa584, 0x000f, 0x00c0, 0x2624, 0x7000,
+ 0x0079, 0x260a, 0x2612, 0x2614, 0x2612, 0x2620, 0x2620, 0x2620,
+ 0x2620, 0x2612, 0x1078, 0x209b, 0x1078, 0x2fdc, 0x6008, 0xa084,
+ 0xffef, 0x600a, 0x1078, 0x2f7e, 0x0040, 0x2620, 0x0078, 0x2215,
+ 0x1078, 0x2a53, 0x0078, 0x2f8b, 0x78e4, 0xa005, 0x00d0, 0x25cd,
+ 0x0018, 0x25cd, 0x2008, 0xa084, 0x0030, 0x00c0, 0x2633, 0x781b,
+ 0x004a, 0x0078, 0x20fe, 0x78ec, 0xa084, 0x0003, 0x0040, 0x262f,
+ 0x2100, 0xa184, 0x0007, 0x0079, 0x263d, 0x264d, 0x2651, 0x2647,
+ 0x2645, 0x34d6, 0x34d6, 0x2645, 0x34ce, 0x1078, 0x209b, 0x1078,
+ 0x32cc, 0x781b, 0x0053, 0x0078, 0x20fe, 0x1078, 0x32cc, 0x0078,
+ 0x34a7, 0x1078, 0x32cc, 0x781b, 0x00e5, 0x0078, 0x20fe, 0x1078,
+ 0x32cc, 0x781b, 0x009c, 0x0078, 0x20fe, 0x2300, 0x0079, 0x2660,
+ 0x2665, 0x2663, 0x2667, 0x1078, 0x209b, 0x0078, 0x2c9c, 0x681b,
+ 0x0008, 0x78a3, 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x2c9c,
+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x2c9c, 0xa184, 0x0007, 0x0079,
+ 0x2679, 0x2681, 0x2651, 0x25d1, 0x347b, 0x34d6, 0x34d6, 0x2681,
+ 0x34ce, 0x1078, 0x348b, 0x0078, 0x20fe, 0xa282, 0x0005, 0x0050,
+ 0x268b, 0x1078, 0x209b, 0x2300, 0x0079, 0x268e, 0x2691, 0x28d7,
+ 0x28e3, 0x2200, 0x0079, 0x2694, 0x26ae, 0x269b, 0x26ae, 0x2699,
+ 0x28bc, 0x1078, 0x209b, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff,
+ 0xa082, 0x0020, 0x0048, 0x32a6, 0xa08a, 0x0004, 0x00c8, 0x32a6,
+ 0x0079, 0x26aa, 0x32a6, 0x32a6, 0x32a6, 0x3254, 0x789b, 0x0018,
+ 0x79a8, 0xa184, 0x0080, 0x0040, 0x26bf, 0x0078, 0x32a6, 0x7000,
+ 0xa005, 0x00c0, 0x26b5, 0x2011, 0x0004, 0x0078, 0x2de2, 0xa184,
+ 0x00ff, 0xa08a, 0x0010, 0x00c8, 0x32a6, 0x0079, 0x26c7, 0x26d9,
+ 0x26d7, 0x26f1, 0x26f5, 0x27b0, 0x32a6, 0x32a6, 0x27b2, 0x32a6,
+ 0x32a6, 0x28b8, 0x28b8, 0x32a6, 0x32a6, 0x32a6, 0x28ba, 0x1078,
+ 0x209b, 0xa684, 0x1000, 0x0040, 0x26e6, 0x2001, 0x0300, 0x8000,
+ 0x8000, 0x783a, 0x781b, 0x0099, 0x0078, 0x20fe, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x26ef, 0x681b, 0x001d, 0x0078, 0x26dd, 0x0078,
+ 0x347b, 0x681b, 0x001d, 0x0078, 0x32b2, 0x6920, 0x6922, 0xa684,
+ 0x1800, 0x00c0, 0x2736, 0x6820, 0xa084, 0x0001, 0x00c0, 0x273c,
+ 0x6818, 0xa086, 0x0008, 0x00c0, 0x2707, 0x681b, 0x0000, 0xa684,
+ 0x0400, 0x0040, 0x27ac, 0xa684, 0x0080, 0x0040, 0x2732, 0x70cb,
+ 0x0000, 0x6818, 0xa084, 0x003f, 0xa08a, 0x000d, 0x0050, 0x2732,
+ 0xa08a, 0x000c, 0x71ca, 0x2001, 0x000c, 0x800c, 0x71ce, 0x789b,
+ 0x0061, 0x78aa, 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b, 0x789b,
+ 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f,
+ 0x137f, 0x157f, 0x781b, 0x0056, 0x0078, 0x20fe, 0xa684, 0x1000,
+ 0x0040, 0x273c, 0x0078, 0x20fe, 0xa684, 0x0060, 0x0040, 0x27a8,
+ 0xa684, 0x0800, 0x0040, 0x27a8, 0xa684, 0x8000, 0x00c0, 0x274a,
+ 0x0078, 0x2764, 0xa6b4, 0x7fff, 0x7e5a, 0x6eb6, 0x789b, 0x0076,
+ 0x7aac, 0x79ac, 0x78ac, 0x801b, 0x00c8, 0x2757, 0x8000, 0xa084,
+ 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2,
+ 0x6b94, 0x2200, 0xa303, 0x68ae, 0xa684, 0x4000, 0x0040, 0x276c,
+ 0xa6b4, 0xbfff, 0x7e5a, 0x6eb6, 0x7000, 0xa086, 0x0003, 0x00c0,
+ 0x2779, 0x1078, 0x3735, 0x1078, 0x3932, 0x781b, 0x0065, 0x0078,
+ 0x20fe, 0xa006, 0x1078, 0x3a01, 0x6ab0, 0x69ac, 0x6c98, 0x6b94,
+ 0x2200, 0xa105, 0x0040, 0x2788, 0x2200, 0xa422, 0x2100, 0xa31b,
+ 0x6caa, 0x7cd2, 0x7cda, 0x6ba6, 0x7bd6, 0x7bde, 0x2300, 0xa405,
+ 0x00c0, 0x279a, 0xa6b5, 0x4000, 0x7e5a, 0x6eb6, 0x781b, 0x0065,
+ 0x0078, 0x20fe, 0x781b, 0x0065, 0x2200, 0xa115, 0x00c0, 0x27a4,
+ 0x1078, 0x3943, 0x0078, 0x20fe, 0x1078, 0x3978, 0x0078, 0x20fe,
+ 0x781b, 0x0068, 0x0078, 0x20fe, 0x781b, 0x0056, 0x0078, 0x20fe,
+ 0x1078, 0x209b, 0x0078, 0x280f, 0x6920, 0xa184, 0x0100, 0x0040,
+ 0x27ca, 0xa18c, 0xfeff, 0x6922, 0x0c7e, 0x7048, 0x2060, 0x6000,
+ 0xa084, 0xefff, 0x6002, 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f,
+ 0x0078, 0x27fe, 0xa184, 0x0200, 0x0040, 0x27fe, 0xa18c, 0xfdff,
+ 0x6922, 0x0c7e, 0x7048, 0x2060, 0x6000, 0xa084, 0xdfff, 0x6002,
+ 0x6004, 0xa084, 0xffef, 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xa184,
+ 0x0008, 0x0040, 0x27fe, 0x1078, 0x33e6, 0x1078, 0x3110, 0x88ff,
+ 0x0040, 0x27fe, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5,
+ 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x27fa, 0x781b, 0x0053,
+ 0x0078, 0x20fe, 0x781b, 0x0067, 0x0078, 0x20fe, 0x7e58, 0xa684,
+ 0x0400, 0x00c0, 0x2807, 0x781b, 0x0056, 0x0078, 0x20fe, 0x781b,
+ 0x0068, 0x0078, 0x20fe, 0x0078, 0x32ac, 0x0078, 0x32ac, 0x2019,
+ 0x0000, 0x7990, 0xa18c, 0x0007, 0x0040, 0x280d, 0x789b, 0x0010,
+ 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, 0x00c0, 0x284d, 0x2300,
+ 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040, 0x2845, 0x0048, 0x282a,
+ 0x0078, 0x2847, 0xa380, 0x0002, 0xa102, 0x00c8, 0x2845, 0x6920,
+ 0xa18c, 0xfcff, 0x6922, 0x0c7e, 0x7048, 0x2060, 0x6000, 0xa084,
+ 0xefef, 0x6002, 0x6004, 0xa084, 0xffe5, 0x6006, 0x0c7f, 0x7e58,
+ 0xa6b4, 0xfffb, 0x7e5a, 0x0078, 0x27ff, 0x0078, 0x27b4, 0x24a8,
+ 0x7aa8, 0x00f0, 0x2847, 0x0078, 0x2818, 0xa284, 0x00f0, 0xa086,
+ 0x0020, 0x00c0, 0x28a9, 0x8318, 0x8318, 0x2300, 0xa102, 0x0040,
+ 0x285d, 0x0048, 0x285d, 0x0078, 0x28a6, 0xa286, 0x0023, 0x0040,
+ 0x280d, 0x681c, 0xa084, 0xfff1, 0x681e, 0x7e58, 0xa684, 0xfff1,
+ 0xa085, 0x0010, 0x2030, 0x7e5a, 0x6008, 0xa085, 0x0010, 0x600a,
+ 0x0c7e, 0x7048, 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xa184,
+ 0x0010, 0x0040, 0x2881, 0x1078, 0x33e6, 0x1078, 0x3214, 0x0078,
+ 0x2890, 0x0c7e, 0x7048, 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f,
+ 0xa184, 0x0008, 0x0040, 0x27fe, 0x1078, 0x33e6, 0x1078, 0x3110,
+ 0x88ff, 0x0040, 0x27fe, 0x789b, 0x0060, 0x2800, 0x78aa, 0xa6b5,
+ 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x28a2, 0x781b, 0x0053,
+ 0x0078, 0x20fe, 0x781b, 0x0067, 0x0078, 0x20fe, 0x7aa8, 0x0078,
+ 0x2818, 0x8318, 0x2300, 0xa102, 0x0040, 0x28b2, 0x0048, 0x28b2,
+ 0x0078, 0x2818, 0xa284, 0x0080, 0x00c0, 0x32b2, 0x0078, 0x32ac,
+ 0x0078, 0x32b2, 0x0078, 0x32a6, 0x789b, 0x0018, 0x78a8, 0xa084,
+ 0x00ff, 0xa08e, 0x0001, 0x0040, 0x28c7, 0x1078, 0x209b, 0x7aa8,
+ 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8,
+ 0x32a6, 0x0079, 0x28d3, 0x302c, 0x3063, 0x32a6, 0x31af, 0xa282,
+ 0x0000, 0x00c0, 0x28dd, 0x1078, 0x209b, 0x1078, 0x32c4, 0x781b,
+ 0x0067, 0x0078, 0x20fe, 0xa282, 0x0003, 0x00c0, 0x28e9, 0x1078,
+ 0x209b, 0xa484, 0x8000, 0x00c0, 0x290c, 0x70a0, 0xa005, 0x0040,
+ 0x28f3, 0x1078, 0x209b, 0x6f14, 0x77b6, 0xa7bc, 0x0f00, 0x1078,
+ 0x33ea, 0x6008, 0xa085, 0x0021, 0x600a, 0x8738, 0xa784, 0x001f,
+ 0x00c0, 0x28f7, 0x1078, 0x32c8, 0x70a3, 0x0002, 0x2009, 0x3d35,
+ 0x200b, 0x0009, 0x0078, 0x290e, 0x1078, 0x32d4, 0x781b, 0x0067,
+ 0x0078, 0x20fe, 0xa282, 0x0004, 0x0050, 0x2918, 0x1078, 0x209b,
+ 0x2300, 0x0079, 0x291b, 0x291e, 0x29ff, 0x2a2e, 0xa286, 0x0003,
+ 0x0040, 0x2924, 0x1078, 0x209b, 0x2001, 0x0000, 0x007e, 0x68a0,
+ 0xa084, 0x2000, 0x0040, 0x2930, 0x6008, 0xa085, 0x0002, 0x600a,
+ 0x007f, 0x703a, 0x7000, 0xa084, 0x0007, 0x0079, 0x2937, 0x2106,
+ 0x2941, 0x2941, 0x2b1c, 0x2b4d, 0x2106, 0x2b4d, 0x293f, 0x1078,
+ 0x209b, 0xa684, 0x1000, 0x00c0, 0x2949, 0x1078, 0x368f, 0x0040,
+ 0x29d9, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x298f, 0xa186, 0x0008,
+ 0x00c0, 0x2960, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x2f7e,
+ 0x0040, 0x298f, 0x1078, 0x2fdc, 0x1078, 0x368f, 0x0078, 0x2976,
+ 0xa186, 0x0028, 0x00c0, 0x298f, 0x1078, 0x368f, 0x6008, 0xa084,
+ 0xffef, 0x600a, 0x6018, 0xa005, 0x0040, 0x2976, 0x8001, 0x601a,
+ 0x6008, 0xa085, 0x0008, 0x600a, 0x7010, 0x6026, 0x6820, 0xa084,
+ 0x0001, 0x0040, 0x2106, 0x6820, 0xa084, 0xfffe, 0x6822, 0x7054,
+ 0x0c7e, 0x2060, 0x6800, 0x6002, 0x0c7f, 0x6004, 0x6802, 0xa005,
+ 0x2d00, 0x00c0, 0x298c, 0x6002, 0x6006, 0x0078, 0x2106, 0x017e,
+ 0x1078, 0x2a53, 0x017f, 0xa684, 0xdf00, 0x681e, 0x682b, 0x0000,
+ 0x6f14, 0x81ff, 0x0040, 0x29d9, 0xa186, 0x0002, 0x00c0, 0x29d9,
+ 0xa684, 0x0800, 0x00c0, 0x29ac, 0xa684, 0x0060, 0x0040, 0x29ac,
+ 0x78d8, 0x7adc, 0x682e, 0x6a32, 0x6820, 0xa084, 0x0800, 0x00c0,
+ 0x29d9, 0x8717, 0xa294, 0x000f, 0x8213, 0x8213, 0x8213, 0xa290,
+ 0x3f80, 0xa290, 0x0000, 0x221c, 0xa384, 0x0100, 0x00c0, 0x29c2,
+ 0x0078, 0x29c8, 0x8210, 0x2204, 0xa085, 0x0018, 0x2012, 0x8211,
+ 0xa384, 0x0400, 0x0040, 0x29d5, 0x68a0, 0xa084, 0x0100, 0x00c0,
+ 0x29d5, 0x1078, 0x2ad7, 0x0078, 0x2106, 0x6008, 0xa085, 0x0002,
+ 0x600a, 0x6916, 0x6818, 0xa084, 0x8000, 0x0040, 0x29e1, 0x7038,
+ 0x681a, 0xa68c, 0xdf00, 0x691e, 0x1078, 0x2fcd, 0x1078, 0x2fdc,
+ 0x00c0, 0x29ee, 0x6008, 0xa084, 0xffef, 0x600a, 0x6820, 0xa084,
+ 0x0001, 0x00c0, 0x29f7, 0x1078, 0x2fc6, 0x0078, 0x29fb, 0x7054,
+ 0x2060, 0x6800, 0x6002, 0x1078, 0x1b56, 0x0078, 0x2106, 0xa282,
+ 0x0004, 0x0048, 0x2a05, 0x1078, 0x209b, 0x2200, 0x0079, 0x2a08,
+ 0x2a03, 0x2a0c, 0x2a19, 0x2a0c, 0x7000, 0xa086, 0x0005, 0x0040,
+ 0x2a15, 0x1078, 0x32c4, 0x781b, 0x0067, 0x781b, 0x0068, 0x0078,
+ 0x20fe, 0x7890, 0x8007, 0x8001, 0xa084, 0x0007, 0xa080, 0x0018,
+ 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa186, 0x0003, 0x0040, 0x2a2a,
+ 0x0078, 0x32a6, 0x781b, 0x0068, 0x0078, 0x20fe, 0x6820, 0xa085,
+ 0x0004, 0x6822, 0x82ff, 0x00c0, 0x2a39, 0x1078, 0x32c4, 0x0078,
+ 0x2a40, 0x8211, 0x0040, 0x2a3e, 0x1078, 0x209b, 0x1078, 0x32d4,
+ 0x781b, 0x0067, 0x0078, 0x20fe, 0x1078, 0x34fc, 0x7830, 0xa084,
+ 0x00c0, 0x00c0, 0x2a50, 0x0018, 0x2a50, 0x791a, 0xa006, 0x007c,
+ 0xa085, 0x0001, 0x007c, 0xa684, 0x0060, 0x00c0, 0x2a5d, 0x682f,
+ 0x0000, 0x6833, 0x0000, 0x0078, 0x2ad6, 0xa684, 0x0800, 0x00c0,
+ 0x2a7f, 0x68b4, 0xa084, 0x4800, 0xa635, 0xa684, 0x0800, 0x00c0,
+ 0x2a7f, 0x6998, 0x6a94, 0x692e, 0x6a32, 0x7038, 0xa005, 0x00c0,
+ 0x2a77, 0x2200, 0xa105, 0x0040, 0x2a7e, 0x703b, 0x0015, 0x7000,
+ 0xa086, 0x0006, 0x0040, 0x2a7e, 0x1078, 0x368f, 0x007c, 0xa684,
+ 0x0020, 0x0040, 0x2aa1, 0xa684, 0x4000, 0x0040, 0x2a8d, 0x682f,
+ 0x0000, 0x6833, 0x0000, 0x0078, 0x2a77, 0x68b4, 0xa084, 0x4800,
+ 0xa635, 0xa684, 0x4000, 0x00c0, 0x2a87, 0x7038, 0xa005, 0x00c0,
+ 0x2a9b, 0x703b, 0x0015, 0x79d8, 0x7adc, 0x692e, 0x6a32, 0x0078,
+ 0x2a77, 0xa684, 0x4000, 0x0040, 0x2aab, 0x682f, 0x0000, 0x6833,
+ 0x0000, 0x0078, 0x2a77, 0x68b4, 0xa084, 0x4800, 0xa635, 0xa684,
+ 0x4000, 0x00c0, 0x2aa5, 0x7038, 0xa005, 0x00c0, 0x2ab9, 0x703b,
+ 0x0015, 0x79d8, 0x7adc, 0x78d0, 0x80fb, 0x00c8, 0x2ac0, 0x8000,
+ 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x692e, 0x6a32, 0x2100,
+ 0xa205, 0x00c0, 0x2acd, 0x0078, 0x2a77, 0x7000, 0xa086, 0x0006,
+ 0x0040, 0x2ad6, 0x1078, 0x3a01, 0x0078, 0x2a77, 0x007c, 0xa384,
+ 0x0200, 0x0040, 0x2adf, 0x6008, 0xa085, 0x0002, 0x600a, 0x681b,
+ 0x0006, 0x688f, 0x0000, 0x6893, 0x0000, 0x6a30, 0x692c, 0x6a3e,
+ 0x6942, 0x682f, 0x0003, 0x6833, 0x0000, 0x6837, 0x0020, 0x6897,
+ 0x0000, 0x689b, 0x0020, 0x7000, 0x0079, 0x2af6, 0x2afe, 0x2b00,
+ 0x2b09, 0x2afe, 0x2afe, 0x2afe, 0x2afe, 0x2afe, 0x1078, 0x209b,
+ 0x6820, 0xa084, 0x0001, 0x00c0, 0x2b09, 0x1078, 0x2fc6, 0x0078,
+ 0x2b0f, 0x7054, 0x2c50, 0x2060, 0x6800, 0x6002, 0x2a60, 0x2021,
+ 0x3d57, 0x2404, 0xa005, 0x0040, 0x2b18, 0x2020, 0x0078, 0x2b11,
+ 0x2d22, 0x206b, 0x0000, 0x007c, 0x1078, 0x2fcd, 0x1078, 0x2fdc,
+ 0x682b, 0x0000, 0x789b, 0x000e, 0x6f14, 0x1078, 0x3a33, 0x6817,
+ 0x0002, 0xa684, 0x0800, 0x0040, 0x2b31, 0x691c, 0xa18d, 0x2000,
+ 0x691e, 0x6818, 0xa084, 0x8000, 0x0040, 0x2b41, 0x7868, 0xa08c,
+ 0x00ff, 0x0040, 0x2b3f, 0x681b, 0x001e, 0x0078, 0x2b41, 0x681b,
+ 0x0000, 0x2021, 0x3d57, 0x6800, 0x2022, 0x6a3c, 0x6940, 0x6a32,
+ 0x692e, 0x1078, 0x1b56, 0x0078, 0x2106, 0x1078, 0x2a53, 0x682b,
+ 0x0000, 0x2001, 0x000e, 0x6f14, 0x1078, 0x3501, 0xa08c, 0x00ff,
+ 0x6916, 0x6818, 0xa084, 0x8000, 0x0040, 0x2b60, 0x7038, 0x681a,
+ 0xa68c, 0xdf00, 0x691e, 0x70a3, 0x0000, 0x0078, 0x2106, 0xa006,
+ 0x1078, 0x368f, 0x6817, 0x0000, 0x681b, 0x0014, 0xa68c, 0xdf00,
+ 0x691e, 0x682b, 0x0000, 0x6820, 0xa085, 0x00ff, 0x6822, 0x7000,
+ 0x0079, 0x2b7a, 0x2b82, 0x2b84, 0x2b84, 0x2b86, 0x2b86, 0x2b86,
+ 0x2b86, 0x2b82, 0x1078, 0x209b, 0x1078, 0x2fdc, 0x6008, 0xa084,
+ 0xffef, 0x600a, 0x0078, 0x2f96, 0x2300, 0x0079, 0x2b8f, 0x2b92,
+ 0x2b94, 0x2bcd, 0x1078, 0x209b, 0x7000, 0x0079, 0x2b97, 0x2b9f,
+ 0x2ba1, 0x2ba1, 0x2bbc, 0x2ba1, 0x2bc9, 0x2bbc, 0x2b9f, 0x1078,
+ 0x209b, 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, 0x2bb8, 0xa6b4,
+ 0xffdf, 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a, 0x681c, 0xa084,
+ 0xffdf, 0x681e, 0x1078, 0x368f, 0x1078, 0x3943, 0x0078, 0x347b,
+ 0xa684, 0x2000, 0x0040, 0x2bab, 0x6818, 0xa084, 0x8000, 0x0040,
+ 0x2bc9, 0x681b, 0x0015, 0xa684, 0x4000, 0x0040, 0x2bc9, 0x681b,
+ 0x0007, 0x1078, 0x348b, 0x0078, 0x20fe, 0x1078, 0x209b, 0x2300,
+ 0x0079, 0x2bd2, 0x2bd5, 0x2bd7, 0x2c09, 0x1078, 0x209b, 0x7000,
+ 0x0079, 0x2bda, 0x2be1, 0x2be3, 0x2be3, 0x2bfe, 0x2be3, 0x2bfe,
+ 0x2be1, 0x1078, 0x209b, 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0,
+ 0x2bfa, 0xa6b4, 0xffbf, 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a,
+ 0x681c, 0xa084, 0xffbf, 0x681e, 0x1078, 0x368f, 0x1078, 0x3943,
+ 0x0078, 0x347b, 0xa684, 0x2000, 0x0040, 0x2bed, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x2c05, 0x681b, 0x0007, 0x781b, 0x00e6, 0x0078,
+ 0x20fe, 0x6820, 0xa085, 0x0004, 0x6822, 0x1078, 0x3448, 0xa6b5,
+ 0x0800, 0x1078, 0x32c4, 0x781b, 0x0067, 0x0078, 0x20fe, 0x2300,
+ 0x0079, 0x2c1a, 0x2c1d, 0x2c1f, 0x2c21, 0x1078, 0x209b, 0x0078,
+ 0x32b2, 0xa684, 0x0400, 0x00c0, 0x2c4a, 0x79e4, 0xa184, 0x0020,
+ 0x0040, 0x2c31, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2c31, 0x782b,
+ 0x3009, 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a,
+ 0x79e4, 0xa184, 0x0020, 0x0040, 0x2c42, 0x78ec, 0xa084, 0x0003,
+ 0x00c0, 0x2c46, 0x2001, 0x0014, 0x0078, 0x2926, 0xa184, 0x0007,
+ 0x0079, 0x2c82, 0x7a90, 0xa294, 0x0007, 0x789b, 0x0060, 0x79a8,
+ 0x81ff, 0x0040, 0x2c80, 0x789b, 0x0010, 0x7ba8, 0xa384, 0x0001,
+ 0x00c0, 0x2c71, 0x7ba8, 0x7ba8, 0xa386, 0x0001, 0x00c0, 0x2c64,
+ 0x2009, 0xfff7, 0x0078, 0x2c6a, 0xa386, 0x0003, 0x00c0, 0x2c71,
+ 0x2009, 0xffef, 0x0c7e, 0x7048, 0x2060, 0x6004, 0xa104, 0x6006,
+ 0x0c7f, 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a,
+ 0x782b, 0x3009, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff, 0x6922,
+ 0x0078, 0x347b, 0x25de, 0x25e9, 0x2c8c, 0x2c94, 0x2c8a, 0x2c8a,
+ 0x347b, 0x347b, 0x1078, 0x209b, 0x6920, 0xa18c, 0xfdff, 0xa18c,
+ 0xfeff, 0x6922, 0x0078, 0x3483, 0x6920, 0xa18c, 0xfdff, 0xa18c,
+ 0xfeff, 0x6922, 0x0078, 0x347b, 0x79e4, 0xa184, 0x0030, 0x0040,
+ 0x2ca6, 0x78ec, 0xa084, 0x0003, 0x00c0, 0x2cbc, 0x70a0, 0xa086,
+ 0x0002, 0x00c0, 0x2caf, 0x2011, 0x0002, 0x0078, 0x24c2, 0x7000,
+ 0xa086, 0x0000, 0x0040, 0x20fe, 0x6818, 0xa085, 0x8000, 0x681a,
+ 0x2001, 0x0014, 0x0078, 0x2926, 0xa184, 0x0007, 0x0079, 0x2cc0,
+ 0x347b, 0x347b, 0x2cc8, 0x347b, 0x34d6, 0x34d6, 0x347b, 0x347b,
+ 0xa684, 0x0080, 0x0040, 0x2cf7, 0x71c8, 0x81ff, 0x0040, 0x2cf7,
+ 0xa182, 0x000d, 0x00d0, 0x2cd8, 0x70cb, 0x0000, 0x0078, 0x2cdd,
+ 0xa182, 0x000c, 0x70ca, 0x2009, 0x000c, 0x789b, 0x0061, 0x79aa,
+ 0x157e, 0x137e, 0x147e, 0x70cc, 0x8114, 0xa210, 0x72ce, 0xa080,
+ 0x000b, 0xad00, 0x2098, 0x20a1, 0x012b, 0x789b, 0x0000, 0x8108,
+ 0x81ac, 0x53a6, 0x147f, 0x137f, 0x157f, 0x0078, 0x3483, 0xa684,
+ 0x0400, 0x00c0, 0x2d38, 0x6820, 0xa084, 0x0001, 0x0040, 0x3483,
+ 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040, 0x2d0c, 0xa086, 0x0060,
+ 0x00c0, 0x2d0c, 0xa18d, 0x4000, 0xa18c, 0xfffb, 0x795a, 0x69b6,
+ 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b, 0x0061, 0x6818, 0xa085,
+ 0x8000, 0x681a, 0x78aa, 0x8008, 0x810c, 0x0040, 0x2ff5, 0xa18c,
+ 0x00f8, 0x00c0, 0x2ff5, 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b,
+ 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6,
+ 0x147f, 0x137f, 0x157f, 0x6814, 0x8007, 0x7882, 0x0078, 0x3483,
+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2d3f, 0x681b, 0x0008, 0x781b,
+ 0x00da, 0x0078, 0x20fe, 0x2300, 0x0079, 0x2d46, 0x2d4b, 0x2dd2,
+ 0x2d49, 0x1078, 0x209b, 0x7000, 0xa084, 0x0007, 0x0079, 0x2d50,
+ 0x2d58, 0x2d5a, 0x2d7f, 0x2924, 0x2d58, 0x2106, 0x2d58, 0x2d58,
+ 0x1078, 0x209b, 0x681c, 0xa084, 0x2000, 0x0040, 0x2d63, 0x6008,
+ 0xa085, 0x0002, 0x600a, 0x6920, 0xa18d, 0x0001, 0x6922, 0x6800,
+ 0x6006, 0xa005, 0x00c0, 0x2d6d, 0x6002, 0x681c, 0xa084, 0x000e,
+ 0x0040, 0x2d79, 0x7014, 0x68ba, 0x712c, 0xa188, 0x6000, 0x0078,
+ 0x2d7b, 0x2009, 0x6100, 0x2104, 0x6802, 0x2d0a, 0x7156, 0x6eb6,
+ 0xa684, 0x0060, 0x0040, 0x2dd0, 0xa684, 0x0800, 0x00c0, 0x2d93,
+ 0xa684, 0x7fff, 0x68b6, 0x6894, 0x68a6, 0x6898, 0x68aa, 0x1078,
+ 0x368f, 0x0078, 0x2dd0, 0xa684, 0x0020, 0x0040, 0x2da0, 0xa006,
+ 0x1078, 0x3a01, 0x79d8, 0x7adc, 0x69aa, 0x6aa6, 0x0078, 0x2da6,
+ 0x1078, 0x33f7, 0x69aa, 0x6aa6, 0x1078, 0x3a01, 0xa684, 0x8000,
+ 0x0040, 0x2dd0, 0xa684, 0x7fff, 0x68b6, 0x2001, 0x0076, 0x1078,
+ 0x3501, 0x2010, 0x2001, 0x0078, 0x1078, 0x3501, 0x2008, 0xa684,
+ 0x0020, 0x00c0, 0x2dc8, 0x2001, 0x007a, 0x1078, 0x3501, 0x801b,
+ 0x00c8, 0x2dc3, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000,
+ 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae,
+ 0x0078, 0x2106, 0x0078, 0x32b2, 0x7033, 0x0000, 0xa282, 0x0006,
+ 0x0050, 0x2ddc, 0x1078, 0x209b, 0x2300, 0x0079, 0x2ddf, 0x2de2,
+ 0x2e0b, 0x2e31, 0x2200, 0x0079, 0x2de5, 0x2deb, 0x32b2, 0x2ded,
+ 0x2deb, 0x2e5d, 0x2eb0, 0x1078, 0x209b, 0x7003, 0x0005, 0x2001,
+ 0x6110, 0x2068, 0x703e, 0x157e, 0x20a9, 0x002f, 0x2003, 0x0000,
+ 0x8000, 0x0070, 0x2dfd, 0x0078, 0x2df6, 0x157f, 0xad80, 0x0009,
+ 0x7032, 0x6817, 0x0000, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827,
+ 0x0003, 0x0078, 0x32a6, 0x7000, 0xa086, 0x0001, 0x00c0, 0x2e18,
+ 0x1078, 0x2fdc, 0x1078, 0x368f, 0x7034, 0x600a, 0x0078, 0x2e1d,
+ 0x7000, 0xa086, 0x0003, 0x0040, 0x2e12, 0x7003, 0x0005, 0x2001,
+ 0x6110, 0x2068, 0x703e, 0xad80, 0x0009, 0x7032, 0x2200, 0x0079,
+ 0x2e29, 0x32b2, 0x2e2f, 0x2e2f, 0x2e5d, 0x2e2f, 0x32b2, 0x1078,
+ 0x209b, 0x7000, 0xa086, 0x0001, 0x00c0, 0x2e3e, 0x1078, 0x2fdc,
+ 0x1078, 0x368f, 0x7034, 0x600a, 0x0078, 0x2e43, 0x7000, 0xa086,
+ 0x0003, 0x0040, 0x2e38, 0x7003, 0x0005, 0x2001, 0x6110, 0x2068,
+ 0x703e, 0xad80, 0x0009, 0x7032, 0x2200, 0x0079, 0x2e4f, 0x2e57,
+ 0x2e55, 0x2e55, 0x2e57, 0x2e55, 0x2e57, 0x1078, 0x209b, 0x1078,
+ 0x32d4, 0x781b, 0x0067, 0x0078, 0x20fe, 0x7000, 0xa086, 0x0001,
+ 0x00c0, 0x2e6a, 0x1078, 0x2fdc, 0x1078, 0x368f, 0x7034, 0x600a,
+ 0x0078, 0x2e6f, 0x7000, 0xa086, 0x0003, 0x0040, 0x2e64, 0x7003,
+ 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484,
+ 0x001f, 0xa215, 0x2069, 0x6100, 0x2d04, 0x2d08, 0x7156, 0x2068,
+ 0xa005, 0x0040, 0x2e8a, 0x6814, 0xa206, 0x0040, 0x2ea5, 0x6800,
+ 0x0078, 0x2e7d, 0x7003, 0x0005, 0x2001, 0x6110, 0x2068, 0x703e,
+ 0x157e, 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, 0x0070, 0x2e9a,
+ 0x0078, 0x2e93, 0x157f, 0xad80, 0x0009, 0x7032, 0x6a16, 0x68b7,
+ 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6820,
+ 0xa084, 0x0c00, 0x0040, 0x2f11, 0x1078, 0x32cc, 0x0078, 0x2f11,
+ 0x7000, 0xa086, 0x0001, 0x00c0, 0x2ebd, 0x1078, 0x2fdc, 0x1078,
+ 0x368f, 0x7034, 0x600a, 0x0078, 0x2ec2, 0x7000, 0xa086, 0x0003,
+ 0x0040, 0x2eb7, 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b,
+ 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0x79a8, 0x79a8, 0xa18c,
+ 0x00ff, 0xa1e8, 0x6000, 0x2d04, 0x2d08, 0x7156, 0x2068, 0xa005,
+ 0x0040, 0x2ee1, 0x6814, 0xa206, 0x0040, 0x2efc, 0x6800, 0x0078,
+ 0x2ed4, 0x7003, 0x0005, 0x2001, 0x6110, 0x2068, 0x703e, 0x157e,
+ 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, 0x0070, 0x2ef1, 0x0078,
+ 0x2eea, 0x157f, 0xad80, 0x0009, 0x7032, 0x6a16, 0x68b7, 0x0700,
+ 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6820, 0xa084,
+ 0x0c00, 0x0040, 0x2f11, 0xa084, 0x0800, 0x0040, 0x2f0b, 0x1078,
+ 0x32d0, 0x0078, 0x2f11, 0x1078, 0x32cc, 0x70bf, 0x0000, 0x0078,
+ 0x2f11, 0x027e, 0x8207, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003,
+ 0xa080, 0x3f80, 0x2060, 0x704a, 0x6000, 0x704e, 0x6004, 0x7052,
+ 0xa684, 0x0060, 0x0040, 0x2f51, 0x6b98, 0x6c94, 0x69ac, 0x68b0,
+ 0xa105, 0x00c0, 0x2f3f, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa6b4,
+ 0xb7ff, 0x7e5a, 0xa684, 0x0060, 0xa086, 0x0060, 0x0040, 0x2f51,
+ 0x1078, 0x3943, 0xa6b5, 0x2000, 0x7e5a, 0x0078, 0x2f51, 0x68b0,
+ 0xa31a, 0x2100, 0xa423, 0x2400, 0xa305, 0x0040, 0x2f51, 0x7bd2,
+ 0x7bda, 0x7cd6, 0x7cde, 0x68b0, 0xa6b4, 0xbfff, 0x7e5a, 0x1078,
+ 0x3978, 0x077f, 0x1078, 0x33ea, 0x2009, 0x0068, 0xa684, 0x0008,
+ 0x0040, 0x2f70, 0x78e4, 0xa084, 0x0030, 0x0040, 0x2f68, 0x78ec,
+ 0xa084, 0x0003, 0x0040, 0x2f68, 0x2009, 0x0067, 0x0078, 0x2f70,
+ 0x0f7e, 0x2079, 0x3d00, 0x1078, 0x368f, 0x0f7f, 0x0078, 0x2106,
+ 0x791a, 0x2d00, 0x703e, 0x8207, 0xa084, 0x000f, 0x8003, 0x8003,
+ 0x8003, 0xa080, 0x3f80, 0x2048, 0x0078, 0x20fe, 0x6020, 0xa005,
+ 0x0040, 0x2f8a, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, 0x600a,
+ 0x7010, 0x6026, 0x007c, 0xa006, 0x1078, 0x368f, 0x6817, 0x0000,
+ 0x681b, 0x0001, 0x6823, 0x0040, 0x681f, 0x0100, 0x7000, 0xa084,
+ 0x0007, 0x0079, 0x2f9b, 0x2fa3, 0x2fa5, 0x2fa5, 0x2fc2, 0x2fad,
+ 0x2fa3, 0x2fad, 0x2fa3, 0x1078, 0x209b, 0x1078, 0x2fcd, 0x1078,
+ 0x2fc6, 0x1078, 0x1b56, 0x0078, 0x2106, 0x70a0, 0x70a3, 0x0000,
+ 0x70c7, 0x0000, 0x0079, 0x2fb4, 0x2fbe, 0x2fbe, 0x2fbc, 0x2fbc,
+ 0x2fbc, 0x2fbe, 0x2fbc, 0x2fbe, 0x0079, 0x24db, 0x70a3, 0x0000,
+ 0x0078, 0x2106, 0x681b, 0x0000, 0x0078, 0x2b1c, 0x6800, 0xa005,
+ 0x00c0, 0x2fcb, 0x6002, 0x6006, 0x007c, 0x6010, 0xa005, 0x0040,
+ 0x2fd6, 0x8001, 0x00d0, 0x2fd6, 0x1078, 0x209b, 0x6012, 0x6008,
+ 0xa084, 0xffef, 0x600a, 0x007c, 0x6018, 0xa005, 0x0040, 0x2fe2,
+ 0x8001, 0x601a, 0x007c, 0x1078, 0x34fc, 0x681b, 0x0018, 0x0078,
+ 0x3019, 0x1078, 0x34fc, 0x681b, 0x0019, 0x0078, 0x3019, 0x1078,
+ 0x34fc, 0x681b, 0x001a, 0x0078, 0x3019, 0x1078, 0x34fc, 0x681b,
+ 0x0003, 0x0078, 0x3019, 0x77b4, 0x1078, 0x33ea, 0x71b8, 0xa18c,
+ 0x00ff, 0xa1e8, 0x6000, 0x2d04, 0x2d08, 0x2068, 0xa005, 0x00c0,
+ 0x300b, 0x0078, 0x2106, 0x6814, 0x72b4, 0xa206, 0x0040, 0x3013,
+ 0x6800, 0x0078, 0x3004, 0x6800, 0x200a, 0x681b, 0x0005, 0x70bf,
+ 0x0000, 0x1078, 0x2fcd, 0x6820, 0xa084, 0x0001, 0x00c0, 0x3022,
+ 0x1078, 0x2fc6, 0x1078, 0x2fdc, 0x681f, 0x0000, 0x6823, 0x0020,
+ 0x1078, 0x1b56, 0x0078, 0x2106, 0xa282, 0x0005, 0x00c0, 0x32a6,
+ 0x78a8, 0xa084, 0x00ff, 0x802f, 0x78a8, 0xa084, 0x00ff, 0xa52d,
+ 0x78a8, 0xa084, 0x00ff, 0x8037, 0x78a8, 0xa084, 0x00ff, 0xa635,
+ 0x7cd8, 0x2600, 0xa420, 0x7bdc, 0x2500, 0xa319, 0x0048, 0x32a6,
+ 0x7cda, 0x7bde, 0x6caa, 0x7cd2, 0x6ba6, 0x7bd6, 0x1078, 0x3735,
+ 0x1078, 0x3932, 0x781b, 0x0065, 0x0078, 0x20fe, 0xa006, 0x1078,
+ 0x3a01, 0x781b, 0x0065, 0x0078, 0x20fe, 0x78d0, 0x79d4, 0x1078,
+ 0x3978, 0x0078, 0x20fe, 0xa282, 0x0003, 0x00c0, 0x32a6, 0x7da8,
+ 0xa5ac, 0x00ff, 0x7ea8, 0xa6b4, 0x00ff, 0x6920, 0xa18d, 0x0080,
+ 0x6922, 0xa184, 0x0100, 0x0040, 0x30c3, 0xa18c, 0xfeff, 0x6922,
+ 0xa6b4, 0x00ff, 0x0040, 0x30ad, 0xa682, 0x000c, 0x0048, 0x3084,
+ 0x0040, 0x3084, 0x2031, 0x000c, 0x852b, 0x852b, 0x1078, 0x335f,
+ 0x0040, 0x308e, 0x1078, 0x317b, 0x0078, 0x30b6, 0x1078, 0x331a,
+ 0x0c7e, 0x2960, 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x319f,
+ 0x0c7f, 0x6920, 0xa18d, 0x0100, 0x6922, 0x7e58, 0xa6b5, 0x0004,
+ 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x30a9, 0x781b, 0x0053, 0x0078,
+ 0x20fe, 0x781b, 0x0067, 0x0078, 0x20fe, 0x0c7e, 0x2960, 0x6004,
+ 0xa084, 0xfff5, 0x6006, 0x1078, 0x319f, 0x0c7f, 0x7e58, 0xa684,
+ 0x0400, 0x00c0, 0x30bf, 0x781b, 0x0056, 0x0078, 0x20fe, 0x781b,
+ 0x0068, 0x0078, 0x20fe, 0x0c7e, 0x7048, 0x2060, 0x6100, 0xa18c,
+ 0x1000, 0x0040, 0x3103, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282,
+ 0x000c, 0x0048, 0x30d7, 0x0040, 0x30d7, 0x2011, 0x000c, 0x2600,
+ 0xa202, 0x00c8, 0x30dc, 0x2230, 0x6208, 0xa294, 0x00ff, 0x7018,
+ 0xa086, 0x0028, 0x00c0, 0x30ec, 0xa282, 0x0019, 0x00c8, 0x30f2,
+ 0x2011, 0x0019, 0x0078, 0x30f2, 0xa282, 0x000c, 0x00c8, 0x30f2,
+ 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, 0x30f7, 0x2228, 0x1078,
+ 0x331e, 0x852b, 0x852b, 0x1078, 0x335f, 0x0040, 0x3103, 0x1078,
+ 0x317b, 0x0078, 0x3107, 0x1078, 0x331a, 0x1078, 0x319f, 0x7858,
+ 0xa085, 0x0004, 0x785a, 0x0c7f, 0x781b, 0x0067, 0x0078, 0x20fe,
+ 0x0c7e, 0x2960, 0x6000, 0xa084, 0x1000, 0x00c0, 0x3128, 0x6010,
+ 0xa084, 0x000f, 0x00c0, 0x3122, 0x6104, 0xa18c, 0xfff5, 0x6106,
+ 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078, 0x314f,
+ 0x68a0, 0xa084, 0x0200, 0x00c0, 0x3122, 0x6208, 0xa294, 0x00ff,
+ 0x7018, 0xa086, 0x0028, 0x00c0, 0x313d, 0xa282, 0x0019, 0x00c8,
+ 0x3143, 0x2011, 0x0019, 0x0078, 0x3143, 0xa282, 0x000c, 0x00c8,
+ 0x3143, 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382,
+ 0x000c, 0x0048, 0x314f, 0x0040, 0x314f, 0x2019, 0x000c, 0x78ab,
+ 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0,
+ 0x0005, 0x6820, 0xa085, 0x0100, 0x6822, 0x0c7f, 0x007c, 0x0c7e,
+ 0x2960, 0x6104, 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019,
+ 0x0000, 0x0078, 0x316b, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab,
+ 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xa085, 0x0100,
+ 0x6822, 0x0c7f, 0x007c, 0x0c7e, 0x7148, 0x2160, 0x2008, 0xa084,
+ 0xfff0, 0xa635, 0x7e86, 0x6018, 0x789a, 0x7eae, 0x6612, 0x78a4,
+ 0xa084, 0xfff8, 0xa18c, 0x0007, 0xa105, 0x78a6, 0x6016, 0x788a,
+ 0xa6b4, 0x000f, 0x8637, 0x8204, 0x8004, 0xa084, 0x00ff, 0xa605,
+ 0x600e, 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x007c, 0x0c7e,
+ 0x7048, 0x2060, 0x6018, 0x789a, 0x78a4, 0xa084, 0xfff0, 0x78a6,
+ 0x6012, 0x7884, 0xa084, 0xfff0, 0x7886, 0x0c7f, 0x007c, 0xa282,
+ 0x0002, 0x00c0, 0x32a6, 0x7aa8, 0x6920, 0xa18d, 0x0080, 0x6922,
+ 0xa184, 0x0200, 0x0040, 0x31f4, 0xa18c, 0xfdff, 0x6922, 0xa294,
+ 0x00ff, 0xa282, 0x0002, 0x00c8, 0x32a6, 0x1078, 0x323b, 0x1078,
+ 0x319f, 0xa980, 0x0001, 0x200c, 0x1078, 0x33e6, 0x1078, 0x3110,
+ 0x88ff, 0x0040, 0x31e7, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58,
+ 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x31e3, 0x781b,
+ 0x0053, 0x0078, 0x20fe, 0x781b, 0x0067, 0x0078, 0x20fe, 0x7e58,
+ 0xa684, 0x0400, 0x00c0, 0x31f0, 0x781b, 0x0056, 0x0078, 0x20fe,
+ 0x781b, 0x0068, 0x0078, 0x20fe, 0xa282, 0x0002, 0x00c8, 0x31fc,
+ 0xa284, 0x0001, 0x0040, 0x3206, 0x7148, 0xa188, 0x0000, 0x210c,
+ 0xa18c, 0x2000, 0x00c0, 0x3206, 0x2011, 0x0000, 0x1078, 0x330c,
+ 0x1078, 0x323b, 0x1078, 0x319f, 0x7858, 0xa085, 0x0004, 0x785a,
+ 0x781b, 0x0067, 0x0078, 0x20fe, 0x0c7e, 0x027e, 0x2960, 0x6000,
+ 0x2011, 0x0001, 0xa084, 0x2000, 0x00c0, 0x322b, 0x6014, 0xa084,
+ 0x0040, 0x00c0, 0x3229, 0xa18c, 0xffef, 0x6106, 0xa006, 0x0078,
+ 0x3238, 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab,
+ 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x6820, 0xa085, 0x0200, 0x6822,
+ 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7048, 0x2060, 0x82ff, 0x0040,
+ 0x3243, 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, 0x78a4,
+ 0xa084, 0xffbf, 0xa205, 0x78a6, 0x6016, 0x788a, 0x6004, 0xa084,
+ 0xffef, 0x6006, 0x0c7f, 0x007c, 0x007e, 0x7000, 0xa086, 0x0003,
+ 0x0040, 0x325d, 0x007f, 0x0078, 0x3260, 0x007f, 0x0078, 0x32a2,
+ 0xa684, 0x0020, 0x0040, 0x32a2, 0x7888, 0xa084, 0x0040, 0x0040,
+ 0x32a2, 0x7bb8, 0xa384, 0x003f, 0x831b, 0x00c8, 0x3270, 0x8000,
+ 0xa005, 0x0040, 0x3286, 0x831b, 0x00c8, 0x3279, 0x8001, 0x0040,
+ 0x329e, 0xa684, 0x4000, 0x0040, 0x3286, 0x78b8, 0x801b, 0x00c8,
+ 0x3282, 0x8000, 0xa084, 0x003f, 0x00c0, 0x329e, 0xa6b4, 0xbfff,
+ 0x7e5a, 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, 0x00c8, 0x3292,
+ 0xa291, 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, 0x1078, 0x3a01,
+ 0x781b, 0x0065, 0x1078, 0x38d2, 0x0078, 0x20fe, 0x781b, 0x0065,
+ 0x0078, 0x20fe, 0x781b, 0x0068, 0x0078, 0x20fe, 0x1078, 0x32d8,
+ 0x781b, 0x0067, 0x0078, 0x20fe, 0x1078, 0x32c4, 0x781b, 0x0067,
+ 0x0078, 0x20fe, 0x6827, 0x0002, 0x1078, 0x32cc, 0x78e4, 0xa084,
+ 0x0030, 0x0040, 0x2106, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2106,
+ 0x781b, 0x0067, 0x0078, 0x20fe, 0x2001, 0x0005, 0x0078, 0x32da,
+ 0x2001, 0x000c, 0x0078, 0x32da, 0x2001, 0x0006, 0x0078, 0x32da,
+ 0x2001, 0x000d, 0x0078, 0x32da, 0x2001, 0x0009, 0x0078, 0x32da,
+ 0x2001, 0x0007, 0x789b, 0x007e, 0x78aa, 0xa6b5, 0x0008, 0x7e5a,
+ 0x007c, 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703,
+ 0xa0e0, 0x3f80, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184, 0x000f,
+ 0x0040, 0x32fa, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004, 0xa085,
+ 0x0008, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184, 0x0040,
+ 0x0040, 0x330a, 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004, 0xa085,
+ 0x0010, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001,
+ 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab,
+ 0x0004, 0x007c, 0x2031, 0x0000, 0x2029, 0x0032, 0x789b, 0x0010,
+ 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, 0x7eaa,
+ 0x789b, 0x0060, 0x78ab, 0x0005, 0x007c, 0x157e, 0x8007, 0xa084,
+ 0x00ff, 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, 0x79a4, 0xa18c,
+ 0xfff0, 0x2001, 0x3d46, 0x2004, 0xa082, 0x0028, 0x0040, 0x3348,
+ 0x2021, 0x33cd, 0x2019, 0x0014, 0x20a9, 0x000c, 0x0078, 0x334e,
+ 0x2021, 0x33d9, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011, 0x0064,
+ 0x2404, 0xa084, 0xfff0, 0xa106, 0x0040, 0x335d, 0x8420, 0x2300,
+ 0xa210, 0x0070, 0x335d, 0x0078, 0x3350, 0x157f, 0x007c, 0x157e,
+ 0x2011, 0x3d46, 0x2214, 0xa282, 0x0032, 0x0048, 0x3373, 0x0040,
+ 0x3377, 0x2021, 0x33bf, 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011,
+ 0x0032, 0x0078, 0x3389, 0xa282, 0x0028, 0x0040, 0x3381, 0x2021,
+ 0x33cd, 0x2019, 0x0014, 0x20a9, 0x000c, 0x2011, 0x0064, 0x0078,
+ 0x3389, 0x2021, 0x33d9, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011,
+ 0x0064, 0x2200, 0xa502, 0x0040, 0x3399, 0x0048, 0x3399, 0x8420,
+ 0x2300, 0xa210, 0x0070, 0x3396, 0x0078, 0x3389, 0x157f, 0xa006,
+ 0x007c, 0x157f, 0xa582, 0x0064, 0x00c8, 0x33a4, 0x7808, 0xa085,
+ 0x0070, 0x780a, 0x0078, 0x33a4, 0x78ec, 0xa084, 0x0300, 0x0040,
+ 0x33ac, 0x2404, 0x0078, 0x33bd, 0x2404, 0xa09e, 0x1102, 0x00c0,
+ 0x33bd, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x0048, 0x33bc,
+ 0x2001, 0x1201, 0x0078, 0x33bd, 0x2404, 0xa005, 0x007c, 0x1102,
+ 0x3002, 0x3202, 0x4203, 0x4403, 0x5404, 0x5604, 0x6605, 0x6805,
+ 0x7806, 0x7a06, 0x0c07, 0x0c07, 0x0e07, 0x3202, 0x4202, 0x5202,
+ 0x6202, 0x7202, 0x6605, 0x7605, 0x7805, 0x7a05, 0x7c05, 0x7e05,
+ 0x7f05, 0x2202, 0x3202, 0x4202, 0x5202, 0x5404, 0x6404, 0x7404,
+ 0x7604, 0x7804, 0x7a04, 0x7c04, 0x7e04, 0x7f04, 0x789b, 0x0010,
+ 0xa046, 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003,
+ 0x8003, 0x8003, 0x8003, 0xa105, 0xa0e0, 0x4000, 0x007c, 0x79d8,
+ 0x7adc, 0x78d0, 0x801b, 0x00c8, 0x33fe, 0x8000, 0xa084, 0x003f,
+ 0xa108, 0xa291, 0x0000, 0x007c, 0x0f7e, 0x2079, 0x0100, 0x2009,
+ 0x3d40, 0x2091, 0x8000, 0x2104, 0x0079, 0x340e, 0x3444, 0x3418,
+ 0x3418, 0x3418, 0x3418, 0x3418, 0x3418, 0x3416, 0x1078, 0x209b,
+ 0x784b, 0x0004, 0x7848, 0xa084, 0x0004, 0x00c0, 0x341a, 0x784b,
+ 0x0008, 0x7848, 0xa084, 0x0008, 0x00c0, 0x3421, 0x68b4, 0xa085,
+ 0x4000, 0x68b6, 0x7858, 0xa085, 0x4000, 0x785a, 0x7830, 0xa084,
+ 0x0080, 0x00c0, 0x3444, 0x0018, 0x3444, 0x681c, 0xa084, 0x0020,
+ 0x00c0, 0x3442, 0x0e7e, 0x2071, 0x3d40, 0x1078, 0x348b, 0x0e7f,
+ 0x0078, 0x3444, 0x781b, 0x00e6, 0x2091, 0x8001, 0x0f7f, 0x007c,
+ 0x0c7e, 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003,
+ 0xa0e0, 0x3f80, 0x6004, 0xa084, 0x000a, 0x00c0, 0x3479, 0x6108,
+ 0xa194, 0xff00, 0x0040, 0x3479, 0xa18c, 0x00ff, 0x2001, 0x0019,
+ 0xa106, 0x0040, 0x346a, 0x2001, 0x0032, 0xa106, 0x0040, 0x346e,
+ 0x0078, 0x3472, 0x2009, 0x0020, 0x0078, 0x3474, 0x2009, 0x003f,
+ 0x0078, 0x3474, 0x2011, 0x0000, 0x2100, 0xa205, 0x600a, 0x6004,
+ 0x6006, 0x0c7f, 0x007c, 0x781b, 0x0068, 0x0078, 0x20fe, 0x781b,
+ 0x0067, 0x0078, 0x20fe, 0x781b, 0x0056, 0x0078, 0x20fe, 0x781b,
+ 0x0053, 0x0078, 0x20fe, 0x2009, 0x3d1e, 0x210c, 0xa186, 0x0000,
+ 0x0040, 0x349f, 0xa186, 0x0001, 0x0040, 0x34a2, 0x2009, 0x3d35,
+ 0x200b, 0x000b, 0x70a3, 0x0001, 0x781b, 0x0047, 0x007c, 0x781b,
+ 0x00df, 0x007c, 0x2009, 0x3d35, 0x200b, 0x000a, 0x007c, 0x2009,
+ 0x3d1e, 0x210c, 0xa186, 0x0000, 0x0040, 0x34c2, 0xa186, 0x0001,
+ 0x0040, 0x34bc, 0x2009, 0x3d35, 0x200b, 0x000b, 0x70a3, 0x0001,
+ 0x781b, 0x0047, 0x0078, 0x20fe, 0x2009, 0x3d35, 0x200b, 0x000a,
+ 0x0078, 0x20fe, 0x781b, 0x00de, 0x0078, 0x20fe, 0x781b, 0x00e6,
+ 0x0078, 0x20fe, 0x781b, 0x00e5, 0x0078, 0x20fe, 0x781b, 0x009d,
+ 0x0078, 0x20fe, 0x781b, 0x009c, 0x0078, 0x20fe, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x34dd, 0x681b, 0x001d, 0x70a3, 0x0001, 0x781b,
+ 0x0047, 0x0078, 0x20fe, 0x007e, 0x7830, 0xa084, 0x00c0, 0x00c0,
+ 0x34fa, 0x7808, 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040, 0x34fa, 0x7808, 0xa085,
+ 0x0002, 0x780a, 0x007f, 0x007c, 0x7808, 0xa085, 0x0002, 0x780a,
+ 0x007c, 0x007e, 0x7830, 0xa084, 0x0040, 0x00c0, 0x3502, 0x0098,
+ 0x350d, 0x007f, 0x789a, 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd,
+ 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021,
+ 0x0040, 0x351c, 0x0098, 0x351a, 0x007f, 0x789a, 0x78ac, 0x007e,
+ 0x7808, 0xa085, 0x0002, 0x780a, 0x007f, 0x007c, 0xa784, 0x0001,
+ 0x00c0, 0x2b67, 0xa784, 0x0070, 0x0040, 0x3536, 0x0c7e, 0x2d60,
+ 0x2f68, 0x1078, 0x2046, 0x2d78, 0x2c68, 0x0c7f, 0xa784, 0x0008,
+ 0x0040, 0x3543, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040,
+ 0x2106, 0x0078, 0x347b, 0xa784, 0x0004, 0x0040, 0x3576, 0x78b8,
+ 0xa084, 0x4001, 0x0040, 0x3576, 0x784b, 0x0008, 0x78ec, 0xa084,
+ 0x0003, 0x0040, 0x2106, 0x78e4, 0xa084, 0x0007, 0xa086, 0x0001,
+ 0x00c0, 0x3576, 0x78c0, 0xa685, 0x4800, 0x2030, 0x7e5a, 0x781b,
+ 0x00e6, 0x0078, 0x20fe, 0x784b, 0x0008, 0x6818, 0xa084, 0x8000,
+ 0x0040, 0x3572, 0x681b, 0x0015, 0xa684, 0x4000, 0x0040, 0x3572,
+ 0x681b, 0x0007, 0x1078, 0x348b, 0x0078, 0x20fe, 0x681b, 0x0003,
+ 0x7858, 0xa084, 0x3f00, 0x681e, 0x682f, 0x0000, 0x6833, 0x0000,
+ 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x25cd, 0x0018,
+ 0x20fe, 0x0078, 0x32ac, 0x6b14, 0x8307, 0xa084, 0x000f, 0x8003,
+ 0x8003, 0x8003, 0xa080, 0x3f80, 0x2060, 0x2048, 0x704a, 0x6000,
+ 0x704e, 0x6004, 0x7052, 0x2a60, 0x007c, 0x0020, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0062,
+ 0x000a, 0x0014, 0x0014, 0x9848, 0x0014, 0x0014, 0x98fa, 0x98e9,
+ 0x0014, 0x0014, 0x0014, 0x0080, 0x00c1, 0x0100, 0x0402, 0x2008,
+ 0xf880, 0x0018, 0xa20a, 0x0014, 0x300b, 0xa20c, 0x0014, 0xa200,
+ 0x8838, 0x3806, 0x8839, 0x28c2, 0x9cc2, 0xa805, 0x0864, 0xa83d,
+ 0x3008, 0x28c1, 0x9cc2, 0xa201, 0x300c, 0x2847, 0x8161, 0x846a,
+ 0x8000, 0x84a4, 0x1856, 0x883a, 0xa808, 0x28e2, 0x9c9f, 0xa8f3,
+ 0x0864, 0xa82b, 0x300c, 0xa801, 0x3008, 0x28e1, 0x9c9f, 0x280d,
+ 0xa204, 0x64c0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576,
+ 0x8677, 0xa80f, 0x786e, 0x883e, 0xa80c, 0x282b, 0xa205, 0x64a0,
+ 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, 0x8677, 0xa801,
+ 0x883e, 0x206b, 0x28c1, 0x9cc2, 0x2044, 0x2103, 0x20a2, 0x2081,
+ 0xa8dc, 0xa207, 0x2901, 0xa80a, 0x0014, 0xa203, 0x8000, 0x85a4,
+ 0x1872, 0x879a, 0x883c, 0x1fe2, 0xf601, 0xa208, 0x856e, 0x866f,
+ 0x0704, 0x3008, 0x9c9f, 0x0014, 0xa202, 0x8000, 0x85a4, 0x3009,
+ 0x84a8, 0x19e2, 0xf848, 0x8176, 0x86eb, 0x85eb, 0x872e, 0x87a9,
+ 0x883f, 0x08e6, 0xa8f1, 0xf861, 0xa8e8, 0xf801, 0x0014, 0xf881,
+ 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfaa2, 0x1de2, 0x0014, 0x8532,
+ 0xf221, 0x0014, 0x1de2, 0x84a8, 0xd6e0, 0x1fe6, 0x0014, 0xa206,
+ 0x6865, 0x817e, 0x842a, 0x1dc1, 0x8823, 0x0016, 0x6042, 0x8008,
+ 0xa8fa, 0x8000, 0x84a4, 0x8160, 0x842a, 0xf021, 0x3008, 0x84a8,
+ 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d4, 0x8822, 0x0016, 0x8000,
+ 0x2848, 0x1011, 0xa8fc, 0x3008, 0x8000, 0xa000, 0x2802, 0x1011,
+ 0xa8fd, 0xa883, 0x3008, 0x283d, 0x1011, 0xa8fd, 0xa209, 0x0017,
+ 0x300c, 0x8000, 0x85a4, 0x1de2, 0xdac1, 0x0014, 0x0210, 0xa801,
+ 0x0014, 0x26e0, 0x873a, 0xfaa2, 0x19f2, 0x1fe2, 0x0014, 0xa20b,
+ 0x0014, 0xa20d, 0x3806, 0x0210, 0x9ccc, 0x0704, 0x0000, 0x127e,
+ 0x2091, 0x2200, 0x2049, 0x368f, 0x7000, 0x7204, 0xa205, 0x720c,
+ 0xa215, 0x7008, 0xa084, 0xfff7, 0xa205, 0x0040, 0x36a1, 0x0078,
+ 0x36a4, 0x127f, 0x2000, 0x007c, 0x7000, 0xa084, 0x0001, 0x00c0,
+ 0x36d2, 0x7108, 0x8103, 0x00c8, 0x36b1, 0x1078, 0x37bf, 0x0078,
+ 0x36a9, 0x700c, 0xa08c, 0x00ff, 0x0040, 0x36d2, 0x7004, 0x8004,
+ 0x00c8, 0x36c9, 0x7014, 0xa005, 0x00c0, 0x36c5, 0x7010, 0xa005,
+ 0x0040, 0x36c9, 0xa102, 0x00c8, 0x36a9, 0x7007, 0x0010, 0x0078,
+ 0x36d2, 0x8aff, 0x0040, 0x36d2, 0x1078, 0x39d8, 0x00c0, 0x36cc,
+ 0x0040, 0x36a9, 0x1078, 0x374f, 0x7003, 0x0000, 0x127f, 0x2000,
+ 0x007c, 0x6428, 0x84ff, 0x0040, 0x3705, 0x2c70, 0x7004, 0xa0bc,
+ 0x000f, 0xa7b8, 0x3715, 0x273c, 0x87fb, 0x00c0, 0x36f3, 0x0048,
+ 0x36eb, 0x1078, 0x209b, 0x609c, 0xa075, 0x0040, 0x3705, 0x0078,
+ 0x36de, 0x2039, 0x370a, 0x2704, 0xae68, 0x6808, 0xa630, 0x680c,
+ 0xa529, 0x8421, 0x0040, 0x3705, 0x8738, 0x2704, 0xa005, 0x00c0,
+ 0x36f4, 0x709c, 0xa075, 0x00c0, 0x36de, 0x007c, 0x0000, 0x0005,
+ 0x0009, 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, 0x0003,
+ 0x0009, 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x370a, 0x3707,
+ 0x0000, 0x0000, 0x8000, 0x0000, 0x370a, 0x0000, 0x3712, 0x370f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3712, 0x0000, 0x370d, 0x370d,
+ 0x0000, 0x0000, 0x8000, 0x0000, 0x370d, 0x0000, 0x3713, 0x3713,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3713, 0x127e, 0x2091, 0x2200,
+ 0x2079, 0x3d00, 0x2071, 0x0010, 0x7007, 0x000a, 0x7007, 0x0002,
+ 0x7003, 0x0000, 0x2071, 0x0020, 0x7007, 0x000a, 0x7007, 0x0002,
+ 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, 0x2049,
+ 0x374f, 0x2019, 0x0000, 0x7004, 0x8004, 0x00c8, 0x379b, 0x7007,
+ 0x0012, 0x7108, 0x7008, 0xa106, 0x00c0, 0x3759, 0xa184, 0x01e0,
+ 0x0040, 0x3764, 0x1078, 0x209b, 0xa184, 0x4000, 0x00c0, 0x3759,
+ 0xa19c, 0x300c, 0xa386, 0x2004, 0x0040, 0x3776, 0xa386, 0x0008,
+ 0x0040, 0x3781, 0xa386, 0x200c, 0x00c0, 0x3759, 0x7200, 0x8204,
+ 0x0048, 0x3781, 0x730c, 0xa384, 0x00ff, 0x0040, 0x3781, 0x1078,
+ 0x209b, 0x7007, 0x0012, 0x7000, 0xa084, 0x0001, 0x00c0, 0x379b,
+ 0x7008, 0xa084, 0x01e0, 0x00c0, 0x379b, 0x7310, 0x7014, 0xa305,
+ 0x0040, 0x379b, 0x710c, 0xa184, 0x0300, 0x00c0, 0x379b, 0xa184,
+ 0x00ff, 0x00c0, 0x374f, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004,
+ 0xa084, 0x0008, 0x00c0, 0x379f, 0x7007, 0x0012, 0x7108, 0x8103,
+ 0x0048, 0x37a4, 0x7003, 0x0000, 0x2049, 0x0000, 0x007c, 0x107e,
+ 0x007e, 0x127e, 0x157e, 0x2091, 0x2200, 0x7108, 0x1078, 0x37bf,
+ 0x157f, 0x127f, 0x2091, 0x8001, 0x007f, 0x107f, 0x007c, 0x7204,
+ 0x7500, 0x730c, 0xa384, 0x0300, 0x00c0, 0x3801, 0xa184, 0x01e0,
+ 0x00c0, 0x3825, 0x7108, 0xa184, 0x01e0, 0x00c0, 0x3825, 0x2001,
+ 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8, 0x37f5, 0xa184, 0x4000,
+ 0x00c0, 0x37ca, 0xa986, 0x3a01, 0x00c0, 0x37f5, 0xa19c, 0x300c,
+ 0xa386, 0x2004, 0x0040, 0x37ec, 0xa386, 0x0008, 0x0040, 0x37f5,
+ 0xa386, 0x200c, 0x00c0, 0x37ca, 0x7200, 0x8204, 0x0048, 0x37f5,
+ 0x730c, 0xa384, 0x00ff, 0x00c0, 0x3801, 0xa184, 0x0007, 0x0079,
+ 0x37f9, 0x3803, 0x3815, 0x3801, 0x3815, 0x3801, 0x3861, 0x3801,
+ 0x385f, 0x1078, 0x209b, 0x7004, 0xa084, 0x0010, 0xa085, 0x0002,
+ 0x7006, 0x8aff, 0x00c0, 0x3810, 0x2049, 0x0000, 0x0078, 0x3814,
+ 0x1078, 0x39d8, 0x00c0, 0x3810, 0x007c, 0x7004, 0xa084, 0x0010,
+ 0xa085, 0x0002, 0x7006, 0x8aff, 0x00c0, 0x3820, 0x0078, 0x3824,
+ 0x1078, 0x39d8, 0x00c0, 0x3820, 0x007c, 0x7007, 0x0012, 0x7108,
+ 0x00e0, 0x3828, 0x2091, 0x6000, 0x00e0, 0x382c, 0x2091, 0x6000,
+ 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xa084, 0x0008, 0x00c0,
+ 0x3834, 0x7007, 0x0012, 0x7108, 0x8103, 0x0048, 0x3839, 0x7003,
+ 0x0000, 0x7000, 0xa005, 0x00c0, 0x384d, 0x7004, 0xa005, 0x00c0,
+ 0x384d, 0x700c, 0xa005, 0x0040, 0x384f, 0x0078, 0x3830, 0x2049,
+ 0x0000, 0x1078, 0x3404, 0x6818, 0xa084, 0x8000, 0x0040, 0x385a,
+ 0x681b, 0x0002, 0x007c, 0x1078, 0x209b, 0x1078, 0x209b, 0x1078,
+ 0x38bd, 0x7210, 0x7114, 0x700c, 0xa09c, 0x00ff, 0x2800, 0xa300,
+ 0xa211, 0xa189, 0x0000, 0x1078, 0x38bd, 0x2704, 0x2c58, 0xac60,
+ 0x6308, 0x2200, 0xa322, 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305,
+ 0x0040, 0x3884, 0x00c8, 0x3884, 0x8412, 0x8210, 0x830a, 0xa189,
+ 0x0000, 0x2b60, 0x0078, 0x386b, 0x2b60, 0x8a07, 0x007e, 0x6004,
+ 0xa084, 0x0008, 0x0040, 0x3890, 0xa7ba, 0x370f, 0x0078, 0x3892,
+ 0xa7ba, 0x3707, 0x007f, 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92,
+ 0x6b8e, 0x7007, 0x0012, 0x1078, 0x374f, 0x007c, 0x8738, 0x2704,
+ 0xa005, 0x00c0, 0x38b1, 0x609c, 0xa005, 0x0040, 0x38ba, 0x2060,
+ 0x6004, 0xa084, 0x000f, 0xa080, 0x3715, 0x203c, 0x87fb, 0x1040,
+ 0x209b, 0x8a51, 0x0040, 0x38b9, 0x7008, 0xa084, 0x0003, 0xa086,
+ 0x0003, 0x007c, 0x2051, 0x0000, 0x007c, 0x8a50, 0x8739, 0x2704,
+ 0xa004, 0x00c0, 0x38d1, 0x6000, 0xa064, 0x00c0, 0x38c8, 0x2d60,
+ 0x6004, 0xa084, 0x000f, 0xa080, 0x3725, 0x203c, 0x87fb, 0x1040,
+ 0x209b, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x6884,
+ 0x2060, 0x6888, 0x6b8c, 0x6c90, 0x8057, 0xaad4, 0x00ff, 0xa084,
+ 0x00ff, 0x007e, 0x6804, 0xa084, 0x0008, 0x007f, 0x0040, 0x38ec,
+ 0xa0b8, 0x370f, 0x0078, 0x38ee, 0xa0b8, 0x3707, 0x7e08, 0xa6b5,
+ 0x000c, 0x681c, 0xa084, 0x0040, 0x0040, 0x38f8, 0xa6b5, 0x0001,
+ 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x38fa, 0x2400,
+ 0xa305, 0x00c0, 0x3905, 0x0078, 0x392b, 0x2c58, 0x2704, 0x6104,
+ 0xac60, 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, 0xa184,
+ 0x0008, 0x0040, 0x391b, 0x6010, 0xa081, 0x0000, 0x7022, 0x6014,
+ 0xa081, 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, 0x620c,
+ 0x2300, 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078,
+ 0x389e, 0x0078, 0x392d, 0x1078, 0x39d8, 0x00c0, 0x392b, 0x127f,
+ 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x7007,
+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x3939, 0x7003, 0x0008,
+ 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f,
+ 0x2049, 0x3943, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0,
+ 0x394c, 0x7e08, 0xa6b5, 0x000c, 0x681c, 0xa084, 0x0020, 0x00c0,
+ 0x395b, 0xa6b5, 0x0001, 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc,
+ 0x000f, 0xa7b8, 0x3715, 0x273c, 0x87fb, 0x00c0, 0x3971, 0x0048,
+ 0x396b, 0x1078, 0x209b, 0x689c, 0xa065, 0x0040, 0x3975, 0x0078,
+ 0x395e, 0x1078, 0x39d8, 0x00c0, 0x3971, 0x127f, 0x2000, 0x007c,
+ 0x127e, 0x007e, 0x017e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x037f,
+ 0x047f, 0x7e08, 0xa6b5, 0x000c, 0x681c, 0xa084, 0x0040, 0x0040,
+ 0x398b, 0xa6b5, 0x0001, 0x2049, 0x3978, 0x6828, 0xa055, 0x0040,
+ 0x39d5, 0x2d70, 0x2e60, 0x7004, 0xa0bc, 0x000f, 0xa7b8, 0x3715,
+ 0x273c, 0x87fb, 0x00c0, 0x39a7, 0x0048, 0x39a0, 0x1078, 0x209b,
+ 0x709c, 0xa075, 0x2060, 0x0040, 0x39d5, 0x0078, 0x3993, 0x2704,
+ 0xae68, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0048, 0x39c2, 0x8a51,
+ 0x00c0, 0x39b4, 0x1078, 0x209b, 0x8738, 0x2704, 0xa005, 0x00c0,
+ 0x39a8, 0x709c, 0xa075, 0x2060, 0x0040, 0x39d5, 0x2039, 0x3707,
+ 0x0078, 0x3993, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x6908,
+ 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x00c8, 0x39d1, 0x1078,
+ 0x209b, 0x2071, 0x0020, 0x0078, 0x38f8, 0x127f, 0x2000, 0x007c,
+ 0x7008, 0xa084, 0x0003, 0xa086, 0x0003, 0x0040, 0x3a00, 0x2704,
+ 0xac08, 0x2104, 0x701a, 0x8108, 0x2104, 0x701e, 0x8108, 0x2104,
+ 0x7012, 0x8108, 0x2104, 0x7016, 0x6004, 0xa084, 0x0008, 0x0040,
+ 0x39f7, 0x8108, 0x2104, 0x7022, 0x8108, 0x2104, 0x7026, 0x7602,
+ 0x7004, 0xa084, 0x0010, 0xa085, 0x0001, 0x7006, 0x1078, 0x389e,
+ 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091, 0x2200, 0x2049, 0x3a01,
+ 0x0d7f, 0x087f, 0x7108, 0xa184, 0x0003, 0x00c0, 0x3a15, 0x6828,
+ 0xa005, 0x0040, 0x3a23, 0x0078, 0x36a4, 0x00a0, 0x3a1c, 0x7108,
+ 0x1078, 0x37bf, 0x0078, 0x3a0a, 0x7007, 0x0010, 0x00a0, 0x3a1e,
+ 0x7108, 0x1078, 0x37bf, 0x7008, 0xa086, 0x0008, 0x00c0, 0x3a0a,
+ 0x7000, 0xa005, 0x00c0, 0x3a0a, 0x7003, 0x0000, 0x2049, 0x0000,
+ 0x127f, 0x2000, 0x007c, 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e,
+ 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x2049, 0x3a33, 0xad80, 0x0011,
+ 0x20a0, 0x2099, 0x0031, 0x700c, 0xa084, 0x00ff, 0x682a, 0x7007,
+ 0x0008, 0x7007, 0x0002, 0x7003, 0x0001, 0x0040, 0x3a52, 0x8000,
+ 0x80ac, 0x53a5, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0,
+ 0x3a54, 0x0c7f, 0x2049, 0x0000, 0x7003, 0x0000, 0x157f, 0x137f,
+ 0x147f, 0x127f, 0x2000, 0x007c, 0x2091, 0x6000, 0x2091, 0x8000,
+ 0x78c0, 0xa005, 0x00c0, 0x3a7b, 0x798c, 0x70d0, 0xa106, 0x00c0,
+ 0x3a7b, 0x7804, 0xa005, 0x0040, 0x3a7b, 0x7807, 0x0000, 0x0068,
+ 0x3a7b, 0x2091, 0x4080, 0x7820, 0x8001, 0x7822, 0x00c0, 0x3b00,
+ 0x7824, 0x7822, 0x783c, 0xa005, 0x0040, 0x3a8c, 0x8001, 0x783e,
+ 0x00c0, 0x3a8c, 0x1078, 0x3c2a, 0x78ec, 0xa005, 0x0040, 0x3ab0,
+ 0x78d4, 0xa005, 0x00c0, 0x3ab0, 0x3a10, 0xa284, 0x0002, 0x00c0,
+ 0x3aa0, 0x78d7, 0x0007, 0x2009, 0xff01, 0x200a, 0x0078, 0x3ab0,
+ 0xa284, 0x0001, 0x00c0, 0x3aa8, 0x78eb, 0x0000, 0x0078, 0x3ab0,
+ 0x78e8, 0xa005, 0x00c0, 0x3ab0, 0x78d7, 0x0008, 0x78eb, 0x0001,
+ 0x2069, 0x3d40, 0x6800, 0xa084, 0x0007, 0x0040, 0x3ac7, 0xa086,
+ 0x0002, 0x0040, 0x3ac7, 0x6830, 0xa00d, 0x0040, 0x3ac7, 0x2104,
+ 0xa005, 0x0040, 0x3ac7, 0x8001, 0x200a, 0x0040, 0x3ba2, 0x7848,
+ 0xa005, 0x0040, 0x3ad1, 0x8001, 0x784a, 0x00c0, 0x3ad1, 0x1078,
+ 0x1edc, 0x68c4, 0xa005, 0x0040, 0x3add, 0x8001, 0x68c6, 0x00c0,
+ 0x3add, 0x68a3, 0x0000, 0x68a7, 0x0001, 0x2061, 0x4000, 0x2009,
+ 0x0002, 0x20a9, 0x0100, 0x6034, 0xa005, 0x0040, 0x3af3, 0x8001,
+ 0x6036, 0x00c0, 0x3af3, 0x6010, 0xa005, 0x0040, 0x3af3, 0x017e,
+ 0x1078, 0x1edc, 0x017f, 0xace0, 0x0010, 0x0070, 0x3af9, 0x0078,
+ 0x3ae3, 0x8109, 0x0040, 0x3b00, 0x20a9, 0x0100, 0x0078, 0x3ae3,
+ 0x1078, 0x3b07, 0x1078, 0x3b2c, 0x2091, 0x8001, 0x007c, 0x7834,
+ 0x8001, 0x7836, 0x00c0, 0x3b2b, 0x7838, 0x7836, 0x2091, 0x8000,
+ 0x7844, 0xa005, 0x00c0, 0x3b16, 0x2001, 0x0101, 0x8001, 0x7846,
+ 0xa080, 0x6000, 0x2040, 0x2004, 0xa065, 0x0040, 0x3b2b, 0x6024,
+ 0xa005, 0x0040, 0x3b27, 0x8001, 0x6026, 0x0040, 0x3b5b, 0x6000,
+ 0x2c40, 0x0078, 0x3b1c, 0x007c, 0x7828, 0x8001, 0x782a, 0x00c0,
+ 0x3b5a, 0x782c, 0x782a, 0x7830, 0xa005, 0x00c0, 0x3b39, 0x2001,
+ 0x0200, 0x8001, 0x7832, 0x8003, 0x8003, 0x8003, 0x8003, 0xa090,
+ 0x4000, 0xa298, 0x0002, 0x2304, 0xa084, 0x0008, 0x0040, 0x3b5a,
+ 0xa290, 0x0009, 0x2204, 0xa005, 0x0040, 0x3b52, 0x8001, 0x2012,
+ 0x00c0, 0x3b5a, 0x2304, 0xa084, 0xfff7, 0xa085, 0x0080, 0x201a,
+ 0x1078, 0x1edc, 0x007c, 0x2069, 0x3d40, 0x6800, 0xa005, 0x0040,
+ 0x3b65, 0x683c, 0xac06, 0x0040, 0x3ba2, 0x601b, 0x0006, 0x60b4,
+ 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0060,
+ 0x6022, 0x6000, 0x2042, 0x6714, 0x6fb6, 0x1078, 0x19c7, 0x6818,
+ 0xa005, 0x0040, 0x3b7d, 0x8001, 0x681a, 0x6808, 0xa084, 0xffef,
+ 0x680a, 0x6810, 0x8001, 0x00d0, 0x3b87, 0x1078, 0x209b, 0x6812,
+ 0x602f, 0x0000, 0x6033, 0x0000, 0x2c68, 0x1078, 0x1b56, 0x2069,
+ 0x3d40, 0x7944, 0xa184, 0x0100, 0x2001, 0x0006, 0x68a2, 0x00c0,
+ 0x3b9d, 0x69ba, 0x2001, 0x0004, 0x68a2, 0x1078, 0x1ed7, 0x2091,
+ 0x8001, 0x007c, 0x2009, 0x3d4f, 0x2164, 0x2069, 0x0100, 0x1078,
+ 0x2046, 0x601b, 0x0006, 0x6858, 0xa084, 0x3f00, 0x601e, 0x6020,
+ 0xa084, 0x00ff, 0xa085, 0x0048, 0x6022, 0x602f, 0x0000, 0x6033,
+ 0x0000, 0x6830, 0xa084, 0x0040, 0x0040, 0x3bde, 0x684b, 0x0004,
+ 0x20a9, 0x0014, 0x6848, 0xa084, 0x0004, 0x0040, 0x3bcb, 0x0070,
+ 0x3bcb, 0x0078, 0x3bc2, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848,
+ 0xa084, 0x0001, 0x0040, 0x3bd8, 0x0070, 0x3bd8, 0x0078, 0x3bcf,
+ 0x20a9, 0x00fa, 0x0070, 0x3bde, 0x0078, 0x3bda, 0x6808, 0xa084,
+ 0xfffd, 0x680a, 0x681b, 0x0047, 0x2009, 0x3d68, 0x200b, 0x0007,
+ 0x784c, 0x784a, 0x2091, 0x8001, 0x007c, 0x2079, 0x3d00, 0x1078,
+ 0x3c18, 0x1078, 0x3bfc, 0x1078, 0x3c0a, 0x7833, 0x0000, 0x7847,
+ 0x0000, 0x784b, 0x0000, 0x007c, 0x2019, 0x0003, 0x2011, 0x3d46,
+ 0x2204, 0xa086, 0x003c, 0x0040, 0x3c07, 0x2019, 0x0002, 0x7b2a,
+ 0x7b2e, 0x007c, 0x2019, 0x0039, 0x2011, 0x3d46, 0x2204, 0xa086,
+ 0x003c, 0x0040, 0x3c15, 0x2019, 0x0027, 0x7b36, 0x7b3a, 0x007c,
+ 0x2019, 0x3971, 0x2011, 0x3d46, 0x2204, 0xa086, 0x003c, 0x0040,
+ 0x3c23, 0x2019, 0x2626, 0x7b22, 0x7b26, 0x783f, 0x0000, 0x7843,
+ 0x000a, 0x007c, 0x2011, 0x0002, 0x2039, 0x0000, 0x20a9, 0x0100,
+ 0x1078, 0x19c7, 0x2d00, 0xa088, 0x0002, 0x2168, 0x682b, 0x0000,
+ 0x682f, 0x0000, 0x2104, 0xa085, 0x0040, 0x200a, 0x2100, 0xa088,
+ 0x0010, 0x0070, 0x3c45, 0x0078, 0x3c35, 0x8211, 0x0040, 0x3c4c,
+ 0x20a9, 0x0100, 0x0078, 0x3c35, 0x2009, 0x3d51, 0x200b, 0x3d7f,
+ 0x2009, 0x3d50, 0x200b, 0x0000, 0x007c, 0x6baa
+};
+/************************************************************************
+ * *
+ * --- ISP1040 Initiator/Target Firmware --- *
+ * 32 LUN Support *
+ * *
+ ************************************************************************/
+/*
+ * Firmware Version 7.65.00 (14:17 Jul 20, 1999)
+ */
+static const u_int16_t isp_1040_risc_code_it[] = {
+ 0x0078, 0x103a, 0x0000, 0x4057, 0x0000, 0x2043, 0x4f50, 0x5952,
+ 0x4947, 0x4854, 0x2031, 0x3939, 0x3520, 0x514c, 0x4f47, 0x4943,
+ 0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350,
+ 0x3130, 0x3230, 0x2049, 0x2f54, 0x2046, 0x6972, 0x6d77, 0x6172,
+ 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, 0x372e, 0x3635,
+ 0x2020, 0x2043, 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20,
+ 0x3030, 0x2050, 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020,
+ 0x3031, 0x2024, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x0048,
+ 0x1045, 0x0038, 0x104b, 0x0078, 0x1047, 0x0028, 0x104b, 0x20b9,
+ 0x1212, 0x0078, 0x104d, 0x20b9, 0x2222, 0x20c1, 0x0008, 0x2071,
+ 0x0010, 0x70c3, 0x0004, 0x20c9, 0x77ff, 0x2089, 0x1186, 0x70c7,
+ 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0007, 0x3f00,
+ 0x70d6, 0x20c1, 0x0008, 0x2019, 0x0000, 0x2009, 0xfeff, 0x2100,
+ 0x200b, 0xa5a5, 0xa1ec, 0x7fff, 0x2d64, 0x206b, 0x0a0a, 0xaddc,
+ 0x3fff, 0x2b54, 0x205b, 0x5050, 0x2114, 0xa286, 0xa5a5, 0x0040,
+ 0x10bf, 0xa386, 0x000f, 0x0040, 0x1085, 0x2c6a, 0x2a5a, 0x20c1,
+ 0x0000, 0x2019, 0x000f, 0x0078, 0x1065, 0x2c6a, 0x2a5a, 0x20c1,
+ 0x0008, 0x2009, 0x7fff, 0x2148, 0x2944, 0x204b, 0x0a0a, 0xa9bc,
+ 0x3fff, 0x2734, 0x203b, 0x5050, 0x2114, 0xa286, 0x0a0a, 0x0040,
+ 0x10a9, 0x284a, 0x263a, 0x20c1, 0x0004, 0x2009, 0x3fff, 0x2134,
+ 0x200b, 0x5050, 0x2114, 0xa286, 0x5050, 0x0040, 0x10aa, 0x0078,
+ 0x118e, 0x284a, 0x263a, 0x98c0, 0xa188, 0x1000, 0x212c, 0x200b,
+ 0xa5a5, 0x2114, 0xa286, 0xa5a5, 0x0040, 0x10bc, 0x250a, 0xa18a,
+ 0x1000, 0x98c1, 0x0078, 0x10c1, 0x250a, 0x0078, 0x10c1, 0x2c6a,
+ 0x2a5a, 0x2130, 0xa18a, 0x0040, 0x2128, 0xa1a2, 0x5100, 0x8424,
+ 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, 0xa192, 0x7800, 0x2009,
+ 0x0000, 0x2001, 0x0031, 0x1078, 0x1cba, 0x2218, 0x2079, 0x5100,
+ 0x2fa0, 0x2408, 0x2011, 0x0000, 0x20a9, 0x0040, 0x42a4, 0x8109,
+ 0x00c0, 0x10dc, 0x7ef2, 0x8528, 0x7de6, 0x7cea, 0x7bee, 0x7883,
+ 0x0000, 0x2031, 0x0030, 0x78cf, 0x0101, 0x780b, 0x0002, 0x780f,
+ 0x0002, 0x784f, 0x0003, 0x2069, 0x5140, 0x2001, 0x04fd, 0x2004,
+ 0xa082, 0x0005, 0x0048, 0x1104, 0x0038, 0x1100, 0x0078, 0x1108,
+ 0x681b, 0x003c, 0x0078, 0x110a, 0x00a8, 0x1108, 0x681b, 0x003c,
+ 0x681b, 0x0028, 0x6807, 0x0007, 0x680b, 0x00fa, 0x680f, 0x0008,
+ 0x6813, 0x0005, 0x6823, 0x0000, 0x6827, 0x0006, 0x6817, 0x0008,
+ 0x682b, 0x0000, 0x681f, 0x0019, 0x2069, 0x5380, 0x2011, 0x0020,
+ 0x2009, 0x0010, 0x680b, 0x080c, 0x680f, 0x0019, 0x6803, 0xfd00,
+ 0x6807, 0x0018, 0x6a1a, 0x2d00, 0xa0e8, 0x0008, 0xa290, 0x0004,
+ 0x8109, 0x00c0, 0x1122, 0x2069, 0x5400, 0x2009, 0x0002, 0x20a9,
+ 0x0100, 0x6837, 0x0000, 0x680b, 0x0040, 0x7bf0, 0xa386, 0xfeff,
+ 0x00c0, 0x1148, 0x6817, 0x0100, 0x681f, 0x0064, 0x0078, 0x114c,
+ 0x6817, 0x0064, 0x681f, 0x0002, 0xade8, 0x0010, 0x0070, 0x1152,
+ 0x0078, 0x1139, 0x8109, 0x00c0, 0x1137, 0x1078, 0x220a, 0x1078,
+ 0x482c, 0x1078, 0x1963, 0x1078, 0x4d22, 0x3200, 0xa085, 0x000d,
+ 0x2090, 0x70c3, 0x0000, 0x0090, 0x116c, 0x70c0, 0xa086, 0x0002,
+ 0x00c0, 0x116c, 0x1078, 0x1284, 0x1078, 0x1196, 0x78cc, 0xa005,
+ 0x00c0, 0x117a, 0x1078, 0x1ce3, 0x0010, 0x1180, 0x0068, 0x1180,
+ 0x1078, 0x20e9, 0x0010, 0x1180, 0x0068, 0x1180, 0x1078, 0x1a48,
+ 0x00e0, 0x116c, 0x1078, 0x4ba9, 0x0078, 0x116c, 0x118e, 0x1190,
+ 0x240b, 0x240b, 0x48ad, 0x48ad, 0x240b, 0x240b, 0x0078, 0x118e,
+ 0x0078, 0x1190, 0x0078, 0x1192, 0x0078, 0x1194, 0x0068, 0x1201,
+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x1201, 0x7814,
+ 0xa005, 0x00c0, 0x11a7, 0x0010, 0x1202, 0x0078, 0x1201, 0x2009,
+ 0x515b, 0x2104, 0xa005, 0x00c0, 0x1201, 0x2009, 0x5164, 0x200b,
+ 0x0000, 0x7914, 0xa186, 0x0042, 0x00c0, 0x11cc, 0x7816, 0x2009,
+ 0x5162, 0x2164, 0x200b, 0x0000, 0x6018, 0x70c6, 0x6014, 0x70ca,
+ 0x611c, 0xa18c, 0xff00, 0x6020, 0xa084, 0x00ff, 0xa105, 0x70ce,
+ 0x1078, 0x1948, 0x0078, 0x11ff, 0x7814, 0xa086, 0x0018, 0x00c0,
+ 0x11d3, 0x1078, 0x165a, 0x7817, 0x0000, 0x2009, 0x5162, 0x2104,
+ 0xa065, 0x0040, 0x11ef, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x19b3,
+ 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1730, 0x2009, 0x000c, 0x6007,
+ 0x0103, 0x1078, 0x1924, 0x00c0, 0x11fb, 0x1078, 0x1948, 0x2009,
+ 0x5162, 0x200b, 0x0000, 0x2009, 0x515c, 0x2104, 0x200b, 0x0000,
+ 0xa005, 0x0040, 0x11ff, 0x2001, 0x4005, 0x0078, 0x1286, 0x0078,
+ 0x1284, 0x007c, 0x70c3, 0x0000, 0x70c7, 0x0000, 0x70cb, 0x0000,
+ 0x70cf, 0x0000, 0x70c0, 0xa0bc, 0xffc0, 0x00c0, 0x1252, 0x2038,
+ 0x0079, 0x1212, 0x1284, 0x12e5, 0x12a9, 0x12fe, 0x130d, 0x1313,
+ 0x12a0, 0x1748, 0x1317, 0x1298, 0x12ad, 0x12af, 0x12b1, 0x12b3,
+ 0x174d, 0x1298, 0x1329, 0x1360, 0x1672, 0x1742, 0x12b5, 0x1591,
+ 0x15ad, 0x15c9, 0x15f4, 0x154a, 0x1558, 0x156c, 0x1580, 0x13df,
+ 0x1298, 0x138d, 0x1393, 0x1398, 0x139d, 0x13a3, 0x13a8, 0x13ad,
+ 0x13b2, 0x13b7, 0x13bb, 0x13d0, 0x13dc, 0x1298, 0x1298, 0x1298,
+ 0x1298, 0x13eb, 0x13f4, 0x1403, 0x1429, 0x1433, 0x143a, 0x1480,
+ 0x148f, 0x149e, 0x14b0, 0x152a, 0x153a, 0x1298, 0x1298, 0x1298,
+ 0x1298, 0x153f, 0xa0bc, 0xffa0, 0x00c0, 0x1298, 0x2038, 0xa084,
+ 0x001f, 0x0079, 0x125b, 0x1786, 0x1789, 0x1799, 0x1298, 0x1298,
+ 0x18df, 0x18fc, 0x1298, 0x1298, 0x1298, 0x1900, 0x1908, 0x1298,
+ 0x1298, 0x1298, 0x1298, 0x12db, 0x12f4, 0x131f, 0x1356, 0x1668,
+ 0x1764, 0x1778, 0x1298, 0x1829, 0x190e, 0x18bb, 0x18c5, 0x18c9,
+ 0x18d7, 0x1298, 0x1298, 0x72ca, 0x71c6, 0x2001, 0x4006, 0x0078,
+ 0x1286, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0068,
+ 0x1287, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x00e0,
+ 0x128f, 0x00e0, 0x1291, 0x0068, 0x1291, 0x2091, 0x4080, 0x007c,
+ 0x70c3, 0x4001, 0x0078, 0x1287, 0x70c3, 0x4006, 0x0078, 0x1287,
+ 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005, 0x53a3, 0x0078,
+ 0x1284, 0x70c4, 0x70c3, 0x0004, 0x007a, 0x0078, 0x1284, 0x0078,
+ 0x1284, 0x0078, 0x1284, 0x0078, 0x1284, 0x2091, 0x8000, 0x70c3,
+ 0x0000, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3,
+ 0x0007, 0x3f00, 0x70d6, 0x2079, 0x0000, 0x781b, 0x0001, 0x2031,
+ 0x0030, 0x2059, 0x1000, 0x2029, 0x0457, 0x2051, 0x0470, 0x2061,
+ 0x0472, 0x20b9, 0xffff, 0x20c1, 0x0000, 0x2091, 0x5000, 0x2091,
+ 0x4080, 0x0078, 0x0455, 0x1078, 0x1b53, 0x00c0, 0x129c, 0x75d8,
+ 0x74dc, 0x75da, 0x74de, 0x0078, 0x12e8, 0x2029, 0x0000, 0x2520,
+ 0x71d0, 0x73c8, 0x72cc, 0x70c4, 0x1078, 0x1a8d, 0x0040, 0x1284,
+ 0x70c3, 0x4002, 0x0078, 0x1284, 0x1078, 0x1b53, 0x00c0, 0x129c,
+ 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1301, 0x2029, 0x0000,
+ 0x2520, 0x71d0, 0x73c8, 0x72cc, 0x70c4, 0x1078, 0x1aed, 0x0040,
+ 0x1284, 0x70c3, 0x4002, 0x0078, 0x1284, 0x71c4, 0x70c8, 0x2114,
+ 0x200a, 0x0078, 0x1282, 0x71c4, 0x2114, 0x0078, 0x1282, 0x70c7,
+ 0x0007, 0x70cb, 0x0041, 0x70cf, 0x0000, 0x0078, 0x1284, 0x1078,
+ 0x1b53, 0x00c0, 0x129c, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078,
+ 0x132c, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d0,
+ 0x70c6, 0x72ca, 0x73ce, 0x74d2, 0xa005, 0x0040, 0x1350, 0x8001,
+ 0x7892, 0xa084, 0xfc00, 0x0040, 0x1345, 0x78cc, 0xa085, 0x0001,
+ 0x78ce, 0x2001, 0x4005, 0x0078, 0x1286, 0x7a9a, 0x7b9e, 0x7da2,
+ 0x7ea6, 0x7c96, 0x78cc, 0xa084, 0xfffc, 0x78ce, 0x0078, 0x1354,
+ 0x78cc, 0xa085, 0x0001, 0x78ce, 0x0078, 0x1284, 0x1078, 0x1b53,
+ 0x00c0, 0x129c, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, 0x1363,
+ 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d4, 0x70c6,
+ 0x72ca, 0x73ce, 0x74d6, 0xa005, 0x0040, 0x1387, 0x8001, 0x78ae,
+ 0xa084, 0xfc00, 0x0040, 0x137c, 0x78cc, 0xa085, 0x0100, 0x78ce,
+ 0x2001, 0x4005, 0x0078, 0x1286, 0x7ab6, 0x7bba, 0x7dbe, 0x7ec2,
+ 0x7cb2, 0x78cc, 0xa084, 0xfcff, 0x78ce, 0x0078, 0x138b, 0x78cc,
+ 0xa085, 0x0100, 0x78ce, 0x0078, 0x1284, 0x2009, 0x5161, 0x210c,
+ 0x7aec, 0x0078, 0x1282, 0x2009, 0x5141, 0x210c, 0x0078, 0x1283,
+ 0x2009, 0x5142, 0x210c, 0x0078, 0x1283, 0x2061, 0x5140, 0x610c,
+ 0x6210, 0x0078, 0x1282, 0x2009, 0x5145, 0x210c, 0x0078, 0x1283,
+ 0x2009, 0x5146, 0x210c, 0x0078, 0x1283, 0x2009, 0x5148, 0x210c,
+ 0x0078, 0x1283, 0x2009, 0x5149, 0x210c, 0x0078, 0x1283, 0x7908,
+ 0x7a0c, 0x0078, 0x1282, 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003,
+ 0x8003, 0x8003, 0xa0e8, 0x5380, 0x6a00, 0x6804, 0xa084, 0x0008,
+ 0x0040, 0x13cd, 0x6b08, 0x0078, 0x13ce, 0x6b0c, 0x0078, 0x1281,
+ 0x77c4, 0x1078, 0x1973, 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091,
+ 0x8001, 0x2708, 0x0078, 0x1281, 0x794c, 0x0078, 0x1283, 0x77c4,
+ 0x1078, 0x1973, 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, 0x2091,
+ 0x8001, 0x0078, 0x1281, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x127c,
+ 0x1078, 0x22e2, 0x0078, 0x1281, 0x71c4, 0xa182, 0x0010, 0x00c8,
+ 0x127c, 0x2011, 0x5141, 0x2204, 0x007e, 0x2112, 0x1078, 0x229b,
+ 0x017f, 0x0078, 0x1283, 0x71c4, 0x2011, 0x1421, 0x20a9, 0x0008,
+ 0x2204, 0xa106, 0x0040, 0x1413, 0x8210, 0x0070, 0x1411, 0x0078,
+ 0x1408, 0x0078, 0x127c, 0xa292, 0x1421, 0x027e, 0x2011, 0x5142,
+ 0x2204, 0x2112, 0x017f, 0x007e, 0x1078, 0x22a7, 0x017f, 0x0078,
+ 0x1283, 0x03e8, 0x00fa, 0x01f4, 0x02ee, 0x0064, 0x0019, 0x0032,
+ 0x004b, 0x2061, 0x5140, 0x610c, 0x6210, 0x70c4, 0x600e, 0x70c8,
+ 0x6012, 0x0078, 0x1282, 0x2061, 0x5140, 0x6114, 0x70c4, 0x6016,
+ 0x0078, 0x1283, 0x2061, 0x5140, 0x71c4, 0x2011, 0x0004, 0x601f,
+ 0x0019, 0x2019, 0x1212, 0xa186, 0x0028, 0x0040, 0x145b, 0x2011,
+ 0x0005, 0x601f, 0x0019, 0x2019, 0x1212, 0xa186, 0x0032, 0x0040,
+ 0x145b, 0x2011, 0x0006, 0x601f, 0x000c, 0x2019, 0x2222, 0xa186,
+ 0x003c, 0x00c0, 0x127c, 0x6018, 0x007e, 0x611a, 0x7800, 0xa084,
+ 0x0001, 0x00c0, 0x1476, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005,
+ 0x0048, 0x146e, 0x0038, 0x1472, 0x0078, 0x1476, 0x0028, 0x1472,
+ 0x0078, 0x1476, 0x2019, 0x2222, 0x0078, 0x1478, 0x2019, 0x1212,
+ 0x23b8, 0x1078, 0x22b8, 0x1078, 0x4d22, 0x017f, 0x0078, 0x1283,
+ 0x71c4, 0xa184, 0xffcf, 0x00c0, 0x127c, 0x2011, 0x5148, 0x2204,
+ 0x2112, 0x007e, 0x1078, 0x22da, 0x017f, 0x0078, 0x1283, 0x71c4,
+ 0xa182, 0x0010, 0x00c8, 0x127c, 0x2011, 0x5149, 0x2204, 0x007e,
+ 0x2112, 0x1078, 0x22c9, 0x017f, 0x0078, 0x1283, 0x71c4, 0x72c8,
+ 0xa184, 0xfffd, 0x00c0, 0x127b, 0xa284, 0xfffd, 0x00c0, 0x127b,
+ 0x2100, 0x7908, 0x780a, 0x2200, 0x7a0c, 0x780e, 0x0078, 0x1282,
+ 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8,
+ 0x5380, 0x2019, 0x0000, 0x72c8, 0xa284, 0x0080, 0x0040, 0x14c6,
+ 0x6c14, 0x84ff, 0x00c0, 0x14c6, 0x6817, 0x0040, 0xa284, 0x0040,
+ 0x0040, 0x14d0, 0x6c10, 0x84ff, 0x00c0, 0x14d0, 0x6813, 0x0001,
+ 0x6800, 0x007e, 0xa226, 0x0040, 0x14f3, 0x6a02, 0xa484, 0x2000,
+ 0x0040, 0x14dc, 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, 0x14e2,
+ 0xa39d, 0x0008, 0xa484, 0x4000, 0x0040, 0x14f3, 0x810f, 0xa284,
+ 0x4000, 0x0040, 0x14ef, 0x1078, 0x22fc, 0x0078, 0x14f3, 0x1078,
+ 0x22ee, 0x0078, 0x14f3, 0x72cc, 0x6808, 0xa206, 0x0040, 0x1522,
+ 0xa2a4, 0x00ff, 0x2061, 0x5140, 0x6118, 0xa186, 0x0028, 0x0040,
+ 0x1509, 0xa186, 0x0032, 0x0040, 0x150f, 0xa186, 0x003c, 0x0040,
+ 0x1515, 0xa482, 0x0064, 0x0048, 0x151f, 0x0078, 0x1519, 0xa482,
+ 0x0050, 0x0048, 0x151f, 0x0078, 0x1519, 0xa482, 0x0043, 0x0048,
+ 0x151f, 0x71c4, 0x71c6, 0x027f, 0x72ca, 0x0078, 0x127d, 0x6a0a,
+ 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x71c4,
+ 0x0078, 0x1281, 0x77c4, 0x1078, 0x1973, 0x2091, 0x8000, 0x6a14,
+ 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e, 0x2708,
+ 0x0078, 0x1281, 0x70c4, 0x794c, 0x784e, 0x0078, 0x1283, 0x71c4,
+ 0x72c8, 0x73cc, 0xa182, 0x0010, 0x00c8, 0x127c, 0x1078, 0x230a,
+ 0x0078, 0x1281, 0x77c4, 0x1078, 0x1973, 0x2091, 0x8000, 0x6a08,
+ 0xa295, 0x0002, 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, 0x1282,
+ 0x77c4, 0x1078, 0x1973, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9,
+ 0x6a0a, 0x6804, 0xa005, 0x0040, 0x1567, 0x1078, 0x21d2, 0x2091,
+ 0x8001, 0x2708, 0x0078, 0x1282, 0x77c4, 0x1078, 0x1973, 0x2091,
+ 0x8000, 0x6a08, 0xa295, 0x0004, 0x6a0a, 0x6804, 0xa005, 0x0040,
+ 0x157b, 0x1078, 0x21d2, 0x2091, 0x8001, 0x2708, 0x0078, 0x1282,
+ 0x77c4, 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091,
+ 0x8000, 0x1078, 0x1980, 0x2091, 0x8001, 0x2708, 0x6a08, 0x0078,
+ 0x1282, 0x77c4, 0x72c8, 0x73cc, 0x77c6, 0x72ca, 0x73ce, 0x1078,
+ 0x19e1, 0x00c0, 0x15a9, 0x6818, 0xa005, 0x0040, 0x15a9, 0x2708,
+ 0x1078, 0x231a, 0x00c0, 0x15a9, 0x7817, 0x0015, 0x2091, 0x8001,
+ 0x007c, 0x2091, 0x8001, 0x0078, 0x1284, 0x77c4, 0x77c6, 0x2041,
+ 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078,
+ 0x1980, 0x2061, 0x5140, 0x606f, 0x0003, 0x6782, 0x6093, 0x000f,
+ 0x6073, 0x0000, 0x7817, 0x0016, 0x1078, 0x21d2, 0x2091, 0x8001,
+ 0x007c, 0x77c8, 0x77ca, 0x77c4, 0x77c6, 0xa7bc, 0xff00, 0x2091,
+ 0x8000, 0x2061, 0x5140, 0x606f, 0x0002, 0x6073, 0x0000, 0x6782,
+ 0x6093, 0x000f, 0x7817, 0x0017, 0x1078, 0x21d2, 0x2091, 0x8001,
+ 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x2091, 0x8000,
+ 0x1078, 0x1980, 0x70c8, 0x6836, 0x8738, 0xa784, 0x001f, 0x00c0,
+ 0x15e8, 0x2091, 0x8001, 0x007c, 0x78cc, 0xa084, 0x0003, 0x00c0,
+ 0x1618, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051,
+ 0x0008, 0x1078, 0x1973, 0x2091, 0x8000, 0x6808, 0xa80d, 0x690a,
+ 0x2091, 0x8001, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1601, 0xa7bc,
+ 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1601,
+ 0x2091, 0x8000, 0x2069, 0x0100, 0x6830, 0xa084, 0x0040, 0x0040,
+ 0x1641, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0004,
+ 0x0040, 0x162e, 0x0070, 0x162e, 0x0078, 0x1625, 0x684b, 0x0009,
+ 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040, 0x163b, 0x0070,
+ 0x163b, 0x0078, 0x1632, 0x20a9, 0x00fa, 0x0070, 0x1641, 0x0078,
+ 0x163d, 0x2079, 0x5100, 0x7817, 0x0018, 0x2061, 0x5140, 0x606f,
+ 0x0001, 0x6073, 0x0000, 0x6093, 0x000f, 0x78cc, 0xa085, 0x0002,
+ 0x78ce, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b, 0x0048, 0x2091,
+ 0x8001, 0x007c, 0x78cc, 0xa084, 0xfffd, 0x78ce, 0xa084, 0x0001,
+ 0x00c0, 0x1664, 0x1078, 0x1a2b, 0x71c4, 0x71c6, 0x794a, 0x007c,
+ 0x1078, 0x1b53, 0x00c0, 0x129c, 0x75d8, 0x74dc, 0x75da, 0x74de,
+ 0x0078, 0x1675, 0x2029, 0x0000, 0x2520, 0x71c4, 0x73c8, 0x72cc,
+ 0x71c6, 0x73ca, 0x72ce, 0x2079, 0x5100, 0x2091, 0x8000, 0x1078,
+ 0x192e, 0x2091, 0x8001, 0x0040, 0x172c, 0x20a9, 0x0005, 0x20a1,
+ 0x5118, 0x2091, 0x8000, 0x41a1, 0x2091, 0x8001, 0x2009, 0x0020,
+ 0x1078, 0x1929, 0x0040, 0x1698, 0x1078, 0x1948, 0x0078, 0x172c,
+ 0x6004, 0xa084, 0xff00, 0x8007, 0x8009, 0x0040, 0x16fb, 0x0c7e,
+ 0x2c68, 0x2091, 0x8000, 0x1078, 0x192e, 0x2091, 0x8001, 0x0040,
+ 0x16cc, 0x2c00, 0x689e, 0x8109, 0x00c0, 0x16a0, 0x609f, 0x0000,
+ 0x0c7f, 0x0c7e, 0x7218, 0x731c, 0x7420, 0x7524, 0x2c68, 0x689c,
+ 0xa065, 0x0040, 0x16fa, 0x2009, 0x0020, 0x1078, 0x1929, 0x00c0,
+ 0x16e3, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0002, 0x00c0, 0x16cc,
+ 0x2d00, 0x6002, 0x0078, 0x16b2, 0x0c7f, 0x0c7e, 0x609c, 0x2060,
+ 0x1078, 0x19b3, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1730, 0x2009,
+ 0x000c, 0x6008, 0xa085, 0x0200, 0x600a, 0x1078, 0x1924, 0x1078,
+ 0x1948, 0x0078, 0x172c, 0x0c7f, 0x0c7e, 0x609c, 0x2060, 0x1078,
+ 0x19b3, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1730, 0x2009, 0x000c,
+ 0x6007, 0x0103, 0x601b, 0x0003, 0x1078, 0x1924, 0x1078, 0x1948,
+ 0x0078, 0x172c, 0x0c7f, 0x74c4, 0x73c8, 0x72cc, 0x6014, 0x2091,
+ 0x8000, 0x7817, 0x0012, 0x0e7e, 0x2071, 0x5140, 0x706f, 0x0005,
+ 0x7073, 0x0000, 0x7376, 0x727a, 0x747e, 0x7082, 0x7087, 0x0000,
+ 0x2c00, 0x708a, 0x708f, 0x0000, 0xa02e, 0x2530, 0x611c, 0x61a2,
+ 0xa184, 0x0060, 0x0040, 0x171e, 0x1078, 0x47c2, 0x0e7f, 0x6596,
+ 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000, 0x1078,
+ 0x21d2, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, 0x0078, 0x1287,
+ 0x20a9, 0x0005, 0x2099, 0x5118, 0x2091, 0x8000, 0x530a, 0x2091,
+ 0x8001, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9,
+ 0x0000, 0x007c, 0x71c4, 0x70c7, 0x0000, 0x7906, 0x0078, 0x1284,
+ 0x71c4, 0x71c6, 0x2168, 0x0078, 0x174f, 0x2069, 0x1000, 0x690c,
+ 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x00c0, 0x1751, 0xa285,
+ 0x0000, 0x00c0, 0x175f, 0x70c3, 0x4000, 0x0078, 0x1761, 0x70c3,
+ 0x4003, 0x70ca, 0x0078, 0x1287, 0x2011, 0x5167, 0x220c, 0x70c4,
+ 0x8003, 0x0048, 0x1771, 0x1078, 0x3b7f, 0xa184, 0x7fff, 0x0078,
+ 0x1775, 0x1078, 0x3b72, 0xa185, 0x8000, 0x2012, 0x0078, 0x1283,
+ 0x71c4, 0x1078, 0x3b69, 0x6100, 0x2001, 0x5167, 0x2004, 0xa084,
+ 0x8000, 0xa10d, 0x6204, 0x6308, 0x0078, 0x1281, 0x79e4, 0x0078,
+ 0x1283, 0x71c4, 0x71c6, 0x2198, 0x20a1, 0x0042, 0x20a9, 0x0004,
+ 0x53a3, 0x21a0, 0x2099, 0x0042, 0x20a9, 0x0004, 0x53a3, 0x0078,
+ 0x1284, 0x70c4, 0x2068, 0x2079, 0x5100, 0x2091, 0x8000, 0x1078,
+ 0x192e, 0x2091, 0x8001, 0x0040, 0x1825, 0x6007, 0x0001, 0x600b,
+ 0x0000, 0x602b, 0x0000, 0x601b, 0x0006, 0x6a10, 0xa28c, 0x000f,
+ 0xa284, 0x00f0, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0x6016,
+ 0xa284, 0x0800, 0x0040, 0x17c0, 0x601b, 0x000a, 0x0078, 0x17c6,
+ 0xa284, 0x1000, 0x0040, 0x17c6, 0x601b, 0x000c, 0xa284, 0x0300,
+ 0x0040, 0x17cf, 0x602b, 0x0001, 0x8004, 0x8004, 0x8004, 0xa085,
+ 0x0001, 0x601e, 0x6023, 0x0000, 0x6027, 0x0000, 0xa284, 0x0400,
+ 0x0040, 0x17dc, 0x602b, 0x0000, 0x20a9, 0x0006, 0xac80, 0x000b,
+ 0x20a0, 0xad80, 0x0005, 0x2098, 0x53a3, 0xa284, 0x0300, 0x00c0,
+ 0x17f1, 0x6046, 0x604a, 0x604e, 0x6052, 0x6096, 0x609a, 0x0078,
+ 0x17fb, 0x6800, 0x6046, 0x6804, 0x604a, 0x6e08, 0x664e, 0x6d0c,
+ 0x6552, 0x6596, 0x669a, 0x6014, 0x2091, 0x8000, 0x7817, 0x0042,
+ 0x2c08, 0x2061, 0x5140, 0x606f, 0x0005, 0x6073, 0x0000, 0x6077,
+ 0x0000, 0x607b, 0x0000, 0x607f, 0x0000, 0x6082, 0x618a, 0xa284,
+ 0x0400, 0x608e, 0x2091, 0x8001, 0x0e7e, 0x2071, 0x0020, 0x7007,
+ 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x0e7f, 0x2091, 0x8000,
+ 0x1078, 0x21d2, 0x2091, 0x8001, 0x007c, 0x70c3, 0x4005, 0x0078,
+ 0x1287, 0x0c7e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2091, 0x8000, 0x2071,
+ 0x5140, 0x2079, 0x0100, 0x2061, 0x0010, 0x70a0, 0xa06d, 0x0040,
+ 0x18b1, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0007, 0x0040, 0x1844,
+ 0xa286, 0x000f, 0x00c0, 0x18b1, 0x691c, 0xa184, 0x0080, 0x00c0,
+ 0x18b1, 0x6824, 0xa18c, 0xff00, 0xa085, 0x0019, 0x6826, 0x71b0,
+ 0x81ff, 0x0040, 0x1867, 0x0d7e, 0x2069, 0x0020, 0x6807, 0x0010,
+ 0x6908, 0x6808, 0xa106, 0x00c0, 0x1858, 0x690c, 0x680c, 0xa106,
+ 0x00c0, 0x185d, 0xa184, 0x00ff, 0x00c0, 0x185d, 0x0d7f, 0x78b8,
+ 0xa084, 0x801f, 0x00c0, 0x1867, 0x7848, 0xa085, 0x000c, 0x784a,
+ 0x71b0, 0x81ff, 0x0040, 0x188a, 0x70b3, 0x0000, 0x0d7e, 0x2069,
+ 0x0020, 0x6807, 0x0018, 0x6804, 0xa084, 0x0008, 0x00c0, 0x187b,
+ 0x6807, 0x0008, 0x6804, 0xa084, 0x0008, 0x00c0, 0x1882, 0x6807,
+ 0x0002, 0x0d7f, 0x61c4, 0x62c8, 0x63cc, 0x61c6, 0x62ca, 0x63ce,
+ 0x0e7e, 0x2071, 0x5100, 0x7266, 0x736a, 0xae80, 0x0019, 0x0e7f,
+ 0x7848, 0xa084, 0x000c, 0x00c0, 0x1898, 0x1078, 0x46db, 0x78a3,
+ 0x0000, 0x7858, 0xa084, 0xedff, 0x785a, 0x70b4, 0xa080, 0x00df,
+ 0x781a, 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x2091, 0x8001, 0x0078,
+ 0x1284, 0x0f7f, 0x0e7f, 0x0d7f, 0x0c7f, 0x2091, 0x8001, 0x2001,
+ 0x4005, 0x0078, 0x1286, 0x7980, 0x71c6, 0x71c4, 0xa182, 0x0003,
+ 0x00c8, 0x127c, 0x7982, 0x0078, 0x1284, 0x7980, 0x71c6, 0x0078,
+ 0x1284, 0x7974, 0x71c6, 0x71c4, 0x7976, 0x7978, 0x71ca, 0x71c8,
+ 0x797a, 0x797c, 0x71ce, 0x71cc, 0x797e, 0x0078, 0x1284, 0x7974,
+ 0x71c6, 0x7978, 0x71ca, 0x797c, 0x71ce, 0x0078, 0x1284, 0x7900,
+ 0x71c6, 0x71c4, 0x7902, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005,
+ 0x0048, 0x18ee, 0x0038, 0x18f0, 0x0078, 0x18fa, 0x00a8, 0x18fa,
+ 0xa18c, 0x0001, 0x00c0, 0x18f8, 0x20b9, 0x2222, 0x0078, 0x18fa,
+ 0x20b9, 0x1212, 0x0078, 0x1284, 0x7900, 0x71c6, 0x0078, 0x1284,
+ 0x2009, 0x5174, 0x2104, 0x70c6, 0x70c4, 0x200a, 0x0078, 0x1284,
+ 0x2009, 0x5174, 0x2104, 0x70c6, 0x0078, 0x1284, 0x71c4, 0x8107,
+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, 0x5380, 0x6a14,
+ 0xd2b4, 0x0040, 0x191f, 0x2011, 0x0001, 0x0078, 0x1921, 0x2011,
+ 0x0000, 0x6b0c, 0x0078, 0x1281, 0xac80, 0x0001, 0x1078, 0x1b0f,
+ 0x007c, 0xac80, 0x0001, 0x1078, 0x1aaf, 0x007c, 0x7850, 0xa065,
+ 0x0040, 0x1936, 0x2c04, 0x7852, 0x2063, 0x0000, 0x007c, 0x0f7e,
+ 0x2079, 0x5100, 0x7850, 0xa06d, 0x0040, 0x1946, 0x2d04, 0x7852,
+ 0x6803, 0x0000, 0x6807, 0x0000, 0x680b, 0x0000, 0x0f7f, 0x007c,
+ 0x2091, 0x8000, 0x0f7e, 0x2079, 0x5100, 0x7850, 0x2062, 0x2c00,
+ 0xa005, 0x00c0, 0x1955, 0x1078, 0x23eb, 0x7852, 0x0f7f, 0x2091,
+ 0x8001, 0x007c, 0x0f7e, 0x2079, 0x5100, 0x7850, 0x206a, 0x2d00,
+ 0x7852, 0x0f7f, 0x007c, 0x2011, 0x7800, 0x7a52, 0x7bec, 0x8319,
+ 0x0040, 0x1970, 0xa280, 0x0031, 0x2012, 0x2010, 0x0078, 0x1967,
+ 0x2013, 0x0000, 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f,
+ 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xa0e8, 0x5400, 0x007c,
+ 0x1078, 0x1973, 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084,
+ 0xffef, 0xa80d, 0x690a, 0x2009, 0x5152, 0x210c, 0x6804, 0xa005,
+ 0x0040, 0x19b2, 0xa116, 0x00c0, 0x199d, 0x2060, 0x6000, 0x6806,
+ 0x017e, 0x200b, 0x0000, 0x0078, 0x19a0, 0x2009, 0x0000, 0x017e,
+ 0x6804, 0xa065, 0x0040, 0x19af, 0x6000, 0x6806, 0x1078, 0x19c0,
+ 0x1078, 0x1c5f, 0x6810, 0x8001, 0x6812, 0x00c0, 0x19a0, 0x017f,
+ 0x6902, 0x6906, 0x007c, 0xa065, 0x0040, 0x19bf, 0x609c, 0x609f,
+ 0x0000, 0x2008, 0x1078, 0x1948, 0x2100, 0x0078, 0x19b3, 0x007c,
+ 0x6007, 0x0103, 0x608f, 0x0000, 0x20a9, 0x001c, 0xac80, 0x0005,
+ 0x20a0, 0x2001, 0x0000, 0x40a4, 0x6828, 0x601a, 0x682c, 0x6022,
+ 0x007c, 0x0e7e, 0x2071, 0x5140, 0x704c, 0xa08c, 0x0200, 0x00c0,
+ 0x19df, 0xa088, 0x5180, 0x2d0a, 0x8000, 0x704e, 0xa006, 0x0e7f,
+ 0x007c, 0x1078, 0x1973, 0x2091, 0x8000, 0x6804, 0x781e, 0xa065,
+ 0x0040, 0x1a2a, 0x0078, 0x19f2, 0x2c00, 0x781e, 0x6000, 0xa065,
+ 0x0040, 0x1a2a, 0x600c, 0xa306, 0x00c0, 0x19ec, 0x6010, 0xa206,
+ 0x00c0, 0x19ec, 0x2c28, 0x2001, 0x5152, 0x2004, 0xac06, 0x00c0,
+ 0x1a03, 0x0078, 0x1a28, 0x6804, 0xac06, 0x00c0, 0x1a10, 0x6000,
+ 0xa065, 0x6806, 0x00c0, 0x1a1a, 0x6803, 0x0000, 0x0078, 0x1a1a,
+ 0x6400, 0x781c, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x1a1a,
+ 0x2c00, 0x6802, 0x2560, 0x1078, 0x19c0, 0x601b, 0x0005, 0x6023,
+ 0x0020, 0x1078, 0x1c5f, 0x6810, 0x8001, 0x1050, 0x23eb, 0x6812,
+ 0xa085, 0xffff, 0x007c, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049,
+ 0x0004, 0x2051, 0x0008, 0x2091, 0x8000, 0x1078, 0x1980, 0x8738,
+ 0xa784, 0x001f, 0x00c0, 0x1a35, 0xa7bc, 0xff00, 0x873f, 0x8738,
+ 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1a35, 0x2091, 0x8001, 0x007c,
+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x1a59, 0x2091,
+ 0x8000, 0x78e0, 0x78e3, 0x0000, 0x2091, 0x8001, 0xa005, 0x00c0,
+ 0x1a5a, 0x007c, 0xa08c, 0xfff0, 0x0040, 0x1a60, 0x1078, 0x23eb,
+ 0x0079, 0x1a62, 0x1a72, 0x1a75, 0x1a7b, 0x1a7f, 0x1a73, 0x1a83,
+ 0x1a89, 0x1a73, 0x1a73, 0x1c29, 0x1c4d, 0x1c51, 0x1a73, 0x1a73,
+ 0x1a73, 0x1a73, 0x007c, 0x1078, 0x23eb, 0x1078, 0x1a2b, 0x2001,
+ 0x8001, 0x0078, 0x1c57, 0x2001, 0x8003, 0x0078, 0x1c57, 0x2001,
+ 0x8004, 0x0078, 0x1c57, 0x1078, 0x1a2b, 0x2001, 0x8006, 0x0078,
+ 0x1c57, 0x2001, 0x8007, 0x0078, 0x1c57, 0x2030, 0x2138, 0xa782,
+ 0x0021, 0x0048, 0x1a95, 0x2009, 0x0020, 0x2600, 0x1078, 0x1aaf,
+ 0x00c0, 0x1aae, 0xa7ba, 0x0020, 0x0048, 0x1aad, 0x0040, 0x1aad,
+ 0x2708, 0xa6b0, 0x0020, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1,
+ 0x0000, 0xa5a9, 0x0000, 0x0078, 0x1a8f, 0xa006, 0x007c, 0x81ff,
+ 0x0040, 0x1aea, 0x2099, 0x0030, 0x20a0, 0x700c, 0xa084, 0x00ff,
+ 0x0040, 0x1ac1, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0,
+ 0x1abc, 0x21a8, 0x7017, 0x0000, 0x810b, 0x7112, 0x721a, 0x731e,
+ 0x7422, 0x7526, 0x780c, 0xa085, 0x0001, 0x7002, 0x7007, 0x0001,
+ 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8, 0x1ade, 0x2009,
+ 0x0022, 0x2104, 0xa084, 0x4000, 0x00c0, 0x1ad0, 0x7008, 0x800b,
+ 0x00c8, 0x1ad0, 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x1aea,
+ 0x53a5, 0xa006, 0x7003, 0x0000, 0x007c, 0x2030, 0x2138, 0xa782,
+ 0x0021, 0x0048, 0x1af5, 0x2009, 0x0020, 0x2600, 0x1078, 0x1b0f,
+ 0x00c0, 0x1b0e, 0xa7ba, 0x0020, 0x0048, 0x1b0d, 0x0040, 0x1b0d,
+ 0x2708, 0xa6b0, 0x0020, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1,
+ 0x0000, 0xa5a9, 0x0000, 0x0078, 0x1aef, 0xa006, 0x007c, 0x81ff,
+ 0x0040, 0x1b50, 0x2098, 0x20a1, 0x0030, 0x700c, 0xa084, 0x00ff,
+ 0x0040, 0x1b21, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0,
+ 0x1b1c, 0x21a8, 0x7017, 0x0000, 0x810b, 0x7112, 0x721a, 0x731e,
+ 0x7422, 0x7526, 0x780c, 0xa085, 0x0000, 0x7002, 0x53a6, 0x7007,
+ 0x0001, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8, 0x1b3f,
+ 0x2009, 0x0022, 0x2104, 0xa084, 0x4000, 0x00c0, 0x1b31, 0x7010,
+ 0xa084, 0xf000, 0x0040, 0x1b48, 0x7007, 0x0008, 0x0078, 0x1b4c,
+ 0x7108, 0x8103, 0x00c8, 0x1b31, 0x7007, 0x0002, 0xa184, 0x01e0,
+ 0x7003, 0x0000, 0x007c, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0004,
+ 0x00c8, 0x1b5c, 0x0078, 0x1b5f, 0xa006, 0x0078, 0x1b61, 0xa085,
+ 0x0001, 0x007c, 0x0e7e, 0x2071, 0x5100, 0x2d08, 0x7058, 0x6802,
+ 0xa005, 0x00c0, 0x1b6c, 0x715e, 0x715a, 0x0e7f, 0x007c, 0x2c08,
+ 0x7858, 0x6002, 0xa005, 0x00c0, 0x1b76, 0x795e, 0x795a, 0x007c,
+ 0x2091, 0x8000, 0x6003, 0x0000, 0x2c08, 0x785c, 0xa065, 0x00c0,
+ 0x1b84, 0x795a, 0x0078, 0x1b85, 0x6102, 0x795e, 0x2091, 0x8001,
+ 0x1078, 0x21ef, 0x007c, 0x0e7e, 0x2071, 0x5100, 0x7058, 0xa06d,
+ 0x0040, 0x1b99, 0x6800, 0x705a, 0xa005, 0x00c0, 0x1b98, 0x705e,
+ 0x8dff, 0x0e7f, 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0x2079, 0x5100,
+ 0xaf80, 0x0016, 0x2060, 0x6000, 0xa005, 0x0040, 0x1bc9, 0x2068,
+ 0x6814, 0xa306, 0x00c0, 0x1bb2, 0x6828, 0xa084, 0x00ff, 0xa406,
+ 0x0040, 0x1bb5, 0x2d60, 0x0078, 0x1ba3, 0x6800, 0xa005, 0x6002,
+ 0x00c0, 0x1bc1, 0xaf80, 0x0016, 0xac06, 0x0040, 0x1bc0, 0x2c00,
+ 0x785e, 0x0d7e, 0x689c, 0xa005, 0x0040, 0x1bc8, 0x1078, 0x19b3,
+ 0x007f, 0x0f7f, 0x0c7f, 0x0d7f, 0xa005, 0x007c, 0x0d7e, 0x0c7e,
+ 0x0f7e, 0x2079, 0x5100, 0xaf80, 0x0016, 0x2060, 0x6000, 0xa005,
+ 0x0040, 0x1bf8, 0x2068, 0x6814, 0xa084, 0x00ff, 0xa306, 0x0040,
+ 0x1be4, 0x2d60, 0x0078, 0x1bd6, 0x6800, 0xa005, 0x6002, 0x00c0,
+ 0x1bf0, 0xaf80, 0x0016, 0xac06, 0x0040, 0x1bef, 0x2c00, 0x785e,
+ 0x0d7e, 0x689c, 0xa005, 0x0040, 0x1bf7, 0x1078, 0x19b3, 0x007f,
+ 0x0f7f, 0x0c7f, 0x0d7f, 0xa005, 0x007c, 0x0d7e, 0x0c7e, 0x0f7e,
+ 0x2079, 0x5100, 0xaf80, 0x0016, 0x2060, 0x6000, 0xa06d, 0x0040,
+ 0x1c24, 0x6814, 0xa306, 0x0040, 0x1c10, 0x2d60, 0x0078, 0x1c05,
+ 0x6800, 0xa005, 0x6002, 0x00c0, 0x1c1c, 0xaf80, 0x0016, 0xac06,
+ 0x0040, 0x1c1b, 0x2c00, 0x785e, 0x0d7e, 0x689c, 0xa005, 0x0040,
+ 0x1c23, 0x1078, 0x19b3, 0x007f, 0x0f7f, 0x0c7f, 0x0d7f, 0xa005,
+ 0x007c, 0x2091, 0x8000, 0x2069, 0x5140, 0x6800, 0xa086, 0x0000,
+ 0x0040, 0x1c37, 0x2091, 0x8001, 0x78e3, 0x0009, 0x007c, 0x6880,
+ 0xa0bc, 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010,
+ 0x1078, 0x1980, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1c40, 0x2091,
+ 0x8001, 0x2001, 0x800a, 0x0078, 0x1c57, 0x2001, 0x800c, 0x0078,
+ 0x1c57, 0x1078, 0x1a2b, 0x2001, 0x800d, 0x0078, 0x1c57, 0x70c2,
+ 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x4080, 0x007c, 0x6004,
+ 0x2c08, 0x2063, 0x0000, 0x7884, 0x8000, 0x7886, 0x7888, 0xa005,
+ 0x798a, 0x0040, 0x1c6e, 0x2c02, 0x0078, 0x1c6f, 0x798e, 0x007c,
+ 0x6807, 0x0103, 0x0c7e, 0x2061, 0x5100, 0x2d08, 0x206b, 0x0000,
+ 0x6084, 0x8000, 0x6086, 0x6088, 0xa005, 0x618a, 0x0040, 0x1c83,
+ 0x2d02, 0x0078, 0x1c84, 0x618e, 0x0c7f, 0x007c, 0x1078, 0x1c97,
+ 0x0040, 0x1c96, 0x0c7e, 0x609c, 0xa065, 0x0040, 0x1c91, 0x1078,
+ 0x19b3, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1948, 0x007c, 0x788c,
+ 0xa065, 0x0040, 0x1ca9, 0x2091, 0x8000, 0x7884, 0x8001, 0x7886,
+ 0x2c04, 0x788e, 0xa005, 0x00c0, 0x1ca7, 0x788a, 0x8000, 0x2091,
+ 0x8001, 0x007c, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e,
+ 0x00c8, 0x1cb3, 0xa200, 0x0070, 0x1cb7, 0x0078, 0x1cae, 0x8086,
+ 0x818e, 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x1cdd,
+ 0xa11a, 0x00c8, 0x1cdd, 0x8213, 0x818d, 0x0048, 0x1cce, 0xa11a,
+ 0x00c8, 0x1ccf, 0x0070, 0x1cd5, 0x0078, 0x1cc3, 0xa11a, 0x2308,
+ 0x8210, 0x0070, 0x1cd5, 0x0078, 0x1cc3, 0x007e, 0x3200, 0xa084,
+ 0xf7ff, 0x2080, 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085,
+ 0x0800, 0x0078, 0x1cd9, 0x7994, 0x70d0, 0xa106, 0x0040, 0x1d51,
+ 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x1d51,
+ 0x7008, 0x7208, 0xa206, 0x00c0, 0x1d51, 0xa286, 0x0008, 0x00c0,
+ 0x1d51, 0x2071, 0x0010, 0x1078, 0x192e, 0x0040, 0x1d51, 0x7a9c,
+ 0x7b98, 0x7ca4, 0x7da0, 0xa184, 0xff00, 0x0040, 0x1d1f, 0x2031,
+ 0x0000, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x810b,
+ 0x86b5, 0x810b, 0x86b5, 0x810b, 0x86b5, 0x2100, 0xa210, 0x2600,
+ 0xa319, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x0078, 0x1d29, 0x8107,
+ 0x8004, 0x8004, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9,
+ 0x0000, 0x2009, 0x0020, 0x1078, 0x1929, 0x2091, 0x8001, 0x0040,
+ 0x1d48, 0x1078, 0x1948, 0x78a8, 0x8000, 0x78aa, 0xa086, 0x0002,
+ 0x00c0, 0x1d51, 0x2091, 0x8000, 0x78e3, 0x0002, 0x78ab, 0x0000,
+ 0x78cc, 0xa085, 0x0003, 0x78ce, 0x2091, 0x8001, 0x0078, 0x1d51,
+ 0x78ab, 0x0000, 0x1078, 0x20ac, 0x6004, 0xa084, 0x000f, 0x0079,
+ 0x1d56, 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x1d66, 0x1d88,
+ 0x1dae, 0x1d66, 0x1dcb, 0x1d75, 0x1f2c, 0x1f47, 0x1d66, 0x1d82,
+ 0x1da8, 0x1e13, 0x1e82, 0x1ed2, 0x1ee4, 0x1f43, 0x2039, 0x0400,
+ 0x78dc, 0xa705, 0x78de, 0x6008, 0xa705, 0x600a, 0x1078, 0x1fc7,
+ 0x609c, 0x78da, 0x1078, 0x2094, 0x007c, 0x78dc, 0xa084, 0x0100,
+ 0x0040, 0x1d7c, 0x0078, 0x1d66, 0x601c, 0xa085, 0x0080, 0x601e,
+ 0x0078, 0x1d8f, 0x1078, 0x1b53, 0x00c0, 0x1d66, 0x1078, 0x20c6,
+ 0x78dc, 0xa084, 0x0100, 0x0040, 0x1d8f, 0x0078, 0x1d66, 0x78df,
+ 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, 0x78d2, 0x8001, 0x609f,
+ 0x0000, 0x0040, 0x1da5, 0x1078, 0x1fc7, 0x0040, 0x1da5, 0x78dc,
+ 0xa085, 0x0100, 0x78de, 0x0078, 0x1da7, 0x1078, 0x1feb, 0x007c,
+ 0x1078, 0x1b53, 0x00c0, 0x1d66, 0x1078, 0x20c2, 0x78dc, 0xa08c,
+ 0x0e00, 0x00c0, 0x1db7, 0xa084, 0x0100, 0x00c0, 0x1db9, 0x0078,
+ 0x1d66, 0x1078, 0x1fc7, 0x00c0, 0x1dca, 0x6104, 0xa18c, 0x00ff,
+ 0xa186, 0x0007, 0x0040, 0x1f84, 0xa186, 0x000f, 0x0040, 0x1f84,
+ 0x1078, 0x1feb, 0x007c, 0x78dc, 0xa084, 0x0100, 0x0040, 0x1dd2,
+ 0x0078, 0x1d66, 0x78df, 0x0000, 0x6714, 0x2011, 0x0001, 0x20a9,
+ 0x0001, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0040, 0x1df5, 0x2011,
+ 0x0001, 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, 0x0001, 0x0040,
+ 0x1df5, 0x2039, 0x0000, 0x2011, 0x0002, 0x20a9, 0x0100, 0xa08e,
+ 0x0002, 0x0040, 0x1df5, 0x0078, 0x1e10, 0x1078, 0x1973, 0x2091,
+ 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, 0x6808, 0xa084, 0xffde,
+ 0x680a, 0xade8, 0x0010, 0x2091, 0x8001, 0x0070, 0x1e09, 0x0078,
+ 0x1df7, 0x8211, 0x0040, 0x1e10, 0x20a9, 0x0100, 0x0078, 0x1df7,
+ 0x1078, 0x1948, 0x007c, 0x2001, 0x5167, 0x2004, 0xa084, 0x8000,
+ 0x0040, 0x1fac, 0x6114, 0x1078, 0x20e3, 0x6900, 0xa184, 0x0001,
+ 0x0040, 0x1e34, 0x6028, 0xa084, 0x00ff, 0x00c0, 0x1fa4, 0x6800,
+ 0xa084, 0x0001, 0x0040, 0x1fac, 0x6803, 0x0000, 0x680b, 0x0000,
+ 0x6807, 0x0000, 0x0078, 0x1fb4, 0x2011, 0x0001, 0x6020, 0xd0f4,
+ 0x0040, 0x1e3c, 0xa295, 0x0002, 0xd0c4, 0x0040, 0x1e41, 0xa295,
+ 0x0008, 0xd0cc, 0x0040, 0x1e46, 0xa295, 0x0400, 0x601c, 0xa084,
+ 0x0002, 0x0040, 0x1e4d, 0xa295, 0x0004, 0x602c, 0xa08c, 0x00ff,
+ 0xa182, 0x0002, 0x0048, 0x1fb0, 0xa182, 0x001b, 0x00c8, 0x1fb0,
+ 0x0040, 0x1fb0, 0x690e, 0x602c, 0x8007, 0xa08c, 0x00ff, 0xa182,
+ 0x0002, 0x0048, 0x1fb0, 0xa182, 0x001b, 0x00c8, 0x1fb0, 0x0040,
+ 0x1fb0, 0x6912, 0x6030, 0xa005, 0x00c0, 0x1e70, 0x2001, 0x001e,
+ 0x8000, 0x6816, 0x6028, 0xa084, 0x00ff, 0x0040, 0x1fac, 0x6806,
+ 0x6028, 0x8007, 0xa084, 0x00ff, 0x0040, 0x1fac, 0x680a, 0x6a02,
+ 0x0078, 0x1fb4, 0x2001, 0x5167, 0x2004, 0xa084, 0x8000, 0x0040,
+ 0x1fac, 0x6114, 0x1078, 0x20e3, 0x2091, 0x8000, 0x6a04, 0x6b08,
+ 0x6418, 0xa484, 0x0003, 0x0040, 0x1ea8, 0x6128, 0xa18c, 0x00ff,
+ 0x8001, 0x00c0, 0x1ea1, 0x2100, 0xa210, 0x0048, 0x1ece, 0x0078,
+ 0x1ea8, 0x8001, 0x00c0, 0x1ece, 0x2100, 0xa212, 0x0048, 0x1ece,
+ 0xa484, 0x000c, 0x0040, 0x1ec2, 0x6128, 0x810f, 0xa18c, 0x00ff,
+ 0xa082, 0x0004, 0x00c0, 0x1eba, 0x2100, 0xa318, 0x0048, 0x1ece,
+ 0x0078, 0x1ec2, 0xa082, 0x0004, 0x00c0, 0x1ece, 0x2100, 0xa31a,
+ 0x0048, 0x1ece, 0x6030, 0xa005, 0x0040, 0x1ec8, 0x8000, 0x6816,
+ 0x6a06, 0x6b0a, 0x2091, 0x8001, 0x0078, 0x1fb4, 0x2091, 0x8001,
+ 0x0078, 0x1fb0, 0x6114, 0x1078, 0x20e3, 0x2091, 0x8000, 0x6b08,
+ 0x8318, 0x0048, 0x1ee0, 0x6b0a, 0x2091, 0x8001, 0x0078, 0x1fc3,
+ 0x2091, 0x8001, 0x0078, 0x1fb0, 0x6024, 0x8007, 0xa084, 0x00ff,
+ 0x0040, 0x1f02, 0xa086, 0x0080, 0x00c0, 0x1f2a, 0x20a9, 0x0008,
+ 0x2069, 0x7510, 0x2091, 0x8000, 0x6800, 0xa084, 0xfcff, 0x6802,
+ 0xade8, 0x0008, 0x0070, 0x1efe, 0x0078, 0x1ef4, 0x2091, 0x8001,
+ 0x0078, 0x1fb4, 0x6028, 0xa015, 0x0040, 0x1f2a, 0x6114, 0x1078,
+ 0x20e3, 0x0d7e, 0xade8, 0x0007, 0x2091, 0x8000, 0x6800, 0xa00d,
+ 0x0040, 0x1f27, 0xa206, 0x0040, 0x1f18, 0x2168, 0x0078, 0x1f0e,
+ 0x0c7e, 0x2160, 0x6000, 0x6802, 0x1078, 0x1948, 0x0c7f, 0x0d7f,
+ 0x6808, 0x8000, 0x680a, 0x2091, 0x8001, 0x0078, 0x1fc3, 0x2091,
+ 0x8001, 0x0d7f, 0x0078, 0x1fac, 0x6114, 0x1078, 0x20e3, 0x6800,
+ 0xa084, 0x0001, 0x0040, 0x1f9c, 0x2091, 0x8000, 0x6a04, 0x8210,
+ 0x0048, 0x1f3f, 0x6a06, 0x2091, 0x8001, 0x0078, 0x1fc3, 0x2091,
+ 0x8001, 0x0078, 0x1fb0, 0x1078, 0x1b53, 0x00c0, 0x1d66, 0x6114,
+ 0x1078, 0x20e3, 0x60be, 0x60bb, 0x0000, 0x6900, 0xa184, 0x0008,
+ 0x0040, 0x1f56, 0x6020, 0xa085, 0x0100, 0x6022, 0xa184, 0x0001,
+ 0x0040, 0x1fac, 0xa184, 0x0100, 0x00c0, 0x1f98, 0xa184, 0x0200,
+ 0x00c0, 0x1f94, 0x681c, 0xa005, 0x00c0, 0x1fa0, 0x6004, 0xa084,
+ 0x00ff, 0xa086, 0x000f, 0x00c0, 0x1f6f, 0x1078, 0x20c6, 0x78df,
+ 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, 0x78d2, 0x8001, 0x609f,
+ 0x0000, 0x0040, 0x1f84, 0x1078, 0x1fc7, 0x0040, 0x1f84, 0x78dc,
+ 0xa085, 0x0100, 0x78de, 0x007c, 0x78d7, 0x0000, 0x78db, 0x0000,
+ 0x6024, 0xa084, 0xff00, 0x6026, 0x1078, 0x39de, 0x0040, 0x1ce3,
+ 0x1078, 0x1b78, 0x0078, 0x1ce3, 0x2009, 0x0017, 0x0078, 0x1fb6,
+ 0x2009, 0x000e, 0x0078, 0x1fb6, 0x2009, 0x0007, 0x0078, 0x1fb6,
+ 0x2009, 0x0035, 0x0078, 0x1fb6, 0x2009, 0x003e, 0x0078, 0x1fb6,
+ 0x2009, 0x0004, 0x0078, 0x1fb6, 0x2009, 0x0006, 0x0078, 0x1fb6,
+ 0x2009, 0x0016, 0x0078, 0x1fb6, 0x2009, 0x0001, 0x6024, 0xa084,
+ 0xff00, 0xa105, 0x6026, 0x2091, 0x8000, 0x1078, 0x1c5f, 0x2091,
+ 0x8001, 0x0078, 0x1ce3, 0x1078, 0x1948, 0x0078, 0x1ce3, 0x78d4,
+ 0xa06d, 0x00c0, 0x1fd2, 0x2c00, 0x78d6, 0x78da, 0x609f, 0x0000,
+ 0x0078, 0x1fde, 0x2c00, 0x689e, 0x609f, 0x0000, 0x78d6, 0x2d00,
+ 0x6002, 0x78d8, 0xad06, 0x00c0, 0x1fde, 0x6002, 0x78d0, 0x8001,
+ 0x78d2, 0x00c0, 0x1fea, 0x78dc, 0xa084, 0xfeff, 0x78de, 0x78d8,
+ 0x2060, 0xa006, 0x007c, 0xa02e, 0x2530, 0x611c, 0x61a2, 0xa184,
+ 0xe1ff, 0x601e, 0xa184, 0x0060, 0x0040, 0x1ffa, 0x0e7e, 0x1078,
+ 0x47c2, 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000,
+ 0x60b3, 0x0000, 0x6714, 0x1078, 0x1973, 0x2091, 0x8000, 0x60a0,
+ 0xa084, 0x8000, 0x00c0, 0x2021, 0x6808, 0xa084, 0x0001, 0x0040,
+ 0x2021, 0x2091, 0x8001, 0x1078, 0x19c0, 0x2091, 0x8000, 0x1078,
+ 0x1c5f, 0x2091, 0x8001, 0x78d7, 0x0000, 0x78db, 0x0000, 0x0078,
+ 0x2093, 0x6024, 0xa096, 0x0001, 0x00c0, 0x2028, 0x8000, 0x6026,
+ 0x6a10, 0x6814, 0x2091, 0x8001, 0xa202, 0x0048, 0x2037, 0x0040,
+ 0x2037, 0x2039, 0x0200, 0x1078, 0x2094, 0x0078, 0x2093, 0x2c08,
+ 0x2091, 0x8000, 0x60a0, 0xa084, 0x8000, 0x0040, 0x2064, 0x6800,
+ 0xa065, 0x0040, 0x2069, 0x6a04, 0x0e7e, 0x2071, 0x5140, 0x7000,
+ 0xa084, 0x0001, 0x0040, 0x205e, 0x7048, 0xa206, 0x00c0, 0x205e,
+ 0x6b04, 0x231c, 0x2160, 0x6302, 0x2300, 0xa005, 0x00c0, 0x2059,
+ 0x6902, 0x2260, 0x6102, 0x0e7f, 0x0078, 0x2070, 0x2160, 0x6202,
+ 0x6906, 0x0e7f, 0x0078, 0x2070, 0x6800, 0xa065, 0x0040, 0x2069,
+ 0x6102, 0x6902, 0x00c0, 0x206d, 0x6906, 0x2160, 0x6003, 0x0000,
+ 0x2160, 0x60a0, 0xa084, 0x8000, 0x0040, 0x207a, 0x6808, 0xa084,
+ 0xfffc, 0x680a, 0x6810, 0x8000, 0x6812, 0x2091, 0x8001, 0x6808,
+ 0xa08c, 0x0040, 0x0040, 0x2089, 0xa086, 0x0040, 0x680a, 0x1078,
+ 0x19d1, 0x2091, 0x8000, 0x1078, 0x21d2, 0x2091, 0x8001, 0x78db,
+ 0x0000, 0x78d7, 0x0000, 0x007c, 0x6008, 0xa705, 0x600a, 0x2091,
+ 0x8000, 0x1078, 0x1c5f, 0x2091, 0x8001, 0x78d8, 0xa065, 0x0040,
+ 0x20a7, 0x609c, 0x78da, 0x609f, 0x0000, 0x0078, 0x2097, 0x78d7,
+ 0x0000, 0x78db, 0x0000, 0x007c, 0x7990, 0x7894, 0x8000, 0xa10a,
+ 0x00c8, 0x20b3, 0xa006, 0x7896, 0x70d2, 0x7804, 0xa005, 0x0040,
+ 0x20c1, 0x8001, 0x7806, 0x00c0, 0x20c1, 0x0068, 0x20c1, 0x2091,
+ 0x4080, 0x007c, 0x2039, 0x20da, 0x0078, 0x20c8, 0x2039, 0x20e0,
+ 0x2704, 0xa005, 0x0040, 0x20d9, 0xac00, 0x2068, 0x6b08, 0x6c0c,
+ 0x6910, 0x6a14, 0x690a, 0x6a0e, 0x6b12, 0x6c16, 0x8738, 0x0078,
+ 0x20c8, 0x007c, 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, 0x0000,
+ 0x0015, 0x001b, 0x0000, 0x0c7e, 0x1078, 0x3b69, 0x2c68, 0x0c7f,
+ 0x007c, 0x0010, 0x215a, 0x0068, 0x215a, 0x2029, 0x0000, 0x78cb,
+ 0x0000, 0x788c, 0xa065, 0x0040, 0x2153, 0x2009, 0x5174, 0x2104,
+ 0xa084, 0x0001, 0x0040, 0x2121, 0x6004, 0xa086, 0x0103, 0x00c0,
+ 0x2121, 0x6018, 0xa005, 0x00c0, 0x2121, 0x6014, 0xa005, 0x00c0,
+ 0x2121, 0x0d7e, 0x2069, 0x0000, 0x6818, 0xa084, 0x0001, 0x00c0,
+ 0x2120, 0x600c, 0x70c6, 0x6010, 0x70ca, 0x70c3, 0x8020, 0x681b,
+ 0x0001, 0x2091, 0x4080, 0x0d7f, 0x1078, 0x1c86, 0x0078, 0x2158,
+ 0x0d7f, 0x1078, 0x215b, 0x0040, 0x2153, 0x6204, 0xa294, 0x00ff,
+ 0xa296, 0x0003, 0x0040, 0x2133, 0x6204, 0xa296, 0x0110, 0x00c0,
+ 0x2141, 0x78cb, 0x0001, 0x6204, 0xa294, 0xff00, 0x8217, 0x8211,
+ 0x0040, 0x2141, 0x85ff, 0x00c0, 0x2153, 0x8210, 0xa202, 0x00c8,
+ 0x2153, 0x057e, 0x1078, 0x216a, 0x057f, 0x0040, 0x214e, 0x78e0,
+ 0xa086, 0x0003, 0x0040, 0x2153, 0x0078, 0x2141, 0x8528, 0x78c8,
+ 0xa005, 0x0040, 0x20f1, 0x85ff, 0x0040, 0x215a, 0x2091, 0x4080,
+ 0x78b0, 0x70d6, 0x007c, 0x7bac, 0x79b0, 0x70d4, 0xa102, 0x00c0,
+ 0x2164, 0x2300, 0xa005, 0x007c, 0x0048, 0x2168, 0xa302, 0x007c,
+ 0x8002, 0x007c, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005, 0x00c8,
+ 0x2184, 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0,
+ 0x21b9, 0x7008, 0x7208, 0xa206, 0x00c0, 0x21b9, 0xa286, 0x0008,
+ 0x00c0, 0x21b9, 0x2071, 0x0010, 0x1078, 0x21be, 0x2009, 0x0020,
+ 0x6004, 0xa086, 0x0103, 0x00c0, 0x2193, 0x6028, 0xa005, 0x00c0,
+ 0x2193, 0x2009, 0x000c, 0x1078, 0x1924, 0x0040, 0x21ac, 0x78c4,
+ 0x8000, 0x78c6, 0xa086, 0x0002, 0x00c0, 0x21b9, 0x2091, 0x8000,
+ 0x78e3, 0x0003, 0x78c7, 0x0000, 0x78cc, 0xa085, 0x0300, 0x78ce,
+ 0x2091, 0x8001, 0x0078, 0x21b9, 0x78c7, 0x0000, 0x1078, 0x1c86,
+ 0x79ac, 0x78b0, 0x8000, 0xa10a, 0x00c8, 0x21b7, 0xa006, 0x78b2,
+ 0xa006, 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x8107, 0x8004,
+ 0x8004, 0x7ab8, 0x7bb4, 0x7cc0, 0x7dbc, 0xa210, 0xa399, 0x0000,
+ 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, 0x2009, 0x515b, 0x2091,
+ 0x8000, 0x200a, 0x0f7e, 0x0e7e, 0x2071, 0x5140, 0x7000, 0xa086,
+ 0x0000, 0x00c0, 0x21ec, 0x2009, 0x5112, 0x2104, 0xa005, 0x00c0,
+ 0x21ec, 0x2079, 0x0100, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x21ec,
+ 0x0018, 0x21ec, 0x781b, 0x004b, 0x0e7f, 0x0f7f, 0x007c, 0x0f7e,
+ 0x0e7e, 0x2071, 0x5140, 0x2091, 0x8000, 0x7000, 0xa086, 0x0000,
+ 0x00c0, 0x2205, 0x2079, 0x0100, 0x7830, 0xa084, 0x00c0, 0x00c0,
+ 0x2205, 0x0018, 0x2205, 0x781b, 0x004d, 0x2091, 0x8001, 0x0e7f,
+ 0x0f7f, 0x007c, 0x127e, 0x2091, 0x2300, 0x2071, 0x5140, 0x2079,
+ 0x0100, 0x784b, 0x000f, 0x0098, 0x2218, 0x7838, 0x0078, 0x2211,
+ 0x20a9, 0x0040, 0x7800, 0xa082, 0x0004, 0x0048, 0x2221, 0x20a9,
+ 0x0060, 0x789b, 0x0000, 0x78af, 0x0000, 0x78af, 0x0000, 0x0070,
+ 0x222b, 0x0078, 0x2223, 0x7800, 0xa082, 0x0004, 0x0048, 0x223a,
+ 0x70b7, 0x0096, 0x2019, 0x4ee7, 0x1078, 0x2276, 0x702f, 0x8001,
+ 0x0078, 0x2246, 0x70b7, 0x0000, 0x2019, 0x4d5f, 0x1078, 0x2276,
+ 0x2019, 0x4d9e, 0x1078, 0x2276, 0x702f, 0x8000, 0x7003, 0x0000,
+ 0x1078, 0x237f, 0x7004, 0xa084, 0x000f, 0x017e, 0x2009, 0x04fd,
+ 0x210c, 0xa18a, 0x0005, 0x0048, 0x225b, 0x0038, 0x2261, 0xa085,
+ 0x6280, 0x0078, 0x2263, 0x0028, 0x2261, 0xa085, 0x6280, 0x0078,
+ 0x2263, 0xa085, 0x62c0, 0x017f, 0x7806, 0x780f, 0xb204, 0x7843,
+ 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008, 0x7047, 0x0008, 0x7053,
+ 0x517f, 0x704f, 0x0000, 0x127f, 0x2000, 0x007c, 0x137e, 0x147e,
+ 0x157e, 0x047e, 0x20a1, 0x012b, 0x2304, 0xa005, 0x789a, 0x0040,
+ 0x2296, 0x8318, 0x2324, 0x8318, 0x2398, 0x24a8, 0xa484, 0xff00,
+ 0x0040, 0x228e, 0xa482, 0x0100, 0x20a9, 0x0100, 0x2020, 0x53a6,
+ 0xa005, 0x00c0, 0x2285, 0x3318, 0x0078, 0x227c, 0x047f, 0x157f,
+ 0x147f, 0x137f, 0x007c, 0xa18c, 0x000f, 0x2011, 0x0101, 0x2204,
+ 0xa084, 0xfff0, 0xa105, 0x2012, 0x1078, 0x237f, 0x007c, 0x2011,
+ 0x0101, 0x20a9, 0x0009, 0x810b, 0x0070, 0x22b0, 0x0078, 0x22ab,
+ 0xa18c, 0x0e00, 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012, 0x007c,
+ 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, 0x0070, 0x22c1, 0x0078,
+ 0x22bc, 0xa294, 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, 0x200a,
+ 0x007c, 0x2011, 0x0101, 0x20a9, 0x000c, 0x810b, 0x0070, 0x22d2,
+ 0x0078, 0x22cd, 0xa18c, 0xf000, 0x2204, 0xa084, 0x0fff, 0xa105,
+ 0x2012, 0x007c, 0x2011, 0x0102, 0x2204, 0xa084, 0xffcf, 0xa105,
+ 0x2012, 0x007c, 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e, 0x2061,
+ 0x0100, 0x609a, 0x62ac, 0x63ac, 0x0c7f, 0x007c, 0x8103, 0x8003,
+ 0xa080, 0x0022, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0xa084,
+ 0xffdf, 0x60ae, 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0022,
+ 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0xa085, 0x0020, 0x60ae,
+ 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e, 0x2061,
+ 0x0100, 0x609a, 0x60a4, 0x62ae, 0x2010, 0x60a4, 0x63ae, 0x2018,
+ 0x0c7f, 0x007c, 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, 0xa005,
+ 0x0040, 0x235d, 0x2061, 0x7500, 0x1078, 0x2365, 0x0040, 0x2349,
+ 0x20a9, 0x0000, 0x2061, 0x7400, 0x0c7e, 0x1078, 0x2365, 0x0040,
+ 0x2339, 0x0c7f, 0x8c60, 0x0070, 0x2337, 0x0078, 0x232c, 0x0078,
+ 0x235d, 0x007f, 0xa082, 0x7400, 0x2071, 0x5140, 0x7086, 0x7182,
+ 0x2001, 0x0004, 0x706e, 0x7093, 0x000f, 0x1078, 0x21cd, 0x0078,
+ 0x2359, 0x60c0, 0xa005, 0x00c0, 0x235d, 0x2071, 0x5140, 0x7182,
+ 0x2c00, 0x708a, 0x2001, 0x0006, 0x706e, 0x7093, 0x000f, 0x1078,
+ 0x21cd, 0x2001, 0x0000, 0x0078, 0x235f, 0x2001, 0x0001, 0x2091,
+ 0x8001, 0xa005, 0x0e7f, 0x0c7f, 0x007c, 0x2c04, 0xa005, 0x0040,
+ 0x237c, 0x2060, 0x600c, 0xa306, 0x00c0, 0x2379, 0x6010, 0xa206,
+ 0x00c0, 0x2379, 0x6014, 0xa106, 0x00c0, 0x2379, 0xa006, 0x0078,
+ 0x237e, 0x6000, 0x0078, 0x2366, 0xa085, 0x0001, 0x007c, 0x2011,
+ 0x5141, 0x220c, 0xa18c, 0x000f, 0x2011, 0x013b, 0x2204, 0xa084,
+ 0x0100, 0x0040, 0x2395, 0x2021, 0xff04, 0x2122, 0x810b, 0x810b,
+ 0x810b, 0x810b, 0xa18d, 0x0f00, 0x2104, 0x007c, 0x0e7e, 0x68e4,
+ 0xa08c, 0x0020, 0x0040, 0x23e9, 0xa084, 0x0006, 0x00c0, 0x23e9,
+ 0x6014, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0f0,
+ 0x5380, 0x7004, 0xa084, 0x000a, 0x00c0, 0x23e9, 0x7108, 0xa194,
+ 0xff00, 0x0040, 0x23e9, 0xa18c, 0x00ff, 0x2001, 0x000c, 0xa106,
+ 0x0040, 0x23d0, 0x2001, 0x0012, 0xa106, 0x0040, 0x23d4, 0x2001,
+ 0x0014, 0xa106, 0x0040, 0x23d8, 0x2001, 0x0019, 0xa106, 0x0040,
+ 0x23dc, 0x2001, 0x0032, 0xa106, 0x0040, 0x23e0, 0x0078, 0x23e4,
+ 0x2009, 0x0012, 0x0078, 0x23e6, 0x2009, 0x0014, 0x0078, 0x23e6,
+ 0x2009, 0x0019, 0x0078, 0x23e6, 0x2009, 0x0020, 0x0078, 0x23e6,
+ 0x2009, 0x003f, 0x0078, 0x23e6, 0x2011, 0x0000, 0x2100, 0xa205,
+ 0x700a, 0x0e7f, 0x007c, 0x0068, 0x23eb, 0x2091, 0x8000, 0x2071,
+ 0x0000, 0x007e, 0x7018, 0xa084, 0x0001, 0x00c0, 0x23f2, 0x007f,
+ 0x2071, 0x0010, 0x70ca, 0x007f, 0x70c6, 0x70c3, 0x8002, 0x70db,
+ 0x0741, 0x70df, 0x0000, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091,
+ 0x4080, 0x0078, 0x2409, 0x107e, 0x007e, 0x127e, 0x2091, 0x2300,
+ 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x77c2, 0x74c6, 0x76ca, 0x75ce,
+ 0xa594, 0x003f, 0xa49c, 0x0003, 0xa484, 0x000f, 0x0079, 0x2420,
+ 0x2432, 0x2432, 0x2432, 0x276c, 0x393b, 0x2430, 0x2461, 0x246b,
+ 0x2430, 0x2430, 0x2430, 0x2430, 0x2430, 0x2430, 0x2430, 0x2430,
+ 0x1078, 0x23eb, 0x8507, 0xa084, 0x001f, 0x0079, 0x2437, 0x2475,
+ 0x276c, 0x2926, 0x2a23, 0x2a4b, 0x2ced, 0x2f98, 0x2fdb, 0x3026,
+ 0x30ab, 0x3163, 0x320c, 0x2461, 0x2848, 0x2f6d, 0x2457, 0x3cc8,
+ 0x3ce8, 0x3eae, 0x3eba, 0x3f8f, 0x2457, 0x2457, 0x4062, 0x4066,
+ 0x3cc6, 0x2457, 0x3e19, 0x2457, 0x3b8c, 0x246b, 0x2457, 0x1078,
+ 0x23eb, 0x0018, 0x2410, 0x127f, 0x2091, 0x8001, 0x007f, 0x107f,
+ 0x007c, 0x2019, 0x4e3b, 0x1078, 0x2276, 0x702f, 0x0001, 0x781b,
+ 0x004f, 0x0078, 0x2459, 0x2019, 0x4d9e, 0x1078, 0x2276, 0x702f,
+ 0x8000, 0x781b, 0x00d0, 0x0078, 0x2459, 0x7242, 0x2009, 0x510f,
+ 0x200b, 0x0000, 0xa584, 0x0001, 0x00c0, 0x3ba0, 0x0040, 0x2492,
+ 0x1078, 0x23eb, 0x7003, 0x0000, 0x704b, 0x0000, 0x7043, 0x0000,
+ 0x7037, 0x0000, 0x1078, 0x3912, 0x0018, 0x2410, 0x2009, 0x510f,
+ 0x200b, 0x0000, 0x7068, 0xa005, 0x00c0, 0x255d, 0x706c, 0xa084,
+ 0x0007, 0x0079, 0x249b, 0x2594, 0x24a3, 0x24af, 0x24cc, 0x24ee,
+ 0x253b, 0x2514, 0x24a3, 0x1078, 0x38fa, 0x2009, 0x0048, 0x1078,
+ 0x2e39, 0x00c0, 0x24ad, 0x7003, 0x0004, 0x0078, 0x2459, 0x1078,
+ 0x38fa, 0x00c0, 0x24ca, 0x7080, 0x8007, 0x7882, 0x789b, 0x0010,
+ 0x78ab, 0x000c, 0x789b, 0x0060, 0x78ab, 0x0001, 0x785b, 0x0004,
+ 0x2009, 0x00e0, 0x1078, 0x2e2d, 0x00c0, 0x24ca, 0x7003, 0x0004,
+ 0x7093, 0x000f, 0x0078, 0x2459, 0x1078, 0x38fa, 0x00c0, 0x24ec,
+ 0x7180, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d,
+ 0x00c0, 0x79aa, 0x78ab, 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002,
+ 0x785b, 0x0004, 0x2009, 0x00e0, 0x1078, 0x2e2d, 0x00c0, 0x24ec,
+ 0x7003, 0x0004, 0x7093, 0x000f, 0x0078, 0x2459, 0x1078, 0x38fa,
+ 0x00c0, 0x2512, 0x7180, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c,
+ 0x001f, 0xa18d, 0x00c0, 0x79aa, 0x78ab, 0x0020, 0x7184, 0x79aa,
+ 0x78ab, 0x000d, 0x789b, 0x0060, 0x78ab, 0x0004, 0x785b, 0x0004,
+ 0x2009, 0x00e0, 0x1078, 0x2e2d, 0x00c0, 0x2512, 0x7003, 0x0004,
+ 0x7093, 0x000f, 0x0078, 0x2459, 0x1078, 0x38fa, 0x00c0, 0x2539,
+ 0x7180, 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, 0x001f, 0xa18d,
+ 0x00c0, 0x79aa, 0x78ab, 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002,
+ 0x785b, 0x0004, 0x2009, 0x00e0, 0x1078, 0x2e2d, 0x00c0, 0x2539,
+ 0x7088, 0x708b, 0x0000, 0x2068, 0x704a, 0x7003, 0x0002, 0x7093,
+ 0x000f, 0x0078, 0x2459, 0x1078, 0x38fa, 0x00c0, 0x2459, 0x7088,
+ 0x2068, 0x6f14, 0x1078, 0x37ef, 0x2c50, 0x1078, 0x39ac, 0x789b,
+ 0x0010, 0x6814, 0xa084, 0x001f, 0xa085, 0x0080, 0x78aa, 0x6e1c,
+ 0x2041, 0x0001, 0x708c, 0xa084, 0x0400, 0x2001, 0x0004, 0x0040,
+ 0x255b, 0x2001, 0x0006, 0x0078, 0x267c, 0x1078, 0x38fa, 0x00c0,
+ 0x2459, 0x789b, 0x0010, 0x7068, 0x2068, 0x6f14, 0x1078, 0x37ef,
+ 0x2c50, 0x1078, 0x39ac, 0x6008, 0xa085, 0x0010, 0x600a, 0x6824,
+ 0xa005, 0x0040, 0x257b, 0xa082, 0x0006, 0x0048, 0x2579, 0x0078,
+ 0x257b, 0x6827, 0x0005, 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0,
+ 0x7058, 0xa084, 0x8000, 0x0040, 0x2589, 0xa684, 0x0001, 0x0040,
+ 0x258b, 0xa39c, 0xffbf, 0x7baa, 0x2031, 0x0020, 0x2041, 0x0001,
+ 0x2001, 0x0003, 0x0078, 0x267c, 0x0018, 0x2410, 0x744c, 0xa485,
+ 0x0000, 0x0040, 0x25ae, 0xa080, 0x5180, 0x2030, 0x7150, 0x8108,
+ 0xa12a, 0x0048, 0x25a5, 0x2009, 0x5180, 0x2164, 0x6504, 0x85ff,
+ 0x00c0, 0x25bf, 0x8421, 0x00c0, 0x259f, 0x7152, 0x7003, 0x0000,
+ 0x704b, 0x0000, 0x7040, 0xa005, 0x0040, 0x3ba0, 0x0078, 0x2459,
+ 0x764c, 0xa6b0, 0x5180, 0x7150, 0x2600, 0x0078, 0x25aa, 0x7152,
+ 0x2568, 0x2558, 0x754a, 0x2c50, 0x6034, 0xa085, 0x0000, 0x00c0,
+ 0x25bc, 0x6708, 0x773a, 0xa784, 0x033f, 0x0040, 0x25f5, 0xa784,
+ 0x0021, 0x00c0, 0x25bc, 0xa784, 0x0002, 0x0040, 0x25de, 0xa784,
+ 0x0004, 0x0040, 0x25bc, 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0008,
+ 0x00c0, 0x25bc, 0xa784, 0x0010, 0x00c0, 0x25bc, 0xa784, 0x0200,
+ 0x00c0, 0x25bc, 0xa784, 0x0100, 0x0040, 0x25f5, 0x6018, 0xa005,
+ 0x00c0, 0x25bc, 0xa7bc, 0xfeff, 0x670a, 0x6823, 0x0000, 0x6e1c,
+ 0xa684, 0x000e, 0x6118, 0x0040, 0x2605, 0x601c, 0xa102, 0x0048,
+ 0x2608, 0x0040, 0x2608, 0x0078, 0x25b8, 0x81ff, 0x00c0, 0x25b8,
+ 0x68c3, 0x0000, 0xa784, 0x0080, 0x00c0, 0x2610, 0x700c, 0x6022,
+ 0xa7bc, 0xff7f, 0x670a, 0x1078, 0x39ac, 0x0018, 0x2410, 0x789b,
+ 0x0010, 0xa046, 0x1078, 0x38fa, 0x00c0, 0x2459, 0x6b14, 0xa39c,
+ 0x001f, 0xa39d, 0x00c0, 0x7058, 0xa084, 0x8000, 0x0040, 0x262c,
+ 0xa684, 0x0001, 0x0040, 0x262e, 0xa39c, 0xffbf, 0xa684, 0x0010,
+ 0x0040, 0x2634, 0xa39d, 0x0020, 0x7baa, 0x8840, 0xa684, 0x000e,
+ 0x00c0, 0x263f, 0xa7bd, 0x0010, 0x670a, 0x0078, 0x267a, 0x7158,
+ 0xa18c, 0x0800, 0x0040, 0x3401, 0x2011, 0x0020, 0xa684, 0x0008,
+ 0x00c0, 0x2650, 0x8210, 0xa684, 0x0002, 0x00c0, 0x2650, 0x8210,
+ 0x7aaa, 0x8840, 0x1078, 0x3912, 0x6a14, 0x610c, 0x8108, 0xa18c,
+ 0x00ff, 0xa1e0, 0x7400, 0x2c64, 0x8cff, 0x0040, 0x2671, 0x6014,
+ 0xa206, 0x00c0, 0x265b, 0x60b8, 0x8001, 0x60ba, 0x00c0, 0x2656,
+ 0x0c7e, 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, 0x0c7f, 0x0078,
+ 0x2594, 0x1078, 0x38fa, 0x00c0, 0x2459, 0x2a60, 0x610e, 0x79aa,
+ 0x8840, 0x7132, 0x2001, 0x0001, 0x007e, 0x715c, 0xa184, 0x0018,
+ 0x0040, 0x2697, 0xa184, 0x0010, 0x0040, 0x268a, 0x1078, 0x3604,
+ 0x00c0, 0x26ba, 0xa184, 0x0008, 0x0040, 0x2697, 0x69a0, 0xa184,
+ 0x0600, 0x00c0, 0x2697, 0x1078, 0x34f1, 0x0078, 0x26ba, 0x69a0,
+ 0xa184, 0x0800, 0x0040, 0x26ae, 0x0c7e, 0x027e, 0x2960, 0x6000,
+ 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d, 0x0010, 0x6106, 0x027f,
+ 0x0c7f, 0x1078, 0x3604, 0x00c0, 0x26ba, 0x69a0, 0xa184, 0x0200,
+ 0x0040, 0x26b6, 0x1078, 0x3540, 0x0078, 0x26ba, 0xa184, 0x0400,
+ 0x00c0, 0x2693, 0x69a0, 0xa184, 0x1000, 0x0040, 0x26c5, 0x6914,
+ 0xa18c, 0xff00, 0x810f, 0x1078, 0x22ee, 0x007f, 0x7002, 0xa68c,
+ 0x00e0, 0xa684, 0x0060, 0x0040, 0x26d3, 0xa086, 0x0060, 0x00c0,
+ 0x26d3, 0xa18d, 0x4000, 0x88ff, 0x0040, 0x26d8, 0xa18d, 0x0004,
+ 0x795a, 0x69b6, 0x789b, 0x0060, 0x2800, 0x78aa, 0x789b, 0x0061,
+ 0x6818, 0xa08d, 0x8000, 0xa084, 0x7fff, 0x691a, 0xa68c, 0x0080,
+ 0x0040, 0x26f7, 0x7097, 0x0000, 0xa08a, 0x000d, 0x0050, 0x26f5,
+ 0xa08a, 0x000c, 0x7196, 0x2001, 0x000c, 0x800c, 0x719a, 0x78aa,
+ 0x8008, 0x810c, 0x0040, 0x3407, 0xa18c, 0x00f8, 0x00c0, 0x3407,
+ 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000,
+ 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f,
+ 0x6814, 0x8007, 0x7882, 0x6d94, 0x7dd6, 0x7dde, 0x6e98, 0x7ed2,
+ 0x7eda, 0x1078, 0x38fa, 0x00c0, 0x272e, 0x702c, 0x8003, 0x0048,
+ 0x2727, 0x2019, 0x4d9e, 0x1078, 0x2276, 0x702f, 0x8000, 0x7830,
+ 0xa084, 0x00c0, 0x00c0, 0x272e, 0x0098, 0x2736, 0x6008, 0xa084,
+ 0xffef, 0x600a, 0x1078, 0x3912, 0x0078, 0x2482, 0x7200, 0xa284,
+ 0x0007, 0xa086, 0x0001, 0x00c0, 0x2743, 0x781b, 0x004f, 0x1078,
+ 0x3912, 0x0078, 0x2754, 0x6ab4, 0xa295, 0x2000, 0x7a5a, 0x781b,
+ 0x004f, 0x1078, 0x3912, 0x7200, 0x2500, 0xa605, 0x0040, 0x2754,
+ 0xa284, 0x0007, 0x1079, 0x2762, 0xad80, 0x0009, 0x7036, 0xa284,
+ 0x0007, 0xa086, 0x0001, 0x00c0, 0x2459, 0x6018, 0x8000, 0x601a,
+ 0x0078, 0x2459, 0x276a, 0x4a3a, 0x4a3a, 0x4a29, 0x4a3a, 0x276a,
+ 0x4a29, 0x276a, 0x1078, 0x23eb, 0x1078, 0x38fa, 0x0f7e, 0x2079,
+ 0x5100, 0x78cc, 0x0f7f, 0xa084, 0x0001, 0x0040, 0x2790, 0x706c,
+ 0xa086, 0x0001, 0x00c0, 0x277f, 0x706e, 0x0078, 0x2823, 0x706c,
+ 0xa086, 0x0005, 0x00c0, 0x278e, 0x7088, 0x2068, 0x681b, 0x0004,
+ 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, 0x6822, 0x706f, 0x0000,
+ 0x2011, 0x0004, 0x716c, 0xa186, 0x0001, 0x0040, 0x27b1, 0xa186,
+ 0x0007, 0x00c0, 0x27a1, 0x2009, 0x5138, 0x200b, 0x0005, 0x0078,
+ 0x27b1, 0x2009, 0x5113, 0x2104, 0x2009, 0x5112, 0x200a, 0x2009,
+ 0x5138, 0x200b, 0x0001, 0x706f, 0x0000, 0x7073, 0x0001, 0x0078,
+ 0x27b3, 0x706f, 0x0000, 0x1078, 0x4776, 0x157e, 0x20a9, 0x0010,
+ 0x2039, 0x0000, 0x1078, 0x36e2, 0xa7b8, 0x0100, 0x0070, 0x27c2,
+ 0x0078, 0x27ba, 0x157f, 0x7000, 0x0079, 0x27c6, 0x27f4, 0x27db,
+ 0x27db, 0x27ce, 0x27f4, 0x27f4, 0x27f4, 0x27f4, 0x2021, 0x515a,
+ 0x2404, 0xa005, 0x0040, 0x27f4, 0xad06, 0x00c0, 0x27db, 0x6800,
+ 0x2022, 0x0078, 0x27eb, 0x6820, 0xa084, 0x0001, 0x00c0, 0x27e7,
+ 0x6f14, 0x1078, 0x37ef, 0x1078, 0x33d8, 0x0078, 0x27eb, 0x7060,
+ 0x2060, 0x6800, 0x6002, 0x6a1a, 0x6817, 0x0000, 0x6820, 0xa085,
+ 0x0008, 0x6822, 0x1078, 0x1c70, 0x2021, 0x7500, 0x1078, 0x2830,
+ 0x2021, 0x515a, 0x1078, 0x2830, 0x157e, 0x20a9, 0x0000, 0x2021,
+ 0x7400, 0x1078, 0x2830, 0x8420, 0x0070, 0x2808, 0x0078, 0x2801,
+ 0x2061, 0x5400, 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018, 0x6110,
+ 0x81ff, 0x0040, 0x2817, 0xa102, 0x0050, 0x2817, 0x6012, 0x601b,
+ 0x0000, 0xace0, 0x0010, 0x0070, 0x281f, 0x0078, 0x280e, 0x8421,
+ 0x00c0, 0x280c, 0x157f, 0x709c, 0xa084, 0x8000, 0x0040, 0x282a,
+ 0x1078, 0x3a00, 0x7003, 0x0000, 0x704b, 0x0000, 0x0078, 0x2459,
+ 0x047e, 0x2404, 0xa005, 0x0040, 0x2844, 0x2068, 0x6800, 0x007e,
+ 0x6a1a, 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, 0x6822, 0x1078,
+ 0x1c70, 0x007f, 0x0078, 0x2832, 0x047f, 0x2023, 0x0000, 0x007c,
+ 0xa282, 0x0003, 0x0050, 0x284e, 0x1078, 0x23eb, 0x2300, 0x0079,
+ 0x2851, 0x2854, 0x28c7, 0x28e4, 0xa282, 0x0002, 0x0040, 0x285a,
+ 0x1078, 0x23eb, 0x706c, 0x706f, 0x0000, 0x7093, 0x0000, 0x0079,
+ 0x2861, 0x2869, 0x2869, 0x286b, 0x289f, 0x340d, 0x2869, 0x289f,
+ 0x2869, 0x1078, 0x23eb, 0x7780, 0x1078, 0x36e2, 0x7780, 0xa7bc,
+ 0x0f00, 0x1078, 0x37ef, 0x6018, 0xa005, 0x0040, 0x2896, 0x2021,
+ 0x7500, 0x2009, 0x0004, 0x2011, 0x0010, 0x1078, 0x28ff, 0x0040,
+ 0x2896, 0x157e, 0x20a9, 0x0000, 0x2021, 0x7400, 0x047e, 0x2009,
+ 0x0004, 0x2011, 0x0010, 0x1078, 0x28ff, 0x047f, 0x0040, 0x2895,
+ 0x8420, 0x0070, 0x2895, 0x0078, 0x2886, 0x157f, 0x8738, 0xa784,
+ 0x001f, 0x00c0, 0x2871, 0x0078, 0x2482, 0x0078, 0x2482, 0x7780,
+ 0x1078, 0x37ef, 0x6018, 0xa005, 0x0040, 0x28c5, 0x2021, 0x7500,
+ 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x28ff, 0x0040, 0x28c5,
+ 0x157e, 0x20a9, 0x0000, 0x2021, 0x7400, 0x047e, 0x2009, 0x0005,
+ 0x2011, 0x0020, 0x1078, 0x28ff, 0x047f, 0x0040, 0x28c4, 0x8420,
+ 0x0070, 0x28c4, 0x0078, 0x28b5, 0x157f, 0x0078, 0x2482, 0x2200,
+ 0x0079, 0x28ca, 0x28cd, 0x28cf, 0x28cf, 0x1078, 0x23eb, 0x2009,
+ 0x0012, 0x706c, 0xa086, 0x0002, 0x0040, 0x28d8, 0x2009, 0x000e,
+ 0x6818, 0xa084, 0x8000, 0x0040, 0x28de, 0x691a, 0x706f, 0x0000,
+ 0x7073, 0x0001, 0x0078, 0x3888, 0x2200, 0x0079, 0x28e7, 0x28ec,
+ 0x28cf, 0x28ea, 0x1078, 0x23eb, 0x1078, 0x4776, 0x7000, 0xa086,
+ 0x0001, 0x00c0, 0x339d, 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef,
+ 0x600a, 0x1078, 0x3390, 0x0040, 0x339d, 0x0078, 0x2594, 0x2404,
+ 0xa005, 0x0040, 0x2922, 0x2068, 0x2d04, 0x007e, 0x6814, 0xa706,
+ 0x0040, 0x290e, 0x2d20, 0x007f, 0x0078, 0x2900, 0x007f, 0x2022,
+ 0x691a, 0x6817, 0x0000, 0x6820, 0xa205, 0x6822, 0x1078, 0x1c70,
+ 0x6010, 0x8001, 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078,
+ 0x33ee, 0x007c, 0xa085, 0x0001, 0x0078, 0x2921, 0x2300, 0x0079,
+ 0x2929, 0x292e, 0x292c, 0x29c7, 0x1078, 0x23eb, 0x78ec, 0xa084,
+ 0x0001, 0x00c0, 0x2942, 0x7000, 0xa086, 0x0004, 0x00c0, 0x293a,
+ 0x0078, 0x2965, 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef, 0x600a,
+ 0x0078, 0x339d, 0x78e4, 0xa005, 0x00d0, 0x2965, 0x0018, 0x2459,
+ 0x2008, 0xa084, 0x0030, 0x00c0, 0x2951, 0x781b, 0x004f, 0x0078,
+ 0x2459, 0x78ec, 0xa084, 0x0003, 0x0040, 0x294d, 0x2100, 0xa084,
+ 0x0007, 0x0079, 0x295b, 0x299e, 0x29a9, 0x298f, 0x2963, 0x38ed,
+ 0x38ed, 0x2963, 0x29b8, 0x1078, 0x23eb, 0x7000, 0xa086, 0x0004,
+ 0x00c0, 0x297f, 0x706c, 0xa086, 0x0002, 0x00c0, 0x2975, 0x2011,
+ 0x0002, 0x2019, 0x0000, 0x0078, 0x2848, 0x706c, 0xa086, 0x0006,
+ 0x0040, 0x296f, 0x706c, 0xa086, 0x0004, 0x0040, 0x296f, 0x79e4,
+ 0xa184, 0x0030, 0x0040, 0x2989, 0x78ec, 0xa084, 0x0003, 0x00c0,
+ 0x298b, 0x0078, 0x2f6d, 0x2001, 0x0003, 0x0078, 0x2d01, 0x6818,
+ 0xa084, 0x8000, 0x0040, 0x2996, 0x681b, 0x001d, 0x1078, 0x36c1,
+ 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x29a5, 0x681b, 0x001d, 0x1078, 0x36c1, 0x0078,
+ 0x38b8, 0x6818, 0xa084, 0x8000, 0x0040, 0x29b0, 0x681b, 0x001d,
+ 0x1078, 0x36c1, 0x782b, 0x3008, 0x781b, 0x00cd, 0x0078, 0x2459,
+ 0x6818, 0xa084, 0x8000, 0x0040, 0x29bf, 0x681b, 0x001d, 0x1078,
+ 0x36c1, 0x782b, 0x3008, 0x781b, 0x008e, 0x0078, 0x2459, 0xa584,
+ 0x000f, 0x00c0, 0x29e4, 0x7000, 0x0079, 0x29ce, 0x2482, 0x29d8,
+ 0x29d6, 0x339d, 0x339d, 0x339d, 0x339d, 0x29d6, 0x1078, 0x23eb,
+ 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x3390,
+ 0x0040, 0x339d, 0x0078, 0x2594, 0x78e4, 0xa005, 0x00d0, 0x2965,
+ 0x0018, 0x2965, 0x2008, 0xa084, 0x0030, 0x00c0, 0x29f3, 0x781b,
+ 0x004f, 0x0078, 0x2459, 0x78ec, 0xa084, 0x0003, 0x0040, 0x29ef,
+ 0x2100, 0xa184, 0x0007, 0x0079, 0x29fd, 0x2a0f, 0x2a13, 0x2a07,
+ 0x2a05, 0x38ed, 0x38ed, 0x2a05, 0x38e3, 0x1078, 0x23eb, 0x1078,
+ 0x36c9, 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x1078,
+ 0x36c9, 0x0078, 0x38b8, 0x1078, 0x36c9, 0x782b, 0x3008, 0x781b,
+ 0x00cd, 0x0078, 0x2459, 0x1078, 0x36c9, 0x782b, 0x3008, 0x781b,
+ 0x008e, 0x0078, 0x2459, 0x2300, 0x0079, 0x2a26, 0x2a2b, 0x2a29,
+ 0x2a2d, 0x1078, 0x23eb, 0x0078, 0x30ab, 0x681b, 0x0008, 0x78a3,
+ 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x30ab, 0x78ec, 0xa084,
+ 0x0003, 0x0040, 0x30ab, 0xa184, 0x0007, 0x0079, 0x2a3f, 0x2a47,
+ 0x2a13, 0x298f, 0x3888, 0x38ed, 0x38ed, 0x2a47, 0x38e3, 0x1078,
+ 0x389c, 0x0078, 0x2459, 0xa282, 0x0005, 0x0050, 0x2a51, 0x1078,
+ 0x23eb, 0x2300, 0x0079, 0x2a54, 0x2a57, 0x2cae, 0x2cbc, 0x2200,
+ 0x0079, 0x2a5a, 0x2a74, 0x2a61, 0x2a74, 0x2a5f, 0x2c93, 0x1078,
+ 0x23eb, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa082, 0x0020,
+ 0x0048, 0x369d, 0xa08a, 0x0004, 0x00c8, 0x369d, 0x0079, 0x2a70,
+ 0x369d, 0x369d, 0x369d, 0x364b, 0x789b, 0x0018, 0x79a8, 0xa184,
+ 0x0080, 0x0040, 0x2a85, 0x0078, 0x369d, 0x7000, 0xa005, 0x00c0,
+ 0x2a7b, 0x2011, 0x0004, 0x0078, 0x321f, 0xa184, 0x00ff, 0xa08a,
+ 0x0010, 0x00c8, 0x369d, 0x0079, 0x2a8d, 0x2a9f, 0x2a9d, 0x2ab7,
+ 0x2abb, 0x2b78, 0x369d, 0x369d, 0x2b7a, 0x369d, 0x369d, 0x2c8f,
+ 0x2c8f, 0x369d, 0x369d, 0x369d, 0x2c91, 0x1078, 0x23eb, 0xa684,
+ 0x1000, 0x0040, 0x2aac, 0x2001, 0x0500, 0x8000, 0x8000, 0x783a,
+ 0x781b, 0x008c, 0x0078, 0x2459, 0x6818, 0xa084, 0x8000, 0x0040,
+ 0x2ab5, 0x681b, 0x001d, 0x0078, 0x2aa3, 0x0078, 0x3888, 0x681b,
+ 0x001d, 0x0078, 0x36ad, 0x6920, 0x6922, 0xa684, 0x1800, 0x00c0,
+ 0x2afc, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2b04, 0x6818, 0xa086,
+ 0x0008, 0x00c0, 0x2acd, 0x681b, 0x0000, 0xa684, 0x0400, 0x0040,
+ 0x2b74, 0xa684, 0x0080, 0x0040, 0x2af8, 0x7097, 0x0000, 0x6818,
+ 0xa084, 0x003f, 0xa08a, 0x000d, 0x0050, 0x2af8, 0xa08a, 0x000c,
+ 0x7196, 0x2001, 0x000c, 0x800c, 0x719a, 0x789b, 0x0061, 0x78aa,
+ 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000,
+ 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f,
+ 0x781b, 0x0058, 0x0078, 0x2459, 0xa684, 0x1000, 0x0040, 0x2b04,
+ 0x781b, 0x0065, 0x0078, 0x2459, 0xa684, 0x0060, 0x0040, 0x2b70,
+ 0xa684, 0x0800, 0x0040, 0x2b70, 0xa684, 0x8000, 0x00c0, 0x2b12,
+ 0x0078, 0x2b2c, 0xa6b4, 0x7fff, 0x7e5a, 0x6eb6, 0x789b, 0x0076,
+ 0x7aac, 0x79ac, 0x78ac, 0x801b, 0x00c8, 0x2b1f, 0x8000, 0xa084,
+ 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2,
+ 0x6b94, 0x2200, 0xa303, 0x68ae, 0xa684, 0x4000, 0x0040, 0x2b34,
+ 0xa6b4, 0xbfff, 0x7e5a, 0x6eb6, 0x7000, 0xa086, 0x0003, 0x00c0,
+ 0x2b41, 0x1078, 0x482c, 0x1078, 0x4a29, 0x781b, 0x0064, 0x0078,
+ 0x2459, 0xa006, 0x1078, 0x4b30, 0x6ab0, 0x69ac, 0x6c98, 0x6b94,
+ 0x2200, 0xa105, 0x0040, 0x2b50, 0x2200, 0xa422, 0x2100, 0xa31b,
+ 0x6caa, 0x7cd2, 0x7cda, 0x6ba6, 0x7bd6, 0x7bde, 0x2300, 0xa405,
+ 0x00c0, 0x2b62, 0xa6b5, 0x4000, 0x7e5a, 0x6eb6, 0x781b, 0x0064,
+ 0x0078, 0x2459, 0x781b, 0x0064, 0x2200, 0xa115, 0x00c0, 0x2b6c,
+ 0x1078, 0x4a3a, 0x0078, 0x2459, 0x1078, 0x4a85, 0x0078, 0x2459,
+ 0x781b, 0x0065, 0x0078, 0x2459, 0x781b, 0x0058, 0x0078, 0x2459,
+ 0x1078, 0x23eb, 0x0078, 0x2bdb, 0x6920, 0xa184, 0x0100, 0x0040,
+ 0x2b92, 0xa18c, 0xfeff, 0x6922, 0x0c7e, 0x7054, 0x2060, 0x6000,
+ 0xa084, 0xefff, 0x6002, 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f,
+ 0x0078, 0x2bca, 0xa184, 0x0200, 0x0040, 0x2bca, 0xa18c, 0xfdff,
+ 0x6922, 0x0c7e, 0x7054, 0x2060, 0x6000, 0xa084, 0xdfff, 0x6002,
+ 0x6004, 0xa084, 0xffef, 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xa184,
+ 0x0008, 0x0040, 0x2bca, 0x1078, 0x37eb, 0x1078, 0x34f1, 0x88ff,
+ 0x0040, 0x2bca, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5,
+ 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x2bc4, 0x782b, 0x3008,
+ 0x781b, 0x0056, 0x0078, 0x2459, 0x782b, 0x3008, 0x781b, 0x0065,
+ 0x0078, 0x2459, 0x7e58, 0xa684, 0x0400, 0x00c0, 0x2bd3, 0x781b,
+ 0x0058, 0x0078, 0x2459, 0x781b, 0x0065, 0x0078, 0x2459, 0x0078,
+ 0x36a5, 0x0078, 0x36a5, 0x2019, 0x0000, 0x7990, 0xa18c, 0x0007,
+ 0x00c0, 0x2be9, 0x6820, 0xa084, 0x0100, 0x0040, 0x2bd9, 0x2009,
+ 0x0008, 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001,
+ 0x00c0, 0x2c20, 0x2300, 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040,
+ 0x2c18, 0x0048, 0x2bfd, 0x0078, 0x2c1a, 0xa380, 0x0002, 0xa102,
+ 0x00c8, 0x2c18, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0c7e, 0x7054,
+ 0x2060, 0x6000, 0xa084, 0xefef, 0x6002, 0x6004, 0xa084, 0xffe5,
+ 0x6006, 0x0c7f, 0x7e58, 0xa6b4, 0xfffb, 0x7e5a, 0x0078, 0x2bcb,
+ 0x0078, 0x2b7c, 0x24a8, 0x7aa8, 0x00f0, 0x2c1a, 0x0078, 0x2beb,
+ 0xa284, 0x00f0, 0xa086, 0x0020, 0x00c0, 0x2c80, 0x8318, 0x8318,
+ 0x2300, 0xa102, 0x0040, 0x2c30, 0x0048, 0x2c30, 0x0078, 0x2c7d,
+ 0xa286, 0x0023, 0x0040, 0x2bd9, 0x681c, 0xa084, 0xfff1, 0x681e,
+ 0x7e58, 0xa684, 0xfff1, 0xa085, 0x0010, 0x2030, 0x7e5a, 0x6008,
+ 0xa085, 0x0010, 0x600a, 0x0c7e, 0x7054, 0x2060, 0x6004, 0x2008,
+ 0x2c48, 0x0c7f, 0xa184, 0x0010, 0x0040, 0x2c54, 0x1078, 0x37eb,
+ 0x1078, 0x3604, 0x0078, 0x2c63, 0x0c7e, 0x7054, 0x2060, 0x6004,
+ 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0008, 0x0040, 0x2bca, 0x1078,
+ 0x37eb, 0x1078, 0x34f1, 0x88ff, 0x0040, 0x2bca, 0x789b, 0x0060,
+ 0x2800, 0x78aa, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0,
+ 0x2c77, 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x782b,
+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x7aa8, 0x0078, 0x2beb,
+ 0x8318, 0x2300, 0xa102, 0x0040, 0x2c89, 0x0048, 0x2c89, 0x0078,
+ 0x2beb, 0xa284, 0x0080, 0x00c0, 0x36ad, 0x0078, 0x36a5, 0x0078,
+ 0x36ad, 0x0078, 0x369d, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff,
+ 0xa08e, 0x0001, 0x0040, 0x2c9e, 0x1078, 0x23eb, 0x7aa8, 0xa294,
+ 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x369d,
+ 0x0079, 0x2caa, 0x369d, 0x343e, 0x369d, 0x3599, 0xa282, 0x0000,
+ 0x00c0, 0x2cb4, 0x1078, 0x23eb, 0x1078, 0x36c1, 0x782b, 0x3008,
+ 0x781b, 0x0065, 0x0078, 0x2459, 0xa282, 0x0003, 0x00c0, 0x2cc2,
+ 0x1078, 0x23eb, 0xa484, 0x8000, 0x00c0, 0x2ce5, 0x706c, 0xa005,
+ 0x0040, 0x2ccc, 0x1078, 0x23eb, 0x6f14, 0x7782, 0xa7bc, 0x0f00,
+ 0x1078, 0x37ef, 0x6008, 0xa085, 0x0021, 0x600a, 0x8738, 0xa784,
+ 0x001f, 0x00c0, 0x2cd0, 0x1078, 0x36c5, 0x706f, 0x0002, 0x2009,
+ 0x5138, 0x200b, 0x0009, 0x0078, 0x2ce7, 0x1078, 0x36d1, 0x782b,
+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0xa282, 0x0004, 0x0050,
+ 0x2cf3, 0x1078, 0x23eb, 0x2300, 0x0079, 0x2cf6, 0x2cf9, 0x2de2,
+ 0x2e15, 0xa286, 0x0003, 0x0040, 0x2cff, 0x1078, 0x23eb, 0x2001,
+ 0x0000, 0x007e, 0x68c0, 0xa005, 0x0040, 0x2d08, 0x7003, 0x0003,
+ 0x68a0, 0xa084, 0x2000, 0x0040, 0x2d11, 0x6008, 0xa085, 0x0002,
+ 0x600a, 0x007f, 0x703e, 0x7000, 0xa084, 0x0007, 0x0079, 0x2d18,
+ 0x2482, 0x2d22, 0x2d22, 0x2f17, 0x2f53, 0x2482, 0x2f53, 0x2d20,
+ 0x1078, 0x23eb, 0xa684, 0x1000, 0x00c0, 0x2d2a, 0x1078, 0x4776,
+ 0x0040, 0x2dbc, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x2d72, 0xa186,
+ 0x0008, 0x00c0, 0x2d41, 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef,
+ 0x600a, 0x1078, 0x3390, 0x0040, 0x2d72, 0x1078, 0x4776, 0x0078,
+ 0x2d59, 0xa186, 0x0028, 0x00c0, 0x2d72, 0x1078, 0x4776, 0x6008,
+ 0xa084, 0xffef, 0x600a, 0x6018, 0xa005, 0x0040, 0x2d59, 0x8001,
+ 0x601a, 0xa005, 0x0040, 0x2d59, 0x8001, 0xa005, 0x0040, 0x2d59,
+ 0x601e, 0x6820, 0xa084, 0x0001, 0x0040, 0x2482, 0x6820, 0xa084,
+ 0xfffe, 0x6822, 0x7060, 0x0c7e, 0x2060, 0x6800, 0x6002, 0x0c7f,
+ 0x6004, 0x6802, 0xa005, 0x2d00, 0x00c0, 0x2d6f, 0x6002, 0x6006,
+ 0x0078, 0x2482, 0x017e, 0x1078, 0x2e46, 0x017f, 0xa684, 0xdf00,
+ 0x681e, 0x682b, 0x0000, 0x6f14, 0x81ff, 0x0040, 0x2dbc, 0xa186,
+ 0x0002, 0x00c0, 0x2dbc, 0xa684, 0x0800, 0x00c0, 0x2d8f, 0xa684,
+ 0x0060, 0x0040, 0x2d8f, 0x78d8, 0x7adc, 0x682e, 0x6a32, 0x6820,
+ 0xa084, 0x0800, 0x00c0, 0x2dbc, 0x8717, 0xa294, 0x000f, 0x8213,
+ 0x8213, 0x8213, 0xa290, 0x5380, 0xa290, 0x0000, 0x221c, 0xa384,
+ 0x0100, 0x00c0, 0x2da5, 0x0078, 0x2dab, 0x8210, 0x2204, 0xa085,
+ 0x0018, 0x2012, 0x8211, 0xa384, 0x0400, 0x0040, 0x2db8, 0x68a0,
+ 0xa084, 0x0100, 0x00c0, 0x2db8, 0x1078, 0x2eca, 0x0078, 0x2482,
+ 0x6008, 0xa085, 0x0002, 0x600a, 0x6916, 0x6818, 0xa084, 0x8000,
+ 0x0040, 0x2dc4, 0x703c, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x1078,
+ 0x33df, 0x1078, 0x33ee, 0x00c0, 0x2dd1, 0x6008, 0xa084, 0xffef,
+ 0x600a, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2dda, 0x1078, 0x33d8,
+ 0x0078, 0x2dde, 0x7060, 0x2060, 0x6800, 0x6002, 0x1078, 0x1c70,
+ 0x0078, 0x2482, 0xa282, 0x0004, 0x0048, 0x2de8, 0x1078, 0x23eb,
+ 0x2200, 0x0079, 0x2deb, 0x2de6, 0x2def, 0x2dfc, 0x2def, 0x7000,
+ 0xa086, 0x0005, 0x0040, 0x2df8, 0x1078, 0x36c1, 0x782b, 0x3008,
+ 0x781b, 0x0065, 0x0078, 0x2459, 0x7890, 0x8007, 0x8001, 0xa084,
+ 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa186,
+ 0x0003, 0x0040, 0x2e11, 0xa186, 0x0000, 0x0040, 0x2e11, 0x0078,
+ 0x369d, 0x781b, 0x0065, 0x0078, 0x2459, 0x6820, 0xa085, 0x0004,
+ 0x6822, 0x82ff, 0x00c0, 0x2e20, 0x1078, 0x36c1, 0x0078, 0x2e27,
+ 0x8211, 0x0040, 0x2e25, 0x1078, 0x23eb, 0x1078, 0x36d1, 0x782b,
+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x702c, 0x8003, 0x0048,
+ 0x2e37, 0x2019, 0x4d9e, 0x1078, 0x2276, 0x702f, 0x8000, 0x1078,
+ 0x3912, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x2e43, 0x0018, 0x2e43,
+ 0x791a, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, 0xa684, 0x0060,
+ 0x00c0, 0x2e50, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x2ec9,
+ 0xa684, 0x0800, 0x00c0, 0x2e72, 0x68b4, 0xa084, 0x4800, 0xa635,
+ 0xa684, 0x0800, 0x00c0, 0x2e72, 0x6998, 0x6a94, 0x692e, 0x6a32,
+ 0x703c, 0xa005, 0x00c0, 0x2e6a, 0x2200, 0xa105, 0x0040, 0x2e71,
+ 0x703f, 0x0015, 0x7000, 0xa086, 0x0006, 0x0040, 0x2e71, 0x1078,
+ 0x4776, 0x007c, 0xa684, 0x0020, 0x0040, 0x2e94, 0xa684, 0x4000,
+ 0x0040, 0x2e80, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x2e6a,
+ 0x68b4, 0xa084, 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, 0x2e7a,
+ 0x703c, 0xa005, 0x00c0, 0x2e8e, 0x703f, 0x0015, 0x79d8, 0x7adc,
+ 0x692e, 0x6a32, 0x0078, 0x2e6a, 0xa684, 0x4000, 0x0040, 0x2e9e,
+ 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x2e6a, 0x68b4, 0xa084,
+ 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, 0x2e98, 0x703c, 0xa005,
+ 0x00c0, 0x2eac, 0x703f, 0x0015, 0x79d8, 0x7adc, 0x78d0, 0x80fb,
+ 0x00c8, 0x2eb3, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000,
+ 0x692e, 0x6a32, 0x2100, 0xa205, 0x00c0, 0x2ec0, 0x0078, 0x2e6a,
+ 0x7000, 0xa086, 0x0006, 0x0040, 0x2ec9, 0x1078, 0x4b30, 0x0078,
+ 0x2e6a, 0x007c, 0x6008, 0xa085, 0x0200, 0x600a, 0xa384, 0x0200,
+ 0x0040, 0x2ed6, 0x6008, 0xa085, 0x0002, 0x600a, 0x681b, 0x0006,
+ 0x688f, 0x0000, 0x6893, 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942,
+ 0x682f, 0x0003, 0x6833, 0x0000, 0x6837, 0x0020, 0x6897, 0x0000,
+ 0x689b, 0x0020, 0x68b3, 0x0000, 0x68af, 0x0000, 0x7000, 0x0079,
+ 0x2ef1, 0x2482, 0x2efb, 0x2f04, 0x2ef9, 0x2ef9, 0x2ef9, 0x2ef9,
+ 0x2ef9, 0x1078, 0x23eb, 0x6820, 0xa084, 0x0001, 0x00c0, 0x2f04,
+ 0x1078, 0x33d8, 0x0078, 0x2f0a, 0x7060, 0x2c50, 0x2060, 0x6800,
+ 0x6002, 0x2a60, 0x2021, 0x515a, 0x2404, 0xa005, 0x0040, 0x2f13,
+ 0x2020, 0x0078, 0x2f0c, 0x2d22, 0x206b, 0x0000, 0x007c, 0x1078,
+ 0x33df, 0x1078, 0x33ee, 0x6008, 0xa084, 0xfdff, 0x600a, 0x682b,
+ 0x0000, 0x789b, 0x000e, 0x6f14, 0x6817, 0x0002, 0x1078, 0x4b78,
+ 0xa684, 0x0800, 0x0040, 0x2f30, 0x691c, 0xa18d, 0x2000, 0x691e,
+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2f40, 0x7868, 0xa08c, 0x00ff,
+ 0x0040, 0x2f3e, 0x681b, 0x001e, 0x0078, 0x2f40, 0x681b, 0x0000,
+ 0x2021, 0x515a, 0x2404, 0xad06, 0x0040, 0x2f47, 0x7460, 0x6800,
+ 0x2022, 0x68c3, 0x0000, 0x6a3c, 0x6940, 0x6a32, 0x692e, 0x1078,
+ 0x1c70, 0x0078, 0x2482, 0x1078, 0x2e46, 0x682b, 0x0000, 0x2001,
+ 0x000e, 0x6f14, 0x1078, 0x3918, 0xa08c, 0x00ff, 0x6916, 0x6818,
+ 0xa084, 0x8000, 0x0040, 0x2f66, 0x703c, 0x681a, 0xa68c, 0xdf00,
+ 0x691e, 0x706f, 0x0000, 0x0078, 0x2482, 0x7000, 0xa005, 0x00c0,
+ 0x2f73, 0x0078, 0x2482, 0xa006, 0x1078, 0x4776, 0x6817, 0x0000,
+ 0x681b, 0x0014, 0xa68c, 0xdf00, 0x691e, 0x682b, 0x0000, 0x6820,
+ 0xa085, 0x00ff, 0x6822, 0x7000, 0x0079, 0x2f86, 0x2482, 0x2f90,
+ 0x2f90, 0x2f92, 0x2f92, 0x2f92, 0x2f92, 0x2f8e, 0x1078, 0x23eb,
+ 0x1078, 0x33ee, 0x6008, 0xa084, 0xffef, 0x600a, 0x0078, 0x33a8,
+ 0x2300, 0x0079, 0x2f9b, 0x2f9e, 0x2fa0, 0x2fd9, 0x1078, 0x23eb,
+ 0x7000, 0x0079, 0x2fa3, 0x2482, 0x2fad, 0x2fad, 0x2fc8, 0x2fad,
+ 0x2fd5, 0x2fc8, 0x2fab, 0x1078, 0x23eb, 0xa684, 0x0060, 0xa086,
+ 0x0060, 0x00c0, 0x2fc4, 0xa6b4, 0xffdf, 0xa6b4, 0xbfff, 0xa6b5,
+ 0x2000, 0x7e5a, 0x681c, 0xa084, 0xffdf, 0x681e, 0x1078, 0x4776,
+ 0x1078, 0x4a3a, 0x0078, 0x3888, 0xa684, 0x2000, 0x0040, 0x2fb7,
+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2fd5, 0x681b, 0x0015, 0xa684,
+ 0x4000, 0x0040, 0x2fd5, 0x681b, 0x0007, 0x1078, 0x389c, 0x0078,
+ 0x2459, 0x1078, 0x23eb, 0x2300, 0x0079, 0x2fde, 0x2fe1, 0x2fe3,
+ 0x3016, 0x1078, 0x23eb, 0x7000, 0x0079, 0x2fe6, 0x2482, 0x2ff0,
+ 0x2ff0, 0x300b, 0x2ff0, 0x3012, 0x300b, 0x2fee, 0x1078, 0x23eb,
+ 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, 0x3007, 0xa6b4, 0xffbf,
+ 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a, 0x681c, 0xa084, 0xffbf,
+ 0x681e, 0x1078, 0x4776, 0x1078, 0x4a3a, 0x0078, 0x3888, 0xa684,
+ 0x2000, 0x0040, 0x2ffa, 0x6818, 0xa084, 0x8000, 0x0040, 0x3012,
+ 0x681b, 0x0007, 0x781b, 0x00cd, 0x0078, 0x2459, 0x6820, 0xa085,
+ 0x0004, 0x6822, 0x1078, 0x3853, 0xa6b5, 0x0800, 0x1078, 0x36c1,
+ 0x782b, 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x2300, 0x0079,
+ 0x3029, 0x302c, 0x302e, 0x3030, 0x1078, 0x23eb, 0x0078, 0x36ad,
+ 0xa684, 0x0400, 0x00c0, 0x3059, 0x79e4, 0xa184, 0x0020, 0x0040,
+ 0x3040, 0x78ec, 0xa084, 0x0003, 0x0040, 0x3040, 0x782b, 0x3009,
+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x79e4,
+ 0xa184, 0x0020, 0x0040, 0x3051, 0x78ec, 0xa084, 0x0003, 0x00c0,
+ 0x3055, 0x2001, 0x0014, 0x0078, 0x2d01, 0xa184, 0x0007, 0x0079,
+ 0x3091, 0x7a90, 0xa294, 0x0007, 0x789b, 0x0060, 0x79a8, 0x81ff,
+ 0x0040, 0x308f, 0x789b, 0x0010, 0x7ba8, 0xa384, 0x0001, 0x00c0,
+ 0x3080, 0x7ba8, 0x7ba8, 0xa386, 0x0001, 0x00c0, 0x3073, 0x2009,
+ 0xfff7, 0x0078, 0x3079, 0xa386, 0x0003, 0x00c0, 0x3080, 0x2009,
+ 0xffef, 0x0c7e, 0x7054, 0x2060, 0x6004, 0xa104, 0x6006, 0x0c7f,
+ 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b,
+ 0x3009, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff, 0x6922, 0x0078,
+ 0x3888, 0x299e, 0x29a9, 0x309b, 0x30a3, 0x3099, 0x3099, 0x3888,
+ 0x3888, 0x1078, 0x23eb, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff,
+ 0x6922, 0x0078, 0x3892, 0x6920, 0xa18c, 0xfdff, 0xa18c, 0xfeff,
+ 0x6922, 0x0078, 0x3888, 0x79e4, 0xa184, 0x0030, 0x0040, 0x30b5,
+ 0x78ec, 0xa084, 0x0003, 0x00c0, 0x30dc, 0x7000, 0xa086, 0x0004,
+ 0x00c0, 0x30cf, 0x706c, 0xa086, 0x0002, 0x00c0, 0x30c5, 0x2011,
+ 0x0002, 0x2019, 0x0000, 0x0078, 0x2848, 0x706c, 0xa086, 0x0006,
+ 0x0040, 0x30bf, 0x706c, 0xa086, 0x0004, 0x0040, 0x30bf, 0x7000,
+ 0xa086, 0x0000, 0x0040, 0x2459, 0x6818, 0xa085, 0x8000, 0x681a,
+ 0x2001, 0x0014, 0x0078, 0x2d01, 0xa184, 0x0007, 0x0079, 0x30e0,
+ 0x3888, 0x3888, 0x30e8, 0x3888, 0x38ed, 0x38ed, 0x3888, 0x3888,
+ 0xa684, 0x0080, 0x0040, 0x3117, 0x7194, 0x81ff, 0x0040, 0x3117,
+ 0xa182, 0x000d, 0x00d0, 0x30f8, 0x7097, 0x0000, 0x0078, 0x30fd,
+ 0xa182, 0x000c, 0x7096, 0x2009, 0x000c, 0x789b, 0x0061, 0x79aa,
+ 0x157e, 0x137e, 0x147e, 0x7098, 0x8114, 0xa210, 0x729a, 0xa080,
+ 0x000b, 0xad00, 0x2098, 0x20a1, 0x012b, 0x789b, 0x0000, 0x8108,
+ 0x81ac, 0x53a6, 0x147f, 0x137f, 0x157f, 0x0078, 0x3892, 0xa684,
+ 0x0400, 0x00c0, 0x3158, 0x6820, 0xa084, 0x0001, 0x0040, 0x3892,
+ 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040, 0x312c, 0xa086, 0x0060,
+ 0x00c0, 0x312c, 0xa18d, 0x4000, 0xa18c, 0xfffb, 0x795a, 0x69b6,
+ 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b, 0x0061, 0x6818, 0xa085,
+ 0x8000, 0x681a, 0x78aa, 0x8008, 0x810c, 0x0040, 0x3407, 0xa18c,
+ 0x00f8, 0x00c0, 0x3407, 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b,
+ 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6,
+ 0x147f, 0x137f, 0x157f, 0x6814, 0x8007, 0x7882, 0x0078, 0x3892,
+ 0x6818, 0xa084, 0x8000, 0x0040, 0x315f, 0x681b, 0x0008, 0x781b,
+ 0x00c3, 0x0078, 0x2459, 0x2300, 0x0079, 0x3166, 0x316b, 0x320a,
+ 0x3169, 0x1078, 0x23eb, 0x7000, 0xa084, 0x0007, 0x0079, 0x3170,
+ 0x2482, 0x317a, 0x31af, 0x3185, 0x3178, 0x2482, 0x3178, 0x3178,
+ 0x1078, 0x23eb, 0x681c, 0xa084, 0x2000, 0x0040, 0x3193, 0x6008,
+ 0xa085, 0x0002, 0x600a, 0x0078, 0x3193, 0x68c0, 0xa005, 0x00c0,
+ 0x31af, 0x6920, 0xa18d, 0x0001, 0x6922, 0x68c3, 0x0001, 0x6800,
+ 0x706a, 0x0078, 0x31a9, 0x6920, 0xa18d, 0x0001, 0x6922, 0x6800,
+ 0x6006, 0xa005, 0x00c0, 0x319d, 0x6002, 0x681c, 0xa084, 0x000e,
+ 0x0040, 0x31a9, 0x7014, 0x68ba, 0x7130, 0xa188, 0x7400, 0x0078,
+ 0x31ab, 0x2009, 0x7500, 0x2104, 0x6802, 0x2d0a, 0x7162, 0x6eb6,
+ 0xa684, 0x0060, 0x0040, 0x3208, 0xa684, 0x0800, 0x00c0, 0x31c3,
+ 0xa684, 0x7fff, 0x68b6, 0x6894, 0x68a6, 0x6898, 0x68aa, 0x1078,
+ 0x4776, 0x0078, 0x3208, 0xa684, 0x0020, 0x0040, 0x31d8, 0x68c0,
+ 0xa005, 0x0040, 0x31cf, 0x1078, 0x4b78, 0x0078, 0x31d2, 0xa006,
+ 0x1078, 0x4b30, 0x79d8, 0x7adc, 0x69aa, 0x6aa6, 0x0078, 0x31de,
+ 0x1078, 0x37fc, 0x69aa, 0x6aa6, 0x1078, 0x4b30, 0xa684, 0x8000,
+ 0x0040, 0x3208, 0xa684, 0x7fff, 0x68b6, 0x2001, 0x0076, 0x1078,
+ 0x3918, 0x2010, 0x2001, 0x0078, 0x1078, 0x3918, 0x2008, 0xa684,
+ 0x0020, 0x00c0, 0x3200, 0x2001, 0x007a, 0x1078, 0x3918, 0x801b,
+ 0x00c8, 0x31fb, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000,
+ 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae,
+ 0x0078, 0x2482, 0x0078, 0x36ad, 0x7037, 0x0000, 0xa282, 0x0006,
+ 0x0050, 0x3214, 0x1078, 0x23eb, 0x7000, 0xa084, 0x0007, 0x10c0,
+ 0x39be, 0x2300, 0x0079, 0x321c, 0x321f, 0x3248, 0x325c, 0x2200,
+ 0x0079, 0x3222, 0x3246, 0x36ad, 0x3228, 0x3246, 0x3278, 0x32ba,
+ 0x7003, 0x0005, 0x2001, 0x7610, 0x2068, 0x704a, 0x157e, 0x20a9,
+ 0x0031, 0x2003, 0x0000, 0x8000, 0x0070, 0x3238, 0x0078, 0x3231,
+ 0x157f, 0xad80, 0x0009, 0x7036, 0x6817, 0x0000, 0x68b7, 0x0700,
+ 0x6823, 0x0800, 0x6827, 0x0003, 0x0078, 0x369d, 0x1078, 0x23eb,
+ 0x7003, 0x0005, 0x2001, 0x7610, 0x2068, 0x704a, 0xad80, 0x0009,
+ 0x7036, 0x2200, 0x0079, 0x3254, 0x36ad, 0x325a, 0x325a, 0x3278,
+ 0x325a, 0x36ad, 0x1078, 0x23eb, 0x7003, 0x0005, 0x2001, 0x7610,
+ 0x2068, 0x704a, 0xad80, 0x0009, 0x7036, 0x2200, 0x0079, 0x3268,
+ 0x3270, 0x326e, 0x326e, 0x3270, 0x326e, 0x3270, 0x1078, 0x23eb,
+ 0x1078, 0x36d1, 0x782b, 0x3008, 0x781b, 0x0065, 0x0078, 0x2459,
+ 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8,
+ 0xa484, 0x001f, 0xa215, 0x2069, 0x7500, 0x2d04, 0x2d08, 0x7162,
+ 0x2068, 0xa005, 0x0040, 0x3293, 0x6814, 0xa206, 0x0040, 0x32af,
+ 0x6800, 0x0078, 0x3286, 0x7003, 0x0005, 0x2001, 0x7610, 0x2068,
+ 0x704a, 0x7036, 0x157e, 0x20a9, 0x0031, 0x2003, 0x0000, 0x8000,
+ 0x0070, 0x32a4, 0x0078, 0x329d, 0x157f, 0xad80, 0x0009, 0x7036,
+ 0x6a16, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4,
+ 0x7e5a, 0x6820, 0xa084, 0x0c00, 0x0040, 0x3309, 0x1078, 0x36c9,
+ 0x0078, 0x3309, 0x7003, 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b,
+ 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0x79a8, 0x79a8, 0xa18c,
+ 0x00ff, 0xa1e8, 0x7400, 0x2d04, 0x2d08, 0x7162, 0x2068, 0xa005,
+ 0x0040, 0x32d9, 0x6814, 0xa206, 0x0040, 0x32f4, 0x6800, 0x0078,
+ 0x32cc, 0x7003, 0x0005, 0x2001, 0x7610, 0x2068, 0x704a, 0x157e,
+ 0x20a9, 0x0031, 0x2003, 0x0000, 0x8000, 0x0070, 0x32e9, 0x0078,
+ 0x32e2, 0x157f, 0xad80, 0x0009, 0x7036, 0x6a16, 0x68b7, 0x0700,
+ 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6820, 0xa084,
+ 0x0c00, 0x0040, 0x3309, 0xa084, 0x0800, 0x0040, 0x3303, 0x1078,
+ 0x36cd, 0x0078, 0x3309, 0x1078, 0x36c9, 0x708b, 0x0000, 0x0078,
+ 0x3309, 0x027e, 0x8207, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003,
+ 0xa080, 0x5380, 0x2060, 0x7056, 0x6000, 0x705a, 0x6004, 0x705e,
+ 0xa684, 0x0060, 0x0040, 0x3361, 0x6b98, 0x6c94, 0x69ac, 0x68b0,
+ 0xa105, 0x00c0, 0x3343, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa6b4,
+ 0xb7ff, 0x7e5a, 0xa684, 0x0060, 0xa086, 0x0060, 0x0040, 0x3361,
+ 0x68c0, 0xa005, 0x0040, 0x333c, 0x7003, 0x0003, 0x682b, 0x0000,
+ 0x1078, 0x4a29, 0x0078, 0x333e, 0x1078, 0x4a3a, 0xa6b5, 0x2000,
+ 0x7e5a, 0x0078, 0x3361, 0x68b0, 0xa31a, 0x2100, 0xa423, 0x2400,
+ 0xa305, 0x0040, 0x3361, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0x68b0,
+ 0xa6b4, 0xbfff, 0x7e5a, 0x007e, 0x68c0, 0xa005, 0x007f, 0x0040,
+ 0x335f, 0x7003, 0x0003, 0x1078, 0x4a29, 0x0078, 0x3361, 0x1078,
+ 0x4a85, 0x077f, 0x1078, 0x37ef, 0x2009, 0x0065, 0xa684, 0x0004,
+ 0x0040, 0x3382, 0x78e4, 0xa084, 0x0030, 0x0040, 0x337a, 0x78ec,
+ 0xa084, 0x0003, 0x0040, 0x337a, 0x782b, 0x3008, 0x2009, 0x0065,
+ 0x0078, 0x3382, 0x0f7e, 0x2079, 0x5100, 0x1078, 0x4776, 0x0f7f,
+ 0x0040, 0x2482, 0x791a, 0x2d00, 0x704a, 0x8207, 0xa084, 0x000f,
+ 0x8003, 0x8003, 0x8003, 0xa080, 0x5380, 0x2048, 0x0078, 0x2459,
+ 0x6020, 0xa005, 0x0040, 0x339c, 0x8001, 0x6022, 0x6008, 0xa085,
+ 0x0008, 0x600a, 0x7010, 0x6026, 0x007c, 0xa006, 0x1078, 0x4776,
+ 0x6817, 0x0000, 0x681b, 0x0001, 0x6823, 0x0040, 0x681f, 0x0100,
+ 0x7000, 0xa084, 0x0007, 0x0079, 0x33ad, 0x2482, 0x33b7, 0x33b7,
+ 0x33d4, 0x33bf, 0x33bd, 0x33bf, 0x33b5, 0x1078, 0x23eb, 0x1078,
+ 0x33df, 0x1078, 0x33d8, 0x1078, 0x1c70, 0x0078, 0x2482, 0x706c,
+ 0x706f, 0x0000, 0x7093, 0x0000, 0x0079, 0x33c6, 0x33d0, 0x33d0,
+ 0x33ce, 0x33ce, 0x33ce, 0x33d0, 0x33ce, 0x33d0, 0x0079, 0x2861,
+ 0x706f, 0x0000, 0x0078, 0x2482, 0x681b, 0x0000, 0x0078, 0x2f17,
+ 0x6800, 0xa005, 0x00c0, 0x33dd, 0x6002, 0x6006, 0x007c, 0x6010,
+ 0xa005, 0x0040, 0x33e8, 0x8001, 0x00d0, 0x33e8, 0x1078, 0x23eb,
+ 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x007c, 0x6018, 0xa005,
+ 0x0040, 0x33f4, 0x8001, 0x601a, 0x007c, 0x1078, 0x3912, 0x681b,
+ 0x0018, 0x0078, 0x342b, 0x1078, 0x3912, 0x681b, 0x0019, 0x0078,
+ 0x342b, 0x1078, 0x3912, 0x681b, 0x001a, 0x0078, 0x342b, 0x1078,
+ 0x3912, 0x681b, 0x0003, 0x0078, 0x342b, 0x7780, 0x1078, 0x37ef,
+ 0x7184, 0xa18c, 0x00ff, 0xa1e8, 0x7400, 0x2d04, 0x2d08, 0x2068,
+ 0xa005, 0x00c0, 0x341d, 0x0078, 0x2482, 0x6814, 0x7280, 0xa206,
+ 0x0040, 0x3425, 0x6800, 0x0078, 0x3416, 0x6800, 0x200a, 0x681b,
+ 0x0005, 0x708b, 0x0000, 0x1078, 0x33df, 0x6820, 0xa084, 0x0001,
+ 0x00c0, 0x3434, 0x1078, 0x33d8, 0x1078, 0x33ee, 0x681f, 0x0000,
+ 0x6823, 0x0020, 0x1078, 0x1c70, 0x0078, 0x2482, 0xa282, 0x0003,
+ 0x00c0, 0x369d, 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, 0x00ff,
+ 0x6920, 0xa18d, 0x0080, 0x6922, 0xa184, 0x0100, 0x0040, 0x34a2,
+ 0xa18c, 0xfeff, 0x6922, 0xa4a4, 0x00ff, 0x0040, 0x348c, 0xa482,
+ 0x000c, 0x0048, 0x345f, 0x0040, 0x345f, 0x2021, 0x000c, 0x852b,
+ 0x852b, 0x1078, 0x3760, 0x0040, 0x3469, 0x1078, 0x355b, 0x0078,
+ 0x3495, 0x1078, 0x371b, 0x0c7e, 0x2960, 0x6004, 0xa084, 0xfff5,
+ 0x6006, 0x1078, 0x3586, 0x0c7f, 0x6920, 0xa18d, 0x0100, 0x6922,
+ 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x3486,
+ 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x782b, 0x3008,
+ 0x781b, 0x0065, 0x0078, 0x2459, 0x0c7e, 0x2960, 0x6004, 0xa084,
+ 0xfff5, 0x6006, 0x1078, 0x3586, 0x0c7f, 0x7e58, 0xa684, 0x0400,
+ 0x00c0, 0x349e, 0x781b, 0x0058, 0x0078, 0x2459, 0x781b, 0x0065,
+ 0x0078, 0x2459, 0x0c7e, 0x7054, 0x2060, 0x6100, 0xa18c, 0x1000,
+ 0x0040, 0x34e2, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c,
+ 0x0048, 0x34b6, 0x0040, 0x34b6, 0x2011, 0x000c, 0x2400, 0xa202,
+ 0x00c8, 0x34bb, 0x2220, 0x6208, 0xa294, 0x00ff, 0x7018, 0xa086,
+ 0x0028, 0x00c0, 0x34cb, 0xa282, 0x0019, 0x00c8, 0x34d1, 0x2011,
+ 0x0019, 0x0078, 0x34d1, 0xa282, 0x000c, 0x00c8, 0x34d1, 0x2011,
+ 0x000c, 0x2200, 0xa502, 0x00c8, 0x34d6, 0x2228, 0x1078, 0x371f,
+ 0x852b, 0x852b, 0x1078, 0x3760, 0x0040, 0x34e2, 0x1078, 0x355b,
+ 0x0078, 0x34e6, 0x1078, 0x371b, 0x1078, 0x3586, 0x7858, 0xa085,
+ 0x0004, 0x785a, 0x0c7f, 0x782b, 0x3008, 0x781b, 0x0065, 0x0078,
+ 0x2459, 0x0c7e, 0x2960, 0x6000, 0xa084, 0x1000, 0x00c0, 0x3509,
+ 0x6010, 0xa084, 0x000f, 0x00c0, 0x3503, 0x6104, 0xa18c, 0xfff5,
+ 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078,
+ 0x3530, 0x68a0, 0xa084, 0x0200, 0x00c0, 0x3503, 0x6208, 0xa294,
+ 0x00ff, 0x7018, 0xa086, 0x0028, 0x00c0, 0x351e, 0xa282, 0x0019,
+ 0x00c8, 0x3524, 0x2011, 0x0019, 0x0078, 0x3524, 0xa282, 0x000c,
+ 0x00c8, 0x3524, 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff,
+ 0xa382, 0x000c, 0x0048, 0x3530, 0x0040, 0x3530, 0x2019, 0x000c,
+ 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa,
+ 0xa8c0, 0x0005, 0x6820, 0xa085, 0x0100, 0x6822, 0x0c7f, 0x007c,
+ 0x0c7e, 0x2960, 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019,
+ 0x0000, 0x0078, 0x354b, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab,
+ 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xa085, 0x0100,
+ 0x6822, 0x0c7f, 0x007c, 0x0c7e, 0x7154, 0x2160, 0x1078, 0x3562,
+ 0x0c7f, 0x007c, 0x2008, 0xa084, 0xfff0, 0xa425, 0x7c86, 0x6018,
+ 0x789a, 0x7cae, 0x6412, 0x78a4, 0xa084, 0xfff8, 0xa18c, 0x0007,
+ 0xa105, 0x78a6, 0x6016, 0x788a, 0xa4a4, 0x000f, 0x8427, 0x8204,
+ 0x8004, 0xa084, 0x00ff, 0xa405, 0x600e, 0x78ec, 0xd08c, 0x00c0,
+ 0x3585, 0x6004, 0xa084, 0xfff5, 0x6006, 0x007c, 0x0c7e, 0x7054,
+ 0x2060, 0x1078, 0x358d, 0x0c7f, 0x007c, 0x6018, 0x789a, 0x78a4,
+ 0xa084, 0xfff0, 0x78a6, 0x6012, 0x7884, 0xa084, 0xfff0, 0x7886,
+ 0x007c, 0xa282, 0x0002, 0x00c0, 0x369d, 0x7aa8, 0x6920, 0xa18d,
+ 0x0080, 0x6922, 0xa184, 0x0200, 0x0040, 0x35e2, 0xa18c, 0xfdff,
+ 0x6922, 0xa294, 0x00ff, 0xa282, 0x0002, 0x00c8, 0x369d, 0x1078,
+ 0x362b, 0x1078, 0x3586, 0xa980, 0x0001, 0x200c, 0x1078, 0x37eb,
+ 0x1078, 0x34f1, 0x88ff, 0x0040, 0x35d5, 0x789b, 0x0060, 0x2800,
+ 0x78aa, 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0,
+ 0x35cf, 0x782b, 0x3008, 0x781b, 0x0056, 0x0078, 0x2459, 0x782b,
+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x7e58, 0xa684, 0x0400,
+ 0x00c0, 0x35de, 0x781b, 0x0058, 0x0078, 0x2459, 0x781b, 0x0065,
+ 0x0078, 0x2459, 0xa282, 0x0002, 0x00c8, 0x35ea, 0xa284, 0x0001,
+ 0x0040, 0x35f4, 0x7154, 0xa188, 0x0000, 0x210c, 0xa18c, 0x2000,
+ 0x00c0, 0x35f4, 0x2011, 0x0000, 0x1078, 0x370d, 0x1078, 0x362b,
+ 0x1078, 0x3586, 0x7858, 0xa085, 0x0004, 0x785a, 0x782b, 0x3008,
+ 0x781b, 0x0065, 0x0078, 0x2459, 0x0c7e, 0x027e, 0x2960, 0x6000,
+ 0x2011, 0x0001, 0xa084, 0x2000, 0x00c0, 0x361b, 0x6014, 0xa084,
+ 0x0040, 0x00c0, 0x3619, 0xa18c, 0xffef, 0x6106, 0xa006, 0x0078,
+ 0x3628, 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab,
+ 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x6820, 0xa085, 0x0200, 0x6822,
+ 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7054, 0x2060, 0x1078, 0x3632,
+ 0x0c7f, 0x007c, 0x82ff, 0x0040, 0x3637, 0x2011, 0x0040, 0x6018,
+ 0xa080, 0x0002, 0x789a, 0x78a4, 0xa084, 0xffbf, 0xa205, 0x78a6,
+ 0x788a, 0x6016, 0x78ec, 0xd08c, 0x00c0, 0x364a, 0x6004, 0xa084,
+ 0xffef, 0x6006, 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, 0x0040,
+ 0x3654, 0x007f, 0x0078, 0x3657, 0x007f, 0x0078, 0x3699, 0xa684,
+ 0x0020, 0x0040, 0x3699, 0x7888, 0xa084, 0x0040, 0x0040, 0x3699,
+ 0x7bb8, 0xa384, 0x003f, 0x831b, 0x00c8, 0x3667, 0x8000, 0xa005,
+ 0x0040, 0x367d, 0x831b, 0x00c8, 0x3670, 0x8001, 0x0040, 0x3695,
+ 0xa684, 0x4000, 0x0040, 0x367d, 0x78b8, 0x801b, 0x00c8, 0x3679,
+ 0x8000, 0xa084, 0x003f, 0x00c0, 0x3695, 0xa6b4, 0xbfff, 0x7e5a,
+ 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, 0x00c8, 0x3689, 0xa291,
+ 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, 0x1078, 0x4b30, 0x781b,
+ 0x0064, 0x1078, 0x49b5, 0x0078, 0x2459, 0x781b, 0x0064, 0x0078,
+ 0x2459, 0x781b, 0x0065, 0x0078, 0x2459, 0x1078, 0x36d5, 0x782b,
+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x1078, 0x36c1, 0x782b,
+ 0x3008, 0x781b, 0x0065, 0x0078, 0x2459, 0x6827, 0x0002, 0x1078,
+ 0x36c9, 0x78e4, 0xa084, 0x0030, 0x0040, 0x2482, 0x78ec, 0xa084,
+ 0x0003, 0x0040, 0x2482, 0x782b, 0x3008, 0x781b, 0x0065, 0x0078,
+ 0x2459, 0x2001, 0x0005, 0x0078, 0x36d7, 0x2001, 0x000c, 0x0078,
+ 0x36d7, 0x2001, 0x0006, 0x0078, 0x36d7, 0x2001, 0x000d, 0x0078,
+ 0x36d7, 0x2001, 0x0009, 0x0078, 0x36d7, 0x2001, 0x0007, 0x789b,
+ 0x0010, 0x78aa, 0x789b, 0x0060, 0x78ab, 0x0001, 0xa6b5, 0x0004,
+ 0x7e5a, 0x007c, 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b,
+ 0x8703, 0xa0e0, 0x5380, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184,
+ 0x000f, 0x0040, 0x36fb, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004,
+ 0xa085, 0x0008, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184,
+ 0x0040, 0x0040, 0x370b, 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004,
+ 0xa085, 0x0010, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab,
+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060,
+ 0x78ab, 0x0004, 0x007c, 0x2021, 0x0000, 0x2029, 0x0032, 0x789b,
+ 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa,
+ 0x7caa, 0x789b, 0x0060, 0x78ab, 0x0005, 0x007c, 0x157e, 0x8007,
+ 0xa084, 0x00ff, 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, 0x79a4,
+ 0xa18c, 0xfff0, 0x2001, 0x5146, 0x2004, 0xa082, 0x0028, 0x0040,
+ 0x3749, 0x2021, 0x37d2, 0x2019, 0x0014, 0x20a9, 0x000c, 0x0078,
+ 0x374f, 0x2021, 0x37de, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011,
+ 0x0064, 0x2404, 0xa084, 0xfff0, 0xa106, 0x0040, 0x375e, 0x8420,
+ 0x2300, 0xa210, 0x0070, 0x375e, 0x0078, 0x3751, 0x157f, 0x007c,
+ 0x157e, 0x2009, 0x5146, 0x210c, 0xa182, 0x0032, 0x0048, 0x3774,
+ 0x0040, 0x3778, 0x2009, 0x37c4, 0x2019, 0x0011, 0x20a9, 0x000e,
+ 0x2011, 0x0032, 0x0078, 0x378a, 0xa182, 0x0028, 0x0040, 0x3782,
+ 0x2009, 0x37d2, 0x2019, 0x0014, 0x20a9, 0x000c, 0x2011, 0x0064,
+ 0x0078, 0x378a, 0x2009, 0x37de, 0x2019, 0x0019, 0x20a9, 0x000d,
+ 0x2011, 0x0064, 0x2200, 0xa502, 0x0040, 0x379a, 0x0048, 0x379a,
+ 0x8108, 0x2300, 0xa210, 0x0070, 0x3797, 0x0078, 0x378a, 0x157f,
+ 0xa006, 0x007c, 0x157f, 0xa582, 0x0064, 0x00c8, 0x37a9, 0x7808,
+ 0xa085, 0x0070, 0x780a, 0x7044, 0xa085, 0x0070, 0x7046, 0x0078,
+ 0x37a9, 0x78ec, 0xa084, 0x0300, 0x0040, 0x37b1, 0x2104, 0x0078,
+ 0x37c2, 0x2104, 0xa09e, 0x1102, 0x00c0, 0x37c2, 0x2001, 0x04fd,
+ 0x2004, 0xa082, 0x0005, 0x0048, 0x37c1, 0x2001, 0x1201, 0x0078,
+ 0x37c2, 0x2104, 0xa005, 0x007c, 0x1102, 0x3002, 0x3202, 0x4203,
+ 0x4403, 0x5404, 0x5604, 0x6605, 0x6805, 0x7806, 0x7a06, 0x0c07,
+ 0x0c07, 0x0e07, 0x3202, 0x4202, 0x5202, 0x6202, 0x7202, 0x6605,
+ 0x7605, 0x7805, 0x7a05, 0x7c05, 0x7e05, 0x7f05, 0x2202, 0x3202,
+ 0x4202, 0x5202, 0x5404, 0x6404, 0x7404, 0x7604, 0x7804, 0x7a04,
+ 0x7c04, 0x7e04, 0x7f04, 0x789b, 0x0010, 0xa046, 0x007c, 0xa784,
+ 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003, 0x8003,
+ 0xa105, 0xa0e0, 0x5400, 0x007c, 0x79d8, 0x7adc, 0x78d0, 0x801b,
+ 0x00c8, 0x3803, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000,
+ 0x007c, 0x0f7e, 0x2079, 0x0100, 0x2009, 0x5140, 0x2091, 0x8000,
+ 0x2104, 0x0079, 0x3813, 0x3849, 0x381d, 0x381d, 0x381d, 0x381d,
+ 0x381d, 0x381d, 0x384d, 0x1078, 0x23eb, 0x784b, 0x0004, 0x7848,
+ 0xa084, 0x0004, 0x00c0, 0x381f, 0x784b, 0x0008, 0x7848, 0xa084,
+ 0x0008, 0x00c0, 0x3826, 0x68b4, 0xa085, 0x4000, 0x68b6, 0x7858,
+ 0xa085, 0x4000, 0x785a, 0x7830, 0xa084, 0x0080, 0x00c0, 0x3849,
+ 0x0018, 0x3849, 0x681c, 0xa084, 0x0020, 0x00c0, 0x3847, 0x0e7e,
+ 0x2071, 0x5140, 0x1078, 0x389c, 0x0e7f, 0x0078, 0x3849, 0x781b,
+ 0x00cd, 0x2091, 0x8001, 0x0f7f, 0x007c, 0x70b3, 0x0000, 0x1078,
+ 0x3a76, 0x0078, 0x3849, 0x0c7e, 0x6814, 0x8007, 0xa084, 0x000f,
+ 0x8003, 0x8003, 0x8003, 0xa0e0, 0x5380, 0x6004, 0xa084, 0x000a,
+ 0x00c0, 0x3886, 0x6108, 0xa194, 0xff00, 0x0040, 0x3886, 0xa18c,
+ 0x00ff, 0x2001, 0x0019, 0xa106, 0x0040, 0x3875, 0x2001, 0x0032,
+ 0xa106, 0x0040, 0x3879, 0x0078, 0x387d, 0x2009, 0x0020, 0x0078,
+ 0x387f, 0x2009, 0x003f, 0x0078, 0x387f, 0x2011, 0x0000, 0x2100,
+ 0xa205, 0x600a, 0x6004, 0xa085, 0x0002, 0x6006, 0x0c7f, 0x007c,
+ 0x781b, 0x0065, 0x0078, 0x2459, 0x782b, 0x3008, 0x781b, 0x0065,
+ 0x0078, 0x2459, 0x781b, 0x0058, 0x0078, 0x2459, 0x782b, 0x3008,
+ 0x781b, 0x0056, 0x0078, 0x2459, 0x2009, 0x5120, 0x210c, 0xa186,
+ 0x0000, 0x0040, 0x38b0, 0xa186, 0x0001, 0x0040, 0x38b3, 0x2009,
+ 0x5138, 0x200b, 0x000b, 0x706f, 0x0001, 0x781b, 0x0048, 0x007c,
+ 0x781b, 0x00c7, 0x007c, 0x2009, 0x5138, 0x200b, 0x000a, 0x007c,
+ 0x2009, 0x5120, 0x210c, 0xa186, 0x0000, 0x0040, 0x38d3, 0xa186,
+ 0x0001, 0x0040, 0x38cd, 0x2009, 0x5138, 0x200b, 0x000b, 0x706f,
+ 0x0001, 0x781b, 0x0048, 0x0078, 0x2459, 0x2009, 0x5138, 0x200b,
+ 0x000a, 0x0078, 0x2459, 0x782b, 0x3008, 0x781b, 0x00c7, 0x0078,
+ 0x2459, 0x781b, 0x00cd, 0x0078, 0x2459, 0x782b, 0x3008, 0x781b,
+ 0x00cd, 0x0078, 0x2459, 0x781b, 0x008e, 0x0078, 0x2459, 0x782b,
+ 0x3008, 0x781b, 0x008e, 0x0078, 0x2459, 0x6818, 0xa084, 0x8000,
+ 0x0040, 0x38f4, 0x681b, 0x001d, 0x706f, 0x0001, 0x781b, 0x0048,
+ 0x0078, 0x2459, 0x007e, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x3910,
+ 0x7808, 0xa084, 0xfffc, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x78ec, 0xa084, 0x0021, 0x0040, 0x3910, 0x7044, 0x780a, 0xa005,
+ 0x007f, 0x007c, 0x7044, 0xa085, 0x0002, 0x7046, 0x780a, 0x007c,
+ 0x007e, 0x7830, 0xa084, 0x0040, 0x00c0, 0x3919, 0x0098, 0x3924,
+ 0x007f, 0x789a, 0x78ac, 0x007c, 0x7808, 0xa084, 0xfffd, 0x780a,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084, 0x0021, 0x0040,
+ 0x3933, 0x0098, 0x3931, 0x007f, 0x789a, 0x78ac, 0x007e, 0x7044,
+ 0x780a, 0x007f, 0x007c, 0x78ec, 0xa084, 0x0002, 0x00c0, 0x4760,
+ 0xa784, 0x007d, 0x00c0, 0x3947, 0x2700, 0x1078, 0x23eb, 0xa784,
+ 0x0001, 0x00c0, 0x2f6d, 0xa784, 0x0070, 0x0040, 0x3957, 0x0c7e,
+ 0x2d60, 0x2f68, 0x1078, 0x2396, 0x2d78, 0x2c68, 0x0c7f, 0xa784,
+ 0x0008, 0x0040, 0x3964, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003,
+ 0x0040, 0x2482, 0x0078, 0x3888, 0xa784, 0x0004, 0x0040, 0x3997,
+ 0x78b8, 0xa084, 0x4001, 0x0040, 0x3997, 0x784b, 0x0008, 0x78ec,
+ 0xa084, 0x0003, 0x0040, 0x2482, 0x78e4, 0xa084, 0x0007, 0xa086,
+ 0x0001, 0x00c0, 0x3997, 0x78c0, 0xa085, 0x4800, 0x2030, 0x7e5a,
+ 0x781b, 0x00cd, 0x0078, 0x2459, 0x784b, 0x0008, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x3993, 0x681b, 0x0015, 0xa684, 0x4000, 0x0040,
+ 0x3993, 0x681b, 0x0007, 0x1078, 0x389c, 0x0078, 0x2459, 0x681b,
+ 0x0003, 0x7858, 0xa084, 0x3f00, 0x681e, 0x682f, 0x0000, 0x6833,
+ 0x0000, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2965,
+ 0x0018, 0x2459, 0x0078, 0x36a5, 0x6b14, 0x8307, 0xa084, 0x000f,
+ 0x8003, 0x8003, 0x8003, 0xa080, 0x5380, 0x2060, 0x2048, 0x7056,
+ 0x6000, 0x705a, 0x6004, 0x705e, 0x2a60, 0x007c, 0x0079, 0x39c0,
+ 0x39c8, 0x39c9, 0x39c8, 0x39cb, 0x39c8, 0x39c8, 0x39c8, 0x39d0,
+ 0x007c, 0x1078, 0x33ee, 0x1078, 0x4776, 0x7038, 0x600a, 0x007c,
+ 0x70a0, 0xa005, 0x0040, 0x39dd, 0x2068, 0x1078, 0x1b62, 0x1078,
+ 0x46f8, 0x1078, 0x46ff, 0x70a3, 0x0000, 0x007c, 0x0e7e, 0x2091,
+ 0x8000, 0x2071, 0x5140, 0x7000, 0xa086, 0x0007, 0x00c0, 0x39f4,
+ 0x6110, 0x70bc, 0xa106, 0x00c0, 0x39f4, 0x0e7f, 0x1078, 0x1b6f,
+ 0x1078, 0x39fa, 0xa006, 0x007c, 0x2091, 0x8001, 0x0e7f, 0xa085,
+ 0x0001, 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x5140, 0x0078, 0x21fa,
+ 0x785b, 0x0000, 0x70af, 0x000e, 0x2009, 0x0100, 0x017e, 0x70a0,
+ 0xa06d, 0x0040, 0x3a0f, 0x70a3, 0x0000, 0x0078, 0x3a15, 0x70b3,
+ 0x0000, 0x1078, 0x1b8b, 0x0040, 0x3a1b, 0x70ac, 0x6826, 0x1078,
+ 0x3af8, 0x0078, 0x3a0f, 0x017f, 0x157e, 0x0c7e, 0x0d7e, 0x20a9,
+ 0x0008, 0x2061, 0x7510, 0x6000, 0xa105, 0x6002, 0x601c, 0xa06d,
+ 0x0040, 0x3a33, 0x6800, 0x601e, 0x1078, 0x195a, 0x6008, 0x8000,
+ 0x600a, 0x0078, 0x3a26, 0x6018, 0xa06d, 0x0040, 0x3a3d, 0x6800,
+ 0x601a, 0x1078, 0x195a, 0x0078, 0x3a33, 0xace0, 0x0008, 0x0070,
+ 0x3a43, 0x0078, 0x3a23, 0x709c, 0xa084, 0x8000, 0x0040, 0x3a4a,
+ 0x1078, 0x3b72, 0x0d7f, 0x0c7f, 0x157f, 0x007c, 0x127e, 0x2091,
+ 0x2300, 0x6804, 0xa084, 0x000f, 0x0079, 0x3a56, 0x3a66, 0x3a66,
+ 0x3a66, 0x3a66, 0x3a66, 0x3a66, 0x3a68, 0x3a6e, 0x3a66, 0x3a66,
+ 0x3a66, 0x3a66, 0x3a66, 0x3a70, 0x3a66, 0x3a68, 0x1078, 0x23eb,
+ 0x1078, 0x44d0, 0x1078, 0x195a, 0x0078, 0x3a74, 0x6827, 0x000b,
+ 0x1078, 0x44d0, 0x1078, 0x3af8, 0x127f, 0x007c, 0x127e, 0x2091,
+ 0x2300, 0x0098, 0x3a92, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x3a92,
+ 0x0d7e, 0x1078, 0x4708, 0x2d00, 0x682e, 0x2009, 0x0004, 0x2001,
+ 0x0000, 0x6827, 0x0084, 0x1078, 0x46c1, 0x1078, 0x3af8, 0x0d7f,
+ 0x0078, 0x3ac6, 0x7948, 0xa185, 0x4000, 0x784a, 0x0098, 0x3a9b,
+ 0x794a, 0x0078, 0x3a80, 0x7828, 0xa086, 0x1834, 0x00c0, 0x3aa4,
+ 0xa185, 0x0004, 0x0078, 0x3aab, 0x7828, 0xa086, 0x1814, 0x00c0,
+ 0x3a98, 0xa185, 0x000c, 0x784a, 0x789b, 0x000e, 0x78ab, 0x0002,
+ 0x7858, 0xa084, 0x00ff, 0xa085, 0x0400, 0x785a, 0x70b4, 0xa080,
+ 0x0091, 0x781a, 0x6827, 0x0284, 0x682c, 0x6836, 0x6830, 0x683a,
+ 0x2009, 0x0004, 0x2001, 0x0000, 0x1078, 0x46c1, 0x127f, 0x007c,
+ 0x0d7e, 0x6b14, 0x1078, 0x1bfd, 0x0040, 0x3ad5, 0x2068, 0x6827,
+ 0x0002, 0x1078, 0x3af8, 0x0078, 0x3aca, 0x0d7f, 0x007c, 0x0d7e,
+ 0x6b14, 0x6c28, 0xa4a4, 0x00ff, 0x1078, 0x1b9b, 0x0040, 0x3ae5,
+ 0x2068, 0x6827, 0x0002, 0x1078, 0x3af8, 0x0d7f, 0x007c, 0x0d7e,
+ 0x6b14, 0xa39c, 0x00ff, 0x1078, 0x1bce, 0x0040, 0x3af6, 0x2068,
+ 0x6827, 0x0002, 0x1078, 0x3af8, 0x0078, 0x3aeb, 0x0d7f, 0x007c,
+ 0x0c7e, 0x6914, 0x1078, 0x3b69, 0x6904, 0xa18c, 0x00ff, 0xa186,
+ 0x0006, 0x0040, 0x3b13, 0xa186, 0x000d, 0x0040, 0x3b32, 0xa186,
+ 0x0017, 0x00c0, 0x3b0f, 0x1078, 0x195a, 0x0078, 0x3b11, 0x1078,
+ 0x1c72, 0x0c7f, 0x007c, 0x6004, 0x8001, 0x0048, 0x3b30, 0x6006,
+ 0x2009, 0x0000, 0xa684, 0x0001, 0x00c0, 0x3b20, 0xa18d, 0x8000,
+ 0xa684, 0x0004, 0x0040, 0x3b26, 0xa18d, 0x0002, 0x691e, 0x6823,
+ 0x0000, 0x7104, 0x810f, 0x6818, 0xa105, 0x681a, 0x0078, 0x3b0f,
+ 0x1078, 0x23eb, 0x6018, 0xa005, 0x00c0, 0x3b41, 0x6008, 0x8001,
+ 0x0048, 0x3b41, 0x600a, 0x601c, 0x6802, 0x2d00, 0x601e, 0x0078,
+ 0x3b57, 0xac88, 0x0006, 0x2104, 0xa005, 0x0040, 0x3b4a, 0x2008,
+ 0x0078, 0x3b43, 0x6802, 0x2d0a, 0x6008, 0x8001, 0x0048, 0x3b11,
+ 0x600a, 0x6018, 0x2068, 0x6800, 0x601a, 0x0078, 0x3b3b, 0x157e,
+ 0x137e, 0x147e, 0x0c7e, 0x0d7e, 0x1078, 0x1937, 0x2da0, 0x137f,
+ 0x20a9, 0x0031, 0x53a3, 0x0c7f, 0x147f, 0x137f, 0x157f, 0x0078,
+ 0x3b0f, 0xa184, 0x001f, 0x8003, 0x8003, 0x8003, 0xa080, 0x7510,
+ 0x2060, 0x007c, 0x2019, 0x5151, 0x2304, 0xa085, 0x0001, 0x201a,
+ 0x2019, 0x0102, 0x2304, 0xa085, 0x0001, 0x201a, 0x007c, 0x2019,
+ 0x5151, 0x2304, 0xa084, 0xfffe, 0x201a, 0x2019, 0x0102, 0x2304,
+ 0xa084, 0xfffe, 0x201a, 0x007c, 0x7990, 0xa18c, 0xfff8, 0x7992,
+ 0x70b4, 0xa080, 0x00dd, 0x781a, 0x0078, 0x2459, 0x70a3, 0x0000,
+ 0x7003, 0x0000, 0x7043, 0x0001, 0x7037, 0x0000, 0x0018, 0x2410,
+ 0x1078, 0x1b8b, 0x0040, 0x3bc7, 0x2009, 0x510f, 0x200b, 0x0000,
+ 0x68bc, 0x2060, 0x6100, 0xa184, 0x0300, 0x0040, 0x3bbb, 0x6827,
+ 0x000e, 0xa084, 0x0200, 0x0040, 0x3bb7, 0x6827, 0x0017, 0x1078,
+ 0x3af8, 0x0078, 0x3b96, 0x7000, 0xa086, 0x0007, 0x00c0, 0x3c29,
+ 0x2d00, 0x70a2, 0xad80, 0x000f, 0x7036, 0x0078, 0x3bce, 0x7040,
+ 0xa086, 0x0001, 0x0040, 0x2492, 0x0078, 0x2459, 0x2031, 0x0000,
+ 0x691c, 0xa184, 0x0002, 0x0040, 0x3bd7, 0xa6b5, 0x0004, 0xa184,
+ 0x00c0, 0x8003, 0x8003, 0x8007, 0xa080, 0x3cc2, 0x2004, 0xa635,
+ 0x6820, 0xa084, 0x0400, 0x0040, 0x3bef, 0x789b, 0x0018, 0x78ab,
+ 0x0003, 0x789b, 0x0081, 0x78ab, 0x0001, 0xa6b5, 0x1000, 0x6820,
+ 0xa084, 0x8000, 0x00c0, 0x3bfd, 0x681c, 0xa084, 0x8000, 0x00c0,
+ 0x3c04, 0xa6b5, 0x0800, 0x0078, 0x3c04, 0xa6b5, 0x0400, 0x789b,
+ 0x000e, 0x6824, 0x8007, 0x78aa, 0x6820, 0xa084, 0x0100, 0x0040,
+ 0x3c0b, 0xa6b5, 0x4000, 0xa684, 0x0200, 0x0040, 0x3c25, 0x682c,
+ 0x78d2, 0x6830, 0x78d6, 0xa684, 0x0100, 0x0040, 0x3c23, 0x682c,
+ 0xa084, 0x0001, 0x0040, 0x3c23, 0x7888, 0xa084, 0x0040, 0x0040,
+ 0x3c23, 0xa6b5, 0x8000, 0x1078, 0x46f0, 0x7e5a, 0x6eb6, 0x0078,
+ 0x4727, 0x1078, 0x38fa, 0x00c0, 0x3cbc, 0x702c, 0x8004, 0x0048,
+ 0x3c37, 0x2019, 0x4e3b, 0x1078, 0x2276, 0x702f, 0x0001, 0x2041,
+ 0x0001, 0x2031, 0x1000, 0x789b, 0x0018, 0x6814, 0xa084, 0x001f,
+ 0xa085, 0x0080, 0x78aa, 0x691c, 0xa184, 0x0002, 0x0040, 0x3c50,
+ 0xa6b5, 0x0004, 0x78ab, 0x0020, 0x6828, 0x78aa, 0xa8c0, 0x0002,
+ 0x681c, 0xd0f4, 0x0040, 0x3c59, 0x2c50, 0x1078, 0x39ac, 0x1078,
+ 0x45ff, 0x6820, 0xa084, 0x8000, 0x0040, 0x3c67, 0xa6b5, 0x0400,
+ 0x789b, 0x000e, 0x6824, 0x8007, 0x78aa, 0x0078, 0x3c6e, 0x681c,
+ 0xa084, 0x8000, 0x00c0, 0x3c6e, 0xa6b5, 0x0800, 0x6820, 0xa084,
+ 0x0100, 0x0040, 0x3c75, 0xa6b5, 0x4000, 0x681c, 0xa084, 0x00c0,
+ 0x8003, 0x8003, 0x8007, 0xa080, 0x3cc2, 0x2004, 0xa635, 0xa684,
+ 0x0100, 0x0040, 0x3c8f, 0x682c, 0xa084, 0x0001, 0x0040, 0x3c8f,
+ 0x7888, 0xa084, 0x0040, 0x0040, 0x3c8f, 0xa6b5, 0x8000, 0x789b,
+ 0x007e, 0x7eae, 0x6eb6, 0x6814, 0x8007, 0x78aa, 0x7882, 0x2810,
+ 0x7aaa, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x3cbc, 0x0018, 0x3cbc,
+ 0x70b4, 0xa080, 0x00e2, 0x781a, 0x1078, 0x3912, 0xa684, 0x0200,
+ 0x0040, 0x3cb0, 0x682c, 0x78d2, 0x6830, 0x78d6, 0x1078, 0x46f0,
+ 0x2d00, 0x70a2, 0x704a, 0x6810, 0x70be, 0x7003, 0x0007, 0xad80,
+ 0x000f, 0x7036, 0x0078, 0x2459, 0x1078, 0x1b62, 0x1078, 0x3912,
+ 0x0078, 0x2459, 0x0000, 0x0300, 0x0200, 0x0000, 0x1078, 0x23eb,
+ 0x2300, 0x0079, 0x3ccb, 0x3cce, 0x3cce, 0x3cd0, 0x1078, 0x23eb,
+ 0x1078, 0x46ff, 0x6924, 0xa184, 0x00ff, 0xa086, 0x000a, 0x0040,
+ 0x3ce2, 0xa184, 0xff00, 0xa085, 0x000a, 0x6826, 0x1078, 0x1b62,
+ 0x0078, 0x3b96, 0x2001, 0x000a, 0x1078, 0x4691, 0x0078, 0x3b96,
+ 0xa282, 0x0005, 0x0050, 0x3cee, 0x1078, 0x23eb, 0x7000, 0xa084,
+ 0x0007, 0x10c0, 0x39be, 0x1078, 0x1937, 0x00c0, 0x3d0d, 0xa684,
+ 0x0004, 0x0040, 0x3cff, 0x2001, 0x2800, 0x0078, 0x3d01, 0x2001,
+ 0x0800, 0x71b4, 0xa188, 0x0091, 0x789b, 0x000e, 0x78aa, 0x2031,
+ 0x0400, 0x7e5a, 0x791a, 0x0078, 0x2459, 0x6807, 0x0106, 0x680b,
+ 0x0000, 0x689f, 0x0000, 0x6827, 0x0000, 0xa386, 0x0002, 0x00c0,
+ 0x3d2e, 0xa286, 0x0002, 0x00c0, 0x3d2e, 0x78a0, 0xa005, 0x00c0,
+ 0x3d2e, 0xa484, 0x8000, 0x00c0, 0x3d2e, 0x78e4, 0xa084, 0x0008,
+ 0x0040, 0x3d2e, 0xa6b5, 0x0008, 0x2019, 0x0000, 0x1078, 0x411e,
+ 0x2d00, 0x70a2, 0x704a, 0x7003, 0x0007, 0x7037, 0x0000, 0x6824,
+ 0xa084, 0x0080, 0x0040, 0x3d40, 0x1078, 0x41d0, 0x0078, 0x2459,
+ 0x2300, 0x0079, 0x3d43, 0x3d46, 0x3dc7, 0x3de6, 0x2200, 0x0079,
+ 0x3d49, 0x3d4e, 0x3d5e, 0x3d84, 0x3d90, 0x3db3, 0x2029, 0x0001,
+ 0xa026, 0x2011, 0x0000, 0x1078, 0x42f1, 0x0079, 0x3d57, 0x3d5c,
+ 0x2459, 0x3b96, 0x3d5c, 0x3d5c, 0x1078, 0x23eb, 0x7990, 0xa18c,
+ 0x0007, 0x00c0, 0x3d65, 0x2009, 0x0008, 0x2011, 0x0001, 0xa684,
+ 0x0004, 0x0040, 0x3d6d, 0x2011, 0x0003, 0x2220, 0xa12a, 0x2011,
+ 0x0001, 0x1078, 0x42f1, 0x0079, 0x3d75, 0x3d7a, 0x2459, 0x3b96,
+ 0x3d82, 0x3d7c, 0x0078, 0x472d, 0x70ab, 0x3d80, 0x0078, 0x2459,
+ 0x0078, 0x3d7a, 0x1078, 0x23eb, 0xa684, 0x0010, 0x0040, 0x3d8e,
+ 0x1078, 0x419f, 0x0040, 0x3d8e, 0x0078, 0x2459, 0x0078, 0x420c,
+ 0x6000, 0xa084, 0x0002, 0x0040, 0x3dad, 0x70b4, 0xa080, 0x00d2,
+ 0x781a, 0x0d7e, 0x1078, 0x4708, 0x2d00, 0x682e, 0x6827, 0x0000,
+ 0x1078, 0x3af8, 0x0d7f, 0x1078, 0x195a, 0x7003, 0x0000, 0x7037,
+ 0x0000, 0x704b, 0x0000, 0x0078, 0x3b96, 0xa684, 0x0004, 0x00c0,
+ 0x3db3, 0x0078, 0x472d, 0x6000, 0xa084, 0x0004, 0x00c0, 0x3dc5,
+ 0x6000, 0xa084, 0x0001, 0x0040, 0x3dc5, 0x70ab, 0x3dc5, 0x2001,
+ 0x0007, 0x1078, 0x4689, 0x0078, 0x4733, 0x0078, 0x472d, 0x2200,
+ 0x0079, 0x3dca, 0x3dcf, 0x3dcf, 0x3dcf, 0x3dd1, 0x3dcf, 0x1078,
+ 0x23eb, 0x70a7, 0x3dd5, 0x0078, 0x4739, 0x2011, 0x0018, 0x1078,
+ 0x42eb, 0x0079, 0x3ddb, 0x3de0, 0x2459, 0x3b96, 0x3de2, 0x3de4,
+ 0x1078, 0x23eb, 0x1078, 0x23eb, 0x1078, 0x23eb, 0x2200, 0x0079,
+ 0x3de9, 0x3dee, 0x3df0, 0x3df0, 0x3dee, 0x3dee, 0x1078, 0x23eb,
+ 0x78e4, 0xa084, 0x0008, 0x0040, 0x3e05, 0x70a7, 0x3df9, 0x0078,
+ 0x4739, 0x2011, 0x0004, 0x1078, 0x42eb, 0x0079, 0x3dff, 0x3e05,
+ 0x2459, 0x3b96, 0x3e05, 0x3e0f, 0x3e13, 0x70ab, 0x3e0d, 0x2001,
+ 0x0003, 0x1078, 0x4689, 0x0078, 0x4733, 0x0078, 0x472d, 0x70ab,
+ 0x3e05, 0x0078, 0x2459, 0x70ab, 0x3e17, 0x0078, 0x2459, 0x0078,
+ 0x3e0d, 0xa282, 0x0003, 0x0050, 0x3e1f, 0x1078, 0x23eb, 0xa386,
+ 0x0002, 0x00c0, 0x3e38, 0xa286, 0x0002, 0x00c0, 0x3e3e, 0x78a0,
+ 0xa005, 0x00c0, 0x3e3e, 0xa484, 0x8000, 0x00c0, 0x3e3e, 0x78e4,
+ 0xa084, 0x0008, 0x0040, 0x3e38, 0xa6b5, 0x0008, 0x2019, 0x0000,
+ 0xa684, 0x0008, 0x0040, 0x3e3e, 0x1078, 0x417c, 0x6810, 0x70be,
+ 0x7003, 0x0007, 0x2300, 0x0079, 0x3e45, 0x3e48, 0x3e75, 0x3e7d,
+ 0x2200, 0x0079, 0x3e4b, 0x3e50, 0x3e4e, 0x3e69, 0x1078, 0x23eb,
+ 0x7990, 0xa1ac, 0x0007, 0xa026, 0x2011, 0x0001, 0x1078, 0x42f1,
+ 0x0079, 0x3e5a, 0x3e5f, 0x2459, 0x3b96, 0x3e67, 0x3e61, 0x0078,
+ 0x472d, 0x70ab, 0x3e65, 0x0078, 0x2459, 0x0078, 0x3e5f, 0x1078,
+ 0x23eb, 0xa684, 0x0010, 0x0040, 0x3e73, 0x1078, 0x419f, 0x0040,
+ 0x3e73, 0x0078, 0x2459, 0x0078, 0x420c, 0x2200, 0x0079, 0x3e78,
+ 0x3e7b, 0x3e7b, 0x3e7b, 0x1078, 0x23eb, 0x2200, 0x0079, 0x3e80,
+ 0x3e83, 0x3e85, 0x3e85, 0x1078, 0x23eb, 0x78e4, 0xa084, 0x0008,
+ 0x0040, 0x3e9a, 0x70a7, 0x3e8e, 0x0078, 0x4739, 0x2011, 0x0004,
+ 0x1078, 0x42eb, 0x0079, 0x3e94, 0x3e9a, 0x2459, 0x3b96, 0x3e9a,
+ 0x3ea4, 0x3ea8, 0x70ab, 0x3ea2, 0x2001, 0x0003, 0x1078, 0x4689,
+ 0x0078, 0x4733, 0x0078, 0x472d, 0x70ab, 0x3e9a, 0x0078, 0x2459,
+ 0x70ab, 0x3eac, 0x0078, 0x2459, 0x0078, 0x3ea2, 0x2300, 0x0079,
+ 0x3eb1, 0x3eb6, 0x3eb8, 0x3eb4, 0x1078, 0x23eb, 0x70a4, 0x007a,
+ 0x70a4, 0x007a, 0xa282, 0x0002, 0x0050, 0x3ec0, 0x1078, 0x23eb,
+ 0xa684, 0x0200, 0x0040, 0x3eca, 0x1078, 0x46f8, 0x1078, 0x42d3,
+ 0x1078, 0x46ff, 0x2300, 0x0079, 0x3ecd, 0x3ed0, 0x3ef4, 0x3f5a,
+ 0xa286, 0x0001, 0x0040, 0x3ed6, 0x1078, 0x23eb, 0xa684, 0x0200,
+ 0x0040, 0x3ede, 0x1078, 0x46f8, 0x1078, 0x46ff, 0x2001, 0x0001,
+ 0x1078, 0x4691, 0x78b8, 0xa084, 0xc001, 0x0040, 0x3ef0, 0x7848,
+ 0xa085, 0x0008, 0x784a, 0x7848, 0xa084, 0x0008, 0x00c0, 0x3eeb,
+ 0x7003, 0x0000, 0x0078, 0x3b96, 0x2200, 0x0079, 0x3ef7, 0x3ef9,
+ 0x3f2a, 0x70a7, 0x3efd, 0x0078, 0x4739, 0x2011, 0x000d, 0x1078,
+ 0x42eb, 0x0079, 0x3f03, 0x3f0a, 0x2459, 0x3b96, 0x3f12, 0x3f1a,
+ 0x3f20, 0x3f22, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a,
+ 0x0078, 0x4727, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a,
+ 0x0078, 0x4727, 0x70ab, 0x3f1e, 0x0078, 0x2459, 0x0078, 0x3f0a,
+ 0x1078, 0x23eb, 0x70ab, 0x3f26, 0x0078, 0x2459, 0x1078, 0x473f,
+ 0x0078, 0x2459, 0x70a7, 0x3f2e, 0x0078, 0x4739, 0x2011, 0x0012,
+ 0x1078, 0x42eb, 0x0079, 0x3f34, 0x3f3a, 0x2459, 0x3b96, 0x3f46,
+ 0x3f4e, 0x3f54, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a,
+ 0x70b4, 0xa080, 0x00a6, 0x781a, 0x0078, 0x2459, 0xa6b4, 0x00ff,
+ 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x0078, 0x4727, 0x70ab, 0x3f52,
+ 0x0078, 0x2459, 0x0078, 0x3f3a, 0x70ab, 0x3f58, 0x0078, 0x2459,
+ 0x0078, 0x3f46, 0xa286, 0x0001, 0x0040, 0x3f60, 0x1078, 0x23eb,
+ 0x70a7, 0x3f64, 0x0078, 0x4739, 0x2011, 0x0015, 0x1078, 0x42eb,
+ 0x0079, 0x3f6a, 0x3f6f, 0x2459, 0x3b96, 0x3f7d, 0x3f89, 0xa6b4,
+ 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x783b, 0x1301, 0x70b4,
+ 0xa080, 0x00b4, 0x781a, 0x0078, 0x2459, 0xa6b4, 0x00ff, 0xa6b5,
+ 0x0400, 0x6eb6, 0x7e5a, 0x70b4, 0xa080, 0x00a6, 0x781a, 0x0078,
+ 0x2459, 0x70ab, 0x3f8d, 0x0078, 0x2459, 0x0078, 0x3f6f, 0xa282,
+ 0x0003, 0x0050, 0x3f95, 0x1078, 0x23eb, 0x2300, 0x0079, 0x3f98,
+ 0x3f9b, 0x3fd2, 0x402d, 0xa286, 0x0001, 0x0040, 0x3fa1, 0x1078,
+ 0x23eb, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x3fae,
+ 0x1078, 0x3af8, 0x7003, 0x0000, 0x0078, 0x3b96, 0x683b, 0x0000,
+ 0x6837, 0x0000, 0xa684, 0x0200, 0x0040, 0x3fbc, 0x1078, 0x46f8,
+ 0x1078, 0x42d3, 0x1078, 0x46ff, 0x2001, 0x0001, 0x1078, 0x4691,
+ 0x78b8, 0xa084, 0xc001, 0x0040, 0x3fce, 0x7848, 0xa085, 0x0008,
+ 0x784a, 0x7848, 0xa084, 0x0008, 0x00c0, 0x3fc9, 0x7003, 0x0000,
+ 0x0078, 0x3b96, 0x2200, 0x0079, 0x3fd5, 0x3fd7, 0x4008, 0x70a7,
+ 0x3fdb, 0x0078, 0x4739, 0x2011, 0x000d, 0x1078, 0x42eb, 0x0079,
+ 0x3fe1, 0x3fe8, 0x2459, 0x3b96, 0x3ff0, 0x3ff8, 0x3ffe, 0x4000,
+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727,
+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727,
+ 0x70ab, 0x3ffc, 0x0078, 0x2459, 0x0078, 0x3fe8, 0x1078, 0x23eb,
+ 0x70ab, 0x4004, 0x0078, 0x2459, 0x1078, 0x473f, 0x0078, 0x2459,
+ 0x70a7, 0x400c, 0x0078, 0x4739, 0x2011, 0x0005, 0x1078, 0x42eb,
+ 0x0079, 0x4012, 0x4017, 0x2459, 0x3b96, 0x401f, 0x4027, 0xa6b4,
+ 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727, 0xa6b4,
+ 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727, 0x70ab,
+ 0x402b, 0x0078, 0x2459, 0x0078, 0x4017, 0xa286, 0x0001, 0x0040,
+ 0x4033, 0x1078, 0x23eb, 0x70a7, 0x4037, 0x0078, 0x4739, 0x2011,
+ 0x0006, 0x1078, 0x42eb, 0x0079, 0x403d, 0x4042, 0x2459, 0x3b96,
+ 0x4048, 0x4052, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a, 0x0078, 0x4727,
+ 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0xa6b5, 0x4000, 0x7e5a,
+ 0x0078, 0x4727, 0x70ab, 0x4056, 0x0078, 0x2459, 0x0078, 0x4042,
+ 0x2300, 0x0079, 0x405b, 0x4060, 0x405e, 0x405e, 0x1078, 0x23eb,
+ 0x1078, 0x23eb, 0x2300, 0x71a8, 0xa005, 0x017a, 0x6810, 0x70be,
+ 0xa282, 0x0003, 0x0050, 0x406e, 0x1078, 0x23eb, 0x2300, 0x0079,
+ 0x4071, 0x4074, 0x4082, 0x40a4, 0xa684, 0x0200, 0x0040, 0x407c,
+ 0x1078, 0x46f8, 0x1078, 0x46ff, 0x2001, 0x0001, 0x1078, 0x4691,
+ 0x0078, 0x2459, 0xa296, 0x0002, 0x0040, 0x408b, 0x82ff, 0x0040,
+ 0x408b, 0x1078, 0x23eb, 0x70a7, 0x408f, 0x0078, 0x4739, 0x2011,
+ 0x0018, 0x1078, 0x42eb, 0x0079, 0x4095, 0x409a, 0x2459, 0x3b96,
+ 0x409c, 0x409e, 0x0078, 0x4727, 0x0078, 0x4727, 0x70ab, 0x40a2,
+ 0x0078, 0x2459, 0x0078, 0x409a, 0x2200, 0x0079, 0x40a7, 0x40a9,
+ 0x40c2, 0x70a7, 0x40ad, 0x0078, 0x4739, 0x2011, 0x0017, 0x1078,
+ 0x42eb, 0x0079, 0x40b3, 0x40b8, 0x2459, 0x3b96, 0x40ba, 0x40bc,
+ 0x0078, 0x4727, 0x0078, 0x4727, 0x70ab, 0x40c0, 0x0078, 0x2459,
+ 0x0078, 0x40b8, 0xa484, 0x8000, 0x00c0, 0x410c, 0xa684, 0x0100,
+ 0x0040, 0x40d6, 0x1078, 0x46f8, 0x1078, 0x42d3, 0x1078, 0x46ff,
+ 0x7848, 0xa085, 0x000c, 0x784a, 0x0078, 0x40da, 0x78d8, 0x78d2,
+ 0x78dc, 0x78d6, 0xa6b4, 0xefff, 0x7e5a, 0x70a7, 0x40e1, 0x0078,
+ 0x4739, 0x2011, 0x000d, 0x1078, 0x42eb, 0x0079, 0x40e7, 0x40ee,
+ 0x2459, 0x3b96, 0x40ee, 0x40fc, 0x4102, 0x4104, 0xa684, 0x0100,
+ 0x0040, 0x40fa, 0x1078, 0x46b6, 0x682c, 0x78d2, 0x6830, 0x78d6,
+ 0x1078, 0x46f0, 0x0078, 0x4727, 0x70ab, 0x4100, 0x0078, 0x2459,
+ 0x0078, 0x40ee, 0x1078, 0x23eb, 0x70ab, 0x4108, 0x0078, 0x2459,
+ 0x1078, 0x473f, 0x0078, 0x2459, 0x1078, 0x46ff, 0x70ab, 0x4116,
+ 0x2001, 0x0003, 0x1078, 0x4689, 0x0078, 0x4733, 0x1078, 0x46f0,
+ 0x682c, 0x78d2, 0x6830, 0x78d6, 0x0078, 0x4727, 0x70b8, 0x6812,
+ 0x70be, 0x8000, 0x70ba, 0x681b, 0x0000, 0xa684, 0x0008, 0x0040,
+ 0x4141, 0x157e, 0x137e, 0x147e, 0x7890, 0x8004, 0x8004, 0x8004,
+ 0x8004, 0xa084, 0x000f, 0x681a, 0x80ac, 0x789b, 0x0000, 0xaf80,
+ 0x002b, 0x2098, 0xad80, 0x000b, 0x20a0, 0x53a5, 0x147f, 0x137f,
+ 0x157f, 0xa6c4, 0x0f00, 0xa684, 0x0002, 0x00c0, 0x4150, 0x692c,
+ 0x810d, 0x810d, 0x810d, 0xa184, 0x0007, 0x2008, 0x0078, 0x415f,
+ 0x789b, 0x0010, 0x79ac, 0xa184, 0x0020, 0x0040, 0x415f, 0x017e,
+ 0x2009, 0x0005, 0x2001, 0x3d00, 0x1078, 0x46c1, 0x017f, 0xa184,
+ 0x001f, 0xa805, 0x6816, 0x1078, 0x3b69, 0x68be, 0xa684, 0x0004,
+ 0x0040, 0x4170, 0xa18c, 0xff00, 0x78a8, 0xa084, 0x00ff, 0xa105,
+ 0x682a, 0xa6b4, 0x00ff, 0x6000, 0xa084, 0x0008, 0x0040, 0x417a,
+ 0xa6b5, 0x4000, 0x6eb6, 0x007c, 0x157e, 0x137e, 0x147e, 0x6918,
+ 0x7890, 0x8004, 0x8004, 0x8004, 0x8004, 0xa084, 0x000f, 0x007e,
+ 0xa100, 0x681a, 0x007f, 0x8000, 0x8004, 0x0040, 0x419b, 0x20a8,
+ 0x8104, 0xa080, 0x000b, 0xad00, 0x20a0, 0x789b, 0x0000, 0xaf80,
+ 0x002b, 0x2098, 0x53a5, 0x147f, 0x137f, 0x157f, 0x007c, 0x682c,
+ 0xa084, 0x0020, 0x00c0, 0x41a7, 0x620c, 0x0078, 0x41a8, 0x6210,
+ 0x6b18, 0x2300, 0xa202, 0x0040, 0x41c8, 0x2018, 0xa382, 0x000e,
+ 0x0048, 0x41b8, 0x0040, 0x41b8, 0x2019, 0x000e, 0x0078, 0x41bc,
+ 0x7858, 0xa084, 0xffef, 0x785a, 0x783b, 0x1b01, 0x7893, 0x0000,
+ 0x7ba2, 0x70b4, 0xa080, 0x008e, 0x781a, 0xa085, 0x0001, 0x007c,
+ 0x7858, 0xa084, 0xffef, 0x785a, 0x7893, 0x0000, 0xa006, 0x007c,
+ 0x6904, 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, 0x41dd, 0xa196,
+ 0x000f, 0x0040, 0x41dd, 0x6807, 0x0117, 0x6914, 0x1078, 0x3b69,
+ 0x6100, 0x8104, 0x00c8, 0x41f8, 0x601c, 0xa005, 0x0040, 0x41ec,
+ 0x2001, 0x0800, 0x0078, 0x41fa, 0x0d7e, 0x6824, 0x007e, 0x1078,
+ 0x4708, 0x007f, 0x6826, 0x2d00, 0x682e, 0x1078, 0x3af8, 0x0d7f,
+ 0x2001, 0x0200, 0x6826, 0x8007, 0x789b, 0x000e, 0x78aa, 0x6820,
+ 0xa085, 0x8000, 0x6822, 0x2031, 0x0400, 0x6eb6, 0x7e5a, 0x71b4,
+ 0xa188, 0x0091, 0x791a, 0x007c, 0xa6c4, 0x0f00, 0xa684, 0x0002,
+ 0x00c0, 0x4220, 0x692c, 0x810d, 0x810d, 0x810d, 0xa184, 0x0007,
+ 0x2008, 0xa805, 0x6816, 0x1078, 0x3b69, 0x68be, 0x0078, 0x4223,
+ 0x6914, 0x1078, 0x3b69, 0x6100, 0x8104, 0x00c8, 0x4280, 0xa184,
+ 0x0300, 0x0040, 0x422f, 0x6807, 0x0117, 0x0078, 0x424d, 0x6004,
+ 0xa005, 0x00c0, 0x4256, 0x6807, 0x0117, 0x601c, 0xa005, 0x00c0,
+ 0x4243, 0x0d7e, 0x1078, 0x4708, 0x6827, 0x0034, 0x2d00, 0x682e,
+ 0x1078, 0x3af8, 0x0d7f, 0xa684, 0x0004, 0x0040, 0x424d, 0x2031,
+ 0x0400, 0x2001, 0x2800, 0x0078, 0x4251, 0x2031, 0x0400, 0x2001,
+ 0x0800, 0x71b4, 0xa188, 0x0091, 0x0078, 0x42ae, 0x6018, 0xa005,
+ 0x00c0, 0x4243, 0x601c, 0xa005, 0x00c0, 0x4243, 0x689f, 0x0000,
+ 0x6827, 0x003d, 0xa684, 0x0001, 0x0040, 0x42bc, 0xd694, 0x00c0,
+ 0x4279, 0x6100, 0xd1d4, 0x0040, 0x4279, 0x692c, 0x81ff, 0x0040,
+ 0x42bc, 0xa186, 0x0003, 0x0040, 0x42bc, 0xa186, 0x0012, 0x0040,
+ 0x42bc, 0xa6b5, 0x0800, 0x71b4, 0xa188, 0x00af, 0x0078, 0x42b7,
+ 0x6807, 0x0117, 0x2031, 0x0400, 0x692c, 0xa18c, 0x00ff, 0xa186,
+ 0x0012, 0x00c0, 0x4291, 0x2001, 0x42c9, 0x2009, 0x0001, 0x0078,
+ 0x42a2, 0xa186, 0x0003, 0x00c0, 0x429b, 0x2001, 0x42ca, 0x2009,
+ 0x0012, 0x0078, 0x42a2, 0x2001, 0x0200, 0x71b4, 0xa188, 0x0091,
+ 0x0078, 0x42ae, 0x1078, 0x46db, 0x78a3, 0x0000, 0x681c, 0xa085,
+ 0x0040, 0x681e, 0x71b4, 0xa188, 0x00df, 0xa006, 0x6826, 0x8007,
+ 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000, 0x6822, 0x6eb6,
+ 0x7e5a, 0x791a, 0x0078, 0x2459, 0x6eb6, 0x1078, 0x3af8, 0x6810,
+ 0x70be, 0x7003, 0x0007, 0x70a3, 0x0000, 0x704b, 0x0000, 0x0078,
+ 0x2459, 0x0023, 0x0070, 0x0005, 0x0000, 0x0a00, 0x0000, 0x0000,
+ 0x0025, 0x0000, 0x0000, 0x683b, 0x0000, 0x6837, 0x0000, 0xa684,
+ 0x0200, 0x0040, 0x42ea, 0x78b8, 0xa08c, 0x001f, 0xa084, 0x8000,
+ 0x0040, 0x42e3, 0x8108, 0x78d8, 0xa100, 0x6836, 0x78dc, 0xa081,
+ 0x0000, 0x683a, 0x007c, 0x7990, 0x810f, 0xa5ac, 0x0007, 0x2021,
+ 0x0000, 0xa480, 0x0010, 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa184,
+ 0x0080, 0x00c0, 0x4319, 0xa182, 0x0020, 0x00c8, 0x4337, 0xa182,
+ 0x0012, 0x00c8, 0x467b, 0x2100, 0x1079, 0x4307, 0x007c, 0x467b,
+ 0x44e8, 0x467b, 0x467b, 0x4344, 0x4347, 0x4381, 0x43b7, 0x43eb,
+ 0x43ee, 0x467b, 0x467b, 0x43a2, 0x4412, 0x444c, 0x467b, 0x467b,
+ 0x4473, 0xa184, 0x0020, 0x00c0, 0x44a7, 0xa18c, 0x001f, 0x6814,
+ 0xa084, 0x001f, 0xa106, 0x0040, 0x4334, 0x70b4, 0xa080, 0x00d2,
+ 0x781a, 0x2001, 0x0014, 0x1078, 0x4691, 0x1078, 0x46ff, 0x7003,
+ 0x0000, 0x2001, 0x0002, 0x007c, 0x2001, 0x0000, 0x007c, 0xa182,
+ 0x0024, 0x00c8, 0x467b, 0xa184, 0x0003, 0x1079, 0x4307, 0x007c,
+ 0x467b, 0x467b, 0x467b, 0x467b, 0x1078, 0x467b, 0x007c, 0x2200,
+ 0x0079, 0x434a, 0x4476, 0x4476, 0x436e, 0x436e, 0x436e, 0x436e,
+ 0x436e, 0x436e, 0x436e, 0x436e, 0x436c, 0x436e, 0x4363, 0x436e,
+ 0x436e, 0x436e, 0x436e, 0x436e, 0x4376, 0x4379, 0x4476, 0x4379,
+ 0x436e, 0x436e, 0x436e, 0x0c7e, 0x077e, 0x6f14, 0x1078, 0x36e2,
+ 0x077f, 0x0c7f, 0x0078, 0x436e, 0x1078, 0x458b, 0x6827, 0x02b3,
+ 0x2009, 0x000b, 0x2001, 0x4800, 0x0078, 0x44aa, 0x1078, 0x4670,
+ 0x007c, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, 0x4800, 0x0078,
+ 0x4492, 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
+ 0x438b, 0x6807, 0x0117, 0x6827, 0x0002, 0x1078, 0x4708, 0x6827,
+ 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, 0x3ac8, 0x1078,
+ 0x44d0, 0x2b68, 0x1078, 0x3af8, 0x0d7f, 0x1078, 0x3af8, 0x2001,
+ 0x0002, 0x007c, 0x1078, 0x44d0, 0x2001, 0x0017, 0x1078, 0x4691,
+ 0x70a3, 0x0000, 0x2009, 0x5138, 0x200b, 0x0006, 0x70af, 0x0017,
+ 0x2009, 0x0200, 0x1078, 0x3a06, 0x2001, 0x0001, 0x007c, 0x2200,
+ 0x0079, 0x43ba, 0x4476, 0x44a7, 0x44a7, 0x44a7, 0x43db, 0x44b7,
+ 0x43e3, 0x44b7, 0x44b7, 0x44ba, 0x44ba, 0x44bf, 0x44bf, 0x43d3,
+ 0x43d3, 0x44a7, 0x44a7, 0x44b7, 0x44a7, 0x43e3, 0x4476, 0x43e3,
+ 0x43e3, 0x43e3, 0x43e3, 0x6827, 0x0084, 0x2009, 0x000b, 0x2001,
+ 0x4300, 0x0078, 0x44c9, 0x6827, 0x000d, 0x2009, 0x000b, 0x2001,
+ 0x4300, 0x0078, 0x44aa, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001,
+ 0x4300, 0x0078, 0x4492, 0x2001, 0x0000, 0x007c, 0x2200, 0x0079,
+ 0x43f1, 0x4476, 0x440a, 0x440a, 0x440a, 0x440a, 0x44b7, 0x44b7,
+ 0x44b7, 0x44b7, 0x44b7, 0x44b7, 0x44b7, 0x44b7, 0x440a, 0x440a,
+ 0x440a, 0x440a, 0x44b7, 0x440a, 0x440a, 0x44b7, 0x44b7, 0x44b7,
+ 0x44b7, 0x4476, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, 0x4300,
+ 0x0078, 0x4492, 0xa684, 0x0004, 0x00c0, 0x4426, 0x6804, 0xa084,
+ 0x00ff, 0xa086, 0x0006, 0x00c0, 0x467b, 0x1078, 0x44d0, 0x6807,
+ 0x0117, 0x1078, 0x3af8, 0x2001, 0x0002, 0x007c, 0x6000, 0xa084,
+ 0x0004, 0x0040, 0x467b, 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086,
+ 0x0006, 0x00c0, 0x4435, 0x6807, 0x0117, 0x6827, 0x0002, 0x1078,
+ 0x4708, 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078,
+ 0x3ad7, 0x1078, 0x44d0, 0x2b68, 0x1078, 0x3af8, 0x0d7f, 0x1078,
+ 0x3af8, 0x2001, 0x0002, 0x007c, 0x6000, 0xa084, 0x0004, 0x0040,
+ 0x467b, 0x2d58, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0006, 0x00c0,
+ 0x445b, 0x6807, 0x0117, 0x6827, 0x0002, 0x2d58, 0x1078, 0x4708,
+ 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, 0x3ae7,
+ 0x1078, 0x44d0, 0x2b68, 0x1078, 0x3af8, 0x0d7f, 0x1078, 0x3af8,
+ 0x2001, 0x0002, 0x007c, 0x1078, 0x467b, 0x007c, 0x70b4, 0xa080,
+ 0x00d2, 0x781a, 0x2001, 0x0001, 0x1078, 0x4691, 0x1078, 0x46ff,
+ 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x1078, 0x46c1, 0x1078,
+ 0x46f8, 0x1078, 0x42d3, 0x1078, 0x41d0, 0x1078, 0x46ff, 0x2001,
+ 0x0001, 0x007c, 0x1078, 0x46c1, 0x1078, 0x46f8, 0x1078, 0x42d3,
+ 0x70b4, 0xa080, 0x00d2, 0x781a, 0x2001, 0x0013, 0x1078, 0x4691,
+ 0x1078, 0x46ff, 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x1078,
+ 0x467b, 0x007c, 0x1078, 0x46c1, 0x1078, 0x46f8, 0x1078, 0x42d3,
+ 0x1078, 0x41d0, 0x1078, 0x46ff, 0x2001, 0x0001, 0x007c, 0x2001,
+ 0x0003, 0x007c, 0x1078, 0x458b, 0x2001, 0x0000, 0x007c, 0x0c7e,
+ 0x077e, 0x6f14, 0x1078, 0x36e2, 0x077f, 0x0c7f, 0x2001, 0x0000,
+ 0x007c, 0x1078, 0x46c1, 0x1078, 0x467b, 0x2001, 0x0006, 0x007c,
+ 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x44db, 0xa186,
+ 0x000f, 0x00c0, 0x44df, 0x1078, 0x46f8, 0x1078, 0x42d3, 0x70b4,
+ 0xa080, 0x00d2, 0x781a, 0x1078, 0x46ff, 0x7003, 0x0000, 0x007c,
+ 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004,
+ 0x00c8, 0x467b, 0x1079, 0x44f5, 0x007c, 0x467b, 0x44f9, 0x467b,
+ 0x4592, 0xa282, 0x0003, 0x0040, 0x4500, 0x1078, 0x467b, 0x007c,
+ 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, 0x00ff, 0x69b8, 0xa184,
+ 0x0100, 0x0040, 0x453f, 0xa18c, 0xfeff, 0x69ba, 0x78a0, 0xa005,
+ 0x00c0, 0x453f, 0xa4a4, 0x00ff, 0x0040, 0x4533, 0xa482, 0x000c,
+ 0x0040, 0x451c, 0x00c8, 0x4526, 0x852b, 0x852b, 0x1078, 0x3760,
+ 0x0040, 0x4526, 0x1078, 0x355b, 0x0078, 0x4535, 0x1078, 0x465d,
+ 0x1078, 0x3586, 0x69b8, 0xa18d, 0x0100, 0x69ba, 0xa6b5, 0x1000,
+ 0x7e5a, 0x0078, 0x4538, 0x1078, 0x3586, 0xa6b4, 0xefff, 0x7e5a,
+ 0x70b4, 0xa080, 0x0091, 0x781a, 0x2001, 0x0001, 0x007c, 0x0c7e,
+ 0x1078, 0x457f, 0x6200, 0xd2e4, 0x0040, 0x4570, 0x6208, 0x8217,
+ 0xa294, 0x00ff, 0xa282, 0x000c, 0x0048, 0x4552, 0x0040, 0x4552,
+ 0x2011, 0x000c, 0x2400, 0xa202, 0x00c8, 0x4557, 0x2220, 0x6208,
+ 0xa294, 0x00ff, 0x701c, 0xa202, 0x00c8, 0x455f, 0x721c, 0x2200,
+ 0xa502, 0x00c8, 0x4564, 0x2228, 0x1078, 0x4661, 0x852b, 0x852b,
+ 0x1078, 0x3760, 0x0040, 0x4570, 0x1078, 0x3562, 0x0078, 0x4574,
+ 0x1078, 0x465d, 0x1078, 0x358d, 0xa6b5, 0x1000, 0x7e5a, 0x70b4,
+ 0xa080, 0x00be, 0x781a, 0x2001, 0x0004, 0x0c7f, 0x007c, 0x007e,
+ 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0,
+ 0x5380, 0x007f, 0x007c, 0x0c7e, 0x1078, 0x457f, 0x1078, 0x358d,
+ 0x0c7f, 0x007c, 0xa282, 0x0002, 0x00c0, 0x467b, 0x7aa8, 0xa294,
+ 0x00ff, 0x69b8, 0xa184, 0x0200, 0x0040, 0x45c9, 0xa18c, 0xfdff,
+ 0x69ba, 0x78a0, 0xa005, 0x00c0, 0x45c9, 0xa282, 0x0002, 0x00c8,
+ 0x369d, 0x1078, 0x4627, 0x1078, 0x362b, 0x1078, 0x3586, 0xa684,
+ 0x0100, 0x0040, 0x45bf, 0x682c, 0xa084, 0x0001, 0x0040, 0x45bf,
+ 0xc6fc, 0x7888, 0xa084, 0x0040, 0x0040, 0x45bf, 0xc6fd, 0xa6b5,
+ 0x1000, 0x7e5a, 0x70b4, 0xa080, 0x0091, 0x781a, 0x2001, 0x0001,
+ 0x007c, 0x0c7e, 0x1078, 0x457f, 0xa284, 0xfffe, 0x0040, 0x45d4,
+ 0x2011, 0x0001, 0x0078, 0x45d8, 0xa284, 0x0001, 0x0040, 0x45de,
+ 0x6100, 0xd1ec, 0x00c0, 0x45de, 0x2011, 0x0000, 0x1078, 0x4619,
+ 0x1078, 0x3632, 0x1078, 0x358d, 0xa684, 0x0100, 0x0040, 0x45f4,
+ 0x682c, 0xa084, 0x0001, 0x0040, 0x45f4, 0xc6fc, 0x7888, 0xa084,
+ 0x0040, 0x0040, 0x45f4, 0xc6fd, 0xa6b5, 0x1000, 0x7e5a, 0x70b4,
+ 0xa080, 0x00be, 0x781a, 0x2001, 0x0004, 0x0c7f, 0x007c, 0x0c7e,
+ 0x2960, 0x6000, 0x2011, 0x0001, 0xa084, 0x2000, 0x00c0, 0x460a,
+ 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003,
+ 0x7aaa, 0xa8c0, 0x0004, 0x68b8, 0xa085, 0x0200, 0x68ba, 0x0c7f,
+ 0x007c, 0x789b, 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab,
+ 0x0003, 0x7aaa, 0x789b, 0x0081, 0x78ab, 0x0004, 0x007c, 0x0c7e,
+ 0x7054, 0x2060, 0x6000, 0xa084, 0x1000, 0x00c0, 0x4635, 0x2029,
+ 0x0032, 0x2021, 0x0000, 0x0078, 0x4655, 0x6508, 0xa5ac, 0x00ff,
+ 0x7018, 0xa086, 0x0028, 0x00c0, 0x4645, 0xa582, 0x0019, 0x00c8,
+ 0x464b, 0x2029, 0x0019, 0x0078, 0x464b, 0xa582, 0x000c, 0x00c8,
+ 0x464b, 0x2029, 0x000c, 0x6408, 0x8427, 0xa4a4, 0x00ff, 0xa482,
+ 0x000c, 0x0048, 0x4655, 0x2021, 0x000c, 0x1078, 0x4661, 0x68b8,
+ 0xa085, 0x0100, 0x68ba, 0x0c7f, 0x007c, 0x2021, 0x0000, 0x2029,
+ 0x0032, 0x789b, 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab,
+ 0x0001, 0x7daa, 0x7caa, 0x789b, 0x0081, 0x78ab, 0x0005, 0x007c,
+ 0x2001, 0x0003, 0x1078, 0x4689, 0x70b4, 0xa080, 0x00be, 0x781a,
+ 0x2001, 0x0005, 0x007c, 0x2001, 0x0007, 0x1078, 0x4689, 0xa6b5,
+ 0x1000, 0x7e5a, 0x70b4, 0xa080, 0x00be, 0x781a, 0x2001, 0x0004,
+ 0x007c, 0x789b, 0x0018, 0x78aa, 0x789b, 0x0081, 0x78ab, 0x0001,
+ 0x007c, 0x6904, 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, 0x469f,
+ 0xa196, 0x000f, 0x0040, 0x469f, 0x1078, 0x195a, 0x007c, 0x6924,
+ 0xa194, 0x003f, 0x00c0, 0x46a8, 0xa18c, 0xffc0, 0xa105, 0x6826,
+ 0x1078, 0x3af8, 0x691c, 0xa184, 0x0100, 0x0040, 0x46b5, 0x6914,
+ 0x1078, 0x3b69, 0x6204, 0x8210, 0x6206, 0x007c, 0x692c, 0x6834,
+ 0x682e, 0xa112, 0x6930, 0x6838, 0x6832, 0xa11b, 0xa200, 0xa301,
+ 0x007c, 0x0c7e, 0xade0, 0x0018, 0x6003, 0x0070, 0x6106, 0x600b,
+ 0x0000, 0x600f, 0x0a00, 0x6013, 0x0000, 0x6017, 0x0000, 0x8007,
+ 0x601a, 0x601f, 0x0000, 0x6023, 0x0000, 0x0c7f, 0x6824, 0xa085,
+ 0x0080, 0x6826, 0x007c, 0x157e, 0x137e, 0x147e, 0x2098, 0xaf80,
+ 0x002d, 0x20a0, 0x81ac, 0x0040, 0x46e6, 0x53a6, 0xa184, 0x0001,
+ 0x0040, 0x46ec, 0x3304, 0x78be, 0x147f, 0x137f, 0x157f, 0x007c,
+ 0x70b0, 0xa005, 0x10c0, 0x23eb, 0x70b3, 0x8000, 0x0078, 0x4a3a,
+ 0x71b0, 0x81ff, 0x0040, 0x46fe, 0x1078, 0x4b30, 0x007c, 0x71b0,
+ 0x81ff, 0x0040, 0x4707, 0x70b3, 0x0000, 0x1078, 0x4776, 0x007c,
+ 0x0c7e, 0x0d7e, 0x1078, 0x1937, 0x0c7f, 0x157e, 0x137e, 0x147e,
+ 0x2da0, 0x2c98, 0x20a9, 0x0031, 0x53a3, 0x147f, 0x137f, 0x157f,
+ 0x6807, 0x010d, 0x680b, 0x0000, 0x7004, 0x8007, 0x681a, 0x6823,
+ 0x0000, 0x681f, 0x0000, 0x689f, 0x0000, 0x0c7f, 0x007c, 0x70b4,
+ 0xa080, 0x0091, 0x781a, 0x0078, 0x2459, 0x70b4, 0xa080, 0x0081,
+ 0x781a, 0x0078, 0x2459, 0x70b4, 0xa080, 0x00be, 0x781a, 0x0078,
+ 0x2459, 0x70b4, 0xa080, 0x00c8, 0x781a, 0x0078, 0x2459, 0x6904,
+ 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, 0x474c, 0xa196, 0x000f,
+ 0x0040, 0x474c, 0x6807, 0x0117, 0x2001, 0x0200, 0x6826, 0x8007,
+ 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000, 0x6822, 0x2031,
+ 0x0400, 0x6eb6, 0x7e5a, 0x71b4, 0xa188, 0x0091, 0x791a, 0x007c,
+ 0x1078, 0x46ff, 0x7848, 0xa085, 0x000c, 0x784a, 0x70b4, 0xa080,
+ 0x00d2, 0x781a, 0x2009, 0x000b, 0x2001, 0x4400, 0x1078, 0x46c1,
+ 0x2001, 0x0013, 0x1078, 0x4691, 0x0078, 0x3b96, 0x127e, 0x2091,
+ 0x2200, 0x2049, 0x4776, 0x7000, 0x7204, 0xa205, 0x720c, 0xa215,
+ 0x7008, 0xa084, 0xfff7, 0xa205, 0x0040, 0x4788, 0x0078, 0x478d,
+ 0x7003, 0x0000, 0x127f, 0x2000, 0x007c, 0x7000, 0xa084, 0x0001,
+ 0x00c0, 0x47bb, 0x7108, 0x8103, 0x00c8, 0x479a, 0x1078, 0x48bd,
+ 0x0078, 0x4792, 0x700c, 0xa08c, 0x00ff, 0x0040, 0x47bb, 0x7004,
+ 0x8004, 0x00c8, 0x47b2, 0x7014, 0xa005, 0x00c0, 0x47ae, 0x7010,
+ 0xa005, 0x0040, 0x47b2, 0xa102, 0x00c8, 0x4792, 0x7007, 0x0010,
+ 0x0078, 0x47bb, 0x8aff, 0x0040, 0x47bb, 0x1078, 0x4b07, 0x00c0,
+ 0x47b5, 0x0040, 0x4792, 0x1078, 0x4846, 0x7003, 0x0000, 0x127f,
+ 0x2000, 0x007c, 0x017e, 0x6104, 0xa18c, 0x00ff, 0xa186, 0x0007,
+ 0x0040, 0x47ce, 0xa18e, 0x000f, 0x00c0, 0x47d1, 0x6040, 0x0078,
+ 0x47d2, 0x6428, 0x017f, 0x84ff, 0x0040, 0x47fc, 0x2c70, 0x7004,
+ 0xa0bc, 0x000f, 0xa7b8, 0x480c, 0x273c, 0x87fb, 0x00c0, 0x47ea,
+ 0x0048, 0x47e4, 0x1078, 0x23eb, 0x609c, 0xa075, 0x0040, 0x47fc,
+ 0x0078, 0x47d7, 0x2704, 0xae68, 0x6808, 0xa630, 0x680c, 0xa529,
+ 0x8421, 0x0040, 0x47fc, 0x8738, 0x2704, 0xa005, 0x00c0, 0x47eb,
+ 0x709c, 0xa075, 0x00c0, 0x47d7, 0x007c, 0x0000, 0x0005, 0x0009,
+ 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, 0x0003, 0x0009,
+ 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x4801, 0x47fe, 0x0000,
+ 0x0000, 0x8000, 0x0000, 0x4801, 0x0000, 0x4809, 0x4806, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4809, 0x0000, 0x4804, 0x4804, 0x0000,
+ 0x0000, 0x8000, 0x0000, 0x4804, 0x0000, 0x480a, 0x480a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x480a, 0x127e, 0x2091, 0x2200, 0x2079,
+ 0x5100, 0x2071, 0x0010, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003,
+ 0x0000, 0x2071, 0x0020, 0x7007, 0x000a, 0x7007, 0x0002, 0x7003,
+ 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, 0x2049, 0x4846,
+ 0x2019, 0x0000, 0x7004, 0x8004, 0x00c8, 0x4899, 0x7007, 0x0012,
+ 0x7108, 0x7008, 0xa106, 0x00c0, 0x4850, 0xa184, 0x01e0, 0x0040,
+ 0x485b, 0x1078, 0x23eb, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0005,
+ 0x00c8, 0x4866, 0xa184, 0x4000, 0x00c0, 0x4850, 0xa19c, 0x300c,
+ 0xa386, 0x2004, 0x0040, 0x4874, 0xa386, 0x0008, 0x0040, 0x487f,
+ 0xa386, 0x200c, 0x00c0, 0x4850, 0x7200, 0x8204, 0x0048, 0x487f,
+ 0x730c, 0xa384, 0x00ff, 0x0040, 0x487f, 0x1078, 0x23eb, 0x7007,
+ 0x0012, 0x7000, 0xa084, 0x0001, 0x00c0, 0x4899, 0x7008, 0xa084,
+ 0x01e0, 0x00c0, 0x4899, 0x7310, 0x7014, 0xa305, 0x0040, 0x4899,
+ 0x710c, 0xa184, 0x0300, 0x00c0, 0x4899, 0xa184, 0x00ff, 0x00c0,
+ 0x4846, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xa084, 0x0008,
+ 0x00c0, 0x489d, 0x7007, 0x0012, 0x7108, 0x8103, 0x0048, 0x48a2,
+ 0x7003, 0x0000, 0x2049, 0x0000, 0x007c, 0x107e, 0x007e, 0x127e,
+ 0x157e, 0x2091, 0x2200, 0x7108, 0x1078, 0x48bd, 0x157f, 0x127f,
+ 0x2091, 0x8001, 0x007f, 0x107f, 0x007c, 0x7204, 0x7500, 0x730c,
+ 0xa384, 0x0300, 0x00c0, 0x48e4, 0xa184, 0x01e0, 0x00c0, 0x4908,
+ 0x7108, 0xa184, 0x01e0, 0x00c0, 0x4908, 0x2001, 0x04fd, 0x2004,
+ 0xa082, 0x0005, 0x00c8, 0x48d8, 0xa184, 0x4000, 0x00c0, 0x48c8,
+ 0xa184, 0x0007, 0x0079, 0x48dc, 0x48e6, 0x48f8, 0x48e4, 0x48f8,
+ 0x48e4, 0x4944, 0x48e4, 0x4942, 0x1078, 0x23eb, 0x7004, 0xa084,
+ 0x0010, 0xa085, 0x0002, 0x7006, 0x8aff, 0x00c0, 0x48f3, 0x2049,
+ 0x0000, 0x0078, 0x48f7, 0x1078, 0x4b07, 0x00c0, 0x48f3, 0x007c,
+ 0x7004, 0xa084, 0x0010, 0xa085, 0x0002, 0x7006, 0x8aff, 0x00c0,
+ 0x4903, 0x0078, 0x4907, 0x1078, 0x4b07, 0x00c0, 0x4903, 0x007c,
+ 0x7007, 0x0012, 0x7108, 0x00e0, 0x490b, 0x2091, 0x6000, 0x00e0,
+ 0x490f, 0x2091, 0x6000, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004,
+ 0xa084, 0x0008, 0x00c0, 0x4917, 0x7007, 0x0012, 0x7108, 0x8103,
+ 0x0048, 0x491c, 0x7003, 0x0000, 0x7000, 0xa005, 0x00c0, 0x4930,
+ 0x7004, 0xa005, 0x00c0, 0x4930, 0x700c, 0xa005, 0x0040, 0x4932,
+ 0x0078, 0x4913, 0x2049, 0x0000, 0x1078, 0x3809, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x493d, 0x681b, 0x0002, 0x007c, 0x1078, 0x23eb,
+ 0x1078, 0x23eb, 0x1078, 0x49a0, 0x7210, 0x7114, 0x700c, 0xa09c,
+ 0x00ff, 0x2800, 0xa300, 0xa211, 0xa189, 0x0000, 0x1078, 0x49a0,
+ 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200, 0xa322, 0x630c, 0x2100,
+ 0xa31b, 0x2400, 0xa305, 0x0040, 0x4967, 0x00c8, 0x4967, 0x8412,
+ 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0078, 0x494e, 0x2b60,
+ 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008, 0x0040, 0x4973, 0xa7ba,
+ 0x4806, 0x0078, 0x4975, 0xa7ba, 0x47fe, 0x007f, 0xa73d, 0x2c00,
+ 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x7007, 0x0012, 0x1078, 0x4846,
+ 0x007c, 0x8738, 0x2704, 0xa005, 0x00c0, 0x4994, 0x609c, 0xa005,
+ 0x0040, 0x499d, 0x2060, 0x6004, 0xa084, 0x000f, 0xa080, 0x480c,
+ 0x203c, 0x87fb, 0x1040, 0x23eb, 0x8a51, 0x0040, 0x499c, 0x7008,
+ 0xa084, 0x0003, 0xa086, 0x0003, 0x007c, 0x2051, 0x0000, 0x007c,
+ 0x8a50, 0x8739, 0x2704, 0xa004, 0x00c0, 0x49b4, 0x6000, 0xa064,
+ 0x00c0, 0x49ab, 0x2d60, 0x6004, 0xa084, 0x000f, 0xa080, 0x481c,
+ 0x203c, 0x87fb, 0x1040, 0x23eb, 0x007c, 0x127e, 0x0d7e, 0x2091,
+ 0x2200, 0x0d7f, 0x6884, 0x2060, 0x6888, 0x6b8c, 0x6c90, 0x8057,
+ 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x007e, 0x6804, 0xa084, 0x0008,
+ 0x007f, 0x0040, 0x49cf, 0xa0b8, 0x4806, 0x0078, 0x49d1, 0xa0b8,
+ 0x47fe, 0x7e08, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186,
+ 0x0007, 0x0040, 0x49df, 0xa18e, 0x000f, 0x00c0, 0x49e8, 0x681c,
+ 0xa084, 0x0040, 0x0040, 0x49ef, 0xa6b5, 0x0001, 0x0078, 0x49ef,
+ 0x681c, 0xa084, 0x0040, 0x0040, 0x49ef, 0xa6b5, 0x0001, 0x7007,
+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x49f1, 0x2400, 0xa305,
+ 0x00c0, 0x49fc, 0x0078, 0x4a22, 0x2c58, 0x2704, 0x6104, 0xac60,
+ 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, 0xa184, 0x0008,
+ 0x0040, 0x4a12, 0x6010, 0xa081, 0x0000, 0x7022, 0x6014, 0xa081,
+ 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, 0x620c, 0x2300,
+ 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078, 0x4981,
+ 0x0078, 0x4a24, 0x1078, 0x4b07, 0x00c0, 0x4a22, 0x127f, 0x2000,
+ 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x7007, 0x0004,
+ 0x7004, 0xa084, 0x0004, 0x00c0, 0x4a30, 0x7003, 0x0008, 0x127f,
+ 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x2049,
+ 0x4a3a, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x4a43,
+ 0x7e08, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007,
+ 0x0040, 0x4a56, 0xa18e, 0x000f, 0x00c0, 0x4a61, 0x681c, 0xa084,
+ 0x0040, 0x0040, 0x4a5d, 0xa6b5, 0x0001, 0x6840, 0x2050, 0x0078,
+ 0x4a6a, 0x681c, 0xa084, 0x0020, 0x00c0, 0x4a68, 0xa6b5, 0x0001,
+ 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, 0x000f, 0xa7b8, 0x480c,
+ 0x273c, 0x87fb, 0x00c0, 0x4a7e, 0x0048, 0x4a78, 0x1078, 0x23eb,
+ 0x689c, 0xa065, 0x0040, 0x4a82, 0x0078, 0x4a6b, 0x1078, 0x4b07,
+ 0x00c0, 0x4a7e, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e, 0x017e,
+ 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x037f, 0x047f, 0x7e08, 0xa6b5,
+ 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4a9c,
+ 0xa18e, 0x000f, 0x00c0, 0x4aa5, 0x681c, 0xa084, 0x0040, 0x0040,
+ 0x4aac, 0xa6b5, 0x0001, 0x0078, 0x4aac, 0x681c, 0xa084, 0x0040,
+ 0x0040, 0x4aac, 0xa6b5, 0x0001, 0x2049, 0x4a85, 0x017e, 0x6904,
+ 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4aba, 0xa18e, 0x000f,
+ 0x00c0, 0x4abd, 0x6840, 0x0078, 0x4abe, 0x6828, 0x017f, 0xa055,
+ 0x0040, 0x4b04, 0x2d70, 0x2e60, 0x7004, 0xa0bc, 0x000f, 0xa7b8,
+ 0x480c, 0x273c, 0x87fb, 0x00c0, 0x4ad8, 0x0048, 0x4ad1, 0x1078,
+ 0x23eb, 0x709c, 0xa075, 0x2060, 0x0040, 0x4b04, 0x0078, 0x4ac4,
+ 0x2704, 0xae68, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0048, 0x4af1,
+ 0x8a51, 0x00c0, 0x4ae5, 0x1078, 0x23eb, 0x8738, 0x2704, 0xa005,
+ 0x00c0, 0x4ad9, 0x709c, 0xa075, 0x2060, 0x0040, 0x4b04, 0x0078,
+ 0x4ac4, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x6908, 0x2400,
+ 0xa122, 0x690c, 0x2300, 0xa11b, 0x00c8, 0x4b00, 0x1078, 0x23eb,
+ 0x2071, 0x0020, 0x0078, 0x49ef, 0x127f, 0x2000, 0x007c, 0x7008,
+ 0xa084, 0x0003, 0xa086, 0x0003, 0x0040, 0x4b2f, 0x2704, 0xac08,
+ 0x2104, 0x701a, 0x8108, 0x2104, 0x701e, 0x8108, 0x2104, 0x7012,
+ 0x8108, 0x2104, 0x7016, 0x6004, 0xa084, 0x0008, 0x0040, 0x4b26,
+ 0x8108, 0x2104, 0x7022, 0x8108, 0x2104, 0x7026, 0x7602, 0x7004,
+ 0xa084, 0x0010, 0xa085, 0x0001, 0x7006, 0x1078, 0x4981, 0x007c,
+ 0x127e, 0x007e, 0x0d7e, 0x2091, 0x2200, 0x2049, 0x4b30, 0x0d7f,
+ 0x087f, 0x7108, 0xa184, 0x0003, 0x00c0, 0x4b5a, 0x017e, 0x6904,
+ 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x4b4a, 0xa18e, 0x000f,
+ 0x00c0, 0x4b4d, 0x6840, 0x0078, 0x4b4e, 0x6828, 0x017f, 0xa005,
+ 0x0040, 0x4b68, 0x0078, 0x478d, 0x0020, 0x4b5a, 0x1078, 0x4944,
+ 0x0078, 0x4b68, 0x00a0, 0x4b61, 0x7108, 0x1078, 0x48bd, 0x0078,
+ 0x4b39, 0x7007, 0x0010, 0x00a0, 0x4b63, 0x7108, 0x1078, 0x48bd,
+ 0x7008, 0xa086, 0x0008, 0x00c0, 0x4b39, 0x7000, 0xa005, 0x00c0,
+ 0x4b39, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c,
+ 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e, 0x2091, 0x2200,
+ 0x0d7f, 0x2049, 0x4b78, 0xad80, 0x0011, 0x20a0, 0x2099, 0x0031,
+ 0x700c, 0xa084, 0x00ff, 0x682a, 0x7007, 0x0008, 0x7007, 0x0002,
+ 0x7003, 0x0001, 0x0040, 0x4b97, 0x8000, 0x80ac, 0x53a5, 0x7007,
+ 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x4b99, 0x0c7f, 0x2049,
+ 0x0000, 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, 0x127f, 0x2000,
+ 0x007c, 0x2091, 0x6000, 0x2091, 0x8000, 0x78cc, 0xa005, 0x0040,
+ 0x4bc0, 0x7994, 0x70d0, 0xa106, 0x00c0, 0x4bc0, 0x7804, 0xa005,
+ 0x0040, 0x4bc0, 0x7807, 0x0000, 0x0068, 0x4bc0, 0x2091, 0x4080,
+ 0x7820, 0x8001, 0x7822, 0x00c0, 0x4c1b, 0x7824, 0x7822, 0x2069,
+ 0x5140, 0x6800, 0xa084, 0x0007, 0x0040, 0x4bde, 0xa086, 0x0002,
+ 0x0040, 0x4bde, 0x6834, 0xa00d, 0x0040, 0x4bde, 0x2104, 0xa005,
+ 0x0040, 0x4bde, 0x8001, 0x200a, 0x0040, 0x4cc3, 0x7848, 0xa005,
+ 0x0040, 0x4bec, 0x8001, 0x784a, 0x00c0, 0x4bec, 0x2009, 0x0102,
+ 0x6844, 0x200a, 0x1078, 0x21d2, 0x6890, 0xa005, 0x0040, 0x4bf8,
+ 0x8001, 0x6892, 0x00c0, 0x4bf8, 0x686f, 0x0000, 0x6873, 0x0001,
+ 0x2061, 0x5400, 0x20a9, 0x0100, 0x2009, 0x0002, 0x6034, 0xa005,
+ 0x0040, 0x4c0e, 0x8001, 0x6036, 0x00c0, 0x4c0e, 0x6010, 0xa005,
+ 0x0040, 0x4c0e, 0x017e, 0x1078, 0x21d2, 0x017f, 0xace0, 0x0010,
+ 0x0070, 0x4c14, 0x0078, 0x4bfe, 0x8109, 0x0040, 0x4c1b, 0x20a9,
+ 0x0100, 0x0078, 0x4bfe, 0x1078, 0x4c28, 0x1078, 0x4c4d, 0x2009,
+ 0x5151, 0x2104, 0x2009, 0x0102, 0x200a, 0x2091, 0x8001, 0x007c,
+ 0x7834, 0x8001, 0x7836, 0x00c0, 0x4c4c, 0x7838, 0x7836, 0x2091,
+ 0x8000, 0x7844, 0xa005, 0x00c0, 0x4c37, 0x2001, 0x0101, 0x8001,
+ 0x7846, 0xa080, 0x7400, 0x2040, 0x2004, 0xa065, 0x0040, 0x4c4c,
+ 0x6024, 0xa005, 0x0040, 0x4c48, 0x8001, 0x6026, 0x0040, 0x4c7c,
+ 0x6000, 0x2c40, 0x0078, 0x4c3d, 0x007c, 0x7828, 0x8001, 0x782a,
+ 0x00c0, 0x4c7b, 0x782c, 0x782a, 0x7830, 0xa005, 0x00c0, 0x4c5a,
+ 0x2001, 0x0200, 0x8001, 0x7832, 0x8003, 0x8003, 0x8003, 0x8003,
+ 0xa090, 0x5400, 0xa298, 0x0002, 0x2304, 0xa084, 0x0008, 0x0040,
+ 0x4c7b, 0xa290, 0x0009, 0x2204, 0xa005, 0x0040, 0x4c73, 0x8001,
+ 0x2012, 0x00c0, 0x4c7b, 0x2304, 0xa084, 0xfff7, 0xa085, 0x0080,
+ 0x201a, 0x1078, 0x21d2, 0x007c, 0x2069, 0x5140, 0x6800, 0xa005,
+ 0x0040, 0x4c86, 0x6848, 0xac06, 0x0040, 0x4cc3, 0x601b, 0x0006,
+ 0x60b4, 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085,
+ 0x0060, 0x6022, 0x6000, 0x2042, 0x6714, 0x6f82, 0x1078, 0x1973,
+ 0x6818, 0xa005, 0x0040, 0x4c9e, 0x8001, 0x681a, 0x6808, 0xa084,
+ 0xffef, 0x680a, 0x6810, 0x8001, 0x00d0, 0x4ca8, 0x1078, 0x23eb,
+ 0x6812, 0x602f, 0x0000, 0x6033, 0x0000, 0x2c68, 0x1078, 0x1c70,
+ 0x2069, 0x5140, 0x7944, 0xa184, 0x0100, 0x2001, 0x0006, 0x686e,
+ 0x00c0, 0x4cbe, 0x6986, 0x2001, 0x0004, 0x686e, 0x1078, 0x21cd,
+ 0x2091, 0x8001, 0x007c, 0x2069, 0x0100, 0x2009, 0x5140, 0x2104,
+ 0xa084, 0x0007, 0x0040, 0x4d1f, 0xa086, 0x0007, 0x00c0, 0x4cd9,
+ 0x0d7e, 0x2009, 0x5152, 0x216c, 0x1078, 0x3a4e, 0x0d7f, 0x0078,
+ 0x4d1f, 0x2009, 0x5152, 0x2164, 0x1078, 0x2396, 0x601b, 0x0006,
+ 0x6858, 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085,
+ 0x0048, 0x6022, 0x602f, 0x0000, 0x6033, 0x0000, 0x6830, 0xa084,
+ 0x0040, 0x0040, 0x4d13, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848,
+ 0xa084, 0x0004, 0x0040, 0x4d00, 0x0070, 0x4d00, 0x0078, 0x4cf7,
+ 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040,
+ 0x4d0d, 0x0070, 0x4d0d, 0x0078, 0x4d04, 0x20a9, 0x00fa, 0x0070,
+ 0x4d13, 0x0078, 0x4d0f, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b,
+ 0x0048, 0x2009, 0x515b, 0x200b, 0x0007, 0x784c, 0x784a, 0x2091,
+ 0x8001, 0x007c, 0x2079, 0x5100, 0x1078, 0x4d4d, 0x1078, 0x4d31,
+ 0x1078, 0x4d3f, 0x7833, 0x0000, 0x7847, 0x0000, 0x784b, 0x0000,
+ 0x007c, 0x2019, 0x0003, 0x2011, 0x5146, 0x2204, 0xa086, 0x003c,
+ 0x0040, 0x4d3c, 0x2019, 0x0002, 0x7b2a, 0x7b2e, 0x007c, 0x2019,
+ 0x0039, 0x2011, 0x5146, 0x2204, 0xa086, 0x003c, 0x0040, 0x4d4a,
+ 0x2019, 0x0027, 0x7b36, 0x7b3a, 0x007c, 0x2019, 0x3971, 0x2011,
+ 0x5146, 0x2204, 0xa086, 0x003c, 0x0040, 0x4d58, 0x2019, 0x2626,
+ 0x7b22, 0x7b26, 0x783f, 0x0000, 0x7843, 0x000a, 0x007c, 0x0020,
+ 0x002b, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0014, 0x0014, 0x9849, 0x0014, 0x0014, 0x0014,
+ 0x0014, 0x0014, 0x0014, 0x0014, 0x0080, 0x000f, 0x0000, 0x0201,
+ 0x0604, 0x0c08, 0x2120, 0x4022, 0xf880, 0x0018, 0x300b, 0xa201,
+ 0x0014, 0xa200, 0x0014, 0xa200, 0x0214, 0x0000, 0x006c, 0x0002,
+ 0x0014, 0x98d0, 0x009e, 0x0096, 0xa202, 0x8838, 0x3806, 0x8839,
+ 0x20c3, 0x0864, 0x9884, 0x28c1, 0x9cb1, 0xa203, 0x300c, 0x2846,
+ 0x8161, 0x846a, 0x8300, 0x1856, 0x883a, 0x9865, 0x28f2, 0x9c90,
+ 0x9858, 0x300c, 0x28e1, 0x9c90, 0x2802, 0xa206, 0x64c3, 0x282d,
+ 0xa207, 0x64a0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7824, 0x68c1,
+ 0x7864, 0x883e, 0x9878, 0x8576, 0x8677, 0x206b, 0x28c1, 0x9cb1,
+ 0x2044, 0x2103, 0x20a2, 0x2081, 0x9865, 0xa209, 0x2901, 0x988c,
+ 0x0014, 0xa205, 0xa300, 0x1872, 0x879a, 0x883c, 0x1fe2, 0xc601,
+ 0xa20a, 0x856e, 0x0704, 0x9c90, 0x0014, 0xa204, 0xa300, 0x3009,
+ 0x19e2, 0xf868, 0x8176, 0x86eb, 0x85eb, 0x872e, 0x87a9, 0x883f,
+ 0x08e6, 0x9890, 0xf881, 0x988b, 0xc801, 0x0014, 0xf8c1, 0x0016,
+ 0x85b2, 0x80f0, 0x9532, 0xfb02, 0x1de2, 0x0014, 0x8532, 0xf241,
+ 0x0014, 0x1de2, 0x84a8, 0xd7a0, 0x1fe6, 0x0014, 0xa208, 0x6043,
+ 0x8008, 0x1dc1, 0x0016, 0x8300, 0x8160, 0x842a, 0xf041, 0x3008,
+ 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d5, 0x8822, 0x0016,
+ 0x8000, 0x2847, 0x1011, 0x98c3, 0x8000, 0xa000, 0x2802, 0x1011,
+ 0x98c9, 0x9865, 0x283e, 0x1011, 0x98cd, 0xa20b, 0x0017, 0x300c,
+ 0xa300, 0x1de2, 0xdb81, 0x0014, 0x0210, 0x98da, 0x0014, 0x26e0,
+ 0x873a, 0xfb02, 0x19f2, 0x1fe2, 0x0014, 0xa20d, 0x3806, 0x0210,
+ 0x9cb6, 0x0704, 0x0000, 0x006c, 0x0002, 0x984f, 0x0014, 0x009e,
+ 0x00a5, 0x0017, 0x60ff, 0x300c, 0x8720, 0xa211, 0x9cd5, 0x8772,
+ 0x8837, 0x2101, 0x987a, 0x10d2, 0x78e2, 0x9cd8, 0x9859, 0xd984,
+ 0xf0e2, 0xf0a1, 0x98d2, 0x0014, 0x8831, 0xd166, 0x8830, 0x800f,
+ 0x9401, 0xb520, 0xc802, 0x8820, 0x987a, 0x2301, 0x987a, 0x10d2,
+ 0x78e4, 0x9cd8, 0x8821, 0x8820, 0x9859, 0xf123, 0xf142, 0xf101,
+ 0x98cb, 0x10d2, 0x70f6, 0x8832, 0x8203, 0x870c, 0xd99e, 0x6001,
+ 0x0014, 0x6845, 0x0214, 0xa21b, 0x9cd5, 0x2001, 0x98ca, 0x8201,
+ 0x1852, 0xd184, 0xd163, 0x8834, 0x8001, 0x988d, 0x3027, 0x84a8,
+ 0x1a56, 0x8833, 0x0014, 0xa218, 0x6981, 0x9cc1, 0x692a, 0x6902,
+ 0x1834, 0x989d, 0x1a14, 0x8010, 0x8592, 0x8026, 0x84b9, 0x7021,
+ 0x0014, 0xa300, 0x69e1, 0x9caa, 0x694c, 0xa213, 0x9cba, 0x1462,
+ 0xa213, 0x8000, 0x16e1, 0x98b4, 0x8023, 0x16e1, 0x8001, 0x10f1,
+ 0x0016, 0x6968, 0xa214, 0x9cba, 0x8004, 0x16e1, 0x0101, 0x300a,
+ 0x8827, 0x0014, 0x9cba, 0x0014, 0x61c2, 0x8002, 0x14e1, 0x0016,
+ 0xa217, 0x9cc1, 0x0014, 0xa300, 0x8181, 0x842a, 0x84a8, 0x1ce6,
+ 0x882c, 0x0016, 0xa212, 0x9cd5, 0x10d2, 0x70e4, 0x0004, 0x8007,
+ 0x9424, 0xcc1a, 0x9cd8, 0x98ca, 0x8827, 0x300a, 0x0013, 0x8000,
+ 0x84a4, 0x0016, 0x11c2, 0x211e, 0x870e, 0xa21d, 0x0014, 0x878e,
+ 0x0016, 0xa21c, 0x1035, 0x9891, 0xa210, 0xa000, 0x8010, 0x8592,
+ 0x853b, 0xd044, 0x8022, 0x3807, 0x84bb, 0x98ef, 0x8021, 0x3807,
+ 0x84b9, 0x300c, 0x817e, 0x872b, 0x8772, 0x9891, 0x0000, 0x0020,
+ 0x002b, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0014, 0x0014, 0x9849, 0x0014, 0x0014, 0x98e5,
+ 0x98d0, 0x0014, 0x0014, 0x0014, 0x0080, 0x013f, 0x0000, 0x0201,
+ 0x0604, 0x0c08, 0x2120, 0x4022, 0xf880, 0x0018, 0x300b, 0xa201,
+ 0x0014, 0xa200, 0x0014, 0xa200, 0x0214, 0xa202, 0x8838, 0x3806,
+ 0x8839, 0x20c3, 0x0864, 0xa82e, 0x28c1, 0x9cb1, 0xa203, 0x300c,
+ 0x2846, 0x8161, 0x846a, 0x8300, 0x1856, 0x883a, 0xa804, 0x28f2,
+ 0x9c90, 0xa8f4, 0x300c, 0x28e1, 0x9c90, 0x2802, 0xa206, 0x64c3,
+ 0x282d, 0xa207, 0x64a0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7824,
+ 0x68c1, 0x7864, 0x883e, 0xa802, 0x8576, 0x8677, 0x206b, 0x28c1,
+ 0x9cb1, 0x2044, 0x2103, 0x20a2, 0x2081, 0xa8e5, 0xa209, 0x2901,
+ 0xa809, 0x0014, 0xa205, 0xa300, 0x1872, 0x879a, 0x883c, 0x1fe2,
+ 0xc601, 0xa20a, 0x856e, 0x0704, 0x9c90, 0x0014, 0xa204, 0xa300,
+ 0x3009, 0x19e2, 0xf868, 0x8176, 0x86eb, 0x85eb, 0x872e, 0x87a9,
+ 0x883f, 0x08e6, 0xa8f3, 0xf881, 0xa8ec, 0xc801, 0x0014, 0xf8c1,
+ 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfb02, 0x1de2, 0x0014, 0x8532,
+ 0xf241, 0x0014, 0x1de2, 0x84a8, 0xd7a0, 0x1fe6, 0x0014, 0xa208,
+ 0x6043, 0x8008, 0x1dc1, 0x0016, 0x8300, 0x8160, 0x842a, 0xf041,
+ 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d5, 0x8822,
+ 0x0016, 0x8000, 0x2847, 0x1011, 0xa8fc, 0x8000, 0xa000, 0x2802,
+ 0x1011, 0xa8fd, 0xa898, 0x283e, 0x1011, 0xa8fd, 0xa20b, 0x0017,
+ 0x300c, 0xa300, 0x1de2, 0xdb81, 0x0014, 0x0210, 0xa801, 0x0014,
+ 0x26e0, 0x873a, 0xfb02, 0x19f2, 0x1fe2, 0x0014, 0xa20d, 0x3806,
+ 0x0210, 0x9cb6, 0x0704, 0x0017, 0x60ff, 0x300c, 0x8720, 0xa211,
+ 0x9d6b, 0x8772, 0x8837, 0x2101, 0xa821, 0x10d2, 0x78e2, 0x9d6e,
+ 0xa8fc, 0xd984, 0xf0e2, 0xf0a1, 0xa871, 0x0014, 0x8831, 0xd166,
+ 0x8830, 0x800f, 0x9401, 0xb520, 0xc802, 0x8820, 0xa80f, 0x2301,
+ 0xa80d, 0x10d2, 0x78e4, 0x9d6e, 0x8821, 0x8820, 0xa8e6, 0xf123,
+ 0xf142, 0xf101, 0xa854, 0x10d2, 0x70f6, 0x8832, 0x8203, 0x870c,
+ 0xd99e, 0x6001, 0x0014, 0x6845, 0x0214, 0xa21b, 0x9d6b, 0x2001,
+ 0xa845, 0x8201, 0x1852, 0xd184, 0xd163, 0x8834, 0x8001, 0xa801,
+ 0x3027, 0x84a8, 0x1a56, 0x8833, 0x0014, 0xa218, 0x6981, 0x9d57,
+ 0x692a, 0x6902, 0x1834, 0xa805, 0x1a14, 0x8010, 0x8592, 0x8026,
+ 0x84b9, 0x7021, 0x0014, 0xa300, 0x69e1, 0x9d40, 0x694c, 0xa213,
+ 0x9d50, 0x1462, 0xa213, 0x8000, 0x16e1, 0xa80a, 0x8023, 0x16e1,
+ 0x8001, 0x10f1, 0x0016, 0x6968, 0xa214, 0x9d50, 0x8004, 0x16e1,
+ 0x0101, 0x300a, 0x8827, 0x0014, 0x9d50, 0x0014, 0x61c2, 0x8002,
+ 0x14e1, 0x0016, 0xa217, 0x9d57, 0x0014, 0xa300, 0x8181, 0x842a,
+ 0x84a8, 0x1ce6, 0x882c, 0x0016, 0xa212, 0x9d6b, 0x10d2, 0x70e4,
+ 0x0004, 0x8007, 0x9424, 0xcc1a, 0x9d6e, 0xa8f8, 0x8827, 0x300a,
+ 0x0013, 0x8000, 0x84a4, 0x0016, 0x11c2, 0x211e, 0x870e, 0xa21d,
+ 0x0014, 0x878e, 0x0016, 0xa21c, 0x1035, 0xa8af, 0xa210, 0x3807,
+ 0x300c, 0x817e, 0x872b, 0x8772, 0xa8a8, 0x0000, 0xdf21
+};
diff --git a/sys/dev/ispfw/asm_1080.h b/sys/dev/ispfw/asm_1080.h
new file mode 100644
index 000000000000..7a2899d577a5
--- /dev/null
+++ b/sys/dev/ispfw/asm_1080.h
@@ -0,0 +1,4425 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (C) 1995, 1996, 1997, 1998, 1999 Qlogic, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted provided
+ * that the following conditions are met:
+ * 1. Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/************************************************************************
+ * *
+ * --- ISP1240/ISP1080/ISP1280 Initiator Firmware --- *
+ * 32 LUN Support *
+ * *
+ ************************************************************************/
+/*
+ * Firmware Version 8.13.00 (17:25 Nov 09, 1999)
+ */
+static const u_int16_t isp_1080_risc_code[] = {
+ 0x0078, 0x1041, 0x0000, 0x3c42, 0x0000, 0x2043, 0x4f50, 0x5952,
+ 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932, 0x2c31,
+ 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749, 0x4320,
+ 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049, 0x5350,
+ 0x3132, 0x3430, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056,
+ 0x6572, 0x7369, 0x6f6e, 0x2030, 0x382e, 0x3133, 0x2020, 0x2043,
+ 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, 0x3030, 0x2050,
+ 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, 0x3030, 0x2020,
+ 0x2400, 0x20c9, 0x96ff, 0x2001, 0x04fc, 0x2004, 0xa086, 0x1080,
+ 0x00c0, 0x1054, 0x2071, 0x0100, 0x70a0, 0x70a2, 0x20c1, 0x0010,
+ 0x2089, 0x1374, 0x0078, 0x106d, 0x2001, 0x04fc, 0x2004, 0xa086,
+ 0x1280, 0x00c0, 0x1069, 0x2071, 0x0200, 0x70a0, 0x70a2, 0x2071,
+ 0x0100, 0x70a0, 0x70a2, 0x20c1, 0x0010, 0x2089, 0x13f8, 0x0078,
+ 0x106d, 0x20c1, 0x0020, 0x2089, 0x131c, 0x2071, 0x0010, 0x70c3,
+ 0x0004, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3,
+ 0x0008, 0x2001, 0x04fe, 0x70d6, 0x20c1, 0x0021, 0x2019, 0x0000,
+ 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, 0xa1ec, 0x7fff, 0x2d64,
+ 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, 0x205b, 0x5050, 0x2114,
+ 0xa286, 0xa5a5, 0x0040, 0x10a4, 0xa386, 0x000f, 0x0040, 0x10a0,
+ 0x2c6a, 0x2a5a, 0x20c1, 0x0020, 0x2019, 0x000f, 0x0078, 0x1080,
+ 0x2c6a, 0x2a5a, 0x0078, 0x10a2, 0x2c6a, 0x2a5a, 0x2130, 0x2128,
+ 0xa1a2, 0x4d00, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424,
+ 0xa192, 0x9700, 0x2009, 0x0000, 0x2001, 0x0032, 0x1078, 0x2061,
+ 0x2218, 0x2079, 0x4d00, 0x2fa0, 0x2408, 0x2011, 0x0000, 0x20a9,
+ 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10bf, 0x2009, 0xff00, 0x3400,
+ 0xa102, 0x0048, 0x10cf, 0x0040, 0x10cf, 0x20a8, 0x42a4, 0x2001,
+ 0x04fc, 0x2004, 0xa086, 0x1080, 0x00c0, 0x10e5, 0x2071, 0x0100,
+ 0x0d7e, 0x2069, 0x4d40, 0x1078, 0x4c09, 0x0d7f, 0x7810, 0xc0ed,
+ 0x7812, 0x781b, 0x0064, 0x0078, 0x110a, 0x2001, 0x04fc, 0x2004,
+ 0xa086, 0x1280, 0x00c0, 0x1105, 0x7814, 0xc0ed, 0xc0d5, 0x7816,
+ 0x781b, 0x0064, 0x2071, 0x0200, 0x0d7e, 0x2069, 0x4d40, 0x1078,
+ 0x4c09, 0x2069, 0x4d80, 0x2071, 0x0100, 0x1078, 0x4c09, 0x7814,
+ 0xc0d4, 0x7816, 0x0d7f, 0x0078, 0x110a, 0x7814, 0xc0e5, 0x7816,
+ 0x781b, 0x003c, 0x7eca, 0x7cc2, 0x7bc6, 0x7867, 0x0000, 0x7800,
+ 0xc08d, 0x7802, 0x2031, 0x0030, 0x78af, 0x0101, 0x7823, 0x0002,
+ 0x7827, 0x0002, 0x2009, 0x0002, 0x2069, 0x4d40, 0x681b, 0x0003,
+ 0x6823, 0x0007, 0x6827, 0x00fa, 0x682b, 0x0008, 0x682f, 0x0028,
+ 0x6837, 0x0000, 0x683b, 0x0006, 0x6833, 0x0008, 0x683f, 0x0000,
+ 0x8109, 0x0040, 0x115e, 0x68d3, 0x000a, 0x68c3, 0x4dc0, 0x2079,
+ 0x4d00, 0x7814, 0xd0e4, 0x00c0, 0x1144, 0xd0ec, 0x00c0, 0x1148,
+ 0x68d7, 0x7329, 0x0078, 0x114a, 0x68d7, 0x730d, 0x0078, 0x114a,
+ 0x68d7, 0x732d, 0x68c7, 0x52c0, 0x68cb, 0x51c0, 0x68cf, 0x92c0,
+ 0x68ab, 0x9544, 0x68af, 0x9549, 0x68b3, 0x9544, 0x68b7, 0x9544,
+ 0x68a7, 0x0001, 0x2069, 0x4d80, 0x0078, 0x111e, 0x68d3, 0x000a,
+ 0x68c3, 0x4fc0, 0x7814, 0xd0e4, 0x00c0, 0x116a, 0x68d7, 0x7439,
+ 0x0078, 0x116c, 0x68d7, 0x7419, 0x68c7, 0x72c0, 0x68cb, 0x5240,
+ 0x68cf, 0x93d0, 0x68ab, 0x9549, 0x68af, 0x954e, 0x68b3, 0x9549,
+ 0x68b7, 0x9549, 0x68a7, 0x0001, 0x7810, 0xd0ec, 0x00c0, 0x11c2,
+ 0x7814, 0xd0e4, 0x00c0, 0x11b4, 0x0e7e, 0x2069, 0x51c0, 0x2071,
+ 0x0200, 0x70ec, 0xd0e4, 0x00c0, 0x1195, 0x2019, 0x0c0c, 0x2021,
+ 0x000c, 0x1078, 0x1ff0, 0x0078, 0x119b, 0x2019, 0x0c0a, 0x2021,
+ 0x000a, 0x1078, 0x1ff0, 0x2069, 0x5240, 0x2071, 0x0100, 0x70ec,
+ 0xd0e4, 0x00c0, 0x11ab, 0x2019, 0x0c0c, 0x2021, 0x000c, 0x1078,
+ 0x1ff0, 0x0078, 0x11b1, 0x2019, 0x0c0a, 0x2021, 0x000a, 0x1078,
+ 0x1ff0, 0x0e7f, 0x0078, 0x11db, 0x2019, 0x0c0c, 0x2021, 0x000c,
+ 0x2069, 0x51c0, 0x1078, 0x1ff0, 0x2069, 0x5240, 0x1078, 0x1ff0,
+ 0x0078, 0x11db, 0x2069, 0x51c0, 0x0e7e, 0x2071, 0x0100, 0x70ec,
+ 0xd0e4, 0x00c0, 0x11d4, 0x2019, 0x0c0c, 0x2021, 0x000c, 0x1078,
+ 0x1ff0, 0x0e7f, 0x0078, 0x11db, 0x2019, 0x0c0a, 0x2021, 0x000a,
+ 0x1078, 0x1ff0, 0x0e7f, 0x2011, 0x0002, 0x2069, 0x52c0, 0x2009,
+ 0x0002, 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, 0x0040, 0x7bc8,
+ 0xa386, 0xfeff, 0x00c0, 0x11f2, 0x6817, 0x0100, 0x681f, 0x0064,
+ 0x0078, 0x11f6, 0x6817, 0x0064, 0x681f, 0x0002, 0xade8, 0x0010,
+ 0x00f0, 0x11e3, 0x8109, 0x00c0, 0x11e1, 0x8211, 0x0040, 0x1204,
+ 0x2069, 0x72c0, 0x0078, 0x11df, 0x1078, 0x261d, 0x1078, 0x45d4,
+ 0x1078, 0x1dbb, 0x1078, 0x4bb2, 0x2091, 0x2100, 0x2079, 0x4d00,
+ 0x7810, 0xd0ec, 0x0040, 0x1218, 0x2071, 0x0020, 0x0078, 0x121a,
+ 0x2071, 0x0050, 0x2091, 0x2200, 0x2079, 0x4d00, 0x2071, 0x0020,
+ 0x2091, 0x2300, 0x2079, 0x4d00, 0x7810, 0xd0ec, 0x0040, 0x122c,
+ 0x2079, 0x0100, 0x0078, 0x122e, 0x2079, 0x0200, 0x2071, 0x4d40,
+ 0x2091, 0x2400, 0x2079, 0x0100, 0x2071, 0x4d80, 0x2091, 0x2000,
+ 0x2079, 0x4d00, 0x2071, 0x0010, 0x3200, 0xa085, 0x303d, 0x2090,
+ 0x2071, 0x0010, 0x70c3, 0x0000, 0x0090, 0x124d, 0x70c0, 0xa086,
+ 0x0002, 0x00c0, 0x124d, 0x1078, 0x15ba, 0x2039, 0x0000, 0x7810,
+ 0xd0ec, 0x00c0, 0x12cf, 0x1078, 0x148e, 0x78ac, 0xa005, 0x00c0,
+ 0x126b, 0x0068, 0x1261, 0x786c, 0xa065, 0x0040, 0x1261, 0x1078,
+ 0x2356, 0x1078, 0x2088, 0x0068, 0x1278, 0x786c, 0xa065, 0x0040,
+ 0x126b, 0x1078, 0x2356, 0x0068, 0x1278, 0x2009, 0x4d47, 0x2011,
+ 0x4d87, 0x2104, 0x220c, 0xa105, 0x0040, 0x1278, 0x1078, 0x1ef1,
+ 0x2071, 0x4d40, 0x70a4, 0xa005, 0x0040, 0x129d, 0x7450, 0xa485,
+ 0x0000, 0x0040, 0x129d, 0x2079, 0x0200, 0x2091, 0x8000, 0x72d4,
+ 0xa28c, 0x303d, 0x2190, 0x1078, 0x2b0b, 0x2091, 0x8000, 0x2091,
+ 0x303d, 0x0068, 0x129d, 0x2079, 0x4d00, 0x786c, 0xa065, 0x0040,
+ 0x129d, 0x2071, 0x0010, 0x1078, 0x2356, 0x00e0, 0x12a5, 0x2079,
+ 0x4d00, 0x2071, 0x0010, 0x1078, 0x498b, 0x2071, 0x4d80, 0x70a4,
+ 0xa005, 0x0040, 0x12bd, 0x7050, 0xa025, 0x0040, 0x12bd, 0x2079,
+ 0x0100, 0x2091, 0x8000, 0x72d4, 0xa28c, 0x303d, 0x2190, 0x1078,
+ 0x2b0b, 0x2091, 0x8000, 0x2091, 0x303d, 0x2079, 0x4d00, 0x2071,
+ 0x0010, 0x0068, 0x12c9, 0x786c, 0xa065, 0x0040, 0x12c9, 0x1078,
+ 0x2356, 0x00e0, 0x1253, 0x1078, 0x498b, 0x0078, 0x1253, 0x1078,
+ 0x148e, 0x78ac, 0xa005, 0x00c0, 0x12e7, 0x0068, 0x12dd, 0x786c,
+ 0xa065, 0x0040, 0x12dd, 0x1078, 0x2356, 0x1078, 0x2088, 0x0068,
+ 0x12f1, 0x786c, 0xa065, 0x0040, 0x12e7, 0x1078, 0x2356, 0x0068,
+ 0x12f1, 0x2009, 0x4d47, 0x2104, 0xa005, 0x0040, 0x12f1, 0x1078,
+ 0x1ef1, 0x2071, 0x4d40, 0x70a4, 0xa005, 0x0040, 0x130c, 0x7450,
+ 0xa485, 0x0000, 0x0040, 0x130c, 0x2079, 0x0100, 0x2091, 0x8000,
+ 0x72d4, 0xa28c, 0x303d, 0x2190, 0x1078, 0x2b0b, 0x2091, 0x8000,
+ 0x2091, 0x303d, 0x2079, 0x4d00, 0x2071, 0x0010, 0x0068, 0x1316,
+ 0x786c, 0xa065, 0x0040, 0x1316, 0x1078, 0x2356, 0x00e0, 0x12cf,
+ 0x1078, 0x498b, 0x0078, 0x12cf, 0x133c, 0x133c, 0x133e, 0x133e,
+ 0x134b, 0x134b, 0x134b, 0x134b, 0x1356, 0x1356, 0x1363, 0x1363,
+ 0x134b, 0x134b, 0x134b, 0x134b, 0x133c, 0x133c, 0x133e, 0x133e,
+ 0x134b, 0x134b, 0x134b, 0x134b, 0x1356, 0x1356, 0x1363, 0x1363,
+ 0x134b, 0x134b, 0x134b, 0x134b, 0x0078, 0x133c, 0x007e, 0x107e,
+ 0x127e, 0x2091, 0x2400, 0x1078, 0x292b, 0x127f, 0x107f, 0x007f,
+ 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13c8,
+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e,
+ 0x127e, 0x2091, 0x2300, 0x1078, 0x292b, 0x127f, 0x107f, 0x007f,
+ 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300,
+ 0x1078, 0x292b, 0x2091, 0x2400, 0x1078, 0x292b, 0x127f, 0x107f,
+ 0x007f, 0x2091, 0x8001, 0x007c, 0x1394, 0x1394, 0x1396, 0x1396,
+ 0x13a3, 0x13a3, 0x13a3, 0x13a3, 0x13ae, 0x13ae, 0x1396, 0x1396,
+ 0x13a3, 0x13a3, 0x13a3, 0x13a3, 0x13af, 0x13af, 0x13af, 0x13af,
+ 0x13af, 0x13af, 0x13af, 0x13af, 0x13af, 0x13af, 0x13af, 0x13af,
+ 0x13af, 0x13af, 0x13af, 0x13af, 0x0078, 0x1394, 0x007e, 0x107e,
+ 0x127e, 0x2091, 0x2300, 0x1078, 0x292b, 0x127f, 0x107f, 0x007f,
+ 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13d5,
+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007c, 0x107e,
+ 0x127e, 0x0d7e, 0x0e7e, 0x0f7e, 0x007e, 0x2071, 0x0100, 0x2069,
+ 0x4d40, 0x2079, 0x4d00, 0x70ec, 0xa084, 0x1c00, 0x78e2, 0x1078,
+ 0x4c09, 0x007f, 0x0f7f, 0x0e7f, 0x0d7f, 0x127f, 0x107f, 0x007c,
+ 0x3c00, 0xa084, 0x0007, 0x0079, 0x13cd, 0x13de, 0x13de, 0x13e0,
+ 0x13e0, 0x13e5, 0x13e5, 0x13ea, 0x13ea, 0x3c00, 0xa084, 0x0003,
+ 0x0079, 0x13da, 0x13de, 0x13de, 0x13f3, 0x13f3, 0x1078, 0x290c,
+ 0x2091, 0x2200, 0x1078, 0x46ae, 0x007c, 0x2091, 0x2100, 0x1078,
+ 0x46ae, 0x007c, 0x2091, 0x2100, 0x1078, 0x46ae, 0x2091, 0x2200,
+ 0x1078, 0x46ae, 0x007c, 0x2091, 0x2100, 0x1078, 0x46ae, 0x007c,
+ 0x1418, 0x1418, 0x141a, 0x141a, 0x1427, 0x1427, 0x1427, 0x1427,
+ 0x1432, 0x1432, 0x143f, 0x143f, 0x1427, 0x1427, 0x1427, 0x1427,
+ 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450,
+ 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450, 0x1450,
+ 0x0078, 0x1418, 0x007e, 0x107e, 0x127e, 0x2091, 0x2400, 0x1078,
+ 0x292b, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e,
+ 0x107e, 0x127e, 0x1078, 0x13c8, 0x127f, 0x107f, 0x007f, 0x2091,
+ 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078,
+ 0x292b, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e,
+ 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, 0x292b, 0x2091, 0x2400,
+ 0x1078, 0x292b, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c,
+ 0x007e, 0x107e, 0x127e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2079, 0x4d00,
+ 0x2071, 0x0200, 0x2069, 0x4d40, 0x3d00, 0xd08c, 0x0040, 0x1466,
+ 0x70ec, 0xa084, 0x1c00, 0x78e2, 0x1078, 0x4c09, 0x3d00, 0xd084,
+ 0x0040, 0x1474, 0x2069, 0x4d80, 0x2071, 0x0100, 0x70ec, 0xa084,
+ 0x1c00, 0x78e6, 0x1078, 0x4c09, 0x0f7f, 0x0e7f, 0x0d7f, 0x127f,
+ 0x107f, 0x007f, 0x007c, 0x7008, 0x800b, 0x00c8, 0x1489, 0x7007,
+ 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x148a, 0xd09c, 0x0040, 0x1489,
+ 0x087a, 0x097a, 0x70c3, 0x4002, 0x0078, 0x15bd, 0x0068, 0x1513,
+ 0x2061, 0x0000, 0x6018, 0xd084, 0x00c0, 0x1513, 0x7828, 0xa005,
+ 0x00c0, 0x149e, 0x0010, 0x1514, 0x0078, 0x1513, 0x7910, 0xd1f4,
+ 0x0040, 0x14a6, 0x2001, 0x4007, 0x0078, 0x15bc, 0x7914, 0xd1ec,
+ 0x0040, 0x14c1, 0xd0fc, 0x0040, 0x14b7, 0x007e, 0x1078, 0x1d4b,
+ 0x007f, 0x0040, 0x14c1, 0x2001, 0x4007, 0x0078, 0x15bc, 0x007e,
+ 0x1078, 0x1d3b, 0x007f, 0x0040, 0x14c1, 0x2001, 0x4007, 0x0078,
+ 0x15bc, 0x7910, 0xd0fc, 0x00c0, 0x14cb, 0x2061, 0x4d40, 0xc19c,
+ 0xc7fc, 0x0078, 0x14cf, 0x2061, 0x4d80, 0xc19d, 0xc7fd, 0x6064,
+ 0xa005, 0x00c0, 0x1513, 0x7912, 0x6083, 0x0000, 0x7828, 0xc0fc,
+ 0xa086, 0x0018, 0x00c0, 0x14e0, 0x0c7e, 0x1078, 0x1b44, 0x0c7f,
+ 0x782b, 0x0000, 0x607c, 0xa065, 0x0040, 0x14f9, 0x0c7e, 0x609c,
+ 0x1078, 0x1e30, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1c6d, 0x2009,
+ 0x0018, 0x6087, 0x0103, 0x1078, 0x1d5b, 0x00c0, 0x150d, 0x1078,
+ 0x1dad, 0x7810, 0xd09c, 0x00c0, 0x1501, 0x2061, 0x4d40, 0x0078,
+ 0x1505, 0x2061, 0x4d80, 0xc09c, 0x7812, 0x607f, 0x0000, 0x60d4,
+ 0xd0dc, 0x0040, 0x1511, 0xc0dc, 0x60d6, 0x2001, 0x4005, 0x0078,
+ 0x15bc, 0x0078, 0x15ba, 0x007c, 0x7810, 0xd0f4, 0x0040, 0x151c,
+ 0x2001, 0x4007, 0x0078, 0x15bc, 0xa006, 0x70c2, 0x70c6, 0x70ca,
+ 0x70ce, 0x70da, 0x70c0, 0xa03d, 0xa08a, 0x0040, 0x00c8, 0x152a,
+ 0x0079, 0x1531, 0x2100, 0xa08a, 0x0040, 0x00c8, 0x15c8, 0x0079,
+ 0x1571, 0x15ba, 0x1610, 0x15d9, 0x1648, 0x1680, 0x1680, 0x15d0,
+ 0x1c85, 0x168b, 0x15c8, 0x15dd, 0x15df, 0x15e1, 0x15e3, 0x1c8a,
+ 0x15c8, 0x1699, 0x16f6, 0x1b64, 0x1c7f, 0x15e5, 0x19d4, 0x1a16,
+ 0x1a4e, 0x1a9c, 0x198f, 0x199c, 0x19b0, 0x19c3, 0x17cb, 0x15c8,
+ 0x172d, 0x173a, 0x1746, 0x1752, 0x1768, 0x1774, 0x1777, 0x1783,
+ 0x178f, 0x1797, 0x17b3, 0x17bf, 0x15c8, 0x15c8, 0x15c8, 0x15c8,
+ 0x17d8, 0x17ea, 0x1806, 0x183c, 0x1864, 0x1874, 0x1877, 0x18a8,
+ 0x18d9, 0x18eb, 0x195e, 0x196e, 0x15c8, 0x15c8, 0x15c8, 0x15c8,
+ 0x197e, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x1caf, 0x1cb5,
+ 0x15c8, 0x15c8, 0x15c8, 0x1cb9, 0x1cfe, 0x15c8, 0x15c8, 0x15c8,
+ 0x15c8, 0x160a, 0x167a, 0x1693, 0x16f0, 0x1b5e, 0x15c8, 0x15c8,
+ 0x15c8, 0x15c8, 0x1d02, 0x1ca1, 0x1cab, 0x15c8, 0x15c8, 0x15c8,
+ 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8,
+ 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8,
+ 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8,
+ 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8, 0x15c8,
+ 0x15c8, 0x72ca, 0x71c6, 0x2001, 0x4006, 0x0078, 0x15bc, 0x73ce,
+ 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0068, 0x15bd, 0x2061,
+ 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x007c,
+ 0x70c3, 0x4001, 0x0078, 0x15bd, 0x70c3, 0x4006, 0x0078, 0x15bd,
+ 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005, 0x53a3, 0x0078,
+ 0x15ba, 0x70c4, 0x70c3, 0x0004, 0x007a, 0x0078, 0x15ba, 0x0078,
+ 0x15ba, 0x0078, 0x15ba, 0x0078, 0x15ba, 0x2091, 0x8000, 0x70c3,
+ 0x0004, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3,
+ 0x0008, 0x2001, 0x000d, 0x70d6, 0x2079, 0x0000, 0x781b, 0x0001,
+ 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, 0x041a, 0x2051, 0x0445,
+ 0x2061, 0x0447, 0x20c1, 0x0020, 0x2091, 0x5000, 0x2091, 0x4080,
+ 0x0078, 0x0418, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x1613,
+ 0x2029, 0x0000, 0x2520, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x20a0,
+ 0x2099, 0x0030, 0x7003, 0x0001, 0x7007, 0x0006, 0x731a, 0x721e,
+ 0x7422, 0x7526, 0x2021, 0x0040, 0x81ff, 0x0040, 0x15ba, 0xa182,
+ 0x0040, 0x00c8, 0x162d, 0x2120, 0xa006, 0x2008, 0x8403, 0x7012,
+ 0x7007, 0x0004, 0x7007, 0x0001, 0x7008, 0xd0fc, 0x0040, 0x1634,
+ 0x7007, 0x0002, 0xa084, 0x01e0, 0x0040, 0x1642, 0x70c3, 0x4002,
+ 0x0078, 0x15bd, 0x24a8, 0x53a5, 0x0078, 0x1624, 0x0078, 0x15ba,
+ 0x2029, 0x0000, 0x2520, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x2098,
+ 0x20a1, 0x0030, 0x7003, 0x0000, 0x7007, 0x0006, 0x731a, 0x721e,
+ 0x7422, 0x7526, 0x2021, 0x0040, 0x7007, 0x0006, 0x81ff, 0x0040,
+ 0x15ba, 0xa182, 0x0040, 0x00c8, 0x1667, 0x2120, 0xa006, 0x2008,
+ 0x8403, 0x7012, 0x24a8, 0x53a6, 0x7007, 0x0001, 0x7008, 0xd0fc,
+ 0x0040, 0x166e, 0xa084, 0x01e0, 0x0040, 0x165c, 0x70c3, 0x4002,
+ 0x0078, 0x15bd, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x164b,
+ 0x71c4, 0x70c8, 0x2114, 0xa79e, 0x0004, 0x00c0, 0x1688, 0x200a,
+ 0x72ca, 0x0078, 0x15b9, 0x70c7, 0x0008, 0x70cb, 0x000d, 0x70cf,
+ 0x0000, 0x0078, 0x15ba, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078,
+ 0x169c, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d0,
+ 0x70c6, 0x72ca, 0x73ce, 0x74d2, 0xa005, 0x0040, 0x16eb, 0xa40a,
+ 0x0040, 0x16ac, 0x00c8, 0x15bc, 0x8001, 0x7872, 0xa084, 0xfc00,
+ 0x0040, 0x16b9, 0x78ac, 0xc085, 0x78ae, 0x2001, 0x4005, 0x0078,
+ 0x15bc, 0x7b7e, 0x7a7a, 0x7e86, 0x7d82, 0x7c76, 0xa48c, 0xff00,
+ 0x0040, 0x16d1, 0x8407, 0x8004, 0x8004, 0x810c, 0x810c, 0x810f,
+ 0xa118, 0xa291, 0x0000, 0xa6b1, 0x0000, 0xa581, 0x0000, 0x0078,
+ 0x16db, 0x8407, 0x8004, 0x8004, 0xa318, 0xa291, 0x0000, 0xa6b1,
+ 0x0000, 0xa581, 0x0000, 0x731a, 0x721e, 0x7622, 0x7026, 0xa605,
+ 0x0040, 0x16e5, 0x7a10, 0xc2c5, 0x7a12, 0x78ac, 0xa084, 0xfffc,
+ 0x78ae, 0x0078, 0x16ee, 0x78ac, 0xc085, 0x78ae, 0x0078, 0x15ba,
+ 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, 0x16f9, 0x2029, 0x0000,
+ 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d4, 0x70c6, 0x72ca, 0x73ce,
+ 0x74d6, 0xa005, 0x0040, 0x1728, 0xa40a, 0x0040, 0x1709, 0x00c8,
+ 0x15bc, 0x8001, 0x7892, 0xa084, 0xfc00, 0x0040, 0x1716, 0x78ac,
+ 0xc0c5, 0x78ae, 0x2001, 0x4005, 0x0078, 0x15bc, 0x7a9a, 0x7b9e,
+ 0x7da2, 0x7ea6, 0x2600, 0xa505, 0x0040, 0x1721, 0x7a10, 0xc2c5,
+ 0x7a12, 0x7c96, 0x78ac, 0xa084, 0xfcff, 0x78ae, 0x0078, 0x172b,
+ 0x78ac, 0xc0c5, 0x78ae, 0x0078, 0x15ba, 0x2009, 0x0000, 0x786c,
+ 0xa065, 0x0040, 0x1737, 0x8108, 0x6000, 0x0078, 0x1730, 0x7ac4,
+ 0x0078, 0x15b8, 0x2009, 0x4d48, 0x210c, 0x7810, 0xd0ec, 0x00c0,
+ 0x15b9, 0x2011, 0x4d88, 0x2214, 0x0078, 0x15b8, 0x2009, 0x4d49,
+ 0x210c, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2011, 0x4d89, 0x2214,
+ 0x0078, 0x15b8, 0x2061, 0x4d40, 0x6128, 0x622c, 0x8214, 0x8214,
+ 0x8214, 0x7810, 0xd0ec, 0x00c0, 0x1766, 0x2061, 0x4d80, 0x6328,
+ 0x73da, 0x632c, 0x831c, 0x831c, 0x831c, 0x73de, 0x0078, 0x15b8,
+ 0x2009, 0x4d4c, 0x210c, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2011,
+ 0x4d8c, 0x2214, 0x0078, 0x15b8, 0x7918, 0x0078, 0x15b9, 0x2009,
+ 0x4d4d, 0x210c, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2011, 0x4d8d,
+ 0x2214, 0x0078, 0x15b8, 0x2009, 0x4d4e, 0x210c, 0x7810, 0xd0ec,
+ 0x00c0, 0x15b9, 0x2011, 0x4d8e, 0x2214, 0x0078, 0x15b8, 0x7920,
+ 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x7a24, 0x0078, 0x15b8, 0x71c4,
+ 0xd1fc, 0x00c0, 0x179f, 0x2011, 0x51c0, 0x0078, 0x17a1, 0x2011,
+ 0x5240, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa268,
+ 0x6a00, 0x6804, 0xd09c, 0x0040, 0x17b0, 0x6b08, 0x0078, 0x17b1,
+ 0x6b0c, 0x0078, 0x15b7, 0x77c4, 0x1078, 0x1dcb, 0x2091, 0x8000,
+ 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, 0x0078, 0x15b7, 0x2061,
+ 0x4d40, 0x6118, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2061, 0x4d80,
+ 0x6218, 0x0078, 0x15b8, 0x77c4, 0x1078, 0x1dcb, 0x2091, 0x8000,
+ 0x6908, 0x6a18, 0x6b10, 0x77da, 0x2091, 0x8001, 0x0078, 0x15b7,
+ 0x71c4, 0x2110, 0xa294, 0x000f, 0xa282, 0x0010, 0x00c8, 0x15b2,
+ 0x1078, 0x2735, 0xa384, 0x4000, 0x0040, 0x17e8, 0xa295, 0x0020,
+ 0x0078, 0x15b7, 0x71c4, 0x2100, 0xc0bc, 0xa082, 0x0010, 0x00c8,
+ 0x15b2, 0xd1bc, 0x00c0, 0x17f9, 0x2011, 0x4d48, 0x2204, 0x0078,
+ 0x17fd, 0x2011, 0x4d88, 0x2204, 0xc0bd, 0x007e, 0x2100, 0xc0bc,
+ 0x2012, 0x1078, 0x2692, 0x017f, 0x0078, 0x15b9, 0x71c4, 0x2021,
+ 0x4d49, 0x2404, 0x70c6, 0x2019, 0x0000, 0x0078, 0x1815, 0x71c8,
+ 0x2021, 0x4d89, 0x2404, 0x70ca, 0xc3fd, 0x2011, 0x1834, 0x20a9,
+ 0x0008, 0x2204, 0xa106, 0x0040, 0x1824, 0x8210, 0x00f0, 0x1819,
+ 0x71c4, 0x72c8, 0x0078, 0x15b1, 0xa292, 0x1834, 0x027e, 0x2122,
+ 0x017f, 0x1078, 0x26b3, 0x7810, 0xd0ec, 0x00c0, 0x1832, 0xd3fc,
+ 0x0040, 0x180f, 0x0078, 0x15ba, 0x03e8, 0x00fa, 0x01f4, 0x02ee,
+ 0x0064, 0x0019, 0x0032, 0x004b, 0x2061, 0x4d40, 0x6128, 0x622c,
+ 0x8214, 0x8214, 0x8214, 0x70c4, 0x602a, 0x70c8, 0x8003, 0x8003,
+ 0x8003, 0x602e, 0x7810, 0xd0ec, 0x00c0, 0x1862, 0x027e, 0x017e,
+ 0x2061, 0x4d80, 0x6128, 0x622c, 0x8214, 0x8214, 0x8214, 0x70d8,
+ 0x602a, 0x70dc, 0x8003, 0x8003, 0x8003, 0x602e, 0x71da, 0x72de,
+ 0x017f, 0x027f, 0x0078, 0x15b8, 0x2061, 0x4d40, 0x6130, 0x70c4,
+ 0x6032, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x2061, 0x4d80, 0x6230,
+ 0x70c8, 0x6032, 0x0078, 0x15b8, 0x7918, 0x0078, 0x15b9, 0x71c4,
+ 0xa184, 0xffcf, 0x0040, 0x1883, 0x7810, 0xd0ec, 0x00c0, 0x15b2,
+ 0x72c8, 0x0078, 0x15b1, 0x2011, 0x4d4d, 0x2204, 0x2112, 0x007e,
+ 0x2019, 0x0000, 0x1078, 0x271a, 0x7810, 0xd0ec, 0x0040, 0x1893,
+ 0x017f, 0x0078, 0x15b9, 0x71c8, 0xa184, 0xffcf, 0x0040, 0x189c,
+ 0x2110, 0x71c4, 0x0078, 0x15b1, 0x2011, 0x4d8d, 0x2204, 0x2112,
+ 0x007e, 0xc3fd, 0x1078, 0x271a, 0x027f, 0x017f, 0x0078, 0x15b8,
+ 0x71c4, 0xa182, 0x0010, 0x0048, 0x18b4, 0x7810, 0xd0ec, 0x00c0,
+ 0x15b2, 0x72c8, 0x0078, 0x15b1, 0x2011, 0x4d4e, 0x2204, 0x007e,
+ 0x2112, 0x2019, 0x0000, 0x1078, 0x26f8, 0x7810, 0xd0ec, 0x0040,
+ 0x18c4, 0x017f, 0x0078, 0x15b9, 0x71c8, 0xa182, 0x0010, 0x0048,
+ 0x18cd, 0x2110, 0x71c4, 0x0078, 0x15b1, 0x2011, 0x4d8e, 0x2204,
+ 0x007e, 0x2112, 0xc3fd, 0x1078, 0x26f8, 0x027f, 0x017f, 0x0078,
+ 0x15b8, 0x71c4, 0x72c8, 0xa184, 0xfffd, 0x00c0, 0x15b1, 0xa284,
+ 0xfffd, 0x00c0, 0x15b1, 0x2100, 0x7920, 0x7822, 0x2200, 0x7a24,
+ 0x7826, 0x0078, 0x15b8, 0x71c4, 0xd1fc, 0x00c0, 0x18f3, 0x2011,
+ 0x51c0, 0x0078, 0x18f5, 0x2011, 0x5240, 0x8107, 0xa084, 0x000f,
+ 0x8003, 0x8003, 0x8003, 0xa268, 0x2019, 0x0000, 0x72c8, 0x2091,
+ 0x8000, 0xa284, 0x0080, 0x0040, 0x190b, 0x6c14, 0x84ff, 0x00c0,
+ 0x190b, 0x6817, 0x0040, 0xa284, 0x0040, 0x0040, 0x1915, 0x6c10,
+ 0x84ff, 0x00c0, 0x1915, 0x6813, 0x0001, 0x6800, 0x007e, 0xa226,
+ 0x0040, 0x1932, 0x6a02, 0xd4ec, 0x0040, 0x191f, 0xc3a5, 0xd4e4,
+ 0x0040, 0x1923, 0xc39d, 0xd4f4, 0x0040, 0x1932, 0x810f, 0xd2f4,
+ 0x0040, 0x192e, 0x1078, 0x2777, 0x0078, 0x1932, 0x1078, 0x2755,
+ 0x0078, 0x1932, 0x72cc, 0x6808, 0xa206, 0x0040, 0x1954, 0xa2a4,
+ 0x00ff, 0x7814, 0xd0e4, 0x00c0, 0x1945, 0xa482, 0x0028, 0x0048,
+ 0x1951, 0x0040, 0x1951, 0x0078, 0x1949, 0xa482, 0x0043, 0x0048,
+ 0x1951, 0x71c4, 0x71c6, 0x027f, 0x72ca, 0x2091, 0x8001, 0x0078,
+ 0x15b3, 0x6a0a, 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f,
+ 0x6b0c, 0x71c4, 0x2091, 0x8001, 0x0078, 0x15b7, 0x77c4, 0x1078,
+ 0x1dcb, 0x2091, 0x8000, 0x6a14, 0x6b1c, 0x2091, 0x8001, 0x70c8,
+ 0x6816, 0x70cc, 0x681e, 0x2708, 0x0078, 0x15b7, 0x70c4, 0x2061,
+ 0x4d40, 0x6118, 0x601a, 0x7810, 0xd0ec, 0x00c0, 0x15b9, 0x70c8,
+ 0x2061, 0x4d80, 0x6218, 0x601a, 0x0078, 0x15b8, 0x71c4, 0x72c8,
+ 0x73cc, 0xa182, 0x0010, 0x00c8, 0x15b2, 0x1078, 0x2799, 0xa384,
+ 0x4000, 0x0040, 0x198d, 0xa295, 0x0020, 0x0078, 0x15b7, 0x77c4,
+ 0x1078, 0x1dcb, 0x2091, 0x8000, 0x6a08, 0xc28d, 0x6a0a, 0x2091,
+ 0x8001, 0x2708, 0x0078, 0x15b8, 0x77c4, 0x1078, 0x1dcb, 0x2091,
+ 0x8000, 0x6a08, 0xa294, 0xfff9, 0x6a0a, 0x6804, 0xa005, 0x0040,
+ 0x19ab, 0x1078, 0x25ea, 0x2091, 0x8001, 0x2708, 0x0078, 0x15b8,
+ 0x77c4, 0x1078, 0x1dcb, 0x2091, 0x8000, 0x6a08, 0xc295, 0x6a0a,
+ 0x6804, 0xa005, 0x0040, 0x19be, 0x1078, 0x25ea, 0x2091, 0x8001,
+ 0x2708, 0x0078, 0x15b8, 0x77c4, 0x2041, 0x0001, 0x2049, 0x0005,
+ 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, 0x1de6, 0x2091, 0x8001,
+ 0x2708, 0x6a08, 0x0078, 0x15b8, 0x77c4, 0x7814, 0xd0e4, 0x00c0,
+ 0x19e8, 0xd7fc, 0x0040, 0x19e2, 0x1078, 0x1d4b, 0x0040, 0x19e8,
+ 0x0078, 0x15bc, 0x1078, 0x1d3b, 0x0040, 0x19e8, 0x0078, 0x15bc,
+ 0x73c8, 0x72cc, 0x77c6, 0x73ca, 0x72ce, 0x1078, 0x1e6d, 0x00c0,
+ 0x1a12, 0x6818, 0xa005, 0x0040, 0x1a0c, 0x2708, 0x077e, 0x1078,
+ 0x27c9, 0x077f, 0x00c0, 0x1a0c, 0x2001, 0x0015, 0xd7fc, 0x00c0,
+ 0x1a05, 0x2061, 0x4d40, 0x0078, 0x1a08, 0xc0fd, 0x2061, 0x4d80,
+ 0x782a, 0x2091, 0x8001, 0x007c, 0x2091, 0x8001, 0x2001, 0x4005,
+ 0x0078, 0x15bc, 0x2091, 0x8001, 0x0078, 0x15ba, 0x77c4, 0x7814,
+ 0xd0e4, 0x00c0, 0x1a2a, 0xd7fc, 0x0040, 0x1a24, 0x1078, 0x1d4b,
+ 0x0040, 0x1a2a, 0x0078, 0x15bc, 0x1078, 0x1d3b, 0x0040, 0x1a2a,
+ 0x0078, 0x15bc, 0x77c6, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051,
+ 0x0020, 0x2091, 0x8000, 0x1078, 0x1de6, 0x2009, 0x0016, 0xd7fc,
+ 0x00c0, 0x1a3e, 0x2061, 0x4d40, 0x0078, 0x1a41, 0x2061, 0x4d80,
+ 0xc1fd, 0x6067, 0x0003, 0x607f, 0x0000, 0x6776, 0x6083, 0x000f,
+ 0x792a, 0x1078, 0x25ea, 0x2091, 0x8001, 0x007c, 0x77c8, 0x77ca,
+ 0x77c4, 0x77c6, 0x7814, 0xd0e4, 0x00c0, 0x1a65, 0xd7fc, 0x0040,
+ 0x1a5f, 0x1078, 0x1d4b, 0x0040, 0x1a65, 0x0078, 0x15bc, 0x1078,
+ 0x1d3b, 0x0040, 0x1a65, 0x0078, 0x15bc, 0xa7bc, 0xff00, 0x2091,
+ 0x8000, 0x2009, 0x0017, 0xd7fc, 0x00c0, 0x1a72, 0x2061, 0x4d40,
+ 0x0078, 0x1a75, 0x2061, 0x4d80, 0xc1fd, 0x607f, 0x0000, 0x6067,
+ 0x0002, 0x6776, 0x6083, 0x000f, 0x792a, 0x1078, 0x25ea, 0x2091,
+ 0x8001, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0010, 0x2091,
+ 0x8000, 0x70c8, 0xa005, 0x0040, 0x1a90, 0x60d4, 0xc0fd, 0x60d6,
+ 0x1078, 0x1de6, 0x70c8, 0x6836, 0x8738, 0xa784, 0x001f, 0x00c0,
+ 0x1a90, 0x2091, 0x8001, 0x007c, 0x7814, 0xd0e4, 0x00c0, 0x1ab0,
+ 0x72c8, 0xd284, 0x0040, 0x1aaa, 0x1078, 0x1d4b, 0x0040, 0x1ab0,
+ 0x0078, 0x15bc, 0x1078, 0x1d3b, 0x0040, 0x1ab0, 0x0078, 0x15bc,
+ 0x72c8, 0x72ca, 0x78ac, 0xa084, 0x0003, 0x00c0, 0x1adb, 0x2039,
+ 0x0000, 0xd284, 0x0040, 0x1abd, 0xc7fd, 0x2041, 0x0021, 0x2049,
+ 0x0004, 0x2051, 0x0008, 0x1078, 0x1dcb, 0x2091, 0x8000, 0x6808,
+ 0xc0d4, 0xa80d, 0x690a, 0x2091, 0x8001, 0x8738, 0xa784, 0x001f,
+ 0x00c0, 0x1ac3, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784,
+ 0x0f00, 0x00c0, 0x1ac3, 0x2091, 0x8000, 0x72c8, 0xd284, 0x00c0,
+ 0x1aed, 0x7810, 0xd0ec, 0x0040, 0x1ae9, 0x2069, 0x0100, 0x0078,
+ 0x1aef, 0x2069, 0x0200, 0x0078, 0x1aef, 0x2069, 0x0100, 0x6808,
+ 0xa084, 0xfffd, 0x680a, 0x6830, 0xd0b4, 0x0040, 0x1b0f, 0x684b,
+ 0x0004, 0x20a9, 0x0014, 0x6848, 0xd094, 0x0040, 0x1b01, 0x00f0,
+ 0x1afb, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xd084, 0x0040,
+ 0x1b0b, 0x00f0, 0x1b05, 0x20a9, 0x00fa, 0x00f0, 0x1b0d, 0x2079,
+ 0x4d00, 0x2009, 0x0018, 0x72c8, 0xd284, 0x00c0, 0x1b1b, 0x2061,
+ 0x4d40, 0x0078, 0x1b1e, 0x2061, 0x4d80, 0xc1fd, 0x792a, 0x6067,
+ 0x0001, 0x6083, 0x000f, 0x60a7, 0x0000, 0x60a8, 0x60b2, 0x60b6,
+ 0x60d4, 0xd0b4, 0x0040, 0x1b38, 0xc0b4, 0x60d6, 0x0c7e, 0x60b8,
+ 0xa065, 0x6008, 0xc0d4, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f,
+ 0x60d4, 0xa084, 0x77ff, 0x60d6, 0x78ac, 0xc08d, 0x78ae, 0x681b,
+ 0x0047, 0x2091, 0x8001, 0x007c, 0xd7fc, 0x00c0, 0x1b4b, 0x2069,
+ 0x4d40, 0x0078, 0x1b4d, 0x2069, 0x4d80, 0x71c4, 0x71c6, 0x6916,
+ 0x81ff, 0x00c0, 0x1b55, 0x68a7, 0x0001, 0x78ac, 0xc08c, 0x78ae,
+ 0xd084, 0x00c0, 0x1b5d, 0x1078, 0x1ecd, 0x007c, 0x75d8, 0x74dc,
+ 0x75da, 0x74de, 0x0078, 0x1b67, 0x2029, 0x0000, 0x2520, 0x71c4,
+ 0x73c8, 0x72cc, 0x71c6, 0x73ca, 0x72ce, 0x2079, 0x4d00, 0x7dde,
+ 0x7cda, 0x7bd6, 0x7ad2, 0x1078, 0x1da4, 0x0040, 0x1c69, 0x20a9,
+ 0x0005, 0x20a1, 0x4d14, 0x2091, 0x8000, 0x41a1, 0x2091, 0x8001,
+ 0x2009, 0x0040, 0x1078, 0x1fb8, 0x0040, 0x1b8a, 0x1078, 0x1dad,
+ 0x0078, 0x1c69, 0x6004, 0xa08c, 0x00ff, 0xa18e, 0x0009, 0x00c0,
+ 0x1b95, 0x007e, 0x1078, 0x2339, 0x007f, 0xa084, 0xff00, 0x8007,
+ 0x8009, 0x0040, 0x1c09, 0x0c7e, 0x2c68, 0x1078, 0x1da4, 0x0040,
+ 0x1bdb, 0x2c00, 0x689e, 0x8109, 0x00c0, 0x1b9c, 0x609f, 0x0000,
+ 0x0c7f, 0x0c7e, 0x7ddc, 0x7cd8, 0x7bd4, 0x7ad0, 0xa290, 0x0040,
+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x7dde, 0x7cda,
+ 0x7bd6, 0x7ad2, 0x2c68, 0x689c, 0xa065, 0x0040, 0x1c08, 0x2009,
+ 0x0040, 0x1078, 0x1fb8, 0x00c0, 0x1bf2, 0x6004, 0xa084, 0x00ff,
+ 0xa086, 0x0002, 0x00c0, 0x1bdb, 0x6004, 0xa084, 0x00ff, 0xa086,
+ 0x000a, 0x00c0, 0x1bd7, 0x017e, 0x1078, 0x2335, 0x017f, 0x2d00,
+ 0x6002, 0x0078, 0x1baa, 0x0c7f, 0x0c7e, 0x609c, 0x1078, 0x1e30,
+ 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1c6d, 0x2009, 0x0018, 0x6008,
+ 0xc0cd, 0x600a, 0x6004, 0x6086, 0x1078, 0x1d5b, 0x1078, 0x1dad,
+ 0x0078, 0x1c69, 0x0c7f, 0x0c7e, 0x609c, 0x1078, 0x1e30, 0x0c7f,
+ 0x609f, 0x0000, 0x1078, 0x1c6d, 0x2009, 0x0018, 0x6087, 0x0103,
+ 0x601b, 0x0003, 0x1078, 0x1d5b, 0x1078, 0x1dad, 0x0078, 0x1c69,
+ 0x0c7f, 0x7814, 0xd0e4, 0x00c0, 0x1c2e, 0x6114, 0xd1fc, 0x0040,
+ 0x1c17, 0x1078, 0x1d4b, 0x0040, 0x1c2e, 0x0078, 0x1c1b, 0x1078,
+ 0x1d3b, 0x0040, 0x1c2e, 0x2029, 0x0000, 0x2520, 0x2009, 0x0018,
+ 0x73c8, 0x72cc, 0x6087, 0x0103, 0x601b, 0x0021, 0x1078, 0x1d5b,
+ 0x1078, 0x1dad, 0x2001, 0x4007, 0x0078, 0x15bc, 0x74c4, 0x73c8,
+ 0x72cc, 0x6014, 0x2091, 0x8000, 0x0e7e, 0x2009, 0x0012, 0xd0fc,
+ 0x00c0, 0x1c3e, 0x2071, 0x4d40, 0x0078, 0x1c41, 0x2071, 0x4d80,
+ 0xc1fd, 0x792a, 0x7067, 0x0005, 0x71d4, 0xc1dc, 0x71d6, 0x736a,
+ 0x726e, 0x7472, 0x7076, 0x707b, 0x0000, 0x2c00, 0x707e, 0xa02e,
+ 0x2530, 0x611c, 0xa184, 0x0060, 0x0040, 0x1c58, 0x1078, 0x4578,
+ 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, 0x60b3,
+ 0x0000, 0x6714, 0x6023, 0x0000, 0x1078, 0x25ea, 0x2091, 0x8001,
+ 0x007c, 0x70c3, 0x4005, 0x0078, 0x15bd, 0x20a9, 0x0005, 0x2099,
+ 0x4d14, 0x2091, 0x8000, 0x530a, 0x2091, 0x8001, 0x2100, 0xa210,
+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, 0x71c4,
+ 0x70c7, 0x0000, 0x791e, 0x0078, 0x15ba, 0x71c4, 0x71c6, 0x2168,
+ 0x0078, 0x1c8c, 0x2069, 0x1000, 0x690c, 0xa016, 0x2d04, 0xa210,
+ 0x8d68, 0x8109, 0x00c0, 0x1c8e, 0xa285, 0x0000, 0x00c0, 0x1c9c,
+ 0x70c3, 0x4000, 0x0078, 0x1c9e, 0x70c3, 0x4003, 0x70ca, 0x0078,
+ 0x15bd, 0x7964, 0x71c6, 0x71c4, 0xa182, 0x0003, 0x00c8, 0x15b2,
+ 0x7966, 0x0078, 0x15ba, 0x7964, 0x71c6, 0x0078, 0x15ba, 0x7900,
+ 0x71c6, 0x71c4, 0x7902, 0x0078, 0x15ba, 0x7900, 0x71c6, 0x0078,
+ 0x15ba, 0x70c4, 0x2011, 0x0000, 0xa08c, 0x000d, 0x0040, 0x1cce,
+ 0x810c, 0x0048, 0x1cca, 0x8210, 0x810c, 0x810c, 0x0048, 0x1cca,
+ 0x8210, 0x810c, 0x81ff, 0x00c0, 0x15b3, 0x8210, 0x7a0e, 0xd28c,
+ 0x0040, 0x1cfa, 0x7910, 0xc1cd, 0x7912, 0x2009, 0x0021, 0x2019,
+ 0x0003, 0xd284, 0x0040, 0x1cf4, 0x8108, 0x2019, 0x0041, 0x2011,
+ 0x954e, 0x2312, 0x2019, 0x0042, 0x8210, 0x2312, 0x2019, 0x0043,
+ 0x8210, 0x2312, 0x2019, 0x0046, 0x8210, 0x2312, 0x2019, 0x0047,
+ 0x8210, 0x2312, 0x2019, 0x0006, 0x2011, 0x9553, 0x2112, 0x2011,
+ 0x9573, 0x2312, 0x7904, 0x7806, 0x0078, 0x15b9, 0x7804, 0x70c6,
+ 0x0078, 0x15ba, 0x71c4, 0xd1fc, 0x00c0, 0x1d0a, 0x2011, 0x51c0,
+ 0x0078, 0x1d0c, 0x2011, 0x5240, 0x8107, 0xa084, 0x000f, 0x8003,
+ 0x8003, 0x8003, 0xa268, 0x6a14, 0xd2b4, 0x0040, 0x1d1b, 0x2011,
+ 0x0001, 0x0078, 0x1d1d, 0x2011, 0x0000, 0x6b0c, 0x0078, 0x15b7,
+ 0x017e, 0x7814, 0xd0f4, 0x0040, 0x1d2d, 0x2001, 0x4007, 0x70db,
+ 0x0000, 0xa18d, 0x0001, 0x0078, 0x1d39, 0xd0fc, 0x0040, 0x1d38,
+ 0x2001, 0x4007, 0x70db, 0x0001, 0xa18d, 0x0001, 0x0078, 0x1d39,
+ 0xa006, 0x017f, 0x007c, 0x017e, 0x7814, 0xd0f4, 0x0040, 0x1d48,
+ 0x2001, 0x4007, 0x70db, 0x0000, 0xa18d, 0x0001, 0x0078, 0x1d49,
+ 0xa006, 0x017f, 0x007c, 0x017e, 0x7814, 0xd0fc, 0x0040, 0x1d58,
+ 0x2001, 0x4007, 0x70db, 0x0001, 0xa18d, 0x0001, 0x0078, 0x1d59,
+ 0xa006, 0x017f, 0x007c, 0x7112, 0x721a, 0x731e, 0x7810, 0xd0c4,
+ 0x0040, 0x1d64, 0x7422, 0x7526, 0xac80, 0x0001, 0x8108, 0x810c,
+ 0x81a9, 0x8098, 0x20a1, 0x0030, 0x7003, 0x0000, 0x6084, 0x20a2,
+ 0x53a6, 0x7007, 0x0001, 0x7974, 0xa184, 0xff00, 0x0040, 0x1d81,
+ 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007, 0xa100, 0x0078,
+ 0x1d84, 0x8107, 0x8004, 0x8004, 0x797c, 0xa108, 0x7a78, 0xa006,
+ 0xa211, 0x7d10, 0xd5c4, 0x0040, 0x1d91, 0x7b84, 0xa319, 0x7c80,
+ 0xa421, 0x7008, 0xd0fc, 0x0040, 0x1d91, 0x7003, 0x0001, 0x7007,
+ 0x0006, 0x711a, 0x721e, 0x7d10, 0xd5c4, 0x0040, 0x1da1, 0x7322,
+ 0x7426, 0xa084, 0x01e0, 0x007c, 0x7848, 0xa065, 0x0040, 0x1dac,
+ 0x2c04, 0x784a, 0x2063, 0x0000, 0x007c, 0x0f7e, 0x2079, 0x4d00,
+ 0x7848, 0x2062, 0x2c00, 0xa005, 0x00c0, 0x1db8, 0x1078, 0x290c,
+ 0x784a, 0x0f7f, 0x007c, 0x2011, 0x9700, 0x7a4a, 0x7bc4, 0x8319,
+ 0x0040, 0x1dc8, 0xa280, 0x0032, 0x2012, 0x2010, 0x0078, 0x1dbf,
+ 0x2013, 0x0000, 0x007c, 0x017e, 0x027e, 0xd7fc, 0x00c0, 0x1dd4,
+ 0x2011, 0x52c0, 0x0078, 0x1dd6, 0x2011, 0x72c0, 0xa784, 0x0f00,
+ 0x800b, 0xa784, 0x001f, 0x0040, 0x1de1, 0x8003, 0x8003, 0x8003,
+ 0x8003, 0xa105, 0xa268, 0x027f, 0x017f, 0x007c, 0x1078, 0x1dcb,
+ 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084, 0xf9ef, 0xa80d,
+ 0x690a, 0x0e7e, 0xd7fc, 0x00c0, 0x1dfb, 0x2009, 0x4d53, 0x2071,
+ 0x4d40, 0x0078, 0x1dff, 0x2009, 0x4d93, 0x2071, 0x4d80, 0x210c,
+ 0x6804, 0xa005, 0x0040, 0x1e0f, 0xa116, 0x00c0, 0x1e0f, 0x2060,
+ 0x6000, 0x6806, 0x017e, 0x200b, 0x0000, 0x0078, 0x1e12, 0x2009,
+ 0x0000, 0x017e, 0x6804, 0xa065, 0x0040, 0x1e27, 0x6000, 0x6806,
+ 0x1078, 0x1e42, 0x1078, 0x2004, 0x6810, 0x7908, 0x8109, 0x790a,
+ 0x8001, 0x6812, 0x00c0, 0x1e12, 0x7910, 0xc1a5, 0x7912, 0x017f,
+ 0x6902, 0x6906, 0x2d00, 0x2060, 0x1078, 0x2a6d, 0x0e7f, 0x007c,
+ 0xa065, 0x0040, 0x1e41, 0x2008, 0x609c, 0xa005, 0x0040, 0x1e3e,
+ 0x2062, 0x609f, 0x0000, 0xa065, 0x0078, 0x1e34, 0x7848, 0x794a,
+ 0x2062, 0x007c, 0x6007, 0x0103, 0x608f, 0x0000, 0x20a9, 0x001c,
+ 0xac80, 0x0005, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x6828, 0x601a,
+ 0x682c, 0x6022, 0x007c, 0x0e7e, 0xd7fc, 0x00c0, 0x1e5d, 0x2071,
+ 0x4d40, 0x2031, 0x4dc0, 0x0078, 0x1e61, 0x2071, 0x4d80, 0x2031,
+ 0x4fc0, 0x7050, 0xa08c, 0x0200, 0x00c0, 0x1e6b, 0xa608, 0x2d0a,
+ 0x8000, 0x7052, 0xa006, 0x0e7f, 0x007c, 0x0f7e, 0xd7fc, 0x00c0,
+ 0x1e75, 0x2079, 0x4d40, 0x0078, 0x1e77, 0x2079, 0x4d80, 0x1078,
+ 0x1dcb, 0x2091, 0x8000, 0x6804, 0x780a, 0xa065, 0x0040, 0x1ecb,
+ 0x0078, 0x1e89, 0x2c00, 0x780a, 0x2060, 0x6000, 0xa065, 0x0040,
+ 0x1ecb, 0x6010, 0xa306, 0x00c0, 0x1e82, 0x600c, 0xa206, 0x00c0,
+ 0x1e82, 0x2c28, 0x784c, 0xac06, 0x00c0, 0x1e98, 0x0078, 0x1ec8,
+ 0x6804, 0xac06, 0x00c0, 0x1ea6, 0x6000, 0x2060, 0x6806, 0xa005,
+ 0x00c0, 0x1ea6, 0x6803, 0x0000, 0x0078, 0x1eb0, 0x6400, 0x7808,
+ 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x1eb0, 0x2c00, 0x6802,
+ 0x2560, 0x0f7f, 0x1078, 0x1e42, 0x0f7e, 0x601b, 0x0005, 0x6023,
+ 0x0020, 0x0f7f, 0x1078, 0x2004, 0x0f7e, 0x7908, 0x8109, 0x790a,
+ 0x6810, 0x8001, 0x6812, 0x00c0, 0x1ec8, 0x7810, 0xc0a5, 0x7812,
+ 0x2001, 0xffff, 0xa005, 0x0f7f, 0x007c, 0x077e, 0x2700, 0x2039,
+ 0x0000, 0xd0fc, 0x0040, 0x1ed5, 0xc7fd, 0x2041, 0x0021, 0x2049,
+ 0x0004, 0x2051, 0x0008, 0x2091, 0x8000, 0x1078, 0x1de6, 0x8738,
+ 0xa784, 0x001f, 0x00c0, 0x1edd, 0xa7bc, 0xff00, 0x873f, 0x8738,
+ 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1edd, 0x2091, 0x8001, 0x077f,
+ 0x007c, 0x786c, 0x2009, 0x9574, 0x210c, 0xa10d, 0x0040, 0x1efb,
+ 0xa065, 0x0078, 0x2356, 0x2061, 0x0000, 0x6018, 0xd084, 0x00c0,
+ 0x1f1b, 0x7810, 0xd08c, 0x0040, 0x1f0c, 0xc08c, 0x7812, 0xc7fc,
+ 0x2069, 0x4d40, 0x0078, 0x1f11, 0xc08d, 0x7812, 0x2069, 0x4d80,
+ 0xc7fd, 0x2091, 0x8000, 0x681c, 0x681f, 0x0000, 0x2091, 0x8001,
+ 0xa005, 0x00c0, 0x1f1c, 0x007c, 0xa08c, 0xfff0, 0x0040, 0x1f22,
+ 0x1078, 0x290c, 0x0079, 0x1f24, 0x1f34, 0x1f37, 0x1f3d, 0x1f41,
+ 0x1f35, 0x1f45, 0x1f35, 0x1f35, 0x1f35, 0x1f4b, 0x1f7c, 0x1f80,
+ 0x1f86, 0x1f9b, 0x1f35, 0x1f35, 0x007c, 0x1078, 0x290c, 0x1078,
+ 0x1ecd, 0x2001, 0x8001, 0x0078, 0x1fa7, 0x2001, 0x8003, 0x0078,
+ 0x1fa7, 0x2001, 0x8004, 0x0078, 0x1fa7, 0x1078, 0x1ecd, 0x2001,
+ 0x8006, 0x0078, 0x1fa7, 0x2091, 0x8000, 0x077e, 0xd7fc, 0x00c0,
+ 0x1f57, 0x2069, 0x4d40, 0x2039, 0x0009, 0x0078, 0x1f5b, 0x2069,
+ 0x4d80, 0x2039, 0x0009, 0x6800, 0xa086, 0x0000, 0x0040, 0x1f65,
+ 0x007f, 0x6f1e, 0x2091, 0x8001, 0x007c, 0x6874, 0x077f, 0xa0bc,
+ 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x1078,
+ 0x1de6, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1f6f, 0x2091, 0x8001,
+ 0x2001, 0x800a, 0x0078, 0x1fa7, 0x2001, 0x800c, 0x0078, 0x1fa7,
+ 0x1078, 0x1ecd, 0x2001, 0x800d, 0x0078, 0x1fa7, 0x7814, 0xd0e4,
+ 0x00c0, 0x1f99, 0xd0ec, 0x0040, 0x1f93, 0xd7fc, 0x0040, 0x1f93,
+ 0x78e4, 0x0078, 0x1f94, 0x78e0, 0x70c6, 0x2001, 0x800e, 0x0078,
+ 0x1fa7, 0x0078, 0x1f35, 0xd7fc, 0x0040, 0x1fa1, 0x78ec, 0x0078,
+ 0x1fa2, 0x78e8, 0x70c6, 0x2001, 0x000d, 0x0078, 0x1fa7, 0x70c2,
+ 0xd7fc, 0x00c0, 0x1faf, 0x70db, 0x0000, 0x0078, 0x1fb1, 0x70db,
+ 0x0001, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x4080, 0x007c,
+ 0xac80, 0x0001, 0x81ff, 0x0040, 0x1fe3, 0x2099, 0x0030, 0x20a0,
+ 0x700c, 0xa084, 0x03ff, 0x0040, 0x1fc5, 0x7018, 0x007e, 0x701c,
+ 0x007e, 0x7020, 0x007e, 0x7024, 0x007e, 0x7112, 0x81ac, 0x721a,
+ 0x731e, 0x7422, 0x7526, 0x7003, 0x0001, 0x7007, 0x0001, 0x7008,
+ 0x800b, 0x00c8, 0x1fd7, 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0,
+ 0x1fe3, 0x53a5, 0xa006, 0x7003, 0x0000, 0x7007, 0x0004, 0x007f,
+ 0x7026, 0x007f, 0x7022, 0x007f, 0x701e, 0x007f, 0x701a, 0x007c,
+ 0x2011, 0x0020, 0x2009, 0x0010, 0x6b0a, 0x6c0e, 0x6803, 0xfd00,
+ 0x6807, 0x0018, 0x6a1a, 0x2d00, 0xa0e8, 0x0008, 0xa290, 0x0004,
+ 0x8109, 0x00c0, 0x1ff4, 0x007c, 0x6004, 0x6086, 0x2c08, 0x2063,
+ 0x0000, 0x7868, 0xa005, 0x796a, 0x0040, 0x2011, 0x2c02, 0x0078,
+ 0x2012, 0x796e, 0x007c, 0x0c7e, 0x2061, 0x4d00, 0x6887, 0x0103,
+ 0x2d08, 0x206b, 0x0000, 0x6068, 0xa005, 0x616a, 0x0040, 0x2023,
+ 0x2d02, 0x0078, 0x2024, 0x616e, 0x0c7f, 0x007c, 0x2091, 0x8000,
+ 0x2c04, 0x786e, 0xa005, 0x00c0, 0x202e, 0x786a, 0x2091, 0x8001,
+ 0x609c, 0xa005, 0x0040, 0x2047, 0x0c7e, 0x2060, 0x2008, 0x609c,
+ 0xa005, 0x0040, 0x2043, 0x2062, 0x609f, 0x0000, 0xa065, 0x609c,
+ 0xa005, 0x00c0, 0x203b, 0x7848, 0x794a, 0x2062, 0x0c7f, 0x7848,
+ 0x2062, 0x609f, 0x0000, 0xac85, 0x0000, 0x00c0, 0x2051, 0x1078,
+ 0x290c, 0x784a, 0x007c, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086,
+ 0x818e, 0x00c8, 0x205c, 0xa200, 0x00f0, 0x2057, 0x8086, 0x818e,
+ 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x2082, 0xa11a,
+ 0x00c8, 0x2082, 0x8213, 0x818d, 0x0048, 0x2075, 0xa11a, 0x00c8,
+ 0x2076, 0x00f0, 0x206a, 0x0078, 0x207a, 0xa11a, 0x2308, 0x8210,
+ 0x00f0, 0x206a, 0x007e, 0x3200, 0xa084, 0xf7ff, 0x2080, 0x007f,
+ 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, 0x0078, 0x207e,
+ 0x7d74, 0x70d0, 0xa506, 0x0040, 0x216e, 0x7810, 0x2050, 0x7800,
+ 0xd08c, 0x0040, 0x20aa, 0xdaec, 0x0040, 0x20aa, 0x0e7e, 0x2091,
+ 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x20a7, 0x7008,
+ 0x0e7f, 0xa086, 0x0008, 0x0040, 0x20aa, 0x0078, 0x216e, 0x0e7f,
+ 0x0078, 0x216e, 0x1078, 0x1da4, 0x0040, 0x216e, 0xa046, 0x7970,
+ 0x2500, 0x8000, 0xa112, 0x2009, 0x0040, 0x00c8, 0x20b9, 0x0078,
+ 0x20c0, 0x72d0, 0xa206, 0x0040, 0x20c0, 0x8840, 0x2009, 0x0080,
+ 0x0c7e, 0x7112, 0x7007, 0x0001, 0x2099, 0x0030, 0x20a9, 0x0020,
+ 0xac80, 0x0001, 0x20a0, 0x2061, 0x0000, 0x88ff, 0x0040, 0x20d2,
+ 0x1078, 0x1da4, 0x7008, 0xd0fc, 0x0040, 0x20d2, 0x7007, 0x0002,
+ 0x2091, 0x8001, 0xa08c, 0x01e0, 0x00c0, 0x2109, 0x53a5, 0x8cff,
+ 0x00c0, 0x20e7, 0x88ff, 0x0040, 0x2158, 0x0078, 0x20f1, 0x2c00,
+ 0x788e, 0x20a9, 0x0020, 0xac80, 0x0001, 0x20a0, 0x53a5, 0x0078,
+ 0x2158, 0xa046, 0x7218, 0x731c, 0xdac4, 0x0040, 0x20f9, 0x7420,
+ 0x7524, 0xa292, 0x0040, 0xa39b, 0x0000, 0xa4a3, 0x0000, 0xa5ab,
+ 0x0000, 0x721a, 0x731e, 0xdac4, 0x0040, 0x2109, 0x7422, 0x7526,
+ 0xa006, 0x7007, 0x0004, 0x0040, 0x2158, 0x8cff, 0x0040, 0x2112,
+ 0x1078, 0x1dad, 0x0c7f, 0x1078, 0x1dad, 0xa046, 0x7888, 0x8000,
+ 0x788a, 0xa086, 0x0002, 0x0040, 0x2138, 0x7a7c, 0x7b78, 0xdac4,
+ 0x0040, 0x2124, 0x7c84, 0x7d80, 0x7974, 0x8107, 0x8004, 0x8004,
+ 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x721a,
+ 0x731e, 0xdac4, 0x0040, 0x216e, 0x7422, 0x7526, 0x0078, 0x216e,
+ 0x6014, 0xd0fc, 0x00c0, 0x2140, 0x2069, 0x4d40, 0x0078, 0x2142,
+ 0x2069, 0x4d80, 0x2091, 0x8000, 0x681f, 0x0002, 0x88ff, 0x0040,
+ 0x214e, 0xa046, 0x788c, 0x2060, 0x0078, 0x2138, 0x788b, 0x0000,
+ 0x78ac, 0xa085, 0x0003, 0x78ae, 0x2091, 0x8001, 0x0078, 0x216e,
+ 0x0c7f, 0x788b, 0x0000, 0x1078, 0x2307, 0x6004, 0xa084, 0x000f,
+ 0x1078, 0x216f, 0x88ff, 0x0040, 0x216c, 0x788c, 0x2060, 0x6004,
+ 0xa084, 0x000f, 0x1078, 0x216f, 0x0078, 0x2088, 0x007c, 0x0079,
+ 0x2171, 0x2181, 0x219f, 0x21bd, 0x2181, 0x21ce, 0x2192, 0x2181,
+ 0x2181, 0x2181, 0x219d, 0x21bb, 0x2181, 0x2181, 0x2181, 0x2181,
+ 0x2181, 0x2039, 0x0400, 0x78bc, 0xa705, 0x78be, 0x6008, 0xa705,
+ 0x600a, 0x1078, 0x2211, 0x609c, 0x78ba, 0x609f, 0x0000, 0x1078,
+ 0x22f1, 0x007c, 0x78bc, 0xd0c4, 0x0040, 0x2198, 0x0078, 0x2181,
+ 0x601c, 0xc0bd, 0x601e, 0x0078, 0x21a5, 0x1078, 0x2339, 0x78bc,
+ 0xd0c4, 0x0040, 0x21a5, 0x0078, 0x2181, 0x78bf, 0x0000, 0x6004,
+ 0x8007, 0xa084, 0x00ff, 0x78b2, 0x8001, 0x0040, 0x21b8, 0x1078,
+ 0x2211, 0x0040, 0x21b8, 0x78bc, 0xc0c5, 0x78be, 0x0078, 0x21ba,
+ 0x0078, 0x2230, 0x007c, 0x1078, 0x2335, 0x78bc, 0xa08c, 0x0e00,
+ 0x00c0, 0x21c5, 0xd0c4, 0x00c0, 0x21c7, 0x0078, 0x2181, 0x1078,
+ 0x2211, 0x00c0, 0x21cd, 0x0078, 0x2230, 0x007c, 0x78bc, 0xd0c4,
+ 0x0040, 0x21d4, 0x0078, 0x2181, 0x78bf, 0x0000, 0x6714, 0x2011,
+ 0x0001, 0x22a8, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0040, 0x21f4,
+ 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, 0x0001, 0x0040, 0x21f4,
+ 0xa7bc, 0x8000, 0x2011, 0x0002, 0x20a9, 0x0100, 0xa08e, 0x0002,
+ 0x0040, 0x21f4, 0x0078, 0x220e, 0x1078, 0x1dcb, 0x2d00, 0x2091,
+ 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, 0x6808, 0xa084, 0xffde,
+ 0x680a, 0xade8, 0x0010, 0x2091, 0x8001, 0x00f0, 0x21f7, 0x8211,
+ 0x0040, 0x220e, 0x20a9, 0x0100, 0x0078, 0x21f7, 0x1078, 0x1dad,
+ 0x007c, 0x609f, 0x0000, 0x78b4, 0xa06d, 0x2c00, 0x78b6, 0x00c0,
+ 0x221c, 0x78ba, 0x0078, 0x2224, 0x689e, 0x2d00, 0x6002, 0x78b8,
+ 0xad06, 0x00c0, 0x2224, 0x6002, 0x78b0, 0x8001, 0x78b2, 0x00c0,
+ 0x222f, 0x78bc, 0xc0c4, 0x78be, 0x78b8, 0x2060, 0xa006, 0x007c,
+ 0x0e7e, 0xa02e, 0x2530, 0x7dba, 0x7db6, 0x65ae, 0x65b2, 0x601c,
+ 0x60a2, 0x2048, 0xa984, 0xe1ff, 0x601e, 0xa984, 0x0060, 0x0040,
+ 0x2243, 0x1078, 0x4578, 0x6596, 0x65a6, 0x669a, 0x66aa, 0x6714,
+ 0x2071, 0x4d80, 0xd7fc, 0x00c0, 0x224f, 0x2071, 0x4d40, 0xa784,
+ 0x0f00, 0x800b, 0xa784, 0x001f, 0x0040, 0x225a, 0x8003, 0x8003,
+ 0x8003, 0x8003, 0xa105, 0x71c4, 0xa168, 0x2700, 0x8007, 0xa084,
+ 0x000f, 0x8003, 0x8003, 0x8003, 0x71c8, 0xa100, 0x60c2, 0x2091,
+ 0x8000, 0x7810, 0xd0f4, 0x00c0, 0x2274, 0x6e08, 0xd684, 0x0040,
+ 0x228a, 0xd9fc, 0x00c0, 0x228a, 0x2091, 0x8001, 0x1078, 0x1e42,
+ 0x2091, 0x8000, 0x1078, 0x2004, 0x2091, 0x8001, 0x7814, 0xd0e4,
+ 0x00c0, 0x22ef, 0x7810, 0xd0f4, 0x0040, 0x22ef, 0x601b, 0x0021,
+ 0x0078, 0x22ef, 0x6024, 0xa096, 0x0001, 0x00c0, 0x2291, 0x8000,
+ 0x6026, 0x6a10, 0x6814, 0xa202, 0x0048, 0x22a4, 0x0040, 0x22a4,
+ 0x2091, 0x8001, 0x2039, 0x0200, 0x609c, 0x78ba, 0x609f, 0x0000,
+ 0x1078, 0x22f1, 0x0078, 0x22ef, 0x2c08, 0xd9fc, 0x0040, 0x22cc,
+ 0x6800, 0xa065, 0x0040, 0x22cc, 0x6a04, 0x7000, 0xa084, 0x0002,
+ 0x0040, 0x22c2, 0x704c, 0xa206, 0x00c0, 0x22c2, 0x6b04, 0x2160,
+ 0x2304, 0x6002, 0xa005, 0x00c0, 0x22be, 0x6902, 0x2260, 0x6102,
+ 0x0078, 0x22d8, 0x2d00, 0x2060, 0x1078, 0x2a6d, 0x6e08, 0x2160,
+ 0x6202, 0x6906, 0x0078, 0x22d8, 0x6800, 0x6902, 0xa065, 0x0040,
+ 0x22d4, 0x6102, 0x0078, 0x22d5, 0x6906, 0x2160, 0x6003, 0x0000,
+ 0x2160, 0xd9fc, 0x0040, 0x22df, 0xa6b4, 0xfffc, 0x6e0a, 0x6810,
+ 0x7d08, 0x8528, 0x7d0a, 0x8000, 0x6812, 0x2091, 0x8001, 0xd6b4,
+ 0x0040, 0x22ef, 0xa6b6, 0x0040, 0x6e0a, 0x1078, 0x1e53, 0x0e7f,
+ 0x007c, 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, 0x1078, 0x2004,
+ 0x2091, 0x8001, 0x78b8, 0xa065, 0x0040, 0x2304, 0x609c, 0x78ba,
+ 0x609f, 0x0000, 0x0078, 0x22f1, 0x78b6, 0x78ba, 0x007c, 0x7970,
+ 0x7874, 0x2818, 0xd384, 0x0040, 0x2311, 0x8000, 0xa112, 0x0048,
+ 0x2316, 0x8000, 0xa112, 0x00c8, 0x2326, 0xc384, 0x7a7c, 0x721a,
+ 0x7a78, 0x721e, 0xdac4, 0x0040, 0x2321, 0x7a84, 0x7222, 0x7a80,
+ 0x7226, 0xa006, 0xd384, 0x0040, 0x2326, 0x8000, 0x7876, 0x70d2,
+ 0x781c, 0xa005, 0x0040, 0x2334, 0x8001, 0x781e, 0x00c0, 0x2334,
+ 0x0068, 0x2334, 0x2091, 0x4080, 0x007c, 0x2039, 0x234d, 0x0078,
+ 0x233b, 0x2039, 0x2353, 0x2704, 0xa005, 0x0040, 0x234c, 0xac00,
+ 0x2068, 0x6908, 0x6810, 0x6912, 0x680a, 0x690c, 0x6814, 0x6916,
+ 0x680e, 0x8738, 0x0078, 0x233b, 0x007c, 0x0003, 0x0009, 0x000f,
+ 0x0015, 0x001b, 0x0000, 0x0015, 0x001b, 0x0000, 0x2041, 0x0000,
+ 0x780c, 0x0079, 0x235b, 0x252d, 0x2500, 0x235f, 0x23d8, 0x2039,
+ 0x9574, 0x2734, 0x7d10, 0x0078, 0x237f, 0x6084, 0xa086, 0x0103,
+ 0x00c0, 0x23c1, 0x6114, 0x6018, 0xa105, 0x0040, 0x2374, 0x86ff,
+ 0x00c0, 0x2390, 0x0078, 0x23c1, 0x8603, 0xa080, 0x9555, 0x620c,
+ 0x2202, 0x8000, 0x6210, 0x2202, 0x1078, 0x2026, 0x8630, 0xa68e,
+ 0x000f, 0x0040, 0x244c, 0x786c, 0xa065, 0x00c0, 0x2365, 0x7808,
+ 0xa602, 0x00c8, 0x2390, 0xd5ac, 0x00c0, 0x2390, 0x263a, 0x007c,
+ 0xa682, 0x0003, 0x00c8, 0x244c, 0x2091, 0x8000, 0x2069, 0x0000,
+ 0x6818, 0xd084, 0x00c0, 0x23bc, 0x2011, 0x9555, 0x2204, 0x70c6,
+ 0x8210, 0x2204, 0x70ca, 0xd684, 0x00c0, 0x23ac, 0x8210, 0x2204,
+ 0x70da, 0x8210, 0x2204, 0x70de, 0xa685, 0x8020, 0x70c2, 0x681b,
+ 0x0001, 0x2091, 0x4080, 0x7810, 0xa084, 0xffcf, 0x7812, 0x2091,
+ 0x8001, 0x203b, 0x0000, 0x007c, 0x7810, 0xc0ad, 0x7812, 0x0078,
+ 0x244c, 0x263a, 0x1078, 0x2537, 0x00c0, 0x255a, 0x786c, 0xa065,
+ 0x00c0, 0x2365, 0x2091, 0x8000, 0x7810, 0xa084, 0xffcf, 0x86ff,
+ 0x0040, 0x23d3, 0xc0ad, 0x7812, 0x2091, 0x8001, 0x0078, 0x255a,
+ 0x2039, 0x9574, 0x2734, 0x7d10, 0x0078, 0x23f4, 0x6084, 0xa086,
+ 0x0103, 0x00c0, 0x2435, 0x6114, 0x6018, 0xa105, 0x0040, 0x23ed,
+ 0x86ff, 0x00c0, 0x2405, 0x0078, 0x2435, 0xa680, 0x9555, 0x620c,
+ 0x2202, 0x1078, 0x2026, 0x8630, 0xa68e, 0x001e, 0x0040, 0x244c,
+ 0x786c, 0xa065, 0x00c0, 0x23de, 0x7808, 0xa602, 0x00c8, 0x2405,
+ 0xd5ac, 0x00c0, 0x2405, 0x263a, 0x007c, 0xa682, 0x0006, 0x00c8,
+ 0x244c, 0x2091, 0x8000, 0x2069, 0x0000, 0x6818, 0xd084, 0x00c0,
+ 0x2430, 0x2011, 0x9555, 0x2009, 0x954e, 0x26a8, 0x211c, 0x2204,
+ 0x201a, 0x8108, 0x8210, 0x00f0, 0x2416, 0xa685, 0x8030, 0x70c2,
+ 0x681b, 0x0001, 0x2091, 0x4080, 0x7810, 0xa084, 0xffcf, 0x7812,
+ 0x2091, 0x8001, 0xa006, 0x2009, 0x9575, 0x200a, 0x203a, 0x007c,
+ 0x7810, 0xc0ad, 0x7812, 0x0078, 0x244c, 0x263a, 0x1078, 0x2537,
+ 0x00c0, 0x255a, 0x786c, 0xa065, 0x00c0, 0x23de, 0x2091, 0x8000,
+ 0x7810, 0xa084, 0xffcf, 0x86ff, 0x0040, 0x2447, 0xc0ad, 0x7812,
+ 0x2091, 0x8001, 0x0078, 0x255a, 0x2091, 0x8000, 0x7007, 0x0004,
+ 0x7994, 0x70d4, 0xa102, 0x0048, 0x245d, 0x0040, 0x2467, 0x7b90,
+ 0xa302, 0x00c0, 0x2467, 0x0078, 0x2460, 0x8002, 0x00c0, 0x2467,
+ 0x263a, 0x7810, 0xc0ad, 0x7812, 0x2091, 0x8001, 0x007c, 0xa184,
+ 0xff00, 0x0040, 0x2474, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004,
+ 0x8007, 0xa100, 0x0078, 0x2477, 0x8107, 0x8004, 0x8004, 0x7a9c,
+ 0xa210, 0x721a, 0x7a98, 0xa006, 0xa211, 0x721e, 0xd4c4, 0x0040,
+ 0x2487, 0x7aa4, 0xa211, 0x7222, 0x7aa0, 0xa211, 0x7226, 0x20a1,
+ 0x0030, 0x7003, 0x0000, 0x2009, 0x9554, 0x260a, 0x8109, 0x2198,
+ 0x2104, 0xd084, 0x0040, 0x2495, 0x8633, 0xa6b0, 0x0002, 0x26a8,
+ 0x53a6, 0x8603, 0x7012, 0x7007, 0x0001, 0x7990, 0x7894, 0x8000,
+ 0xa10a, 0x00c8, 0x24a4, 0xa006, 0x2028, 0x7974, 0xa184, 0xff00,
+ 0x0040, 0x24b3, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004, 0x8007,
+ 0xa100, 0x0078, 0x24b6, 0x8107, 0x8004, 0x8004, 0x797c, 0xa108,
+ 0x7a78, 0xa006, 0xa211, 0xd4c4, 0x0040, 0x24c2, 0x7b84, 0xa319,
+ 0x7c80, 0xa421, 0x7008, 0xd0fc, 0x0040, 0x24c2, 0xa084, 0x01e0,
+ 0x0040, 0x24e7, 0x7d10, 0x2031, 0x9554, 0x2634, 0x78a8, 0x8000,
+ 0x78aa, 0xd08c, 0x00c0, 0x24dc, 0x7007, 0x0006, 0x7004, 0xd094,
+ 0x00c0, 0x24d6, 0x0078, 0x244e, 0x2069, 0x4d47, 0x206b, 0x0003,
+ 0x78ac, 0xa085, 0x0300, 0x78ae, 0xa006, 0x0078, 0x24f0, 0x2030,
+ 0x75d6, 0x2091, 0x4080, 0x7d96, 0x7d10, 0xa5ac, 0xffcf, 0x7d12,
+ 0x2091, 0x8001, 0x78aa, 0x7007, 0x0006, 0x263a, 0x7003, 0x0001,
+ 0x711a, 0x721e, 0xd5c4, 0x0040, 0x24ff, 0x7322, 0x7426, 0x007c,
+ 0x6084, 0xa086, 0x0103, 0x00c0, 0x2523, 0x6114, 0x6018, 0xa105,
+ 0x00c0, 0x2523, 0x2069, 0x0000, 0x6818, 0xd084, 0x00c0, 0x2523,
+ 0x600c, 0x70c6, 0x6010, 0x70ca, 0x70c3, 0x8020, 0x681b, 0x0001,
+ 0x2091, 0x4080, 0x1078, 0x2026, 0x0068, 0x2522, 0x786c, 0xa065,
+ 0x00c0, 0x2500, 0x007c, 0x1078, 0x2537, 0x00c0, 0x255a, 0x786c,
+ 0xa065, 0x00c0, 0x2500, 0x0078, 0x255a, 0x1078, 0x2537, 0x00c0,
+ 0x255a, 0x786c, 0xa065, 0x00c0, 0x252d, 0x0078, 0x255a, 0x6084,
+ 0xa086, 0x0103, 0x00c0, 0x254b, 0x6018, 0xc0fc, 0x601a, 0xa086,
+ 0x0004, 0x00c0, 0x254b, 0x7804, 0xd0a4, 0x0040, 0x254b, 0x1078,
+ 0x2026, 0xa006, 0x007c, 0x1078, 0x2560, 0x00c0, 0x2552, 0xa085,
+ 0x0001, 0x007c, 0x1078, 0x256f, 0x00c0, 0x2558, 0x2041, 0x0001,
+ 0x7d10, 0x007c, 0x88ff, 0x0040, 0x255f, 0x2091, 0x4080, 0x007c,
+ 0x7b90, 0x7994, 0x70d4, 0xa102, 0x00c0, 0x2569, 0xa385, 0x0000,
+ 0x007c, 0x0048, 0x256d, 0xa302, 0x007c, 0x8002, 0x007c, 0x7810,
+ 0xd0ec, 0x0040, 0x2587, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x0020,
+ 0x7004, 0xa005, 0x00c0, 0x2584, 0x7008, 0x0e7f, 0xa086, 0x0008,
+ 0x0040, 0x2587, 0x0078, 0x25d8, 0x0e7f, 0x0078, 0x25d8, 0xa184,
+ 0xff00, 0x0040, 0x2594, 0x810f, 0x810c, 0x810c, 0x8004, 0x8004,
+ 0x8007, 0xa100, 0x0078, 0x2597, 0x8107, 0x8004, 0x8004, 0x7a9c,
+ 0x7b98, 0x7ca4, 0x7da0, 0xa210, 0xa006, 0xa319, 0xa421, 0xa529,
+ 0x2009, 0x0018, 0x6028, 0xa005, 0x0040, 0x25a8, 0x2009, 0x0040,
+ 0x1078, 0x1d5b, 0x0040, 0x25ca, 0x78a8, 0x8000, 0x78aa, 0xd08c,
+ 0x00c0, 0x25d8, 0x6014, 0xd0fc, 0x00c0, 0x25ba, 0x2069, 0x4d40,
+ 0x0078, 0x25bc, 0x2069, 0x4d80, 0x2091, 0x8000, 0x681f, 0x0003,
+ 0x78ab, 0x0000, 0x78ac, 0xa085, 0x0300, 0x78ae, 0x2091, 0x8001,
+ 0x0078, 0x25d8, 0x78ab, 0x0000, 0x1078, 0x2026, 0x7990, 0x7894,
+ 0x8000, 0xa10a, 0x00c8, 0x25d5, 0xa006, 0x7896, 0x70d6, 0xa006,
+ 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x2138, 0xd7fc, 0x00c0,
+ 0x25e5, 0x2009, 0x4d59, 0x0078, 0x25e7, 0x2009, 0x4d99, 0x2091,
+ 0x8000, 0x200a, 0x0f7e, 0xd7fc, 0x00c0, 0x25fe, 0x2009, 0x4d40,
+ 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x0040, 0x25fa, 0x2079, 0x0100,
+ 0x0078, 0x2602, 0x2079, 0x0200, 0x0078, 0x2602, 0x2009, 0x4d80,
+ 0x2079, 0x0100, 0x2104, 0xa086, 0x0000, 0x00c0, 0x261b, 0xd7fc,
+ 0x00c0, 0x260e, 0x2009, 0x4d45, 0x0078, 0x2610, 0x2009, 0x4d85,
+ 0x2104, 0xa005, 0x00c0, 0x261b, 0x7830, 0xa084, 0x00c0, 0x00c0,
+ 0x261b, 0x781b, 0x0045, 0x0f7f, 0x007c, 0x2009, 0x0002, 0x2069,
+ 0x4d00, 0x6810, 0xd0ec, 0x00c0, 0x267e, 0x2071, 0x4d80, 0x2079,
+ 0x0100, 0x2021, 0x4fbf, 0x784b, 0x000f, 0x2019, 0x43a3, 0xd184,
+ 0x0040, 0x263e, 0x6810, 0xd0ec, 0x0040, 0x263a, 0x20a1, 0x012b,
+ 0x0078, 0x2640, 0x20a1, 0x022b, 0x0078, 0x2640, 0x20a1, 0x012b,
+ 0x2304, 0xa005, 0x0040, 0x264d, 0x789a, 0x8318, 0x23ac, 0x8318,
+ 0x2398, 0x53a6, 0x3318, 0x0078, 0x2640, 0x789b, 0x0020, 0x20a9,
+ 0x0010, 0x78af, 0x0000, 0x78af, 0x8020, 0x00f0, 0x2651, 0x7003,
+ 0x0000, 0x017e, 0xd18c, 0x2009, 0x0000, 0x0040, 0x2660, 0xc1bd,
+ 0x1078, 0x2849, 0x017f, 0x7020, 0xa084, 0x000f, 0x007e, 0x6814,
+ 0xd0e4, 0x007f, 0x00c0, 0x2670, 0xa085, 0x6340, 0x0078, 0x2672,
+ 0xa085, 0x62c0, 0x7806, 0x780f, 0x9200, 0x7843, 0x00d8, 0x7853,
+ 0x0080, 0x780b, 0x0008, 0x7456, 0x7053, 0x0000, 0x8109, 0x0040,
+ 0x2691, 0x2071, 0x4d40, 0x6810, 0xd0ec, 0x0040, 0x268b, 0x2079,
+ 0x0100, 0x0078, 0x268d, 0x2079, 0x0200, 0x2021, 0x4dbf, 0x0078,
+ 0x262b, 0x007c, 0x017e, 0xd1bc, 0x00c0, 0x26a6, 0x007e, 0x2001,
+ 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x26a2, 0x2011, 0x0101,
+ 0x0078, 0x26a8, 0x2011, 0x0201, 0x0078, 0x26a8, 0x2011, 0x0101,
+ 0xa18c, 0x000f, 0x2204, 0xa084, 0xfff0, 0xa105, 0x2012, 0x017f,
+ 0x1078, 0x2849, 0x007c, 0xd3fc, 0x00c0, 0x26c6, 0x007e, 0x2001,
+ 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x26c2, 0x2011, 0x0101,
+ 0x0078, 0x26c8, 0x2011, 0x0201, 0x0078, 0x26c8, 0x2011, 0x0101,
+ 0x20a9, 0x0009, 0x810b, 0x00f0, 0x26ca, 0xa18c, 0x0e00, 0x2204,
+ 0xa084, 0xf1ff, 0xa105, 0x2012, 0x007c, 0x2019, 0x0002, 0x2001,
+ 0x4d04, 0x2004, 0xd0ec, 0x0040, 0x26e2, 0x8319, 0x2009, 0x0101,
+ 0x0078, 0x26e4, 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, 0x00f0,
+ 0x26e6, 0xa294, 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, 0x200a,
+ 0x8319, 0x0040, 0x26f7, 0x2009, 0x0201, 0x0078, 0x26e4, 0x007c,
+ 0xd3fc, 0x00c0, 0x270b, 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec,
+ 0x007f, 0x0040, 0x2707, 0x2011, 0x0101, 0x0078, 0x270d, 0x2011,
+ 0x0201, 0x0078, 0x270d, 0x2011, 0x0101, 0x20a9, 0x000c, 0x810b,
+ 0x00f0, 0x270f, 0xa18c, 0xf000, 0x2204, 0xa084, 0x0fff, 0xa105,
+ 0x2012, 0x007c, 0xd3fc, 0x00c0, 0x272d, 0x007e, 0x2001, 0x4d04,
+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2729, 0x2011, 0x0102, 0x0078,
+ 0x272f, 0x2011, 0x0202, 0x0078, 0x272f, 0x2011, 0x0102, 0x2204,
+ 0xa084, 0xffcf, 0xa105, 0x2012, 0x007c, 0x0c7e, 0xd1bc, 0x00c0,
+ 0x2749, 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040,
+ 0x2745, 0x2061, 0x0100, 0x0078, 0x274b, 0x2061, 0x0200, 0x0078,
+ 0x274b, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0020,
+ 0x609a, 0x62ac, 0x63ac, 0x0c7f, 0x007c, 0x0c7e, 0xd1bc, 0x00c0,
+ 0x2769, 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040,
+ 0x2765, 0x2061, 0x0100, 0x0078, 0x276b, 0x2061, 0x0200, 0x0078,
+ 0x276b, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0022,
+ 0x609a, 0x60a4, 0xa084, 0xffdf, 0x60ae, 0x0c7f, 0x007c, 0x0c7e,
+ 0xd1bc, 0x00c0, 0x278b, 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec,
+ 0x007f, 0x0040, 0x2787, 0x2061, 0x0100, 0x0078, 0x278d, 0x2061,
+ 0x0200, 0x0078, 0x278d, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003,
+ 0xa080, 0x0022, 0x609a, 0x60a4, 0xa085, 0x0020, 0x60ae, 0x0c7f,
+ 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x27ad, 0x007e, 0x2001, 0x4d04,
+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x27a9, 0x2061, 0x0100, 0x0078,
+ 0x27af, 0x2061, 0x0200, 0x0078, 0x27af, 0x2061, 0x0100, 0xc1bc,
+ 0x8103, 0x8003, 0xa080, 0x0020, 0x609a, 0x60a4, 0xa28c, 0x0020,
+ 0x0040, 0x27bd, 0xc2ac, 0xa39d, 0x4000, 0xc3fc, 0xd3b4, 0x00c0,
+ 0x27c2, 0xc3fd, 0x62ae, 0x2010, 0x60a4, 0x63ae, 0x2018, 0x0c7f,
+ 0x007c, 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, 0xa005, 0x0040,
+ 0x2827, 0xd1fc, 0x0040, 0x27d8, 0x2061, 0x94d0, 0x0078, 0x27da,
+ 0x2061, 0x93c0, 0x1078, 0x282f, 0x0040, 0x280d, 0x20a9, 0x0101,
+ 0xd1fc, 0x0040, 0x27e7, 0x2061, 0x93d0, 0x0078, 0x27e9, 0x2061,
+ 0x92c0, 0x0c7e, 0x1078, 0x282f, 0x0040, 0x27f4, 0x0c7f, 0x8c60,
+ 0x00f0, 0x27e9, 0x0078, 0x2827, 0x007f, 0xd1fc, 0x0040, 0x27fe,
+ 0xa082, 0x93d0, 0x2071, 0x4d80, 0x0078, 0x2802, 0xa082, 0x92c0,
+ 0x2071, 0x4d40, 0x707a, 0x7176, 0x2001, 0x0004, 0x7066, 0x7083,
+ 0x000f, 0x1078, 0x25dd, 0x0078, 0x2823, 0xd1fc, 0x00c0, 0x2814,
+ 0x2071, 0x4d40, 0x0078, 0x2816, 0x2071, 0x4d80, 0x6020, 0xc0dd,
+ 0x6022, 0x7176, 0x2c00, 0x707e, 0x2001, 0x0006, 0x7066, 0x7083,
+ 0x000f, 0x1078, 0x25dd, 0x2001, 0x0000, 0x0078, 0x2829, 0x2001,
+ 0x0001, 0x2091, 0x8001, 0xa005, 0x0e7f, 0x0c7f, 0x007c, 0x2c04,
+ 0xa005, 0x0040, 0x2846, 0x2060, 0x6010, 0xa306, 0x00c0, 0x2843,
+ 0x600c, 0xa206, 0x00c0, 0x2843, 0x6014, 0xa106, 0x00c0, 0x2843,
+ 0xa006, 0x0078, 0x2848, 0x6000, 0x0078, 0x2830, 0xa085, 0x0001,
+ 0x007c, 0x0f7e, 0x0e7e, 0x017e, 0xd1bc, 0x00c0, 0x2861, 0x2079,
+ 0x4d40, 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040,
+ 0x285d, 0x2071, 0x0100, 0x0078, 0x2865, 0x2071, 0x0200, 0x0078,
+ 0x2865, 0x2079, 0x4d80, 0x2071, 0x0100, 0x7920, 0xa18c, 0x000f,
+ 0x70ec, 0xd0c4, 0x00c0, 0x286f, 0x017f, 0x0078, 0x288a, 0x810b,
+ 0x810b, 0x810b, 0x810b, 0x007f, 0xd0bc, 0x00c0, 0x2887, 0x007e,
+ 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2883, 0xa18d,
+ 0x0f00, 0x0078, 0x2889, 0xa18d, 0x0f00, 0x0078, 0x2889, 0xa18d,
+ 0x0800, 0x2104, 0x0e7f, 0x0f7f, 0x007c, 0x0e7e, 0x2001, 0x4d01,
+ 0x2004, 0xd0ac, 0x00c0, 0x290a, 0x68e4, 0xd0ac, 0x0040, 0x290a,
+ 0xa084, 0x0006, 0x00c0, 0x290a, 0x6014, 0xd0fc, 0x00c0, 0x28a4,
+ 0x2071, 0x51c0, 0x0078, 0x28a6, 0x2071, 0x5240, 0x8007, 0xa084,
+ 0x000f, 0x8003, 0x8003, 0x8003, 0xae70, 0x7004, 0xa084, 0x000a,
+ 0x00c0, 0x290a, 0x7108, 0xa194, 0xff00, 0x0040, 0x290a, 0xa18c,
+ 0x00ff, 0x2001, 0x000a, 0xa106, 0x0040, 0x28d9, 0x2001, 0x000c,
+ 0xa106, 0x0040, 0x28dd, 0x2001, 0x0012, 0xa106, 0x0040, 0x28e1,
+ 0x2001, 0x0014, 0xa106, 0x0040, 0x28e5, 0x2001, 0x0019, 0xa106,
+ 0x0040, 0x28e9, 0x2001, 0x0032, 0xa106, 0x0040, 0x28ed, 0x0078,
+ 0x28f1, 0x2009, 0x000c, 0x0078, 0x28f3, 0x2009, 0x0012, 0x0078,
+ 0x28f3, 0x2009, 0x0014, 0x0078, 0x28f3, 0x2009, 0x0019, 0x0078,
+ 0x28f3, 0x2009, 0x0020, 0x0078, 0x28f3, 0x2009, 0x003f, 0x0078,
+ 0x28f3, 0x2011, 0x0000, 0x2100, 0xa205, 0x700a, 0x2071, 0x4d00,
+ 0x7004, 0xd0bc, 0x0040, 0x290a, 0x6014, 0xd0fc, 0x00c0, 0x2905,
+ 0x70ea, 0x2071, 0x4d40, 0x0078, 0x2908, 0x70ee, 0x2071, 0x4d80,
+ 0x701f, 0x800f, 0x0e7f, 0x007c, 0x0068, 0x290c, 0x2091, 0x8000,
+ 0x2071, 0x0000, 0x007e, 0x7018, 0xd084, 0x00c0, 0x2913, 0x007f,
+ 0x2071, 0x0010, 0x70ca, 0x007f, 0x70c6, 0x70c3, 0x8002, 0x70db,
+ 0x080d, 0x70df, 0x0000, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091,
+ 0x4080, 0x0078, 0x2929, 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x78a0,
+ 0x708e, 0x7592, 0x7496, 0x769a, 0x779e, 0xa594, 0x003f, 0xd4f4,
+ 0x0040, 0x2940, 0xa784, 0x007d, 0x00c0, 0x4319, 0x1078, 0x290c,
+ 0xa49c, 0x000f, 0xa382, 0x0004, 0x0050, 0x294b, 0xa3a6, 0x0007,
+ 0x00c0, 0x290c, 0x2418, 0x8507, 0xa084, 0x000f, 0x0079, 0x2950,
+ 0x2fc6, 0x30b5, 0x30e0, 0x3341, 0x372a, 0x3794, 0x3834, 0x38b0,
+ 0x399e, 0x3a8d, 0x2963, 0x2960, 0x2d99, 0x2eba, 0x36fb, 0x2960,
+ 0x1078, 0x290c, 0x007c, 0xa006, 0x0078, 0x296d, 0x7808, 0xc08d,
+ 0x780a, 0xa006, 0x7002, 0x704e, 0x7046, 0x70d2, 0x7060, 0xa005,
+ 0x00c0, 0x2ad3, 0x7064, 0xa084, 0x0007, 0x0079, 0x2977, 0x297f,
+ 0x29f2, 0x29fb, 0x2a06, 0x2a11, 0x2ab9, 0x2a1c, 0x29f2, 0x7830,
+ 0xd0bc, 0x00c0, 0x2962, 0x71d4, 0xd1bc, 0x00c0, 0x2962, 0xd1b4,
+ 0x00c0, 0x29cf, 0x70a4, 0xa086, 0x0001, 0x0040, 0x2962, 0x70b4,
+ 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b, 0x0010, 0x6b0c, 0x7baa,
+ 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, 0xa886, 0x0001,
+ 0x0040, 0x29a5, 0x69bc, 0x7daa, 0x79aa, 0x68c0, 0xa04d, 0x6e1c,
+ 0x2001, 0x0010, 0x0078, 0x2c2c, 0x7060, 0xa005, 0x00c0, 0x2962,
+ 0x0c7e, 0x0d7e, 0x70b4, 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b,
+ 0x0010, 0x6b0c, 0x7baa, 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d,
+ 0xa05d, 0xa886, 0x0001, 0x0040, 0x29c8, 0x69bc, 0x7daa, 0x79aa,
+ 0x68c0, 0xa04d, 0x6e1c, 0x2001, 0x0020, 0x0078, 0x2c2c, 0x1078,
+ 0x42ba, 0x00c0, 0x2962, 0x781b, 0x005b, 0x70bc, 0xa06d, 0x68b4,
+ 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0x7808,
+ 0xc08d, 0x780a, 0x68bc, 0x7042, 0xc1b4, 0x71d6, 0x70b8, 0xa065,
+ 0x68c0, 0x705a, 0x7003, 0x0002, 0x2d00, 0x704e, 0xad80, 0x0009,
+ 0x7046, 0x007c, 0x1078, 0x42ba, 0x00c0, 0x29fa, 0x781b, 0x0047,
+ 0x7003, 0x0004, 0x007c, 0x1078, 0x42ba, 0x00c0, 0x2a05, 0x2011,
+ 0x000c, 0x1078, 0x2a2c, 0x7003, 0x0004, 0x007c, 0x1078, 0x42ba,
+ 0x00c0, 0x2a10, 0x2011, 0x0006, 0x1078, 0x2a2c, 0x7003, 0x0004,
+ 0x007c, 0x1078, 0x42ba, 0x00c0, 0x2a1b, 0x2011, 0x000d, 0x1078,
+ 0x2a2c, 0x7003, 0x0004, 0x007c, 0x1078, 0x42ba, 0x00c0, 0x2a2b,
+ 0x2011, 0x0006, 0x1078, 0x2a2c, 0x707c, 0x707f, 0x0000, 0x2068,
+ 0x704e, 0x7003, 0x0001, 0x007c, 0x7174, 0xc1fc, 0x8107, 0x7882,
+ 0x789b, 0x0010, 0xa286, 0x000c, 0x00c0, 0x2a3b, 0x7aaa, 0x2001,
+ 0x0001, 0x0078, 0x2a50, 0xa18c, 0x001f, 0xa18d, 0x00c0, 0x79aa,
+ 0xa286, 0x000d, 0x0040, 0x2a49, 0x7aaa, 0x2001, 0x0002, 0x0078,
+ 0x2a50, 0x78ab, 0x0020, 0x7178, 0x79aa, 0x7aaa, 0x2001, 0x0004,
+ 0x789b, 0x0060, 0x78aa, 0x785b, 0x0004, 0x781b, 0x0110, 0x1078,
+ 0x42cf, 0x7083, 0x000f, 0x70d4, 0xd0b4, 0x0040, 0x2a6c, 0xc0b4,
+ 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a,
+ 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, 0x7014, 0xa005, 0x00c0,
+ 0x2a7b, 0x70d4, 0xd0b4, 0x0040, 0x2a7c, 0x70b8, 0xac06, 0x00c0,
+ 0x2a7c, 0x1078, 0x2a5b, 0x007c, 0x017e, 0x71a4, 0xa186, 0x0001,
+ 0x0040, 0x2aae, 0x0d7e, 0x027e, 0x2100, 0x2011, 0x0001, 0xa212,
+ 0x70b4, 0x2068, 0x6800, 0xac06, 0x0040, 0x2a95, 0x8211, 0x0040,
+ 0x2aac, 0x1078, 0x2ab0, 0x0078, 0x2a8a, 0x0c7e, 0x2100, 0x2011,
+ 0x0001, 0xa212, 0x70b4, 0x2068, 0x6800, 0x2060, 0x6008, 0xa084,
+ 0xfbef, 0x600a, 0x8211, 0x0040, 0x2aa9, 0x1078, 0x2ab0, 0x0078,
+ 0x2a9c, 0x70a7, 0x0001, 0x0c7f, 0x027f, 0x0d7f, 0x017f, 0x007c,
+ 0xade8, 0x0005, 0x70ac, 0xad06, 0x00c0, 0x2ab8, 0x70a8, 0x2068,
+ 0x007c, 0x1078, 0x42ba, 0x00c0, 0x2962, 0x707c, 0x2068, 0x7774,
+ 0x1078, 0x4158, 0x2c50, 0x1078, 0x438e, 0x789b, 0x0010, 0x6814,
+ 0xa084, 0x001f, 0xc0bd, 0x78aa, 0x6e1c, 0x2041, 0x0001, 0x2001,
+ 0x0004, 0x0078, 0x2c32, 0x1078, 0x42ba, 0x00c0, 0x2962, 0x789b,
+ 0x0010, 0x7060, 0x2068, 0x6f14, 0x70d4, 0xd0b4, 0x0040, 0x2aed,
+ 0xc0b4, 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef,
+ 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f, 0x1078, 0x4158, 0x2c50,
+ 0x1078, 0x438e, 0x6824, 0xa005, 0x0040, 0x2afe, 0xa082, 0x0006,
+ 0x0048, 0x2afc, 0x0078, 0x2afe, 0x6827, 0x0005, 0x6814, 0xa084,
+ 0x001f, 0xc0bd, 0x78aa, 0x2031, 0x0020, 0x2041, 0x0001, 0x2001,
+ 0x0003, 0x0078, 0x2c32, 0xc28d, 0x72d6, 0x72c0, 0xa200, 0xa015,
+ 0x7154, 0x8108, 0xa12a, 0x0048, 0x2b16, 0x71c0, 0x2164, 0x6504,
+ 0x85ff, 0x00c0, 0x2b2d, 0x7156, 0x8421, 0x00c0, 0x2b11, 0x70d4,
+ 0xd08c, 0x0040, 0x2b29, 0x70d0, 0xa005, 0x00c0, 0x2b29, 0x70d3,
+ 0x000a, 0x007c, 0x2200, 0x0078, 0x2b1b, 0x70d4, 0xc08c, 0x70d6,
+ 0x70d3, 0x0000, 0x6034, 0xa005, 0x00c0, 0x2b2a, 0x6708, 0xa784,
+ 0x073f, 0x0040, 0x2b5c, 0xd7d4, 0x00c0, 0x2b2a, 0xa784, 0x0021,
+ 0x00c0, 0x2b2a, 0xa784, 0x0002, 0x0040, 0x2b4d, 0xa784, 0x0004,
+ 0x0040, 0x2b2a, 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0218, 0x00c0,
+ 0x2b2a, 0xa784, 0x0100, 0x0040, 0x2b5c, 0x6018, 0xa005, 0x00c0,
+ 0x2b2a, 0xa7bc, 0xfeff, 0x670a, 0x2568, 0x6823, 0x0000, 0x6e1c,
+ 0xa684, 0x000e, 0x6318, 0x0040, 0x2b6d, 0x601c, 0xa302, 0x0048,
+ 0x2b70, 0x0040, 0x2b70, 0x0078, 0x2b2a, 0x83ff, 0x00c0, 0x2b2a,
+ 0x2d58, 0x2c50, 0x7156, 0xd7bc, 0x00c0, 0x2b78, 0x7028, 0x6022,
+ 0xc7bc, 0x670a, 0x68c0, 0xa065, 0xa04d, 0x6100, 0x2a60, 0x2041,
+ 0x0001, 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, 0xd1fc, 0x0040,
+ 0x2b8c, 0xd684, 0x0040, 0x2b8e, 0xa39c, 0xffbf, 0xd6a4, 0x0040,
+ 0x2b93, 0xa39d, 0x0020, 0xa684, 0x000e, 0x00c0, 0x2bde, 0xc7a5,
+ 0x670a, 0x2c00, 0x68c6, 0x77a4, 0xa786, 0x0001, 0x00c0, 0x2bb2,
+ 0x70d4, 0xd0b4, 0x00c0, 0x2bb2, 0x7000, 0xa082, 0x0002, 0x00c8,
+ 0x2bb2, 0x7830, 0xd0bc, 0x00c0, 0x2bb2, 0x789b, 0x0010, 0x7baa,
+ 0x0078, 0x2c2a, 0x8739, 0x77a6, 0x2750, 0x77b0, 0xa7b0, 0x0005,
+ 0x70ac, 0xa606, 0x00c0, 0x2bbd, 0x76a8, 0x76b2, 0x2c3a, 0x8738,
+ 0x2d3a, 0x8738, 0x283a, 0x8738, 0x233a, 0x8738, 0x253a, 0x7830,
+ 0xd0bc, 0x0040, 0x2bd5, 0x2091, 0x8000, 0x2091, 0x303d, 0x70d4,
+ 0xa084, 0x303d, 0x2091, 0x8000, 0x2090, 0xaad5, 0x0000, 0x0040,
+ 0x2bdd, 0x8421, 0x2200, 0x00c0, 0x2b10, 0x007c, 0xd1dc, 0x0040,
+ 0x3d57, 0x2029, 0x0020, 0xd69c, 0x00c0, 0x2beb, 0x8528, 0xd68c,
+ 0x00c0, 0x2beb, 0x8528, 0x8840, 0x6f14, 0x610c, 0x8108, 0xa18c,
+ 0x00ff, 0x70cc, 0xa160, 0x2c64, 0x8cff, 0x0040, 0x2c0a, 0x6014,
+ 0xa706, 0x00c0, 0x2bf3, 0x60b8, 0x8001, 0x60ba, 0x00c0, 0x2bee,
+ 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, 0x2200, 0x8421, 0x00c0,
+ 0x2b10, 0x007c, 0x2a60, 0x610e, 0x69be, 0x2c00, 0x68c6, 0x8840,
+ 0x6008, 0xc0d5, 0x600a, 0x77a4, 0xa786, 0x0001, 0x00c0, 0x2bb2,
+ 0x70d4, 0xd0b4, 0x00c0, 0x2bb2, 0x7000, 0xa082, 0x0002, 0x00c8,
+ 0x2bb2, 0x7830, 0xd0bc, 0x00c0, 0x2bb2, 0x789b, 0x0010, 0x7baa,
+ 0x7daa, 0x79aa, 0x2001, 0x0002, 0x007e, 0x6018, 0x8000, 0x601a,
+ 0x0078, 0x2c33, 0x007e, 0x2960, 0x6104, 0x2a60, 0xa184, 0x0018,
+ 0x0040, 0x2c4f, 0xa184, 0x0010, 0x0040, 0x2c42, 0x1078, 0x3f6a,
+ 0x00c0, 0x2c74, 0xa184, 0x0008, 0x0040, 0x2c4f, 0x69a0, 0xa184,
+ 0x0600, 0x00c0, 0x2c4f, 0x1078, 0x3e4d, 0x0078, 0x2c74, 0x69a0,
+ 0xa184, 0x1e00, 0x0040, 0x2c7f, 0xa184, 0x0800, 0x0040, 0x2c68,
+ 0x0c7e, 0x2960, 0x6000, 0xa085, 0x2000, 0x6002, 0x6104, 0xa18d,
+ 0x0010, 0x6106, 0x0c7f, 0x1078, 0x3f6a, 0x00c0, 0x2c74, 0x69a0,
+ 0xa184, 0x0200, 0x0040, 0x2c70, 0x1078, 0x3ead, 0x0078, 0x2c74,
+ 0xa184, 0x0400, 0x00c0, 0x2c4b, 0x69a0, 0xa184, 0x1000, 0x0040,
+ 0x2c7f, 0x6914, 0xa18c, 0xff00, 0x810f, 0x1078, 0x2755, 0x027f,
+ 0xa68c, 0x00e0, 0xa684, 0x0060, 0x0040, 0x2c8c, 0xa086, 0x0060,
+ 0x00c0, 0x2c8c, 0xa18d, 0x4000, 0xa18d, 0x0104, 0x69b6, 0x789b,
+ 0x0060, 0x2800, 0x78aa, 0x6818, 0xc0fd, 0x681a, 0xd6bc, 0x0040,
+ 0x2ca7, 0xc0fc, 0x7087, 0x0000, 0xa08a, 0x000d, 0x0050, 0x2ca5,
+ 0xa08a, 0x000c, 0x7186, 0x2001, 0x000c, 0x800c, 0x718a, 0x78aa,
+ 0x3518, 0x3340, 0x3428, 0x8000, 0x80ac, 0xaf80, 0x002b, 0x20a0,
+ 0x789b, 0x0000, 0xad80, 0x000b, 0x2098, 0x53a6, 0x23a8, 0x2898,
+ 0x25a0, 0xa286, 0x0020, 0x00c0, 0x2cdf, 0x70d4, 0xc0b5, 0x70d6,
+ 0x2c00, 0x70ba, 0x2d00, 0x70be, 0x6814, 0xc0fc, 0x8007, 0x7882,
+ 0xa286, 0x0002, 0x0040, 0x2d15, 0x70a4, 0x8000, 0x70a6, 0x74b4,
+ 0xa498, 0x0005, 0x70ac, 0xa306, 0x00c0, 0x2cd7, 0x73a8, 0x73b6,
+ 0xa286, 0x0010, 0x0040, 0x2962, 0x0d7f, 0x0c7f, 0x007c, 0x7000,
+ 0xa005, 0x00c0, 0x2cbd, 0xa286, 0x0002, 0x00c0, 0x2d2f, 0x1078,
+ 0x42ba, 0x00c0, 0x2cbd, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x2091,
+ 0x8000, 0x781b, 0x005b, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de,
+ 0x6898, 0x78d2, 0x78da, 0x2091, 0x8001, 0x7808, 0xc08d, 0x780a,
+ 0x127e, 0x0d7e, 0x0c7e, 0x70d4, 0xa084, 0x2700, 0x2090, 0x0c7f,
+ 0x0d7f, 0x127f, 0x2900, 0x705a, 0x68bc, 0x7042, 0x7003, 0x0002,
+ 0x2d00, 0x704e, 0xad80, 0x0009, 0x7046, 0x7830, 0xd0bc, 0x0040,
+ 0x2d21, 0x2091, 0x303d, 0x70d4, 0xa084, 0x303d, 0x2091, 0x8000,
+ 0x2090, 0x70a4, 0xa005, 0x00c0, 0x2d26, 0x007c, 0x8421, 0x0040,
+ 0x2d25, 0x7250, 0x70c0, 0xa200, 0xa015, 0x0078, 0x2b10, 0xa286,
+ 0x0010, 0x00c0, 0x2d60, 0x1078, 0x42ba, 0x00c0, 0x2cbd, 0x6814,
+ 0xc0fc, 0x8007, 0x7882, 0x781b, 0x005b, 0x68b4, 0x785a, 0x6894,
+ 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0x7808, 0xc08d, 0x780a,
+ 0x70a4, 0x8000, 0x70a6, 0x74b4, 0xa490, 0x0005, 0x70ac, 0xa206,
+ 0x00c0, 0x2d53, 0x72a8, 0x72b6, 0x2900, 0x705a, 0x68bc, 0x7042,
+ 0x7003, 0x0002, 0x2d00, 0x704e, 0xad80, 0x0009, 0x7046, 0x007c,
+ 0x6bb4, 0xa39d, 0x2000, 0x7b5a, 0x6814, 0xc0fc, 0x8007, 0x7882,
+ 0x6b94, 0x7bd6, 0x7bde, 0x6e98, 0x7ed2, 0x7eda, 0x781b, 0x005b,
+ 0x2900, 0x705a, 0x7202, 0x7808, 0xc08d, 0x780a, 0x2300, 0xa605,
+ 0x0040, 0x2d8b, 0x70d4, 0xa084, 0x2700, 0xa086, 0x2300, 0x00c0,
+ 0x2d85, 0x2009, 0x0000, 0x0078, 0x2d87, 0x2009, 0x0001, 0xa284,
+ 0x000f, 0x1079, 0x2d8f, 0xad80, 0x0009, 0x7046, 0x007c, 0x2d97,
+ 0x4805, 0x4805, 0x47f2, 0x4805, 0x2d97, 0x2d97, 0x2d97, 0x1078,
+ 0x290c, 0x7808, 0xa084, 0xfffd, 0x780a, 0x0f7e, 0x2079, 0x4d00,
+ 0x78ac, 0x0f7f, 0xd084, 0x0040, 0x2dbf, 0x7064, 0xa086, 0x0001,
+ 0x00c0, 0x2dad, 0x7066, 0x0078, 0x2e96, 0x7064, 0xa086, 0x0005,
+ 0x00c0, 0x2dbd, 0x707c, 0x2068, 0x681b, 0x0004, 0x6817, 0x0000,
+ 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, 0x7067, 0x0000, 0x70a7,
+ 0x0000, 0x70a8, 0x70b2, 0x70b6, 0x1078, 0x2a5b, 0x157e, 0x2011,
+ 0x0004, 0x7164, 0xa186, 0x0001, 0x0040, 0x2ddf, 0xa186, 0x0007,
+ 0x00c0, 0x2dd6, 0x701f, 0x0005, 0x0078, 0x2ddf, 0x701f, 0x0001,
+ 0x7067, 0x0000, 0x70d4, 0xc0dd, 0x70d6, 0x0078, 0x2de1, 0x7067,
+ 0x0000, 0x2001, 0x4d0a, 0x2004, 0xa084, 0x00ff, 0xa086, 0x0018,
+ 0x0040, 0x2df1, 0x7018, 0x7016, 0xa005, 0x00c0, 0x2df1, 0x70a7,
+ 0x0001, 0x067e, 0x1078, 0x44cc, 0x20a9, 0x0010, 0x2039, 0x0000,
+ 0x1078, 0x4052, 0xa7b8, 0x0100, 0x00f0, 0x2df8, 0x067f, 0x7000,
+ 0x0079, 0x2e02, 0x2e3c, 0x2e17, 0x2e17, 0x2e0c, 0x2e3c, 0x2e3c,
+ 0x2e3c, 0x2e0a, 0x1078, 0x290c, 0x7060, 0xa005, 0x0040, 0x2e3c,
+ 0xad06, 0x00c0, 0x2e17, 0x6800, 0x7062, 0x0078, 0x2e29, 0x6820,
+ 0xd084, 0x00c0, 0x2e25, 0x6f14, 0x1078, 0x4158, 0x6008, 0xc0d4,
+ 0x600a, 0x1078, 0x3d27, 0x0078, 0x2e29, 0x705c, 0x2060, 0x6800,
+ 0x6002, 0xa684, 0x5f00, 0x681e, 0x6818, 0xd0fc, 0x0040, 0x2e31,
+ 0x6a1a, 0x6817, 0x0000, 0x682b, 0x0000, 0x6820, 0xa084, 0x00ff,
+ 0xc09d, 0x6822, 0x1078, 0x2013, 0xb284, 0x0400, 0x0040, 0x2e44,
+ 0x2021, 0x94d0, 0x0078, 0x2e46, 0x2021, 0x93c0, 0x1078, 0x2e9b,
+ 0xb284, 0x0400, 0x0040, 0x2e50, 0x2021, 0x4d98, 0x0078, 0x2e52,
+ 0x2021, 0x4d58, 0x1078, 0x2e9b, 0x20a9, 0x0101, 0xb284, 0x0400,
+ 0x0040, 0x2e5e, 0x2021, 0x93d0, 0x0078, 0x2e60, 0x2021, 0x92c0,
+ 0x1078, 0x2e9b, 0x8420, 0x00f0, 0x2e60, 0xb284, 0x0300, 0x0040,
+ 0x2e6d, 0x2061, 0x52c0, 0x0078, 0x2e6f, 0x2061, 0x72c0, 0x2021,
+ 0x0002, 0x20a9, 0x0100, 0x6110, 0x81ff, 0x0040, 0x2e8c, 0x6018,
+ 0x017e, 0x007e, 0x2011, 0x4d02, 0x220c, 0xa102, 0x2012, 0x007f,
+ 0x017f, 0xa102, 0x0050, 0x2e8c, 0x6012, 0x00c0, 0x2e8c, 0x2011,
+ 0x4d04, 0x2204, 0xc0a5, 0x2012, 0x601b, 0x0000, 0xace0, 0x0010,
+ 0x00f0, 0x2e73, 0x8421, 0x00c0, 0x2e71, 0x157f, 0x7003, 0x0000,
+ 0x704f, 0x0000, 0x007c, 0x047e, 0x2404, 0xa005, 0x0040, 0x2eb6,
+ 0x2068, 0x6800, 0x007e, 0x6a1a, 0x6817, 0x0000, 0x682b, 0x0000,
+ 0x68b4, 0xa084, 0x5f00, 0x681e, 0x6820, 0xa084, 0x00ff, 0xc09d,
+ 0x6822, 0x1078, 0x2013, 0x007f, 0x0078, 0x2e9d, 0x047f, 0x2023,
+ 0x0000, 0x007c, 0xa282, 0x0003, 0x0050, 0x2ec0, 0x1078, 0x290c,
+ 0x2300, 0x0079, 0x2ec3, 0x2ec6, 0x2f51, 0x2f6e, 0xa282, 0x0002,
+ 0x0040, 0x2ecc, 0x1078, 0x290c, 0x7064, 0x7067, 0x0000, 0x7083,
+ 0x0000, 0x0079, 0x2ed3, 0x2edb, 0x2edb, 0x2edd, 0x2f1d, 0x3d63,
+ 0x2edb, 0x2f1d, 0x2edb, 0x1078, 0x290c, 0x7774, 0x1078, 0x4052,
+ 0x7774, 0xa7bc, 0x8f00, 0x1078, 0x4158, 0x6018, 0xa005, 0x0040,
+ 0x2f14, 0xd7fc, 0x00c0, 0x2ef0, 0x2021, 0x93c0, 0x0078, 0x2ef2,
+ 0x2021, 0x94d0, 0x2009, 0x0005, 0x2011, 0x0010, 0x1078, 0x2f89,
+ 0x0040, 0x2f14, 0x157e, 0x20a9, 0x0101, 0xd7fc, 0x00c0, 0x2f04,
+ 0x2021, 0x92c0, 0x0078, 0x2f06, 0x2021, 0x93d0, 0x047e, 0x2009,
+ 0x0005, 0x2011, 0x0010, 0x1078, 0x2f89, 0x047f, 0x0040, 0x2f13,
+ 0x8420, 0x00f0, 0x2f06, 0x157f, 0x8738, 0xa784, 0x001f, 0x00c0,
+ 0x2ee3, 0x0078, 0x2966, 0x0078, 0x2966, 0x7774, 0x1078, 0x4158,
+ 0x6018, 0xa005, 0x0040, 0x2f4f, 0xd7fc, 0x00c0, 0x2f2b, 0x2021,
+ 0x93c0, 0x0078, 0x2f2d, 0x2021, 0x94d0, 0x2009, 0x0005, 0x2011,
+ 0x0020, 0x1078, 0x2f89, 0x0040, 0x2f4f, 0x157e, 0x20a9, 0x0101,
+ 0xd7fc, 0x00c0, 0x2f3f, 0x2021, 0x92c0, 0x0078, 0x2f41, 0x2021,
+ 0x93d0, 0x047e, 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x2f89,
+ 0x047f, 0x0040, 0x2f4e, 0x8420, 0x00f0, 0x2f41, 0x157f, 0x0078,
+ 0x2966, 0x2200, 0x0079, 0x2f54, 0x2f57, 0x2f59, 0x2f59, 0x1078,
+ 0x290c, 0x2009, 0x0012, 0x7064, 0xa086, 0x0002, 0x0040, 0x2f62,
+ 0x2009, 0x000e, 0x6818, 0xd0fc, 0x0040, 0x2f67, 0x691a, 0x7067,
+ 0x0000, 0x70d4, 0xc0dd, 0x70d6, 0x0078, 0x4267, 0x2200, 0x0079,
+ 0x2f71, 0x2f76, 0x2f59, 0x2f74, 0x1078, 0x290c, 0x1078, 0x44cc,
+ 0x7000, 0xa086, 0x0002, 0x00c0, 0x3cd5, 0x1078, 0x3d44, 0x6008,
+ 0xa084, 0xfbef, 0x600a, 0x1078, 0x3cc6, 0x0040, 0x3cd5, 0x0078,
+ 0x2966, 0x2404, 0xa005, 0x0040, 0x2fc2, 0x2068, 0x2d04, 0x007e,
+ 0x6814, 0xa706, 0x0040, 0x2f98, 0x2d20, 0x007f, 0x0078, 0x2f8a,
+ 0x007f, 0x2022, 0x691a, 0x6817, 0x0000, 0x682b, 0x0000, 0x68b4,
+ 0xa084, 0x5f00, 0x681e, 0x6820, 0xa084, 0x00ff, 0xa205, 0x6822,
+ 0x1078, 0x2013, 0x2021, 0x4d02, 0x241c, 0x8319, 0x2322, 0x6010,
+ 0x8001, 0x6012, 0x00c0, 0x2fb9, 0x2021, 0x4d04, 0x2404, 0xc0a5,
+ 0x2022, 0x6008, 0xa084, 0xf9ef, 0x600a, 0x1078, 0x2a7c, 0x1078,
+ 0x3d44, 0x007c, 0xa085, 0x0001, 0x0078, 0x2fc1, 0x2300, 0x0079,
+ 0x2fc9, 0x2fce, 0x2fcc, 0x304e, 0x1078, 0x290c, 0x78e4, 0xa005,
+ 0x00d0, 0x3004, 0x3208, 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec,
+ 0x007f, 0x0040, 0x2fdf, 0xa18c, 0x0300, 0x0078, 0x2fe1, 0xa18c,
+ 0x0400, 0x0040, 0x2fe7, 0x0018, 0x2962, 0x0078, 0x2fe9, 0x0028,
+ 0x2962, 0x2008, 0xa084, 0x0030, 0x00c0, 0x2ff0, 0x0078, 0x36fb,
+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x2fee, 0x2100, 0xa084, 0x0007,
+ 0x0079, 0x2ffa, 0x302e, 0x3038, 0x3023, 0x3002, 0x42af, 0x42af,
+ 0x3002, 0x3043, 0x1078, 0x290c, 0x7000, 0xa086, 0x0004, 0x00c0,
+ 0x301e, 0x7064, 0xa086, 0x0002, 0x00c0, 0x3014, 0x2011, 0x0002,
+ 0x2019, 0x0000, 0x0078, 0x2eba, 0x7064, 0xa086, 0x0006, 0x0040,
+ 0x300e, 0x7064, 0xa086, 0x0004, 0x0040, 0x300e, 0x79e4, 0x2001,
+ 0x0003, 0x0078, 0x3385, 0x6818, 0xd0fc, 0x0040, 0x3029, 0x681b,
+ 0x001d, 0x1078, 0x4022, 0x781b, 0x0061, 0x007c, 0x6818, 0xd0fc,
+ 0x0040, 0x3034, 0x681b, 0x001d, 0x1078, 0x4022, 0x0078, 0x428b,
+ 0x6818, 0xd0fc, 0x0040, 0x303e, 0x681b, 0x001d, 0x1078, 0x4022,
+ 0x781b, 0x00f5, 0x007c, 0x6818, 0xd0fc, 0x0040, 0x3049, 0x681b,
+ 0x001d, 0x1078, 0x4022, 0x781b, 0x00c5, 0x007c, 0xa584, 0x000f,
+ 0x00c0, 0x306b, 0x7000, 0x0079, 0x3055, 0x2966, 0x305d, 0x305f,
+ 0x3cd5, 0x3cd5, 0x3cd5, 0x305d, 0x305d, 0x1078, 0x290c, 0x1078,
+ 0x3d44, 0x6008, 0xa084, 0xfbef, 0x600a, 0x1078, 0x3cc6, 0x0040,
+ 0x3cd5, 0x0078, 0x2966, 0x78e4, 0xa005, 0x00d0, 0x3004, 0x3208,
+ 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x307c,
+ 0xa18c, 0x0300, 0x0078, 0x307e, 0xa18c, 0x0400, 0x0040, 0x3084,
+ 0x0018, 0x3004, 0x0078, 0x3086, 0x0028, 0x3004, 0x2008, 0xa084,
+ 0x0030, 0x00c0, 0x308e, 0x781b, 0x005b, 0x007c, 0x78ec, 0xa084,
+ 0x0003, 0x0040, 0x308b, 0x2100, 0xa184, 0x0007, 0x0079, 0x3098,
+ 0x30a7, 0x30ab, 0x30a2, 0x30a0, 0x42af, 0x42af, 0x30a0, 0x42a9,
+ 0x1078, 0x290c, 0x1078, 0x402a, 0x781b, 0x0061, 0x007c, 0x1078,
+ 0x402a, 0x0078, 0x428b, 0x1078, 0x402a, 0x781b, 0x00f5, 0x007c,
+ 0x1078, 0x402a, 0x781b, 0x00c5, 0x007c, 0x2300, 0x0079, 0x30b8,
+ 0x30bd, 0x30bb, 0x30bf, 0x1078, 0x290c, 0x0078, 0x38b0, 0x681b,
+ 0x0016, 0x78a3, 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x38b0,
+ 0x78ec, 0xa084, 0x0003, 0x0040, 0x38b0, 0xa184, 0x0100, 0x0040,
+ 0x30c3, 0xa184, 0x0007, 0x0079, 0x30d5, 0x30dd, 0x30ab, 0x3023,
+ 0x4267, 0x42af, 0x42af, 0x4267, 0x42a9, 0x1078, 0x4273, 0x007c,
+ 0xa282, 0x0005, 0x0050, 0x30e6, 0x1078, 0x290c, 0x2300, 0x0079,
+ 0x30e9, 0x30ec, 0x330b, 0x3316, 0x2200, 0x0079, 0x30ef, 0x3109,
+ 0x30f6, 0x3109, 0x30f4, 0x32ee, 0x1078, 0x290c, 0x789b, 0x0018,
+ 0x78a8, 0xa084, 0x00ff, 0xa082, 0x0020, 0x0048, 0x4011, 0xa08a,
+ 0x0004, 0x00c8, 0x4011, 0x0079, 0x3105, 0x4011, 0x4011, 0x4011,
+ 0x3fbb, 0x789b, 0x0018, 0x79a8, 0xa184, 0x0080, 0x0040, 0x311a,
+ 0x0078, 0x4011, 0x7000, 0xa005, 0x00c0, 0x3110, 0x2011, 0x0004,
+ 0x0078, 0x3a9b, 0xa184, 0x00ff, 0xa08a, 0x0010, 0x00c8, 0x4011,
+ 0x0079, 0x3122, 0x3134, 0x3132, 0x3149, 0x314d, 0x320f, 0x4011,
+ 0x4011, 0x3211, 0x4011, 0x4011, 0x32ea, 0x32ea, 0x4011, 0x4011,
+ 0x4011, 0x32ec, 0x1078, 0x290c, 0xd6e4, 0x0040, 0x313f, 0x2001,
+ 0x0300, 0x8000, 0x8000, 0x783a, 0x781b, 0x00c0, 0x007c, 0x6818,
+ 0xd0fc, 0x0040, 0x3147, 0x681b, 0x001d, 0x0078, 0x3137, 0x0078,
+ 0x4267, 0x681b, 0x001d, 0x0078, 0x401b, 0x6920, 0x6922, 0xa684,
+ 0x1800, 0x00c0, 0x31a1, 0x6820, 0xd084, 0x00c0, 0x31a7, 0x6818,
+ 0xa086, 0x0008, 0x00c0, 0x315e, 0x681b, 0x0000, 0xd6d4, 0x0040,
+ 0x320c, 0xd6bc, 0x0040, 0x319e, 0x7087, 0x0000, 0x6818, 0xa084,
+ 0x003f, 0xa08a, 0x000d, 0x0050, 0x319e, 0xa08a, 0x000c, 0x7186,
+ 0x2001, 0x000c, 0x800c, 0x718a, 0x789b, 0x0061, 0x78aa, 0x157e,
+ 0x137e, 0x147e, 0x017e, 0x3208, 0xa18c, 0x0300, 0x0040, 0x3190,
+ 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x318c,
+ 0x20a1, 0x012b, 0x0078, 0x3192, 0x20a1, 0x022b, 0x0078, 0x3192,
+ 0x20a1, 0x012b, 0x017f, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80,
+ 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x781b, 0x0064,
+ 0x007c, 0xd6e4, 0x0040, 0x31a7, 0x781b, 0x0076, 0x007c, 0xa684,
+ 0x0060, 0x0040, 0x3209, 0xd6dc, 0x0040, 0x3209, 0xd6fc, 0x00c0,
+ 0x31b3, 0x0078, 0x31ca, 0xc6fc, 0x7e5a, 0x6eb6, 0x7adc, 0x79d8,
+ 0x78d0, 0x801b, 0x00c8, 0x31bd, 0x8000, 0xa084, 0x003f, 0xa108,
+ 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200,
+ 0xa303, 0x68ae, 0xd6f4, 0x0040, 0x31d0, 0xc6f4, 0x7e5a, 0x6eb6,
+ 0x7000, 0xa086, 0x0003, 0x00c0, 0x31de, 0x007e, 0x1078, 0x44cc,
+ 0x1078, 0x4805, 0x007f, 0x781b, 0x0073, 0x007c, 0xa006, 0x1078,
+ 0x490b, 0x6ab0, 0x69ac, 0x6c98, 0x6b94, 0x2200, 0xa105, 0x0040,
+ 0x31ed, 0x2200, 0xa422, 0x2100, 0xa31b, 0x6caa, 0x7cd2, 0x7cda,
+ 0x6ba6, 0x7bd6, 0x7bde, 0x2300, 0xa405, 0x00c0, 0x31fd, 0xc6f5,
+ 0x7e5a, 0x6eb6, 0x781b, 0x0073, 0x007c, 0x781b, 0x0073, 0x2200,
+ 0xa115, 0x00c0, 0x3206, 0x1078, 0x4805, 0x007c, 0x1078, 0x483d,
+ 0x007c, 0x781b, 0x0076, 0x007c, 0x781b, 0x0064, 0x007c, 0x1078,
+ 0x290c, 0x0078, 0x325d, 0x6920, 0xd1c4, 0x0040, 0x3226, 0xc1c4,
+ 0x6922, 0x0c7e, 0x7058, 0x2060, 0x6000, 0xc0e4, 0x6002, 0x6004,
+ 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x0078, 0x3251, 0xd1cc, 0x0040,
+ 0x3251, 0xc1cc, 0x6922, 0x0c7e, 0x7058, 0x2060, 0x6000, 0xc0ec,
+ 0x6002, 0x6004, 0xc0a4, 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xd19c,
+ 0x0040, 0x3251, 0x1078, 0x4154, 0x1078, 0x3e4d, 0x88ff, 0x0040,
+ 0x3251, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a,
+ 0xd6d4, 0x00c0, 0x324e, 0x781b, 0x0061, 0x007c, 0x781b, 0x0075,
+ 0x007c, 0x7e58, 0xd6d4, 0x00c0, 0x3258, 0x781b, 0x0064, 0x007c,
+ 0x781b, 0x0076, 0x007c, 0x0078, 0x4016, 0x2019, 0x0000, 0x7990,
+ 0xa18c, 0x0007, 0x00c0, 0x326b, 0x6820, 0xa084, 0x0100, 0x0040,
+ 0x325b, 0x2009, 0x0008, 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff,
+ 0xa286, 0x0001, 0x00c0, 0x3287, 0x2300, 0x7ca8, 0xa400, 0x2018,
+ 0xa102, 0x0040, 0x327f, 0x0048, 0x327f, 0x0078, 0x3281, 0x0078,
+ 0x3213, 0x24a8, 0x7aa8, 0x00f0, 0x3281, 0x0078, 0x326d, 0xa284,
+ 0x00f0, 0xa086, 0x0020, 0x00c0, 0x32db, 0x8318, 0x8318, 0x2300,
+ 0xa102, 0x0040, 0x3297, 0x0048, 0x3297, 0x0078, 0x32d8, 0xa286,
+ 0x0023, 0x0040, 0x325b, 0x681c, 0xa084, 0xfff1, 0x681e, 0x7e58,
+ 0xa684, 0xfff1, 0xc0a5, 0x2030, 0x7e5a, 0x6008, 0xc0a5, 0x600a,
+ 0x0c7e, 0x7058, 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xd1a4,
+ 0x0040, 0x32b8, 0x1078, 0x4154, 0x1078, 0x3f6a, 0x0078, 0x32c6,
+ 0x0c7e, 0x7058, 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xd19c,
+ 0x0040, 0x3251, 0x1078, 0x4154, 0x1078, 0x3e4d, 0x88ff, 0x0040,
+ 0x3251, 0x789b, 0x0060, 0x2800, 0x78aa, 0xc695, 0x7e5a, 0xd6d4,
+ 0x00c0, 0x32d5, 0x781b, 0x0061, 0x007c, 0x781b, 0x0075, 0x007c,
+ 0x7aa8, 0x0078, 0x326d, 0x8318, 0x2300, 0xa102, 0x0040, 0x32e4,
+ 0x0048, 0x32e4, 0x0078, 0x326d, 0xa284, 0x0080, 0x00c0, 0x401b,
+ 0x0078, 0x4016, 0x0078, 0x401b, 0x0078, 0x4011, 0x7058, 0xa04d,
+ 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa08e, 0x0001, 0x0040,
+ 0x32fb, 0x1078, 0x290c, 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084,
+ 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x4011, 0x0079, 0x3307, 0x4011,
+ 0x3d9f, 0x4011, 0x3f12, 0xa282, 0x0000, 0x00c0, 0x3311, 0x1078,
+ 0x290c, 0x1078, 0x4022, 0x781b, 0x0075, 0x007c, 0xa282, 0x0003,
+ 0x00c0, 0x331c, 0x1078, 0x290c, 0xd4fc, 0x00c0, 0x333c, 0x7064,
+ 0xa005, 0x0040, 0x3325, 0x1078, 0x290c, 0x6f14, 0x7776, 0xa7bc,
+ 0x8f00, 0x1078, 0x4158, 0x6008, 0xa085, 0x0021, 0x600a, 0x8738,
+ 0xa784, 0x001f, 0x00c0, 0x3329, 0x1078, 0x4026, 0x7067, 0x0002,
+ 0x701f, 0x0009, 0x0078, 0x333e, 0x1078, 0x4035, 0x781b, 0x0075,
+ 0x007c, 0xa282, 0x0004, 0x0050, 0x3347, 0x1078, 0x290c, 0x2300,
+ 0x0079, 0x334a, 0x334d, 0x350d, 0x3550, 0xa286, 0x0003, 0x0040,
+ 0x3385, 0x7200, 0x7cd8, 0x7ddc, 0x7fd0, 0x71d4, 0xd1bc, 0x00c0,
+ 0x337d, 0xd1b4, 0x0040, 0x337d, 0x7868, 0xa084, 0x00ff, 0x00c0,
+ 0x337d, 0xa282, 0x0002, 0x00c8, 0x337d, 0x0d7e, 0x783b, 0x8300,
+ 0x781b, 0x004c, 0x70bc, 0xa06d, 0x68b4, 0x785a, 0x6894, 0x78d6,
+ 0x78de, 0x6898, 0x78d2, 0x78da, 0xc1b4, 0x71d6, 0x7003, 0x0030,
+ 0x0d7f, 0x2001, 0x0000, 0x0078, 0x3389, 0x783b, 0x1300, 0x781b,
+ 0x004a, 0x2001, 0x0000, 0x0078, 0x3389, 0x7200, 0x7cd8, 0x7ddc,
+ 0x7fd0, 0x704a, 0x68a0, 0xd0ec, 0x0040, 0x3391, 0x6008, 0xc08d,
+ 0x600a, 0xa284, 0x000f, 0x0079, 0x3395, 0x34ed, 0x33a2, 0x339f,
+ 0x3653, 0x36df, 0x2966, 0x339d, 0x339d, 0x1078, 0x290c, 0x6008,
+ 0xc0d4, 0x600a, 0xd6e4, 0x0040, 0x33aa, 0x7048, 0xa086, 0x0014,
+ 0x00c0, 0x33ca, 0x1078, 0x44cc, 0x2009, 0x0000, 0x6818, 0xd0fc,
+ 0x0040, 0x33b3, 0x7048, 0xa086, 0x0014, 0x0040, 0x33c4, 0x6818,
+ 0xa086, 0x0008, 0x00c0, 0x34a5, 0x7858, 0xd09c, 0x0040, 0x34a5,
+ 0x6820, 0xd0ac, 0x0040, 0x34a5, 0x681b, 0x0014, 0x2009, 0x0002,
+ 0x0078, 0x3409, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x3409, 0xa186,
+ 0x0008, 0x00c0, 0x33e0, 0x6008, 0xc0a4, 0x600a, 0x1078, 0x3cc6,
+ 0x0040, 0x3409, 0x1078, 0x3d44, 0x1078, 0x44cc, 0x0078, 0x33f1,
+ 0xa186, 0x0028, 0x00c0, 0x3409, 0x6018, 0xa005, 0x0040, 0x33d3,
+ 0x8001, 0x0040, 0x33d3, 0x8001, 0x0040, 0x33d3, 0x601e, 0x0078,
+ 0x33d3, 0x6820, 0xd084, 0x0040, 0x2966, 0xc084, 0x6822, 0x1078,
+ 0x2a6d, 0x705c, 0x0c7e, 0x2060, 0x6800, 0x6002, 0x0c7f, 0x6004,
+ 0x6802, 0xa005, 0x2d00, 0x00c0, 0x3406, 0x6002, 0x6006, 0x0078,
+ 0x2966, 0x017e, 0x81ff, 0x00c0, 0x3453, 0x7000, 0xa086, 0x0030,
+ 0x0040, 0x3453, 0x71d4, 0xd1bc, 0x00c0, 0x3453, 0xd1b4, 0x00c0,
+ 0x343a, 0x7060, 0xa005, 0x00c0, 0x3453, 0x70a4, 0xa086, 0x0001,
+ 0x0040, 0x3453, 0x7003, 0x0000, 0x047e, 0x057e, 0x077e, 0x067e,
+ 0x0c7e, 0x0d7e, 0x1078, 0x298f, 0x0d7f, 0x0c7f, 0x067f, 0x077f,
+ 0x057f, 0x047f, 0x71d4, 0xd1b4, 0x00c0, 0x3453, 0x7003, 0x0040,
+ 0x0078, 0x3453, 0x1078, 0x42ba, 0x00c0, 0x3453, 0x781b, 0x005b,
+ 0x0d7e, 0x70bc, 0xa06d, 0x68b4, 0x785a, 0x6894, 0x78d6, 0x78de,
+ 0x6898, 0x78d2, 0x78da, 0xc1b4, 0x71d6, 0x7003, 0x0030, 0x7808,
+ 0xc08d, 0x780a, 0x0d7f, 0x1078, 0x358a, 0x017f, 0x81ff, 0x0040,
+ 0x34a5, 0xa684, 0xdf00, 0x681e, 0x682b, 0x0000, 0x6f14, 0xa186,
+ 0x0002, 0x00c0, 0x34a6, 0x6818, 0xa086, 0x0014, 0x00c0, 0x346f,
+ 0x2008, 0xd6e4, 0x0040, 0x346f, 0x7868, 0xa08c, 0x00ff, 0x1078,
+ 0x2a5b, 0x1078, 0x2a7c, 0x6820, 0xd0dc, 0x00c0, 0x34a6, 0x8717,
+ 0xa294, 0x000f, 0x8213, 0x8213, 0x8213, 0xb284, 0x0300, 0x0040,
+ 0x3485, 0xa290, 0x51c0, 0x0078, 0x3487, 0xa290, 0x5240, 0xa290,
+ 0x0000, 0x221c, 0xd3c4, 0x00c0, 0x348f, 0x0078, 0x3495, 0x8210,
+ 0x2204, 0xa085, 0x0018, 0x2012, 0x8211, 0xd3d4, 0x0040, 0x34a0,
+ 0x68a0, 0xd0c4, 0x00c0, 0x34a0, 0x1078, 0x3604, 0x0078, 0x2966,
+ 0x6008, 0xc08d, 0x600a, 0x0078, 0x34a6, 0x692a, 0x6916, 0x6818,
+ 0xd0fc, 0x0040, 0x34ad, 0x7048, 0x681a, 0xa68c, 0xdf00, 0x691e,
+ 0x6410, 0x84ff, 0x0040, 0x34c2, 0x2009, 0x4d02, 0x2104, 0x8001,
+ 0x200a, 0x8421, 0x6412, 0x00c0, 0x34c2, 0x2021, 0x4d04, 0x2404,
+ 0xc0a5, 0x2022, 0x6018, 0xa005, 0x0040, 0x34ca, 0x8001, 0x601a,
+ 0x00c0, 0x34cd, 0x6008, 0xc0a4, 0x600a, 0x6820, 0xd084, 0x00c0,
+ 0x34d9, 0x6800, 0xa005, 0x00c0, 0x34d6, 0x6002, 0x6006, 0x0078,
+ 0x34dd, 0x705c, 0x2060, 0x6800, 0x6002, 0x2061, 0x4d00, 0x6887,
+ 0x0103, 0x2d08, 0x206b, 0x0000, 0x6068, 0xa005, 0x616a, 0x0040,
+ 0x34ec, 0x2d02, 0x0078, 0x34ed, 0x616e, 0x7200, 0xa286, 0x0030,
+ 0x0040, 0x34fd, 0xa286, 0x0040, 0x00c0, 0x2966, 0x7003, 0x0002,
+ 0x704c, 0x2068, 0x68c4, 0x2060, 0x007c, 0x7003, 0x0002, 0x70bc,
+ 0xa06d, 0x68bc, 0x7042, 0x70b8, 0xa065, 0x68c0, 0x705a, 0x2d00,
+ 0x704e, 0xad80, 0x0009, 0x7046, 0x007c, 0xa282, 0x0004, 0x0048,
+ 0x3513, 0x1078, 0x290c, 0x2200, 0x0079, 0x3516, 0x351a, 0x352b,
+ 0x3538, 0x352b, 0xa586, 0x1300, 0x0040, 0x352b, 0xa586, 0x8300,
+ 0x00c0, 0x3511, 0x7003, 0x0000, 0x6018, 0x8001, 0x601a, 0x6008,
+ 0xa084, 0xfbef, 0x600a, 0x7000, 0xa086, 0x0005, 0x0040, 0x3535,
+ 0x1078, 0x4022, 0x781b, 0x0075, 0x007c, 0x781b, 0x0076, 0x007c,
+ 0x7890, 0x8007, 0x8001, 0xa084, 0x0007, 0xa080, 0x0018, 0x789a,
+ 0x79a8, 0xa18c, 0x00ff, 0xa186, 0x0003, 0x0040, 0x354d, 0xa186,
+ 0x0000, 0x0040, 0x354d, 0x0078, 0x4011, 0x781b, 0x0076, 0x007c,
+ 0x6820, 0xc095, 0x6822, 0x82ff, 0x00c0, 0x355a, 0x1078, 0x4022,
+ 0x0078, 0x3561, 0x8211, 0x0040, 0x355f, 0x1078, 0x290c, 0x1078,
+ 0x4035, 0x781b, 0x0075, 0x007c, 0x1078, 0x42cf, 0x7830, 0xa084,
+ 0x00c0, 0x00c0, 0x3587, 0x017e, 0x3208, 0x007e, 0x2001, 0x4d04,
+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x3579, 0xa18c, 0x0300, 0x0078,
+ 0x357b, 0xa18c, 0x0400, 0x017f, 0x0040, 0x3582, 0x0018, 0x3587,
+ 0x0078, 0x3584, 0x0028, 0x3587, 0x791a, 0xa006, 0x007c, 0xa085,
+ 0x0001, 0x007c, 0xa684, 0x0060, 0x00c0, 0x3594, 0x682f, 0x0000,
+ 0x6833, 0x0000, 0x0078, 0x3603, 0xd6dc, 0x00c0, 0x35ac, 0x68b4,
+ 0xd0dc, 0x00c0, 0x35ac, 0x6998, 0x6a94, 0x692e, 0x6a32, 0x7048,
+ 0xa005, 0x00c0, 0x35a9, 0x2200, 0xa105, 0x0040, 0x44cc, 0x704b,
+ 0x0015, 0x0078, 0x44cc, 0x007c, 0xd6ac, 0x0040, 0x35d2, 0xd6f4,
+ 0x0040, 0x35b8, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x44cc,
+ 0x68b4, 0xa084, 0x4000, 0xa635, 0xd6f4, 0x00c0, 0x35b2, 0x7048,
+ 0xa005, 0x00c0, 0x35c5, 0x704b, 0x0015, 0xd6dc, 0x00c0, 0x35ce,
+ 0x68b4, 0xd0dc, 0x0040, 0x35ce, 0x6ca8, 0x6da4, 0x6c2e, 0x6d32,
+ 0x0078, 0x44cc, 0xd6f4, 0x0040, 0x35db, 0x682f, 0x0000, 0x6833,
+ 0x0000, 0x0078, 0x44cc, 0x68b4, 0xa084, 0x4800, 0xa635, 0xd6f4,
+ 0x00c0, 0x35d5, 0x7048, 0xa005, 0x00c0, 0x35e8, 0x704b, 0x0015,
+ 0x2408, 0x2510, 0x2700, 0x80fb, 0x00c8, 0x35ef, 0x8000, 0xa084,
+ 0x003f, 0xa108, 0xa291, 0x0000, 0x692e, 0x6a32, 0x2100, 0xa205,
+ 0x00c0, 0x35fc, 0x0078, 0x44cc, 0x7000, 0xa086, 0x0006, 0x0040,
+ 0x3603, 0x0078, 0x44cc, 0x007c, 0x6946, 0x6008, 0xc0cd, 0xd3cc,
+ 0x0040, 0x360b, 0xc08d, 0x600a, 0x6818, 0x683a, 0x681b, 0x0006,
+ 0x688f, 0x0000, 0x6893, 0x0000, 0x6a30, 0x692c, 0x6a3e, 0x6942,
+ 0x682f, 0x0003, 0x6833, 0x0000, 0x6837, 0x0020, 0x6897, 0x0000,
+ 0x689b, 0x0020, 0x7000, 0x0079, 0x3625, 0x2966, 0x3637, 0x362f,
+ 0x362d, 0x362d, 0x362d, 0x362d, 0x362d, 0x1078, 0x290c, 0x6820,
+ 0xd084, 0x00c0, 0x3637, 0x1078, 0x3d27, 0x0078, 0x363d, 0x705c,
+ 0x2c50, 0x2060, 0x6800, 0x6002, 0x2a60, 0x3208, 0xa18c, 0x0300,
+ 0x0040, 0x3646, 0x2021, 0x4d58, 0x0078, 0x3648, 0x2021, 0x4d98,
+ 0x2404, 0xa005, 0x0040, 0x364f, 0x2020, 0x0078, 0x3648, 0x2d22,
+ 0x206b, 0x0000, 0x007c, 0x1078, 0x3d2e, 0x1078, 0x3d44, 0x6008,
+ 0xc0cc, 0x600a, 0x682b, 0x0000, 0x789b, 0x000e, 0x6f14, 0x6938,
+ 0x691a, 0x6944, 0x6916, 0x3208, 0xa18c, 0x0300, 0x0040, 0x366c,
+ 0x2009, 0x0000, 0x0078, 0x366e, 0x2009, 0x0001, 0x1078, 0x4940,
+ 0xd6dc, 0x0040, 0x3676, 0x691c, 0xc1ed, 0x691e, 0x6818, 0xd0fc,
+ 0x0040, 0x3685, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x3683, 0x681b,
+ 0x001e, 0x0078, 0x3685, 0x681b, 0x0000, 0xb284, 0x0300, 0x00c0,
+ 0x368d, 0x2021, 0x4d98, 0x0078, 0x368f, 0x2021, 0x4d58, 0x6800,
+ 0x2022, 0x6a3c, 0x6940, 0x6a32, 0x692e, 0x68c0, 0x2060, 0x6000,
+ 0xd0a4, 0x0040, 0x36cf, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051,
+ 0x0020, 0x0d7e, 0x0f7e, 0x157e, 0x147e, 0x2079, 0x4d00, 0x1078,
+ 0x1de6, 0x147f, 0x157f, 0x0f7f, 0x70cc, 0x2010, 0x2009, 0x0101,
+ 0x027e, 0x2204, 0xa06d, 0x0040, 0x36bf, 0x6814, 0xa706, 0x0040,
+ 0x36bc, 0x6800, 0x0078, 0x36b2, 0x6820, 0xc0d5, 0x6822, 0x027f,
+ 0x8210, 0x8109, 0x00c0, 0x36b0, 0x0d7f, 0x7067, 0x0003, 0x707f,
+ 0x0000, 0x7776, 0x7083, 0x000f, 0x71d4, 0xc1dc, 0x71d6, 0x6818,
+ 0xa086, 0x0002, 0x00c0, 0x36db, 0x6817, 0x0000, 0x682b, 0x0000,
+ 0x681c, 0xc0ec, 0x681e, 0x1078, 0x2013, 0x0078, 0x2966, 0x7cd8,
+ 0x7ddc, 0x7fd0, 0x1078, 0x358a, 0x682b, 0x0000, 0x789b, 0x000e,
+ 0x6f14, 0x1078, 0x42d3, 0xa08c, 0x00ff, 0x6916, 0x6818, 0xd0fc,
+ 0x0040, 0x36f4, 0x7048, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x7067,
+ 0x0000, 0x0078, 0x2966, 0x7000, 0xa005, 0x00c0, 0x3701, 0x0078,
+ 0x2966, 0xa006, 0x1078, 0x44cc, 0x6920, 0xd1ac, 0x00c0, 0x370a,
+ 0x681b, 0x0014, 0xa68c, 0xdf00, 0x691e, 0x682b, 0x0000, 0x6820,
+ 0xa084, 0x00ff, 0x6822, 0x7000, 0x0079, 0x3716, 0x2966, 0x3720,
+ 0x3720, 0x3723, 0x3723, 0x3723, 0x371e, 0x371e, 0x1078, 0x290c,
+ 0x6818, 0x0078, 0x3385, 0x6008, 0xc0a4, 0x600a, 0x6817, 0x0000,
+ 0x0078, 0x3cec, 0x2300, 0x0079, 0x372d, 0x3730, 0x3732, 0x3792,
+ 0x1078, 0x290c, 0xd6fc, 0x00c0, 0x3779, 0x7000, 0xa00d, 0x0079,
+ 0x3739, 0x2966, 0x3743, 0x3743, 0x3767, 0x3743, 0x3776, 0x3741,
+ 0x3741, 0x1078, 0x290c, 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0,
+ 0x3764, 0xc6ac, 0xc6f4, 0xc6ed, 0x7e5a, 0x681c, 0xc0ac, 0x681e,
+ 0xa186, 0x0002, 0x0040, 0x3756, 0x1078, 0x44cc, 0x1078, 0x4805,
+ 0x781b, 0x0076, 0x71d4, 0xd1b4, 0x00c0, 0x2962, 0x70a4, 0xa086,
+ 0x0001, 0x00c0, 0x29ac, 0x007c, 0xd6ec, 0x0040, 0x374b, 0x6818,
+ 0xd0fc, 0x0040, 0x3776, 0xd6f4, 0x00c0, 0x3774, 0x681b, 0x0015,
+ 0x781b, 0x0076, 0x0078, 0x2962, 0x681b, 0x0007, 0x1078, 0x4273,
+ 0x007c, 0xc6fc, 0x7e5a, 0x7adc, 0x79d8, 0x78d0, 0x801b, 0x00c8,
+ 0x3782, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98,
+ 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x781b,
+ 0x0076, 0x007c, 0x1078, 0x290c, 0x2300, 0x0079, 0x3797, 0x379c,
+ 0x37b8, 0x380c, 0x1078, 0x290c, 0x7000, 0x0079, 0x379f, 0x37a7,
+ 0x37a9, 0x37a9, 0x37a7, 0x37a7, 0x37a7, 0x37a7, 0x37a7, 0x1078,
+ 0x290c, 0x1078, 0x4805, 0x681c, 0xc0b4, 0x681e, 0x70d4, 0xd0b4,
+ 0x00c0, 0x2962, 0x70a4, 0xa086, 0x0001, 0x00c0, 0x29ac, 0x007c,
+ 0xd6fc, 0x00c0, 0x37fc, 0x7000, 0xa00d, 0x0079, 0x37bf, 0x2966,
+ 0x37cf, 0x37c9, 0x37f3, 0x37cf, 0x37f9, 0x37c7, 0x37c7, 0x1078,
+ 0x290c, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da, 0xa684,
+ 0x0060, 0xa086, 0x0060, 0x00c0, 0x37f0, 0xa6b4, 0xbfbf, 0xc6ed,
+ 0x7e5a, 0xa186, 0x0002, 0x0040, 0x37df, 0x1078, 0x44cc, 0x1078,
+ 0x4805, 0x781b, 0x0076, 0x681c, 0xc0b4, 0x681e, 0x71d4, 0xd1b4,
+ 0x00c0, 0x2962, 0x70a4, 0xa086, 0x0001, 0x00c0, 0x29ac, 0x007c,
+ 0xd6ec, 0x0040, 0x37d7, 0x6818, 0xd0fc, 0x0040, 0x37f9, 0x681b,
+ 0x0007, 0x781b, 0x00f6, 0x007c, 0xc6fc, 0x7e5a, 0x7adc, 0x79d8,
+ 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae,
+ 0x79d2, 0x781b, 0x0076, 0x007c, 0xd6dc, 0x0040, 0x3815, 0x782b,
+ 0x3009, 0x781b, 0x0076, 0x0078, 0x2962, 0x7884, 0xc0ac, 0x7886,
+ 0x78e4, 0xa084, 0x0008, 0x00c0, 0x3828, 0xa484, 0x0200, 0x0040,
+ 0x3822, 0xc6f5, 0xc6dd, 0x7e5a, 0x781b, 0x0076, 0x0078, 0x2962,
+ 0x6820, 0xc095, 0x6822, 0x1078, 0x41ec, 0xc6dd, 0x1078, 0x4022,
+ 0x781b, 0x0075, 0x0078, 0x2962, 0x2300, 0x0079, 0x3837, 0x383a,
+ 0x383c, 0x383e, 0x1078, 0x290c, 0x0078, 0x401b, 0xd6d4, 0x00c0,
+ 0x3864, 0x79e4, 0xd1ac, 0x0040, 0x384c, 0x78ec, 0xa084, 0x0003,
+ 0x0040, 0x384c, 0x782b, 0x3009, 0x789b, 0x0060, 0x78ab, 0x0000,
+ 0xa684, 0xfffb, 0x785a, 0x79e4, 0xd1ac, 0x0040, 0x385c, 0x78ec,
+ 0xa084, 0x0003, 0x00c0, 0x3860, 0x2001, 0x0014, 0x0078, 0x3385,
+ 0xa184, 0x0007, 0x0079, 0x389a, 0x7a90, 0xa294, 0x0007, 0x789b,
+ 0x0060, 0x79a8, 0x81ff, 0x0040, 0x3898, 0x789b, 0x0010, 0x7ba8,
+ 0xa384, 0x0001, 0x00c0, 0x388b, 0x7ba8, 0x7ba8, 0xa386, 0x0001,
+ 0x00c0, 0x387e, 0x2009, 0xfff7, 0x0078, 0x3884, 0xa386, 0x0003,
+ 0x00c0, 0x388b, 0x2009, 0xffef, 0x0c7e, 0x7058, 0x2060, 0x6004,
+ 0xa104, 0x6006, 0x0c7f, 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684,
+ 0xfffb, 0x785a, 0x782b, 0x3009, 0x6920, 0xa18c, 0xfcff, 0x6922,
+ 0x0078, 0x4267, 0x302e, 0x3038, 0x38a4, 0x38aa, 0x38a2, 0x38a2,
+ 0x4267, 0x4267, 0x1078, 0x290c, 0x6920, 0xa18c, 0xfcff, 0x6922,
+ 0x0078, 0x426d, 0x6920, 0xa18c, 0xfcff, 0x6922, 0x0078, 0x4267,
+ 0x79e4, 0xa184, 0x0030, 0x0040, 0x38ba, 0x78ec, 0xa084, 0x0003,
+ 0x00c0, 0x38ee, 0x7000, 0xa086, 0x0004, 0x00c0, 0x38d4, 0x7064,
+ 0xa086, 0x0002, 0x00c0, 0x38ca, 0x2011, 0x0002, 0x2019, 0x0000,
+ 0x0078, 0x2eba, 0x7064, 0xa086, 0x0006, 0x0040, 0x38c4, 0x7064,
+ 0xa086, 0x0004, 0x0040, 0x38c4, 0x7000, 0xa086, 0x0000, 0x0040,
+ 0x2962, 0x6920, 0xa184, 0x0420, 0x0040, 0x38e3, 0xc1d4, 0x6922,
+ 0x6818, 0x0078, 0x3385, 0x6818, 0xa08e, 0x0002, 0x0040, 0x38ec,
+ 0xc0fd, 0x681a, 0x2001, 0x0014, 0x0078, 0x3385, 0xa184, 0x0007,
+ 0x0079, 0x38f2, 0x4267, 0x4267, 0x38fa, 0x4267, 0x42af, 0x42af,
+ 0x4267, 0x4267, 0xd6bc, 0x0040, 0x393c, 0x7184, 0x81ff, 0x0040,
+ 0x393c, 0xa182, 0x000d, 0x00d0, 0x3909, 0x7087, 0x0000, 0x0078,
+ 0x390e, 0xa182, 0x000c, 0x7086, 0x2009, 0x000c, 0x789b, 0x0061,
+ 0x79aa, 0x157e, 0x137e, 0x147e, 0x7088, 0x8114, 0xa210, 0x728a,
+ 0xa080, 0x000b, 0xad00, 0x2098, 0xb284, 0x0300, 0x0040, 0x3930,
+ 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x392c,
+ 0x20a1, 0x012b, 0x0078, 0x3932, 0x20a1, 0x022b, 0x0078, 0x3932,
+ 0x20a1, 0x012b, 0x789b, 0x0000, 0x8108, 0x81ac, 0x53a6, 0x147f,
+ 0x137f, 0x157f, 0x0078, 0x426d, 0xd6d4, 0x00c0, 0x3990, 0x6820,
+ 0xd084, 0x0040, 0x426d, 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040,
+ 0x394e, 0xa086, 0x0060, 0x00c0, 0x394e, 0xc1f5, 0xc194, 0x795a,
+ 0x69b6, 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b, 0x0061, 0x6818,
+ 0xc0fd, 0x681a, 0x78aa, 0x8008, 0x810c, 0x0040, 0x3d5d, 0xa18c,
+ 0x00f8, 0x00c0, 0x3d5d, 0x157e, 0x137e, 0x147e, 0x017e, 0x3208,
+ 0xa18c, 0x0300, 0x0040, 0x397c, 0x007e, 0x2001, 0x4d04, 0x2004,
+ 0xd0ec, 0x007f, 0x0040, 0x3978, 0x20a1, 0x012b, 0x0078, 0x397e,
+ 0x20a1, 0x022b, 0x0078, 0x397e, 0x20a1, 0x012b, 0x017f, 0x789b,
+ 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f,
+ 0x137f, 0x157f, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x0078, 0x426d,
+ 0x6818, 0xd0fc, 0x0040, 0x3996, 0x681b, 0x0008, 0x6820, 0xc0ad,
+ 0x6822, 0x1078, 0x402a, 0x781b, 0x00e7, 0x007c, 0x2300, 0x0079,
+ 0x39a1, 0x39a6, 0x3a7e, 0x39a4, 0x1078, 0x290c, 0x7cd8, 0x7ddc,
+ 0x7fd0, 0x82ff, 0x00c0, 0x39cf, 0x7200, 0xa286, 0x0003, 0x0040,
+ 0x3352, 0x71d4, 0xd1bc, 0x00c0, 0x39d2, 0xd1b4, 0x0040, 0x39d2,
+ 0x0d7e, 0x783b, 0x8800, 0x781b, 0x004c, 0x70bc, 0xa06d, 0x68b4,
+ 0xc0a5, 0x785a, 0x6894, 0x78d6, 0x78de, 0x6898, 0x78d2, 0x78da,
+ 0xc1b4, 0x71d6, 0x7003, 0x0030, 0x0d7f, 0x0078, 0x39d6, 0x7200,
+ 0x0078, 0x39d6, 0x783b, 0x1800, 0x781b, 0x004a, 0xa284, 0x000f,
+ 0x0079, 0x39da, 0x3a69, 0x3a18, 0x39e4, 0x3381, 0x39e2, 0x3a69,
+ 0x39e2, 0x39e2, 0x1078, 0x290c, 0x681c, 0xd0ec, 0x0040, 0x39eb,
+ 0x6008, 0xc08d, 0x600a, 0x6920, 0xc185, 0x6922, 0x6800, 0x6006,
+ 0xa005, 0x00c0, 0x39f4, 0x6002, 0x6008, 0xc0d4, 0x600a, 0x681c,
+ 0xa084, 0x000e, 0x00c0, 0x3a08, 0xb284, 0x0300, 0x0040, 0x3a04,
+ 0x2009, 0x93c0, 0x0078, 0x3a0d, 0x2009, 0x94d0, 0x0078, 0x3a0d,
+ 0x7030, 0x68ba, 0x7140, 0x70cc, 0xa108, 0x2104, 0x6802, 0x2d0a,
+ 0x715e, 0xd6dc, 0x00c0, 0x3a18, 0xc6fc, 0x6eb6, 0x0078, 0x3a69,
+ 0x6eb6, 0xa684, 0x0060, 0x00c0, 0x3a22, 0xa684, 0x7fff, 0x68b6,
+ 0x0078, 0x3a69, 0xd6dc, 0x00c0, 0x3a30, 0xa684, 0x7fff, 0x68b6,
+ 0x6894, 0x68a6, 0x6898, 0x68aa, 0x1078, 0x44cc, 0x0078, 0x3a69,
+ 0xd6ac, 0x0040, 0x3a3c, 0xa006, 0x1078, 0x44cc, 0x2408, 0x2510,
+ 0x69aa, 0x6aa6, 0x0078, 0x3a4c, 0x2408, 0x2510, 0x2700, 0x801b,
+ 0x00c8, 0x3a43, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000,
+ 0x69aa, 0x6aa6, 0x1078, 0x44cc, 0xd6fc, 0x0040, 0x3a69, 0xa684,
+ 0x7fff, 0x68b6, 0x2510, 0x2408, 0xd6ac, 0x00c0, 0x3a61, 0x2700,
+ 0x801b, 0x00c8, 0x3a5c, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291,
+ 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303,
+ 0x68ae, 0x7000, 0xa086, 0x0030, 0x00c0, 0x2966, 0x7003, 0x0002,
+ 0x70bc, 0xa06d, 0x68bc, 0x7042, 0x70b8, 0xa065, 0x68c0, 0x705a,
+ 0x2d00, 0x704e, 0xad80, 0x0009, 0x7046, 0x007c, 0xa586, 0x8800,
+ 0x00c0, 0x3a8b, 0x7003, 0x0000, 0x6018, 0x8001, 0x601a, 0x6008,
+ 0xa084, 0xfbef, 0x600a, 0x0078, 0x401b, 0x7047, 0x0000, 0xa282,
+ 0x0006, 0x0050, 0x3a95, 0x1078, 0x290c, 0x2300, 0x0079, 0x3a98,
+ 0x3a9b, 0x3ad2, 0x3b04, 0x2200, 0x0079, 0x3a9e, 0x3aa4, 0x401b,
+ 0x3aa6, 0x3aa4, 0x3b3b, 0x3ba3, 0x1078, 0x290c, 0x7003, 0x0005,
+ 0xb284, 0x0300, 0x0040, 0x3ab0, 0x2001, 0x94e0, 0x0078, 0x3ab2,
+ 0x2001, 0x9512, 0x2068, 0x704e, 0x157e, 0x20a9, 0x0032, 0x2003,
+ 0x0000, 0x8000, 0x00f0, 0x3ab7, 0x157f, 0xb284, 0x0300, 0x0040,
+ 0x3ac5, 0x6817, 0x0000, 0x0078, 0x3ac7, 0x6817, 0x8000, 0xad80,
+ 0x0009, 0x7046, 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003,
+ 0x0078, 0x4011, 0x7000, 0xa086, 0x0002, 0x00c0, 0x3ae3, 0x1078,
+ 0x3d44, 0x0078, 0x3add, 0x1078, 0x44cc, 0x6008, 0xa084, 0xfbef,
+ 0x600a, 0x0078, 0x3ae8, 0x7000, 0xa086, 0x0003, 0x0040, 0x3adb,
+ 0x7003, 0x0005, 0xb284, 0x0300, 0x0040, 0x3af2, 0x2001, 0x94e0,
+ 0x0078, 0x3af4, 0x2001, 0x9512, 0x2068, 0x704e, 0xad80, 0x0009,
+ 0x7046, 0x2200, 0x0079, 0x3afc, 0x401b, 0x3b02, 0x3b02, 0x3b3b,
+ 0x3b02, 0x401b, 0x1078, 0x290c, 0x7000, 0xa086, 0x0002, 0x00c0,
+ 0x3b15, 0x1078, 0x3d44, 0x0078, 0x3b0f, 0x1078, 0x44cc, 0x6008,
+ 0xa084, 0xfbef, 0x600a, 0x0078, 0x3b1a, 0x7000, 0xa086, 0x0003,
+ 0x0040, 0x3b0d, 0x7003, 0x0005, 0xb284, 0x0300, 0x0040, 0x3b24,
+ 0x2001, 0x94e0, 0x0078, 0x3b26, 0x2001, 0x9512, 0x2068, 0x704e,
+ 0xad80, 0x0009, 0x7046, 0x2200, 0x0079, 0x3b2e, 0x3b36, 0x3b34,
+ 0x3b34, 0x3b36, 0x3b34, 0x3b36, 0x1078, 0x290c, 0x1078, 0x4035,
+ 0x781b, 0x0075, 0x007c, 0x7000, 0xa086, 0x0002, 0x00c0, 0x3b4d,
+ 0x70d4, 0xc0b5, 0x70d6, 0x2c00, 0x70ba, 0x2d00, 0x70be, 0x0078,
+ 0x3b52, 0x1078, 0x44cc, 0x0078, 0x3b52, 0x7000, 0xa086, 0x0003,
+ 0x0040, 0x3b49, 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b,
+ 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215, 0x2069, 0x93c0, 0xb284,
+ 0x0300, 0x00c0, 0x3b66, 0xc2fd, 0x2069, 0x94d0, 0x2d04, 0x2d08,
+ 0x715e, 0xa06d, 0x0040, 0x3b73, 0x6814, 0xa206, 0x0040, 0x3b93,
+ 0x6800, 0x0078, 0x3b67, 0x7003, 0x0005, 0xd2fc, 0x00c0, 0x3b7c,
+ 0x2001, 0x94e0, 0x0078, 0x3b7e, 0x2001, 0x9512, 0x2068, 0x704e,
+ 0x157e, 0x20a9, 0x0032, 0x2003, 0x0000, 0x8000, 0x00f0, 0x3b83,
+ 0x157f, 0xad80, 0x0009, 0x7046, 0x6a16, 0x68b7, 0x0700, 0x6823,
+ 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6920, 0xa184, 0x0c00,
+ 0x0040, 0x3c1d, 0x681b, 0x0005, 0xc1ad, 0xc1d4, 0x6922, 0x1078,
+ 0x402a, 0x0078, 0x3c1d, 0x7200, 0xa286, 0x0002, 0x00c0, 0x3bb5,
+ 0x70d4, 0xc0b5, 0x70d6, 0x2c00, 0x70ba, 0x2d00, 0x70be, 0x0078,
+ 0x3bb9, 0x1078, 0x44cc, 0x0078, 0x3bb9, 0xa286, 0x0003, 0x0040,
+ 0x3bb1, 0x7003, 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018,
+ 0x7ca8, 0xa484, 0x001f, 0xa215, 0xb284, 0x0300, 0x00c0, 0x3bc9,
+ 0xc2fd, 0x79a8, 0x79a8, 0xa18c, 0x00ff, 0x70cc, 0xa168, 0x2d04,
+ 0x2d08, 0x715e, 0xa06d, 0x0040, 0x3bdc, 0x6814, 0xa206, 0x0040,
+ 0x3c05, 0x6800, 0x0078, 0x3bd0, 0x7003, 0x0005, 0xb284, 0x0300,
+ 0x0040, 0x3be6, 0x2001, 0x94e0, 0x0078, 0x3be8, 0x2001, 0x9512,
+ 0x2068, 0x704e, 0x157e, 0x20a9, 0x0032, 0x2003, 0x0000, 0x8000,
+ 0x00f0, 0x3bed, 0x157f, 0xb284, 0x0300, 0x0040, 0x3bfa, 0xc2fc,
+ 0x0078, 0x3bfb, 0xc2fd, 0x6a16, 0xad80, 0x0009, 0x7046, 0x68b7,
+ 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x6920, 0xa184,
+ 0x0c00, 0x0040, 0x3c1d, 0xd0dc, 0x0040, 0x3c12, 0x1078, 0x4031,
+ 0x0078, 0x3c1d, 0x681b, 0x0005, 0xc1ad, 0xc1d4, 0x6922, 0x1078,
+ 0x402a, 0x707f, 0x0000, 0x0078, 0x3c1d, 0xa6ac, 0x0060, 0x0040,
+ 0x3c61, 0x6b98, 0x6c94, 0x69ac, 0x68b0, 0xa105, 0x00c0, 0x3c43,
+ 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa6b4, 0xb7ff, 0xa586, 0x0060,
+ 0x0040, 0x3c61, 0xc6ed, 0x7e5a, 0x2009, 0x0076, 0xd69c, 0x0040,
+ 0x3c3e, 0x2009, 0x0075, 0x2019, 0x0000, 0x2320, 0x791a, 0x1078,
+ 0x4805, 0x0078, 0x3c6a, 0x68b0, 0xa31a, 0x2100, 0xa423, 0x2400,
+ 0xa305, 0x0040, 0x3c61, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0x68b0,
+ 0xc6f4, 0x7e5a, 0x2011, 0x0076, 0xd69c, 0x0040, 0x3c5c, 0x2011,
+ 0x0075, 0x2019, 0x0000, 0x2320, 0x7a1a, 0x1078, 0x483d, 0x0078,
+ 0x3c6a, 0x7e5a, 0x2009, 0x0076, 0xd69c, 0x0040, 0x3c69, 0x2009,
+ 0x0075, 0x791a, 0x68c0, 0x705a, 0x2d00, 0x704e, 0x68c4, 0x2060,
+ 0x71d4, 0x70d8, 0xa02d, 0x0040, 0x3c92, 0xd1bc, 0x0040, 0x3cac,
+ 0x7a80, 0xa294, 0x0f00, 0x70dc, 0xa206, 0x0040, 0x3c83, 0x78e0,
+ 0xa504, 0x00c0, 0x3cb9, 0x70da, 0xc1bc, 0x71d6, 0x0078, 0x3cb9,
+ 0x2031, 0x0001, 0x852c, 0x0048, 0x3c91, 0x8633, 0x8210, 0x0078,
+ 0x3c8a, 0x007c, 0x7de0, 0xa594, 0xff00, 0x0040, 0x3c9f, 0x2011,
+ 0x0008, 0x852f, 0x1078, 0x3c88, 0x8637, 0x0078, 0x3ca1, 0x1078,
+ 0x3c88, 0x8217, 0x7880, 0xa084, 0x0f00, 0xa206, 0x0040, 0x3cb9,
+ 0x72de, 0x76da, 0x0078, 0x3cb9, 0x7a80, 0xa294, 0x0f00, 0x70dc,
+ 0xa236, 0x0040, 0x3ca9, 0x78e0, 0xa534, 0x0040, 0x3ca9, 0xc1bd,
+ 0x71d6, 0xd1b4, 0x00c0, 0x2962, 0x2300, 0xa405, 0x0040, 0x2962,
+ 0x70a4, 0xa086, 0x0001, 0x00c0, 0x29ac, 0x007c, 0x6020, 0xa005,
+ 0x0040, 0x3cd4, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, 0x600a,
+ 0x700f, 0x0100, 0x702c, 0x6026, 0x007c, 0xa006, 0x1078, 0x44cc,
+ 0x7000, 0xa086, 0x0002, 0x0040, 0x3ce2, 0x7064, 0xa086, 0x0005,
+ 0x00c0, 0x3cec, 0x682b, 0x0000, 0x6817, 0x0000, 0x681b, 0x0001,
+ 0x6823, 0x0040, 0x681f, 0x0100, 0x7000, 0xa084, 0x000f, 0x0079,
+ 0x3cf1, 0x2966, 0x3d01, 0x3cfb, 0x3d23, 0x3d0b, 0x2966, 0x3cf9,
+ 0x3cf9, 0x1078, 0x290c, 0x1078, 0x3d2e, 0x1078, 0x3d27, 0x0078,
+ 0x3d07, 0x1078, 0x3d2e, 0x705c, 0x2060, 0x6800, 0x6002, 0x1078,
+ 0x2013, 0x0078, 0x2966, 0x7064, 0x7067, 0x0000, 0x7083, 0x0000,
+ 0x0079, 0x3d12, 0x3d1f, 0x3d1f, 0x3d1a, 0x3d1a, 0x3d1a, 0x3d1f,
+ 0x3d1a, 0x3d1f, 0x77d4, 0xc7dd, 0x77d6, 0x0079, 0x2ed3, 0x7067,
+ 0x0000, 0x0078, 0x2966, 0x681b, 0x0000, 0x0078, 0x3653, 0x6800,
+ 0xa005, 0x00c0, 0x3d2c, 0x6002, 0x6006, 0x007c, 0x6410, 0x84ff,
+ 0x0040, 0x3d40, 0x2009, 0x4d02, 0x2104, 0x8001, 0x200a, 0x8421,
+ 0x6412, 0x00c0, 0x3d40, 0x2021, 0x4d04, 0x2404, 0xc0a5, 0x2022,
+ 0x6008, 0xc0a4, 0x600a, 0x007c, 0x6018, 0xa005, 0x0040, 0x3d4a,
+ 0x8001, 0x601a, 0x007c, 0x1078, 0x42cf, 0x681b, 0x0018, 0x0078,
+ 0x3d8d, 0x1078, 0x42cf, 0x681b, 0x0019, 0x0078, 0x3d8d, 0x1078,
+ 0x42cf, 0x681b, 0x001a, 0x0078, 0x3d8d, 0x1078, 0x42cf, 0x681b,
+ 0x0003, 0x0078, 0x3d8d, 0x7774, 0x1078, 0x4158, 0x7178, 0xa18c,
+ 0x00ff, 0x3210, 0xa294, 0x0300, 0x0040, 0x3d72, 0xa1e8, 0x92c0,
+ 0x0078, 0x3d74, 0xa1e8, 0x93d0, 0x2d04, 0x2d08, 0x2068, 0xa005,
+ 0x00c0, 0x3d7d, 0x707e, 0x0078, 0x2966, 0x6814, 0xc0fc, 0x7274,
+ 0xc2fc, 0xa206, 0x0040, 0x3d87, 0x6800, 0x0078, 0x3d75, 0x6800,
+ 0x200a, 0x681b, 0x0005, 0x707f, 0x0000, 0x1078, 0x3d2e, 0x6820,
+ 0xd084, 0x00c0, 0x3d95, 0x1078, 0x3d27, 0x1078, 0x3d44, 0x681f,
+ 0x0000, 0x6823, 0x0020, 0x1078, 0x2013, 0x0078, 0x2966, 0xa282,
+ 0x0003, 0x00c0, 0x4011, 0x7da8, 0xa5ac, 0x00ff, 0x7ea8, 0xa6b4,
+ 0x00ff, 0x6920, 0xc1bd, 0x6922, 0xd1c4, 0x0040, 0x3df9, 0xc1c4,
+ 0x6922, 0xa6b4, 0x00ff, 0x0040, 0x3de6, 0xa682, 0x000c, 0x0048,
+ 0x3dbd, 0x0040, 0x3dbd, 0x2031, 0x000c, 0x2500, 0xa086, 0x000a,
+ 0x0040, 0x3dc4, 0x852b, 0x852b, 0x1078, 0x40ea, 0x0040, 0x3dcc,
+ 0x1078, 0x3ec8, 0x0078, 0x3def, 0x1078, 0x40a5, 0x0c7e, 0x2960,
+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x3efe, 0x0c7f, 0x6920,
+ 0xc1c5, 0x6922, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x3de3,
+ 0x781b, 0x0061, 0x007c, 0x781b, 0x0075, 0x007c, 0x0c7e, 0x2960,
+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x3efe, 0x0c7f, 0x7e58,
+ 0xd6d4, 0x00c0, 0x3df6, 0x781b, 0x0064, 0x007c, 0x781b, 0x0076,
+ 0x007c, 0x0c7e, 0x7058, 0x2060, 0x6100, 0xd1e4, 0x0040, 0x3e42,
+ 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c, 0x0048, 0x3e0c,
+ 0x0040, 0x3e0c, 0x2011, 0x000c, 0x2600, 0xa202, 0x00c8, 0x3e11,
+ 0x2230, 0x6208, 0xa294, 0x00ff, 0x2001, 0x4d05, 0x2004, 0xd0e4,
+ 0x00c0, 0x3e26, 0x78ec, 0xd0e4, 0x0040, 0x3e26, 0xa282, 0x000a,
+ 0x00c8, 0x3e2c, 0x2011, 0x000a, 0x0078, 0x3e2c, 0xa282, 0x000c,
+ 0x00c8, 0x3e2c, 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, 0x3e31,
+ 0x2228, 0x1078, 0x40a9, 0x2500, 0xa086, 0x000a, 0x0040, 0x3e3a,
+ 0x852b, 0x852b, 0x1078, 0x40ea, 0x0040, 0x3e42, 0x1078, 0x3ec8,
+ 0x0078, 0x3e46, 0x1078, 0x40a5, 0x1078, 0x3efe, 0x7858, 0xc095,
+ 0x785a, 0x0c7f, 0x781b, 0x0075, 0x007c, 0x0c7e, 0x2960, 0x6000,
+ 0xd0e4, 0x00c0, 0x3e64, 0x6010, 0xa084, 0x000f, 0x00c0, 0x3e5e,
+ 0x6104, 0xa18c, 0xfff5, 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032,
+ 0x2019, 0x0000, 0x0078, 0x3e8f, 0x68a0, 0xd0cc, 0x00c0, 0x3e5e,
+ 0x6208, 0xa294, 0x00ff, 0x2001, 0x4d05, 0x2004, 0xd0e4, 0x00c0,
+ 0x3e7d, 0x78ec, 0xd0e4, 0x0040, 0x3e7d, 0xa282, 0x000b, 0x00c8,
+ 0x3e7d, 0x2011, 0x000a, 0x0078, 0x3e83, 0xa282, 0x000c, 0x00c8,
+ 0x3e83, 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382,
+ 0x000c, 0x0048, 0x3e8f, 0x0040, 0x3e8f, 0x2019, 0x000c, 0x78ab,
+ 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0,
+ 0x0005, 0x6820, 0xc0c5, 0x6822, 0x70d4, 0xd0b4, 0x0040, 0x3eab,
+ 0xc0b4, 0x70d6, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a,
+ 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, 0x0c7e, 0x2960, 0x6104,
+ 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078,
+ 0x3eb9, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa,
+ 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xc0c5, 0x6822, 0x0c7f, 0x007c,
+ 0x0c7e, 0x7158, 0x2160, 0x2018, 0xa08c, 0x0020, 0x0040, 0x3ed1,
+ 0xc0ac, 0x2008, 0xa084, 0xfff0, 0xa635, 0x7e86, 0x6018, 0x789a,
+ 0x7eae, 0x6612, 0x78a4, 0xa084, 0xfff0, 0xa18c, 0x000f, 0xa105,
+ 0xc0f4, 0xa39c, 0x0020, 0x0040, 0x3ee7, 0xa085, 0x4000, 0xc0fc,
+ 0xd0b4, 0x00c0, 0x3eec, 0xc0fd, 0x78a6, 0x6016, 0x788a, 0xa6b4,
+ 0x000f, 0x8637, 0x8204, 0x8004, 0xa084, 0x00ff, 0xa605, 0x600e,
+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x007c, 0x0c7e, 0x7058,
+ 0x2060, 0x6018, 0x789a, 0x78a4, 0xa084, 0xfff0, 0x78a6, 0x6012,
+ 0x7884, 0xa084, 0xfff0, 0x7886, 0x600c, 0xa084, 0x00ff, 0x600e,
+ 0x0c7f, 0x007c, 0xa282, 0x0002, 0x00c0, 0x4011, 0x7aa8, 0x6920,
+ 0xc1bd, 0x6922, 0xd1cc, 0x0040, 0x3f4d, 0xc1cc, 0x6922, 0xa294,
+ 0x00ff, 0xa282, 0x0002, 0x00c8, 0x4011, 0x1078, 0x3f9e, 0x1078,
+ 0x3efe, 0xa980, 0x0001, 0x200c, 0x1078, 0x4154, 0x1078, 0x3e4d,
+ 0x88ff, 0x0040, 0x3f43, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58,
+ 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x3f40, 0x781b, 0x0061, 0x007c,
+ 0x781b, 0x0075, 0x007c, 0x7e58, 0xd6d4, 0x00c0, 0x3f4a, 0x781b,
+ 0x0064, 0x007c, 0x781b, 0x0076, 0x007c, 0xa282, 0x0002, 0x00c8,
+ 0x3f55, 0xa284, 0x0001, 0x0040, 0x3f5e, 0x7158, 0xa188, 0x0000,
+ 0x210c, 0xd1ec, 0x00c0, 0x3f5e, 0x2011, 0x0000, 0x1078, 0x4086,
+ 0x1078, 0x3f9e, 0x1078, 0x3efe, 0x7858, 0xc095, 0x785a, 0x781b,
+ 0x0075, 0x007c, 0x0c7e, 0x027e, 0x2960, 0x6000, 0x2011, 0x0001,
+ 0xd0ec, 0x00c0, 0x3f7f, 0x6014, 0xa084, 0x0040, 0x00c0, 0x3f7d,
+ 0xc1a4, 0x6106, 0xa006, 0x0078, 0x3f9b, 0x2011, 0x0000, 0x78ab,
+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004,
+ 0x70d4, 0xd0b4, 0x0040, 0x3f97, 0xc0b4, 0x70d6, 0x70b8, 0xa065,
+ 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x6820,
+ 0xa085, 0x0200, 0x6822, 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7058,
+ 0x2060, 0x82ff, 0x0040, 0x3fa6, 0x2011, 0x0040, 0x6018, 0xa080,
+ 0x0002, 0x789a, 0x78a4, 0xa084, 0xffbf, 0xa205, 0xc0fc, 0xd0b4,
+ 0x00c0, 0x3fb3, 0xc0fd, 0x78a6, 0x6016, 0x788a, 0x6004, 0xc0a4,
+ 0x6006, 0x0c7f, 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, 0x0040,
+ 0x3fc4, 0x007f, 0x0078, 0x3fc7, 0x007f, 0x0078, 0x400e, 0xd6ac,
+ 0x0040, 0x400e, 0x7888, 0xa084, 0x0040, 0x0040, 0x400e, 0x7bb8,
+ 0xa384, 0x003f, 0x831b, 0x00c8, 0x3fd6, 0x8000, 0xa005, 0x0040,
+ 0x3feb, 0x831b, 0x00c8, 0x3fdf, 0x8001, 0x0040, 0x400b, 0xd6f4,
+ 0x0040, 0x3feb, 0x78b8, 0x801b, 0x00c8, 0x3fe7, 0x8000, 0xa084,
+ 0x003f, 0x00c0, 0x400b, 0xc6f4, 0x7e5a, 0x79d8, 0x7adc, 0x2001,
+ 0x0001, 0xa108, 0x00c8, 0x3ff6, 0xa291, 0x0000, 0x79d2, 0x79da,
+ 0x7ad6, 0x7ade, 0x1078, 0x490b, 0x781b, 0x0073, 0xb284, 0x0300,
+ 0x0040, 0x4006, 0x2001, 0x0000, 0x0078, 0x4008, 0x2001, 0x0001,
+ 0x1078, 0x4793, 0x007c, 0x781b, 0x0073, 0x007c, 0x781b, 0x0076,
+ 0x007c, 0x1078, 0x4039, 0x781b, 0x0075, 0x007c, 0x1078, 0x4022,
+ 0x781b, 0x0075, 0x007c, 0x6827, 0x0002, 0x1078, 0x402a, 0x781b,
+ 0x0075, 0x007c, 0x2001, 0x0005, 0x0078, 0x403b, 0x2001, 0x000c,
+ 0x0078, 0x403b, 0x6820, 0xc0d5, 0x6822, 0x2001, 0x0006, 0x0078,
+ 0x403b, 0x2001, 0x000d, 0x0078, 0x403b, 0x2001, 0x0009, 0x0078,
+ 0x403b, 0x2001, 0x0007, 0x789b, 0x007e, 0x78aa, 0xc69d, 0x7e5a,
+ 0x70d4, 0xd0b4, 0x0040, 0x4051, 0xc0b4, 0x70d6, 0x0c7e, 0x70b8,
+ 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a,
+ 0x0c7f, 0x007c, 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b,
+ 0x8703, 0x017e, 0xb28c, 0x0300, 0x0040, 0x4062, 0xa0e0, 0x51c0,
+ 0x0078, 0x4064, 0xa0e0, 0x5240, 0x017f, 0xa7b8, 0x0020, 0x7f9a,
+ 0x79a4, 0xa184, 0x000f, 0x0040, 0x4074, 0xa184, 0xfff0, 0x78a6,
+ 0x6012, 0x6004, 0xc09d, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4,
+ 0xa184, 0x0040, 0x0040, 0x4084, 0xa184, 0xffbf, 0xc0fd, 0x78a6,
+ 0x6016, 0x6004, 0xc0a5, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010,
+ 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b,
+ 0x0060, 0x78ab, 0x0004, 0x70d4, 0xd0b4, 0x0040, 0x40a4, 0xc0b4,
+ 0x70d6, 0x0c7e, 0x70b8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a,
+ 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, 0x2031, 0x0000, 0x2029,
+ 0x0032, 0x789b, 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab,
+ 0x0001, 0x7daa, 0x7eaa, 0x789b, 0x0060, 0x78ab, 0x0005, 0x70d4,
+ 0xd0b4, 0x0040, 0x40c8, 0xc0b4, 0x70d6, 0x0c7e, 0x70b8, 0xa065,
+ 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f,
+ 0x007c, 0x157e, 0x8007, 0xa084, 0x00ff, 0x8003, 0x8003, 0xa080,
+ 0x0020, 0x789a, 0x79a4, 0xa18c, 0xfff0, 0x2021, 0x413d, 0x2019,
+ 0x0011, 0x20a9, 0x000e, 0x2011, 0x0032, 0x2404, 0xa084, 0xfff0,
+ 0xa106, 0x0040, 0x40e8, 0x8420, 0x2300, 0xa210, 0x00f0, 0x40dd,
+ 0x157f, 0x007c, 0x157e, 0x2001, 0x4d05, 0x2004, 0xd0e4, 0x00c0,
+ 0x411b, 0x2021, 0x414b, 0x20a9, 0x0009, 0x2011, 0x0028, 0xa582,
+ 0x0019, 0x0040, 0x4131, 0x0048, 0x4131, 0x8420, 0x95a9, 0x2011,
+ 0x0032, 0xa582, 0x0032, 0x0040, 0x4131, 0x0048, 0x4131, 0x8420,
+ 0x95a9, 0x2019, 0x000a, 0x2011, 0x0064, 0x2200, 0xa502, 0x0040,
+ 0x4131, 0x0048, 0x4131, 0x8420, 0x2300, 0xa210, 0x00f0, 0x410d,
+ 0x157f, 0x0078, 0x412f, 0x2021, 0x413d, 0x2019, 0x0011, 0x20a9,
+ 0x000e, 0x2011, 0x0032, 0x2200, 0xa502, 0x0040, 0x4131, 0x0048,
+ 0x4131, 0x8420, 0x2300, 0xa210, 0x00f0, 0x4123, 0x157f, 0xa006,
+ 0x007c, 0x157f, 0xa582, 0x0064, 0x00c8, 0x413a, 0x7808, 0xa085,
+ 0x0070, 0x780a, 0x2404, 0xa005, 0x007c, 0x1209, 0x3002, 0x3202,
+ 0x4203, 0x4403, 0x5404, 0x5604, 0x6605, 0x6805, 0x7806, 0x7a06,
+ 0x0c07, 0x0c07, 0x0e07, 0x10e1, 0x330a, 0x5805, 0x5a05, 0x6a06,
+ 0x6c06, 0x7c07, 0x7e07, 0x0e00, 0x789b, 0x0010, 0xa046, 0x007c,
+ 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003, 0x8003, 0x8003,
+ 0x8003, 0xa105, 0xd7fc, 0x0040, 0x4169, 0xa0e0, 0x72c0, 0x0078,
+ 0x416b, 0xa0e0, 0x52c0, 0x007c, 0x0e7e, 0x0f7e, 0xd084, 0x0040,
+ 0x4179, 0x2079, 0x0100, 0x2009, 0x4d80, 0x2071, 0x4d80, 0x0078,
+ 0x4189, 0x2009, 0x4d40, 0x2071, 0x4d40, 0x2001, 0x4d04, 0x2004,
+ 0xd0ec, 0x0040, 0x4187, 0x2079, 0x0100, 0x0078, 0x4189, 0x2079,
+ 0x0200, 0x2091, 0x8000, 0x2104, 0xa084, 0x000f, 0x0079, 0x4190,
+ 0x419a, 0x419a, 0x419a, 0x419a, 0x419a, 0x419a, 0x4198, 0x4198,
+ 0x1078, 0x290c, 0x69b4, 0xc1f5, 0xa18c, 0xff9f, 0x69b6, 0xa005,
+ 0x0040, 0x41e9, 0x7858, 0xa084, 0xff9f, 0xa085, 0x6000, 0x785a,
+ 0x7828, 0xa086, 0x1814, 0x00c0, 0x41e9, 0x784b, 0x0004, 0x7848,
+ 0xa084, 0x0004, 0x00c0, 0x41af, 0x784b, 0x0008, 0x7848, 0xa084,
+ 0x0008, 0x00c0, 0x41b6, 0x7830, 0xd0bc, 0x00c0, 0x41e9, 0x007e,
+ 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x41cb, 0xb284,
+ 0x0300, 0x0078, 0x41cd, 0xb284, 0x0400, 0x0040, 0x41d3, 0x0018,
+ 0x41e9, 0x0078, 0x41d5, 0x0028, 0x41e9, 0x79e4, 0xa184, 0x0030,
+ 0x0040, 0x41e9, 0x78ec, 0xa084, 0x0003, 0x0040, 0x41e9, 0x681c,
+ 0xd0ac, 0x00c0, 0x41e7, 0x1078, 0x4273, 0x0078, 0x41e9, 0x781b,
+ 0x00f6, 0x0f7f, 0x0e7f, 0x007c, 0x0c7e, 0x2001, 0x4d01, 0x2004,
+ 0xd0ac, 0x00c0, 0x4265, 0x6814, 0x8007, 0xa084, 0x000f, 0x8003,
+ 0x8003, 0x8003, 0xb28c, 0x0300, 0x0040, 0x4202, 0xa0e0, 0x51c0,
+ 0x0078, 0x4204, 0xa0e0, 0x5240, 0x6004, 0xa084, 0x000a, 0x00c0,
+ 0x4265, 0x6108, 0xa194, 0xff00, 0x0040, 0x4265, 0xa18c, 0x00ff,
+ 0x2001, 0x000a, 0xa106, 0x0040, 0x4230, 0x2001, 0x000c, 0xa106,
+ 0x0040, 0x4234, 0x2001, 0x0012, 0xa106, 0x0040, 0x4238, 0x2001,
+ 0x0014, 0xa106, 0x0040, 0x423c, 0x2001, 0x0019, 0xa106, 0x0040,
+ 0x4240, 0x2001, 0x0032, 0xa106, 0x0040, 0x4244, 0x0078, 0x4248,
+ 0x2009, 0x000c, 0x0078, 0x424a, 0x2009, 0x0012, 0x0078, 0x424a,
+ 0x2009, 0x0014, 0x0078, 0x424a, 0x2009, 0x0019, 0x0078, 0x424a,
+ 0x2009, 0x0020, 0x0078, 0x424a, 0x2009, 0x003f, 0x0078, 0x424a,
+ 0x2011, 0x0000, 0x2100, 0xa205, 0x600a, 0x6004, 0xa085, 0x0002,
+ 0x6006, 0x2061, 0x4d00, 0x6004, 0xd0bc, 0x0040, 0x4265, 0x6814,
+ 0xd0fc, 0x00c0, 0x4260, 0x60ea, 0x2061, 0x4d40, 0x0078, 0x4263,
+ 0x60ee, 0x2061, 0x4d80, 0x601f, 0x800f, 0x0c7f, 0x007c, 0x781b,
+ 0x0076, 0x007c, 0x781b, 0x0075, 0x007c, 0x781b, 0x0064, 0x007c,
+ 0x781b, 0x0061, 0x007c, 0x2009, 0x4d19, 0x210c, 0xa186, 0x0000,
+ 0x0040, 0x4285, 0xa186, 0x0001, 0x0040, 0x4288, 0x701f, 0x000b,
+ 0x7067, 0x0001, 0x781b, 0x0047, 0x007c, 0x781b, 0x00ed, 0x007c,
+ 0x701f, 0x000a, 0x007c, 0x2009, 0x4d19, 0x210c, 0xa186, 0x0000,
+ 0x0040, 0x42a0, 0xa186, 0x0001, 0x0040, 0x429d, 0x701f, 0x000b,
+ 0x7067, 0x0001, 0x781b, 0x0047, 0x007c, 0x701f, 0x000a, 0x007c,
+ 0x781b, 0x00ec, 0x007c, 0x781b, 0x00f6, 0x007c, 0x781b, 0x00f5,
+ 0x007c, 0x781b, 0x00c6, 0x007c, 0x781b, 0x00c5, 0x007c, 0x6818,
+ 0xd0fc, 0x0040, 0x42b5, 0x681b, 0x001d, 0x7067, 0x0001, 0x781b,
+ 0x0047, 0x007c, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x42ce, 0x7808,
+ 0xc08c, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084,
+ 0x0021, 0x0040, 0x42ce, 0x7808, 0xc08d, 0x780a, 0x007c, 0x7808,
+ 0xc08d, 0x780a, 0x007c, 0x7830, 0xa084, 0x0040, 0x00c0, 0x42d3,
+ 0x2001, 0x4d04, 0x2004, 0xd0ec, 0x0040, 0x42e2, 0xb284, 0x0300,
+ 0x0078, 0x42e4, 0xb284, 0x0400, 0x0040, 0x42ea, 0x0098, 0x42ee,
+ 0x0078, 0x42ec, 0x00a8, 0x42ee, 0x78ac, 0x007c, 0x7808, 0xa084,
+ 0xfffd, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084,
+ 0x0021, 0x0040, 0x4311, 0x007e, 0x2001, 0x4d04, 0x2004, 0xd0ec,
+ 0x007f, 0x0040, 0x4307, 0xb284, 0x0300, 0x0078, 0x4309, 0xb284,
+ 0x0400, 0x0040, 0x430f, 0x0098, 0x430b, 0x0078, 0x4311, 0x00a8,
+ 0x430f, 0x78ac, 0x007e, 0x7808, 0xa085, 0x0002, 0x780a, 0x007f,
+ 0x007c, 0xa784, 0x0001, 0x00c0, 0x36fb, 0xa784, 0x0070, 0x0040,
+ 0x4329, 0x0c7e, 0x2d60, 0x2f68, 0x1078, 0x288d, 0x2d78, 0x2c68,
+ 0x0c7f, 0xa784, 0x0008, 0x0040, 0x4336, 0x784b, 0x0008, 0x78ec,
+ 0xa084, 0x0003, 0x0040, 0x2966, 0x0078, 0x4267, 0xa784, 0x0004,
+ 0x0040, 0x4365, 0x78b8, 0xa084, 0x4001, 0x0040, 0x4365, 0x784b,
+ 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2966, 0x78e4, 0xa084,
+ 0x0007, 0xa086, 0x0001, 0x00c0, 0x4365, 0x78c0, 0xa685, 0x4800,
+ 0x2030, 0x7e5a, 0x781b, 0x00f6, 0x007c, 0x784b, 0x0008, 0x6818,
+ 0xd0fc, 0x0040, 0x4362, 0x681b, 0x0015, 0xd6f4, 0x0040, 0x4362,
+ 0x681b, 0x0007, 0x1078, 0x4273, 0x007c, 0x681b, 0x0003, 0x7858,
+ 0xa084, 0x3f00, 0x681e, 0x682f, 0x0000, 0x6833, 0x0000, 0x784b,
+ 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x3004, 0x007e, 0x2001,
+ 0x4d04, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x4382, 0xb284, 0x0300,
+ 0x0078, 0x4384, 0xb284, 0x0400, 0x0040, 0x438a, 0x0018, 0x2962,
+ 0x0078, 0x438c, 0x0028, 0x2962, 0x0078, 0x4016, 0x6b14, 0x8307,
+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xd3fc, 0x0040, 0x439c,
+ 0xa080, 0x5240, 0x0078, 0x439e, 0xa080, 0x51c0, 0x2060, 0x2048,
+ 0x705a, 0x2a60, 0x007c, 0x0020, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0062, 0x0009, 0x0014,
+ 0x0014, 0x9848, 0x0014, 0x0014, 0x990e, 0x98fa, 0x0014, 0x0014,
+ 0x0080, 0x00f9, 0x0100, 0x0402, 0x2008, 0xf880, 0x0018, 0xa20a,
+ 0x0014, 0x300b, 0xa20c, 0x0014, 0x2500, 0x0013, 0x2500, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,
+ 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0xa200, 0x3806, 0x8839,
+ 0x20c4, 0x0864, 0xa856, 0x3008, 0x28c1, 0x9d15, 0xa201, 0x300c,
+ 0x2847, 0x8161, 0x846a, 0x8000, 0x84a4, 0x1856, 0x883a, 0xa808,
+ 0x28e2, 0x9cc8, 0xa8f3, 0x0864, 0xa844, 0x300c, 0xa801, 0x3008,
+ 0x28e1, 0x9cc8, 0x2021, 0xa81d, 0xa205, 0x870c, 0xd8de, 0x64a0,
+ 0x6de0, 0x6fc0, 0x63a4, 0x6c80, 0x0212, 0xa205, 0x883d, 0x7942,
+ 0x8020, 0xa4a1, 0x882b, 0x1814, 0x883b, 0x80df, 0x94a1, 0x7027,
+ 0x85f2, 0xa737, 0xa532, 0xf003, 0x8576, 0x8677, 0xa816, 0x883e,
+ 0xa814, 0x2001, 0xa812, 0xa204, 0x64c0, 0x6de0, 0x67a0, 0x6fc0,
+ 0x7942, 0x8020, 0xa4a1, 0x1814, 0x80df, 0x94a1, 0x883b, 0x7023,
+ 0x8576, 0x8677, 0xa802, 0x7861, 0x883e, 0x206b, 0x28c1, 0x9d15,
+ 0x2044, 0x2103, 0x20a2, 0x2081, 0xa8c3, 0xa207, 0x2901, 0xa80a,
+ 0x0014, 0xa203, 0x8000, 0x85a4, 0x1872, 0x879a, 0x883c, 0x1fe2,
+ 0xf601, 0xa208, 0x856e, 0x866f, 0x7161, 0x0014, 0x0704, 0x3008,
+ 0x9cc8, 0x0014, 0xa202, 0x8000, 0x85a4, 0x3009, 0x84a8, 0x19e2,
+ 0xf844, 0x856e, 0x883f, 0x08e6, 0xa8f5, 0xf861, 0xa8ea, 0xf801,
+ 0x0014, 0xf881, 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfaa2, 0x1de2,
+ 0x0014, 0x8532, 0xf221, 0x0014, 0x1de2, 0x84a8, 0xd6e0, 0x1fe6,
+ 0x0014, 0x3008, 0x8000, 0x284a, 0x1011, 0xa8fc, 0x3008, 0x9d2d,
+ 0x8000, 0xa000, 0x2802, 0x1011, 0xa8fd, 0x9d33, 0xa8bd, 0x3008,
+ 0x9d2d, 0x283b, 0x1011, 0xa8fd, 0xa209, 0x0017, 0x300c, 0xa209,
+ 0x8000, 0x85a4, 0x1de2, 0xa209, 0xdac1, 0x0014, 0x0210, 0xa801,
+ 0x0014, 0x26e0, 0x873a, 0xfaa3, 0x19f2, 0x26e0, 0x18f2, 0x0014,
+ 0xa20b, 0x0014, 0xa20d, 0x3806, 0x0210, 0x9d1f, 0x0704, 0xa206,
+ 0x6865, 0x817e, 0x842a, 0x1dc1, 0x8823, 0x0016, 0x6042, 0x8008,
+ 0xa8fa, 0x8000, 0x84a4, 0x8160, 0x842a, 0xf021, 0x3008, 0x84a8,
+ 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d4, 0x8822, 0x0016, 0x7944,
+ 0x8421, 0xa020, 0xa532, 0x84a1, 0x0016, 0x7944, 0x8421, 0xa0df,
+ 0x9532, 0x84a1, 0x0016, 0x0000, 0x127e, 0x70d4, 0xa084, 0x4600,
+ 0x8004, 0x2090, 0x7204, 0x7008, 0xc09c, 0xa205, 0x00c0, 0x44e8,
+ 0x720c, 0x82ff, 0x0040, 0x44e3, 0x8aff, 0x00c0, 0x44e8, 0x7200,
+ 0xd284, 0x00c0, 0x44e8, 0x7003, 0x0008, 0x127f, 0x2000, 0x007c,
+ 0x7000, 0xa084, 0x0003, 0x7002, 0xc69c, 0xd084, 0x0040, 0x452b,
+ 0x7108, 0x0005, 0x7008, 0xa106, 0x00c0, 0x44f0, 0xa184, 0x0003,
+ 0x0040, 0x455c, 0xa184, 0x01e0, 0x00c0, 0x455c, 0xd1f4, 0x00c0,
+ 0x44f0, 0xa184, 0x3000, 0xa086, 0x1000, 0x0040, 0x44f0, 0x2011,
+ 0x0180, 0x710c, 0x8211, 0x0040, 0x4515, 0x7008, 0xd0f4, 0x00c0,
+ 0x44f0, 0x700c, 0xa106, 0x0040, 0x450a, 0x7007, 0x0012, 0x7108,
+ 0x0005, 0x7008, 0xa106, 0x00c0, 0x4517, 0xa184, 0x0003, 0x0040,
+ 0x455c, 0xd194, 0x0040, 0x4517, 0xd1f4, 0x0040, 0x455c, 0x7007,
+ 0x0002, 0x0078, 0x44f0, 0x7108, 0xd1fc, 0x0040, 0x4536, 0x1078,
+ 0x46b1, 0x8aff, 0x0040, 0x44d2, 0x0078, 0x452b, 0x700c, 0xa08c,
+ 0x03ff, 0x0040, 0x4561, 0x7004, 0xd084, 0x0040, 0x4553, 0x7014,
+ 0xa005, 0x00c0, 0x454f, 0x7010, 0x7310, 0xa306, 0x00c0, 0x4543,
+ 0x2300, 0xa005, 0x0040, 0x4553, 0xa102, 0x00c8, 0x452b, 0x7007,
+ 0x0010, 0x0078, 0x455c, 0x8aff, 0x0040, 0x4561, 0x1078, 0x48b8,
+ 0x00c0, 0x4556, 0x0040, 0x452b, 0x1078, 0x45fa, 0x127f, 0x2000,
+ 0x007c, 0x7204, 0x7108, 0xc19c, 0x8103, 0x00c8, 0x4570, 0x1078,
+ 0x46b1, 0x0078, 0x4561, 0x7003, 0x0008, 0x127f, 0x2000, 0x007c,
+ 0xa205, 0x00c0, 0x455c, 0x7003, 0x0008, 0x127f, 0x2000, 0x007c,
+ 0x6428, 0x84ff, 0x0040, 0x45a4, 0x2c70, 0x7004, 0xa0bc, 0x000f,
+ 0xa7b8, 0x45b4, 0x273c, 0x87fb, 0x00c0, 0x4592, 0x0048, 0x458a,
+ 0x1078, 0x290c, 0x609c, 0xa075, 0x0040, 0x45a4, 0x0078, 0x457d,
+ 0x2039, 0x45a9, 0x2704, 0xae68, 0x6808, 0xa630, 0x680c, 0xa529,
+ 0x8421, 0x0040, 0x45a4, 0x8738, 0x2704, 0xa005, 0x00c0, 0x4593,
+ 0x709c, 0xa075, 0x00c0, 0x457d, 0x007c, 0x0000, 0x0005, 0x0009,
+ 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, 0x0003, 0x0009,
+ 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x45a9, 0x45a6, 0x0000,
+ 0x0000, 0x8000, 0x0000, 0x45a9, 0x0000, 0x45b1, 0x45ae, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x45b1, 0x0000, 0x45ac, 0x45ac, 0x0000,
+ 0x0000, 0x8000, 0x0000, 0x45ac, 0x0000, 0x45b2, 0x45b2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x45b2, 0x2079, 0x4d00, 0x2071, 0x0010,
+ 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0001, 0x7810, 0xd0ec,
+ 0x0040, 0x45e8, 0x2009, 0x0001, 0x2071, 0x0020, 0x0078, 0x45ec,
+ 0x2009, 0x0002, 0x2071, 0x0050, 0x7007, 0x000a, 0x7007, 0x0002,
+ 0x7003, 0x0000, 0x8109, 0x0040, 0x45f9, 0x2071, 0x0020, 0x0078,
+ 0x45ec, 0x007c, 0x7004, 0x8004, 0x00c8, 0x4683, 0x7108, 0x7008,
+ 0xa106, 0x00c0, 0x45fe, 0xa184, 0x01e0, 0x0040, 0x460b, 0x1078,
+ 0x46f4, 0x0078, 0x46ab, 0x7007, 0x0012, 0x2019, 0x0000, 0x7108,
+ 0x7008, 0xa106, 0x00c0, 0x460f, 0xa184, 0x01e0, 0x0040, 0x461c,
+ 0x1078, 0x46f4, 0x0078, 0x46ab, 0x7810, 0xd0ec, 0x0040, 0x4636,
+ 0x2001, 0x04fd, 0x2004, 0xa086, 0x0003, 0x00c0, 0x463a, 0xa184,
+ 0x4000, 0x0040, 0x463e, 0xa382, 0x0003, 0x00c8, 0x463e, 0xa184,
+ 0x0004, 0x0040, 0x460f, 0x8318, 0x0078, 0x460f, 0x7814, 0xd0ec,
+ 0x00c0, 0x463e, 0xa184, 0x4000, 0x00c0, 0x460f, 0xa19c, 0x300c,
+ 0xa386, 0x2004, 0x0040, 0x465b, 0xa386, 0x0008, 0x0040, 0x4666,
+ 0x7004, 0xd084, 0x00c0, 0x4657, 0x7108, 0x7008, 0xa106, 0x00c0,
+ 0x464c, 0xa184, 0x0003, 0x0040, 0x4657, 0x0078, 0x46f4, 0xa386,
+ 0x200c, 0x00c0, 0x460f, 0x7200, 0x8204, 0x0048, 0x4666, 0x730c,
+ 0xa384, 0x03ff, 0x0040, 0x4666, 0x1078, 0x290c, 0x7108, 0x7008,
+ 0xa106, 0x00c0, 0x4666, 0xa184, 0x01e0, 0x0040, 0x4673, 0x1078,
+ 0x46f4, 0x0078, 0x46ab, 0x7007, 0x0012, 0x7000, 0xd084, 0x00c0,
+ 0x4683, 0x7310, 0x7014, 0xa305, 0x0040, 0x4683, 0x710c, 0xa184,
+ 0x03ff, 0x00c0, 0x45fa, 0x7108, 0x7008, 0xa106, 0x00c0, 0x4683,
+ 0xa184, 0x01e0, 0x0040, 0x4690, 0x1078, 0x46f4, 0x0078, 0x46ab,
+ 0x7007, 0x0012, 0x7007, 0x0008, 0x7004, 0xd09c, 0x00c0, 0x4694,
+ 0x7108, 0x7008, 0xa106, 0x00c0, 0x4698, 0xa184, 0x01e0, 0x0040,
+ 0x46a5, 0x1078, 0x46f4, 0x0078, 0x46ab, 0x7007, 0x0012, 0x7108,
+ 0x8103, 0x0048, 0x4698, 0x7003, 0x0008, 0x007c, 0x7108, 0x0078,
+ 0x46b1, 0xa184, 0x01e0, 0x00c0, 0x46f4, 0x7108, 0xa184, 0x01e0,
+ 0x00c0, 0x46f4, 0xa184, 0x0007, 0x0079, 0x46be, 0x46c8, 0x46d8,
+ 0x46c6, 0x46d8, 0x46c6, 0x4736, 0x46c6, 0x4734, 0x1078, 0x290c,
+ 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, 0x8aff, 0x00c0, 0x46d3,
+ 0x2049, 0x0000, 0x007c, 0x1078, 0x48b8, 0x00c0, 0x46d3, 0x007c,
+ 0x7004, 0xa084, 0x0010, 0xc08d, 0x7006, 0x7004, 0xd084, 0x00c0,
+ 0x46ec, 0x7108, 0x7008, 0xa106, 0x00c0, 0x46e1, 0xa184, 0x0003,
+ 0x0040, 0x46ec, 0x0078, 0x46f4, 0x8aff, 0x0040, 0x46f3, 0x1078,
+ 0x48b8, 0x00c0, 0x46ef, 0x007c, 0x7007, 0x0012, 0x7108, 0x00e0,
+ 0x46f7, 0x2091, 0x6000, 0x00e0, 0x46fb, 0x2091, 0x6000, 0x7007,
+ 0x0012, 0x7007, 0x0008, 0x7004, 0xd09c, 0x00c0, 0x4703, 0x7007,
+ 0x0012, 0x7108, 0xd1fc, 0x00c0, 0x4707, 0x7003, 0x0000, 0x7000,
+ 0xa005, 0x00c0, 0x471b, 0x7004, 0xa005, 0x00c0, 0x471b, 0x700c,
+ 0xa005, 0x0040, 0x471d, 0x0078, 0x46ff, 0x2049, 0x0000, 0xb284,
+ 0x0100, 0x0040, 0x4727, 0x2001, 0x0000, 0x0078, 0x4729, 0x2001,
+ 0x0001, 0x1078, 0x416c, 0x681b, 0x0002, 0x2051, 0x0000, 0x007c,
+ 0x1078, 0x290c, 0x1078, 0x290c, 0x1078, 0x477e, 0x7210, 0x7114,
+ 0x700c, 0xa09c, 0x03ff, 0x2800, 0xa300, 0xa211, 0xa189, 0x0000,
+ 0x1078, 0x477e, 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200, 0xa322,
+ 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0040, 0x4759, 0x00c8,
+ 0x4759, 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60, 0x0078,
+ 0x4740, 0x2b60, 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008, 0x0040,
+ 0x4765, 0xa7ba, 0x45ae, 0x0078, 0x4767, 0xa7ba, 0x45a6, 0x007f,
+ 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x7108, 0x7008,
+ 0xa106, 0x00c0, 0x476e, 0xa184, 0x01e0, 0x0040, 0x4779, 0x1078,
+ 0x46f4, 0x7007, 0x0012, 0x1078, 0x45fa, 0x007c, 0x8a50, 0x8739,
+ 0x2704, 0xa004, 0x00c0, 0x4792, 0x6000, 0xa064, 0x00c0, 0x4789,
+ 0x2d60, 0x6004, 0xa084, 0x000f, 0xa080, 0x45c4, 0x203c, 0x87fb,
+ 0x1040, 0x290c, 0x007c, 0x127e, 0x0d7e, 0x70d4, 0xa084, 0x4600,
+ 0x8004, 0x2090, 0x0d7f, 0x6884, 0x2060, 0x6888, 0x6b8c, 0x6c90,
+ 0x8057, 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x007e, 0x6804, 0xa084,
+ 0x0008, 0x007f, 0x0040, 0x47b0, 0xa0b8, 0x45ae, 0x0078, 0x47b2,
+ 0xa0b8, 0x45a6, 0xb284, 0x0100, 0x0040, 0x47b9, 0x7e20, 0x0078,
+ 0x47ba, 0x7e24, 0xa6b5, 0x000c, 0x681c, 0xd0b4, 0x0040, 0x47c1,
+ 0xc685, 0x2400, 0xa305, 0x0040, 0x47eb, 0x2c58, 0x2704, 0x6104,
+ 0xac60, 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, 0xa184,
+ 0x0008, 0x0040, 0x47db, 0x6010, 0xa081, 0x0000, 0x7022, 0x6014,
+ 0xa081, 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, 0x620c,
+ 0x2300, 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078,
+ 0x48e3, 0x0078, 0x47ed, 0x1078, 0x48b8, 0x00c0, 0x47eb, 0x127f,
+ 0x2000, 0x007c, 0x127e, 0x0d7e, 0x70d4, 0xa084, 0x4600, 0x8004,
+ 0x2090, 0x0d7f, 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, 0x47fc,
+ 0x7003, 0x0008, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x70d4,
+ 0xa084, 0x4600, 0x8004, 0x007e, 0x2090, 0x007f, 0x0d7f, 0x7e20,
+ 0xb284, 0x0100, 0x00c0, 0x4815, 0x7e24, 0xa6b5, 0x000c, 0x681c,
+ 0xd0ac, 0x00c0, 0x4820, 0xc685, 0x7003, 0x0000, 0x7007, 0x0004,
+ 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, 0x000f, 0xa7b8, 0x45b4,
+ 0x273c, 0x87fb, 0x00c0, 0x4836, 0x0048, 0x4830, 0x1078, 0x290c,
+ 0x689c, 0xa065, 0x0040, 0x483a, 0x0078, 0x4823, 0x1078, 0x48b8,
+ 0x00c0, 0x4836, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e, 0x017e,
+ 0x0d7e, 0x70d4, 0xa084, 0x4600, 0x8004, 0x007e, 0x2090, 0x007f,
+ 0x7e20, 0xb284, 0x0100, 0x00c0, 0x484e, 0x7e24, 0x0d7f, 0x037f,
+ 0x047f, 0xa6b5, 0x000c, 0x681c, 0xd0b4, 0x0040, 0x485c, 0xc685,
+ 0x7003, 0x0000, 0x7007, 0x0004, 0x2049, 0x483d, 0x6828, 0xa055,
+ 0x0d7e, 0x0040, 0x48b4, 0x2d70, 0x2e60, 0x7004, 0xa0bc, 0x000f,
+ 0xa7b8, 0x45b4, 0x273c, 0x87fb, 0x00c0, 0x4879, 0x0048, 0x4872,
+ 0x1078, 0x290c, 0x709c, 0xa075, 0x2060, 0x0040, 0x48b4, 0x0078,
+ 0x4865, 0x2704, 0xae68, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0048,
+ 0x4892, 0x8a51, 0x00c0, 0x4886, 0x1078, 0x290c, 0x8738, 0x2704,
+ 0xa005, 0x00c0, 0x487a, 0x709c, 0xa075, 0x2060, 0x0040, 0x48b4,
+ 0x0078, 0x4865, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x6908,
+ 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x00c8, 0x48a1, 0x1078,
+ 0x290c, 0xb284, 0x0100, 0x0040, 0x48af, 0x2001, 0x4d04, 0x2004,
+ 0xd0ec, 0x00c0, 0x48af, 0x2071, 0x0050, 0x0078, 0x48b1, 0x2071,
+ 0x0020, 0x0d7f, 0x0078, 0x47c1, 0x0d7f, 0x127f, 0x2000, 0x007c,
+ 0x7008, 0x007e, 0xa084, 0x01e0, 0x007f, 0x0040, 0x48c1, 0xa006,
+ 0x007c, 0xa084, 0x0003, 0xa086, 0x0003, 0x00c0, 0x48c8, 0x007c,
+ 0x2704, 0xac78, 0x7800, 0x701a, 0x7804, 0x701e, 0x7808, 0x7012,
+ 0x780c, 0x7016, 0x6004, 0xa084, 0x0008, 0x0040, 0x48db, 0x7810,
+ 0x7022, 0x7814, 0x7026, 0x7602, 0x7004, 0xa084, 0x0010, 0xc085,
+ 0x7006, 0x2079, 0x4d00, 0x8a51, 0x0040, 0x4907, 0x8738, 0x2704,
+ 0xa005, 0x00c0, 0x48f9, 0x609c, 0xa005, 0x0040, 0x4908, 0x2060,
+ 0x6004, 0xa084, 0x000f, 0xa080, 0x45b4, 0x203c, 0x87fb, 0x1040,
+ 0x290c, 0x7008, 0x007e, 0xa084, 0x01e0, 0x007f, 0x0040, 0x4903,
+ 0xa006, 0x0078, 0x4908, 0xa084, 0x0003, 0xa086, 0x0003, 0x007c,
+ 0x2051, 0x0000, 0x007c, 0x127e, 0x007e, 0x0d7e, 0x70d4, 0xa084,
+ 0x4600, 0x8004, 0x2090, 0x0d7f, 0x087f, 0x7108, 0xa184, 0x0003,
+ 0x00c0, 0x4920, 0x6828, 0xa005, 0x0040, 0x4930, 0x0078, 0x44e8,
+ 0x7108, 0xd1fc, 0x0040, 0x4928, 0x1078, 0x46b1, 0x0078, 0x4915,
+ 0x7007, 0x0010, 0x7108, 0xd1fc, 0x0040, 0x492a, 0x1078, 0x46b1,
+ 0x7008, 0xa086, 0x0008, 0x00c0, 0x4915, 0x7000, 0xa005, 0x00c0,
+ 0x4915, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c,
+ 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e, 0x70d4, 0xa084,
+ 0x4600, 0x8004, 0x2090, 0x0d7f, 0x2049, 0x4940, 0xad80, 0x0011,
+ 0x20a0, 0xb284, 0x0100, 0x0040, 0x4963, 0x2001, 0x4d04, 0x2004,
+ 0xd0ec, 0x0040, 0x495f, 0x2099, 0x0031, 0x0078, 0x4965, 0x2099,
+ 0x0032, 0x0078, 0x4965, 0x2099, 0x0031, 0x700c, 0xa084, 0x03ff,
+ 0x682a, 0x7007, 0x0008, 0x7007, 0x0002, 0x7003, 0x0001, 0x0040,
+ 0x4974, 0x8000, 0x80ac, 0x53a5, 0x700c, 0xa084, 0x03ff, 0x0040,
+ 0x4980, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x497b,
+ 0x0c7f, 0x2049, 0x0000, 0x7003, 0x0000, 0x157f, 0x137f, 0x147f,
+ 0x127f, 0x2000, 0x007c, 0x2091, 0x8000, 0x2091, 0x6000, 0x78ac,
+ 0xa005, 0x00c0, 0x49a2, 0x7974, 0x70d0, 0xa106, 0x00c0, 0x49a2,
+ 0x781c, 0xa005, 0x0040, 0x49a2, 0x781f, 0x0000, 0x0068, 0x49a2,
+ 0x2091, 0x4080, 0x7830, 0x8001, 0x7832, 0x00c0, 0x4a2a, 0x7834,
+ 0x7832, 0x7810, 0xd0ec, 0x00c0, 0x4a23, 0x2061, 0x72c0, 0x2069,
+ 0x4d80, 0xc7fd, 0x68d0, 0xa005, 0x0040, 0x49bc, 0x8001, 0x68d2,
+ 0x00c0, 0x49bc, 0x1078, 0x4bf3, 0x6800, 0xa084, 0x000f, 0x0040,
+ 0x49d1, 0xa086, 0x0001, 0x0040, 0x49d1, 0x6844, 0xa00d, 0x0040,
+ 0x49d1, 0x2104, 0xa005, 0x0040, 0x49d1, 0x8001, 0x200a, 0x0040,
+ 0x4b66, 0x6814, 0xa005, 0x0040, 0x49f6, 0x8001, 0x6816, 0x00c0,
+ 0x49f6, 0x68a7, 0x0001, 0x0f7e, 0xd7fc, 0x00c0, 0x49eb, 0x7810,
+ 0xd0ec, 0x0040, 0x49e7, 0x2079, 0x0100, 0x0078, 0x49ed, 0x2079,
+ 0x0200, 0x0078, 0x49ed, 0x2079, 0x0100, 0x1078, 0x42cf, 0x0f7f,
+ 0x6864, 0xa005, 0x0040, 0x49f6, 0x1078, 0x25ea, 0x6880, 0xa005,
+ 0x0040, 0x4a03, 0x8001, 0x6882, 0x00c0, 0x4a03, 0x6867, 0x0000,
+ 0x68d4, 0xc0dd, 0x68d6, 0x68d4, 0xd0fc, 0x0040, 0x4a20, 0xc0fc,
+ 0x68d6, 0x20a9, 0x0200, 0x6034, 0xa005, 0x0040, 0x4a1c, 0x8001,
+ 0x6036, 0x68d4, 0xc0fd, 0x68d6, 0x00c0, 0x4a1c, 0x6010, 0xa005,
+ 0x0040, 0x4a1c, 0x1078, 0x25ea, 0xace0, 0x0010, 0x00f0, 0x4a0b,
+ 0xd7fc, 0x0040, 0x4a2a, 0x2061, 0x52c0, 0x2069, 0x4d40, 0xc7fc,
+ 0x0078, 0x49b2, 0x1078, 0x4a66, 0x7838, 0x8001, 0x783a, 0x00c0,
+ 0x4a4c, 0x783c, 0x783a, 0x2061, 0x52c0, 0x2069, 0x4d40, 0xc7fc,
+ 0x680c, 0xa005, 0x0040, 0x4a3e, 0x1078, 0x4abd, 0xd7fc, 0x00c0,
+ 0x4a4c, 0x7810, 0xd0ec, 0x00c0, 0x4a4c, 0x2061, 0x72c0, 0x2069,
+ 0x4d80, 0xc7fd, 0x0078, 0x4a38, 0x7814, 0xd0e4, 0x00c0, 0x4a50,
+ 0x7810, 0xd0cc, 0x0040, 0x4a63, 0xd0ac, 0x00c0, 0x4a5c, 0xd0a4,
+ 0x0040, 0x4a63, 0xc0ad, 0x7812, 0x2091, 0x8001, 0x0068, 0x4a62,
+ 0x1078, 0x2356, 0x007c, 0x2091, 0x8001, 0x007c, 0x7840, 0x8001,
+ 0x7842, 0x00c0, 0x4abc, 0x7844, 0x7842, 0x2091, 0x8000, 0x2061,
+ 0x52c0, 0x2069, 0x4d40, 0xc7fc, 0x7810, 0x2079, 0x0200, 0xd0ec,
+ 0x0040, 0x4a7c, 0x2079, 0x0100, 0x68d8, 0xa005, 0x0040, 0x4a88,
+ 0x7de0, 0xa504, 0x00c0, 0x4a88, 0x68da, 0x68d4, 0xc0bc, 0x68d6,
+ 0x2079, 0x4d00, 0x6810, 0xa005, 0x00c0, 0x4a90, 0x2001, 0x0101,
+ 0x8001, 0x6812, 0xd7fc, 0x0040, 0x4a99, 0xa080, 0x93d0, 0x0078,
+ 0x4a9b, 0xa080, 0x92c0, 0x2040, 0x2004, 0xa065, 0x0040, 0x4aac,
+ 0x6024, 0xa005, 0x0040, 0x4aa8, 0x8001, 0x6026, 0x0040, 0x4b08,
+ 0x6000, 0x2c40, 0x0078, 0x4a9d, 0xd7fc, 0x00c0, 0x4abc, 0x7810,
+ 0xd0ec, 0x00c0, 0x4abc, 0x2061, 0x72c0, 0x2069, 0x4d80, 0xc7fd,
+ 0x2079, 0x0200, 0x0078, 0x4a7c, 0x007c, 0x2009, 0x0000, 0x20a9,
+ 0x0200, 0x6008, 0xd09c, 0x0040, 0x4af4, 0x6024, 0xa005, 0x0040,
+ 0x4acd, 0x8001, 0x6026, 0x0078, 0x4af2, 0x6008, 0xc09c, 0xd084,
+ 0x00c0, 0x4ad5, 0xd0ac, 0x0040, 0x4aec, 0x600a, 0x6004, 0xa06d,
+ 0x0040, 0x4af4, 0x0c7e, 0x017e, 0x6010, 0x8001, 0x6012, 0x1078,
+ 0x3d27, 0x2d00, 0x2c68, 0x2060, 0x1078, 0x1e42, 0x1078, 0x2004,
+ 0x017f, 0x0c7f, 0x0078, 0x4af4, 0xc0bd, 0x600a, 0xa18d, 0x0001,
+ 0x0078, 0x4af4, 0xa18d, 0x0100, 0xace0, 0x0010, 0x00f0, 0x4ac1,
+ 0xa184, 0x0001, 0x0040, 0x4b03, 0xa18c, 0xfffe, 0x690e, 0x1078,
+ 0x25ea, 0x0078, 0x4b04, 0x690e, 0x007c, 0x00c0, 0x4b04, 0x786c,
+ 0x6800, 0xa005, 0x0040, 0x4b10, 0x684c, 0xac06, 0x0040, 0x4b66,
+ 0x6864, 0xa005, 0x0040, 0x4b18, 0x6027, 0x0001, 0x0078, 0x4b65,
+ 0x2c00, 0x687e, 0x6714, 0x6f76, 0x6017, 0x0000, 0x602b, 0x0000,
+ 0x601b, 0x0006, 0x60b4, 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084,
+ 0x00ff, 0xa085, 0x0060, 0x6022, 0x6000, 0x2042, 0x1078, 0x1dcb,
+ 0x6818, 0xa005, 0x0040, 0x4b36, 0x8001, 0x681a, 0x6808, 0xc0a4,
+ 0x680a, 0x6810, 0x7908, 0x8109, 0x790a, 0x8001, 0x00d0, 0x4b42,
+ 0x1078, 0x290c, 0x6812, 0x00c0, 0x4b48, 0x7910, 0xc1a5, 0x7912,
+ 0x602f, 0x0000, 0x6033, 0x0000, 0x2c68, 0x1078, 0x2013, 0xd7fc,
+ 0x00c0, 0x4b56, 0x2069, 0x4d40, 0x0078, 0x4b58, 0x2069, 0x4d80,
+ 0x6910, 0xa184, 0x0100, 0x2001, 0x0006, 0x00c0, 0x4b62, 0x697a,
+ 0x2001, 0x0004, 0x2708, 0x1078, 0x25dd, 0x007c, 0x0d7e, 0x694c,
+ 0x2160, 0xd7fc, 0x00c0, 0x4b78, 0x7810, 0xd0ec, 0x0040, 0x4b74,
+ 0x2069, 0x0100, 0x0078, 0x4b7a, 0x2069, 0x0200, 0x0078, 0x4b7a,
+ 0x2069, 0x0100, 0x1078, 0x288d, 0x601b, 0x0006, 0x6858, 0xa084,
+ 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0048, 0x6022,
+ 0x602f, 0x0000, 0x6033, 0x0000, 0x6808, 0xa084, 0xfffd, 0x680a,
+ 0x6830, 0xd0b4, 0x0040, 0x4bac, 0x684b, 0x0004, 0x20a9, 0x0014,
+ 0x6848, 0xd094, 0x0040, 0x4b9e, 0x00f0, 0x4b98, 0x684b, 0x0009,
+ 0x20a9, 0x0014, 0x6848, 0xd084, 0x0040, 0x4ba8, 0x00f0, 0x4ba2,
+ 0x20a9, 0x00fa, 0x00f0, 0x4baa, 0x681b, 0x0047, 0x0d7f, 0x6867,
+ 0x0007, 0x007c, 0x2079, 0x4d00, 0x1078, 0x4be6, 0x1078, 0x4bcc,
+ 0x1078, 0x4bd9, 0x2009, 0x0002, 0x2069, 0x4d80, 0x680f, 0x0000,
+ 0x6813, 0x0000, 0x6817, 0x0000, 0x8109, 0x0040, 0x4bcb, 0x2069,
+ 0x4d40, 0x0078, 0x4bbe, 0x007c, 0x7810, 0xd0ec, 0x0040, 0x4bd4,
+ 0x2019, 0x00cc, 0x0078, 0x4bd6, 0x2019, 0x007b, 0x7b3a, 0x7b3e,
+ 0x007c, 0x7814, 0xd0e4, 0x00c0, 0x4be1, 0x2019, 0x0040, 0x0078,
+ 0x4be3, 0x2019, 0x0026, 0x7b42, 0x7b46, 0x007c, 0x7814, 0xd0e4,
+ 0x00c0, 0x4bee, 0x2019, 0x3f94, 0x0078, 0x4bf0, 0x2019, 0x2624,
+ 0x7b32, 0x7b36, 0x007c, 0x6950, 0xa185, 0x0000, 0x0040, 0x4c08,
+ 0x0c7e, 0x6ac0, 0x2264, 0x602b, 0x0000, 0x602f, 0x0000, 0x6008,
+ 0xc0b5, 0x600a, 0x8210, 0x8109, 0x00c0, 0x4bfa, 0x6952, 0x0c7f,
+ 0x007c, 0x70ec, 0xd0dc, 0x00c0, 0x4c12, 0xd0d4, 0x0040, 0x4c35,
+ 0x0078, 0x4c38, 0x2008, 0x7810, 0xd0ec, 0x0040, 0x4c21, 0xd1c4,
+ 0x00c0, 0x4c40, 0xc0f5, 0x7812, 0xd0ec, 0x0040, 0x4c3c, 0x0078,
+ 0x4c38, 0xae8e, 0x0100, 0x0040, 0x4c2d, 0x7814, 0xc0f5, 0x7816,
+ 0xd0d4, 0x00c0, 0x4c3c, 0x0078, 0x4c38, 0x7814, 0xc0fd, 0x7816,
+ 0xd0d4, 0x00c0, 0x4c3c, 0x0078, 0x4c38, 0xd0e4, 0x0040, 0x4c3e,
+ 0x7804, 0xd08c, 0x0040, 0x4c3e, 0x681f, 0x000c, 0x70a0, 0x70a2,
+ 0x007c, 0x4620
+};
+/************************************************************************
+ * *
+ * --- ISP1240/ISP1080/ISP1280 Initiator/Target Firmware --- *
+ * 32 LUN Support *
+ * *
+ ************************************************************************/
+/*
+ * Firmware Version 9.10.00 (12:20 Jul 24, 1999)
+ */
+
+static const u_int16_t isp_1080_risc_code_it[] = {
+ 0x0078, 0x103a, 0x0000, 0x4c6c, 0x0000, 0x2043, 0x4f50, 0x5952,
+ 0x4947, 0x4854, 0x2031, 0x3939, 0x3520, 0x514c, 0x4f47, 0x4943,
+ 0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350,
+ 0x3132, 0x3430, 0x2049, 0x2f54, 0x2046, 0x6972, 0x6d77, 0x6172,
+ 0x6520, 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, 0x392e, 0x3130,
+ 0x2020, 0x2043, 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20,
+ 0x3030, 0x2050, 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020,
+ 0x3031, 0x2024, 0x20c9, 0xa8ff, 0x2001, 0x04fc, 0x2004, 0xa086,
+ 0x1080, 0x00c0, 0x104d, 0x2071, 0x0100, 0x70a0, 0x70a2, 0x20c1,
+ 0x0010, 0x2089, 0x136f, 0x0078, 0x1066, 0x2001, 0x04fc, 0x2004,
+ 0xa086, 0x1280, 0x00c0, 0x1062, 0x2071, 0x0200, 0x70a0, 0x70a2,
+ 0x2071, 0x0100, 0x70a0, 0x70a2, 0x20c1, 0x0010, 0x2089, 0x13f3,
+ 0x0078, 0x1066, 0x20c1, 0x0020, 0x2089, 0x1317, 0x2071, 0x0010,
+ 0x70c3, 0x0004, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020,
+ 0x70d3, 0x0009, 0x2001, 0x04fe, 0x70d6, 0x20c1, 0x0021, 0x2019,
+ 0x0000, 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, 0xa1ec, 0x7fff,
+ 0x2d64, 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, 0x205b, 0x5050,
+ 0x2114, 0xa286, 0xa5a5, 0x0040, 0x109d, 0xa386, 0x000f, 0x0040,
+ 0x1099, 0x2c6a, 0x2a5a, 0x20c1, 0x0020, 0x2019, 0x000f, 0x0078,
+ 0x1079, 0x2c6a, 0x2a5a, 0x0078, 0x109b, 0x2c6a, 0x2a5a, 0x2130,
+ 0x2128, 0xa1a2, 0x5d00, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424,
+ 0x8424, 0xa192, 0xa900, 0x2009, 0x0000, 0x2001, 0x0034, 0x1078,
+ 0x2239, 0x2218, 0x2079, 0x5d00, 0x2fa0, 0x2408, 0x2011, 0x0000,
+ 0x20a9, 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10b8, 0x2009, 0xff00,
+ 0x3400, 0xa102, 0x0048, 0x10c8, 0x0040, 0x10c8, 0x20a8, 0x42a4,
+ 0x2001, 0x04fc, 0x2004, 0xa086, 0x1080, 0x00c0, 0x10e0, 0x2071,
+ 0x0100, 0x0d7e, 0x2069, 0x5d40, 0x1078, 0x593e, 0x0d7f, 0x7808,
+ 0xc0ed, 0x780a, 0x7813, 0x0064, 0x2011, 0x000a, 0x0078, 0x1107,
+ 0x2001, 0x04fc, 0x2004, 0xa086, 0x1280, 0x00c0, 0x1100, 0x780c,
+ 0xc0ed, 0xc0d5, 0x780e, 0x7813, 0x0064, 0x2071, 0x0200, 0x0d7e,
+ 0x2069, 0x5d40, 0x1078, 0x593e, 0x2069, 0x5d80, 0x2071, 0x0100,
+ 0x1078, 0x593e, 0x780c, 0xc0d4, 0x780e, 0x0d7f, 0x0078, 0x1107,
+ 0x780c, 0xc0e5, 0x780e, 0x7813, 0x003c, 0x2011, 0x000c, 0x2009,
+ 0x5d4c, 0x220a, 0x2009, 0x5d8c, 0x220a, 0x7ece, 0x7cc6, 0x7bca,
+ 0x785f, 0x0000, 0x2031, 0x0030, 0x78b3, 0x0101, 0x781b, 0x0002,
+ 0x781f, 0x0002, 0x2009, 0x0002, 0x2069, 0x5d40, 0x6817, 0x0003,
+ 0x681f, 0x0007, 0x6823, 0x00fa, 0x6827, 0x0008, 0x682b, 0x0028,
+ 0x6837, 0x0000, 0x683b, 0x0006, 0x682f, 0x0008, 0x683f, 0x0000,
+ 0x8109, 0x0040, 0x1157, 0x68f3, 0x000a, 0x68e3, 0x5dc0, 0x2079,
+ 0x5d00, 0x780c, 0xd0e4, 0x00c0, 0x1141, 0x68f7, 0x7329, 0x0078,
+ 0x1143, 0x68f7, 0x730d, 0x68e7, 0x62c0, 0x68eb, 0x61c0, 0x68ef,
+ 0xa2c0, 0x68cb, 0xa748, 0x68cf, 0xa74d, 0x68d3, 0xa748, 0x68d7,
+ 0xa748, 0x68c7, 0x0001, 0x2069, 0x5d80, 0x0078, 0x111e, 0x68f3,
+ 0x000a, 0x68e3, 0x5fc0, 0x68f7, 0x7419, 0x68e7, 0x82c0, 0x68eb,
+ 0x6240, 0x68ef, 0xa3d0, 0x68cb, 0xa74d, 0x68cf, 0xa752, 0x68d3,
+ 0xa74d, 0x68d7, 0xa74d, 0x68c7, 0x0001, 0x7808, 0xd0ec, 0x00c0,
+ 0x11b3, 0x780c, 0xd0e4, 0x00c0, 0x11a5, 0x0e7e, 0x2069, 0x61c0,
+ 0x2071, 0x0200, 0x70ec, 0xd0e4, 0x00c0, 0x1186, 0x2019, 0x0c0c,
+ 0x2021, 0x000c, 0x1078, 0x21a5, 0x0078, 0x118c, 0x2019, 0x0c0a,
+ 0x2021, 0x000a, 0x1078, 0x21a5, 0x2069, 0x6240, 0x2071, 0x0100,
+ 0x70ec, 0xd0e4, 0x00c0, 0x119c, 0x2019, 0x0c0c, 0x2021, 0x000c,
+ 0x1078, 0x21a5, 0x0078, 0x11a2, 0x2019, 0x0c0a, 0x2021, 0x000a,
+ 0x1078, 0x21a5, 0x0e7f, 0x0078, 0x11cc, 0x2019, 0x0c0c, 0x2021,
+ 0x000c, 0x2069, 0x61c0, 0x1078, 0x21a5, 0x2069, 0x6240, 0x1078,
+ 0x21a5, 0x0078, 0x11cc, 0x2069, 0x61c0, 0x0e7e, 0x2071, 0x0100,
+ 0x70ec, 0xd0e4, 0x00c0, 0x11c5, 0x2019, 0x0c0c, 0x2021, 0x000c,
+ 0x1078, 0x21a5, 0x0e7f, 0x0078, 0x11cc, 0x2019, 0x0c0a, 0x2021,
+ 0x000a, 0x1078, 0x21a5, 0x0e7f, 0x2011, 0x0002, 0x2069, 0x62c0,
+ 0x2009, 0x0002, 0x20a9, 0x0100, 0x6837, 0x0000, 0x680b, 0x0040,
+ 0x7bcc, 0xa386, 0xfeff, 0x00c0, 0x11e3, 0x6817, 0x0100, 0x681f,
+ 0x0064, 0x0078, 0x11e7, 0x6817, 0x0064, 0x681f, 0x0002, 0xade8,
+ 0x0010, 0x00f0, 0x11d4, 0x8109, 0x00c0, 0x11d2, 0x8211, 0x0040,
+ 0x11f5, 0x2069, 0x82c0, 0x0078, 0x11d0, 0x1078, 0x27ff, 0x1078,
+ 0x5314, 0x1078, 0x1def, 0x1078, 0x58ea, 0x2091, 0x2100, 0x2079,
+ 0x5d00, 0x7808, 0xd0ec, 0x0040, 0x1209, 0x2071, 0x0020, 0x0078,
+ 0x120b, 0x2071, 0x0050, 0x2091, 0x2200, 0x2079, 0x5d00, 0x2071,
+ 0x0020, 0x2091, 0x2300, 0x2079, 0x5d00, 0x7808, 0xd0ec, 0x0040,
+ 0x121d, 0x2079, 0x0100, 0x0078, 0x121f, 0x2079, 0x0200, 0x2071,
+ 0x5d40, 0x2091, 0x2400, 0x2079, 0x0100, 0x2071, 0x5d80, 0x2091,
+ 0x2000, 0x2079, 0x5d00, 0x2071, 0x0010, 0x3200, 0xa085, 0x301d,
+ 0x2090, 0x70c3, 0x0000, 0x0090, 0x123c, 0x70c0, 0xa086, 0x0002,
+ 0x00c0, 0x123c, 0x1078, 0x158f, 0x2039, 0x0000, 0x7808, 0xd0ec,
+ 0x00c0, 0x12c7, 0x1078, 0x1476, 0x78b0, 0xa005, 0x00c0, 0x125e,
+ 0x0068, 0x1252, 0x7868, 0xa065, 0x0040, 0x1252, 0x2029, 0x0000,
+ 0x1078, 0x2694, 0x1078, 0x2260, 0x0068, 0x126b, 0x7868, 0xa065,
+ 0x0040, 0x125e, 0x2029, 0x0000, 0x1078, 0x2694, 0x0068, 0x126b,
+ 0x2009, 0x5d46, 0x2011, 0x5d86, 0x2104, 0x220c, 0xa105, 0x0040,
+ 0x126b, 0x1078, 0x1f16, 0x0e7e, 0x0f7e, 0x2071, 0x5d40, 0x70c4,
+ 0xa005, 0x0040, 0x1294, 0x7458, 0xa485, 0x0000, 0x0040, 0x1294,
+ 0x2079, 0x0200, 0x2091, 0x8000, 0x72f4, 0xa28c, 0x303d, 0x2190,
+ 0x1078, 0x2d1a, 0x2091, 0x8000, 0x2091, 0x301d, 0x0068, 0x1294,
+ 0x0f7f, 0x7868, 0xa065, 0x0040, 0x1293, 0x0e7f, 0x2029, 0x0000,
+ 0x1078, 0x2694, 0x0e7e, 0x0f7e, 0x00e0, 0x129c, 0x0f7f, 0x0e7f,
+ 0x1078, 0x56e2, 0x0e7e, 0x0f7e, 0x2071, 0x5d80, 0x70c4, 0xa005,
+ 0x0040, 0x12b5, 0x7458, 0xa485, 0x0000, 0x0040, 0x12b5, 0x2079,
+ 0x0100, 0x2091, 0x8000, 0x72f4, 0xa28c, 0x303d, 0x2190, 0x1078,
+ 0x2d1a, 0x2091, 0x8000, 0x2091, 0x301d, 0x0f7f, 0x0e7f, 0x0068,
+ 0x12c1, 0x7868, 0xa065, 0x0040, 0x12c1, 0x2029, 0x0000, 0x1078,
+ 0x2694, 0x00e0, 0x1242, 0x1078, 0x56e2, 0x0078, 0x1242, 0x1078,
+ 0x1476, 0x78b0, 0xa005, 0x00c0, 0x12e3, 0x0068, 0x12d7, 0x7868,
+ 0xa065, 0x0040, 0x12d7, 0x2029, 0x0000, 0x1078, 0x2694, 0x1078,
+ 0x2260, 0x0068, 0x12ed, 0x7868, 0xa065, 0x0040, 0x12e3, 0x2029,
+ 0x0000, 0x1078, 0x2694, 0x0068, 0x12ed, 0x2009, 0x5d46, 0x2104,
+ 0xa005, 0x0040, 0x12ed, 0x1078, 0x1f16, 0x0e7e, 0x0f7e, 0x2071,
+ 0x5d40, 0x70c4, 0xa005, 0x0040, 0x1305, 0x7458, 0xa485, 0x0000,
+ 0x0040, 0x1305, 0x2079, 0x0100, 0x2091, 0x8000, 0x72f4, 0x1078,
+ 0x2d1a, 0x2091, 0x8000, 0x2091, 0x301d, 0x0f7f, 0x0e7f, 0x0068,
+ 0x1311, 0x7868, 0xa065, 0x0040, 0x1311, 0x2029, 0x0000, 0x1078,
+ 0x2694, 0x00e0, 0x12c7, 0x1078, 0x56e2, 0x0078, 0x12c7, 0x1337,
+ 0x1337, 0x1339, 0x1339, 0x1346, 0x1346, 0x1346, 0x1346, 0x1351,
+ 0x1351, 0x135e, 0x135e, 0x1346, 0x1346, 0x1346, 0x1346, 0x1337,
+ 0x1337, 0x1339, 0x1339, 0x1346, 0x1346, 0x1346, 0x1346, 0x1351,
+ 0x1351, 0x135e, 0x135e, 0x1346, 0x1346, 0x1346, 0x1346, 0x0078,
+ 0x1337, 0x007e, 0x107e, 0x127e, 0x2091, 0x2400, 0x1078, 0x2b0e,
+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e,
+ 0x127e, 0x1078, 0x13c3, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001,
+ 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, 0x2b0e,
+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e,
+ 0x127e, 0x2091, 0x2300, 0x1078, 0x2b0e, 0x2091, 0x2400, 0x1078,
+ 0x2b0e, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x138f,
+ 0x138f, 0x1391, 0x1391, 0x139e, 0x139e, 0x139e, 0x139e, 0x13a9,
+ 0x13a9, 0x1391, 0x1391, 0x139e, 0x139e, 0x139e, 0x139e, 0x13aa,
+ 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa,
+ 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x13aa, 0x0078,
+ 0x138f, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078, 0x2b0e,
+ 0x127f, 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e,
+ 0x127e, 0x1078, 0x13d0, 0x127f, 0x107f, 0x007f, 0x2091, 0x8001,
+ 0x007c, 0x007c, 0x107e, 0x127e, 0x0d7e, 0x0e7e, 0x0f7e, 0x007e,
+ 0x2071, 0x0100, 0x2069, 0x5d40, 0x2079, 0x5d00, 0x70ec, 0xa084,
+ 0x1c00, 0x78ea, 0x1078, 0x593e, 0x007f, 0x0f7f, 0x0e7f, 0x0d7f,
+ 0x127f, 0x107f, 0x007c, 0x3c00, 0xa084, 0x0007, 0x0079, 0x13c8,
+ 0x13d9, 0x13d9, 0x13db, 0x13db, 0x13e0, 0x13e0, 0x13e5, 0x13e5,
+ 0x3c00, 0xa084, 0x0003, 0x0079, 0x13d5, 0x13d9, 0x13d9, 0x13ee,
+ 0x13ee, 0x1078, 0x2aef, 0x2091, 0x2200, 0x1078, 0x53ae, 0x007c,
+ 0x2091, 0x2100, 0x1078, 0x53ae, 0x007c, 0x2091, 0x2100, 0x1078,
+ 0x53ae, 0x2091, 0x2200, 0x1078, 0x53ae, 0x007c, 0x2091, 0x2100,
+ 0x1078, 0x53ae, 0x007c, 0x1413, 0x1413, 0x1415, 0x1415, 0x1422,
+ 0x1422, 0x1422, 0x1422, 0x142d, 0x142d, 0x143a, 0x143a, 0x1422,
+ 0x1422, 0x1422, 0x1422, 0x144b, 0x144b, 0x144b, 0x144b, 0x144b,
+ 0x144b, 0x144b, 0x144b, 0x144b, 0x144b, 0x144b, 0x144b, 0x144b,
+ 0x144b, 0x144b, 0x144b, 0x0078, 0x1413, 0x007e, 0x107e, 0x127e,
+ 0x2091, 0x2400, 0x1078, 0x2b0e, 0x127f, 0x107f, 0x007f, 0x2091,
+ 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x1078, 0x13c3, 0x127f,
+ 0x107f, 0x007f, 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e,
+ 0x2091, 0x2300, 0x1078, 0x2b0e, 0x127f, 0x107f, 0x007f, 0x2091,
+ 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x2091, 0x2300, 0x1078,
+ 0x2b0e, 0x2091, 0x2400, 0x1078, 0x2b0e, 0x127f, 0x107f, 0x007f,
+ 0x2091, 0x8001, 0x007c, 0x007e, 0x107e, 0x127e, 0x0d7e, 0x0e7e,
+ 0x0f7e, 0x2079, 0x5d00, 0x2071, 0x0200, 0x2069, 0x5d40, 0x3d00,
+ 0xd08c, 0x0040, 0x1461, 0x70ec, 0xa084, 0x1c00, 0x78ea, 0x1078,
+ 0x593e, 0x3d00, 0xd084, 0x0040, 0x146f, 0x2069, 0x5d80, 0x2071,
+ 0x0100, 0x70ec, 0xa084, 0x1c00, 0x78f2, 0x1078, 0x593e, 0x0f7f,
+ 0x0e7f, 0x0d7f, 0x127f, 0x107f, 0x007f, 0x007c, 0x0068, 0x14fc,
+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x14fc, 0x7820,
+ 0xa005, 0x00c0, 0x1487, 0x0010, 0x14fd, 0x0078, 0x14fc, 0x7908,
+ 0xd1f4, 0x0040, 0x148f, 0x2001, 0x4007, 0x0078, 0x1591, 0x790c,
+ 0xd1ec, 0x0040, 0x14aa, 0xd0fc, 0x0040, 0x14a0, 0x007e, 0x1078,
+ 0x1d64, 0x007f, 0x0040, 0x14aa, 0x2001, 0x4007, 0x0078, 0x1591,
+ 0x007e, 0x1078, 0x1d58, 0x007f, 0x0040, 0x14aa, 0x2001, 0x4007,
+ 0x0078, 0x1591, 0x7908, 0xd0fc, 0x00c0, 0x14b4, 0x2061, 0x5d40,
+ 0xc19c, 0xc7fc, 0x0078, 0x14b8, 0x2061, 0x5d80, 0xc19d, 0xc7fd,
+ 0x606c, 0xa005, 0x00c0, 0x14fc, 0x790a, 0x608b, 0x0000, 0x7820,
+ 0xc0fc, 0xa086, 0x0018, 0x00c0, 0x14c9, 0x0c7e, 0x1078, 0x1aa8,
+ 0x0c7f, 0x7823, 0x0000, 0x6084, 0xa065, 0x0040, 0x14e2, 0x0c7e,
+ 0x609c, 0x1078, 0x1e5c, 0x0c7f, 0x609f, 0x0000, 0x1078, 0x1bd4,
+ 0x2009, 0x000c, 0x6007, 0x0103, 0x1078, 0x1d70, 0x00c0, 0x14f6,
+ 0x1078, 0x1dd4, 0x7808, 0xd09c, 0x00c0, 0x14ea, 0x2061, 0x5d40,
+ 0x0078, 0x14ed, 0x2061, 0x5d80, 0xc09c, 0x6087, 0x0000, 0x780a,
+ 0x60f4, 0xd0dc, 0x0040, 0x14fa, 0xc0dc, 0x60f6, 0x2001, 0x4005,
+ 0x0078, 0x1591, 0x0078, 0x158f, 0x007c, 0x7808, 0xd0f4, 0x0040,
+ 0x1505, 0x2001, 0x4007, 0x0078, 0x1591, 0x70c3, 0x0000, 0x70c7,
+ 0x0000, 0x70cb, 0x0000, 0x70cf, 0x0000, 0x70db, 0x0000, 0x71c4,
+ 0x7a08, 0xd2ec, 0x0040, 0x1515, 0xc1fc, 0x70c0, 0xa0bc, 0xffc0,
+ 0x00c0, 0x155d, 0x2038, 0x0079, 0x151d, 0x158f, 0x15e5, 0x15ae,
+ 0x15fa, 0x1609, 0x160f, 0x15a5, 0x1bec, 0x1613, 0x159d, 0x15b2,
+ 0x15b4, 0x15b6, 0x15b8, 0x1bf1, 0x159d, 0x1621, 0x1674, 0x1aca,
+ 0x1be6, 0x15ba, 0x1929, 0x196b, 0x19a6, 0x19f3, 0x18e2, 0x18f0,
+ 0x1904, 0x1918, 0x1735, 0x159d, 0x16a0, 0x16a4, 0x16b0, 0x16bc,
+ 0x16d2, 0x16de, 0x16e1, 0x16ed, 0x16f9, 0x1701, 0x171d, 0x1729,
+ 0x159d, 0x159d, 0x159d, 0x159d, 0x1742, 0x1751, 0x176c, 0x17a2,
+ 0x17ca, 0x17da, 0x17dd, 0x180e, 0x183f, 0x1851, 0x18b4, 0x18c4,
+ 0x159d, 0x159d, 0x159d, 0x159d, 0x18d4, 0xa0bc, 0xffa0, 0x00c0,
+ 0x159d, 0x2038, 0xa084, 0x001f, 0x0079, 0x1566, 0x159d, 0x159d,
+ 0x159d, 0x159d, 0x159d, 0x1d0d, 0x1d13, 0x159d, 0x159d, 0x159d,
+ 0x1d17, 0x1d1c, 0x159d, 0x159d, 0x159d, 0x159d, 0x15df, 0x15f4,
+ 0x161b, 0x166e, 0x1ac4, 0x1c08, 0x1c29, 0x159d, 0x1c41, 0x1d20,
+ 0x1cff, 0x1d09, 0x159d, 0x159d, 0x159d, 0x159d, 0x72ca, 0x71c6,
+ 0x2001, 0x4006, 0x0078, 0x1591, 0x73ce, 0x72ca, 0x71c6, 0x2001,
+ 0x4000, 0x70c2, 0x0068, 0x1592, 0x2061, 0x0000, 0x601b, 0x0001,
+ 0x2091, 0x5000, 0x2091, 0x4080, 0x007c, 0x70c3, 0x4001, 0x0078,
+ 0x1592, 0x70c3, 0x4006, 0x0078, 0x1592, 0x2099, 0x0041, 0x20a1,
+ 0x0041, 0x20a9, 0x0005, 0x53a3, 0x0078, 0x158f, 0x70c4, 0x70c3,
+ 0x0004, 0x007a, 0x0078, 0x158f, 0x0078, 0x158f, 0x0078, 0x158f,
+ 0x0078, 0x158f, 0x2091, 0x8000, 0x70c3, 0x0000, 0x70c7, 0x4953,
+ 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0009, 0x2001, 0x000a,
+ 0x70d6, 0x2079, 0x0000, 0x781b, 0x0001, 0x2031, 0x0030, 0x2059,
+ 0x1000, 0x2029, 0x041a, 0x2051, 0x0445, 0x2061, 0x0447, 0x20c1,
+ 0x0020, 0x2091, 0x5000, 0x2091, 0x4080, 0x0078, 0x0418, 0x75d8,
+ 0x74dc, 0x75da, 0x74de, 0x0078, 0x15e8, 0x2029, 0x0000, 0x2520,
+ 0x71d0, 0x73c8, 0x72cc, 0x70c4, 0x1078, 0x1f6b, 0x0040, 0x158f,
+ 0x70c3, 0x4002, 0x0078, 0x158f, 0x75d8, 0x74dc, 0x75da, 0x74de,
+ 0x0078, 0x15fd, 0x2029, 0x0000, 0x2520, 0x71d0, 0x73c8, 0x72cc,
+ 0x70c4, 0x1078, 0x1fb5, 0x0040, 0x158f, 0x70c3, 0x4002, 0x0078,
+ 0x158f, 0x71c4, 0x70c8, 0x2114, 0x200a, 0x0078, 0x158d, 0x71c4,
+ 0x2114, 0x0078, 0x158d, 0x70c7, 0x0009, 0x70cb, 0x000a, 0x70cf,
+ 0x0000, 0x0078, 0x158f, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078,
+ 0x1624, 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d0,
+ 0x70c6, 0x72ca, 0x73ce, 0x74d2, 0xa005, 0x0040, 0x1668, 0x8001,
+ 0x786e, 0xa084, 0xfc00, 0x0040, 0x163c, 0x78b0, 0xc085, 0x78b2,
+ 0x2001, 0x4005, 0x0078, 0x1591, 0x7a76, 0x7b7a, 0x7d7e, 0x7e82,
+ 0x7c72, 0xa48c, 0xff00, 0x0040, 0x1654, 0x8407, 0x8004, 0x8004,
+ 0x810c, 0x810c, 0x810f, 0xa118, 0xa291, 0x0000, 0xa6b1, 0x0000,
+ 0xa5a9, 0x0000, 0x0078, 0x165e, 0x8407, 0x8004, 0x8004, 0xa318,
+ 0xa291, 0x0000, 0xa6b1, 0x0000, 0xa5a9, 0x0000, 0x731a, 0x721e,
+ 0x7622, 0x7526, 0x78b0, 0xa084, 0xfffc, 0x78b2, 0x0078, 0x166c,
+ 0x78b0, 0xa085, 0x0001, 0x78b2, 0x0078, 0x158f, 0x75d8, 0x76dc,
+ 0x75da, 0x76de, 0x0078, 0x1677, 0x2029, 0x0000, 0x2530, 0x70c4,
+ 0x72c8, 0x73cc, 0x74d4, 0x70c6, 0x72ca, 0x73ce, 0x74d6, 0xa005,
+ 0x0040, 0x169a, 0x8001, 0x7892, 0xa084, 0xfc00, 0x0040, 0x168f,
+ 0x78b0, 0xc0c5, 0x78b2, 0x2001, 0x4005, 0x0078, 0x1591, 0x7a9a,
+ 0x7b9e, 0x7da2, 0x7ea6, 0x7c96, 0x78b0, 0xa084, 0xfcff, 0x78b2,
+ 0x0078, 0x169e, 0x78b0, 0xa085, 0x0100, 0x78b2, 0x0078, 0x158f,
+ 0x7960, 0x7ac8, 0x0078, 0x158d, 0x2009, 0x5d47, 0x210c, 0x7808,
+ 0xd0ec, 0x00c0, 0x158e, 0x2011, 0x5d87, 0x2214, 0x0078, 0x158d,
+ 0x2009, 0x5d48, 0x210c, 0x7808, 0xd0ec, 0x00c0, 0x158e, 0x2011,
+ 0x5d88, 0x2214, 0x0078, 0x158d, 0x2061, 0x5d40, 0x6124, 0x6228,
+ 0x8214, 0x8214, 0x8214, 0x7808, 0xd0ec, 0x00c0, 0x16d0, 0x2061,
+ 0x5d80, 0x6324, 0x73da, 0x6328, 0x831c, 0x831c, 0x831c, 0x73de,
+ 0x0078, 0x158d, 0x2009, 0x5d4b, 0x210c, 0x7808, 0xd0ec, 0x00c0,
+ 0x158e, 0x2011, 0x5d8b, 0x2214, 0x0078, 0x158d, 0x7910, 0x0078,
+ 0x158e, 0x2009, 0x5d4d, 0x210c, 0x7808, 0xd0ec, 0x00c0, 0x158e,
+ 0x2011, 0x5d8d, 0x2214, 0x0078, 0x158d, 0x2009, 0x5d4e, 0x210c,
+ 0x7808, 0xd0ec, 0x00c0, 0x158e, 0x2011, 0x5d8e, 0x2214, 0x0078,
+ 0x158d, 0x7918, 0x7808, 0xd0ec, 0x00c0, 0x158e, 0x7a1c, 0x0078,
+ 0x158d, 0xd1fc, 0x00c0, 0x1708, 0x2011, 0x61c0, 0x0078, 0x170a,
+ 0x2011, 0x6240, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003,
+ 0xa268, 0x6a00, 0x6804, 0xa084, 0x0008, 0x0040, 0x171a, 0x6b08,
+ 0x0078, 0x171b, 0x6b0c, 0x0078, 0x158c, 0x2138, 0x1078, 0x1dff,
+ 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, 0x0078,
+ 0x158c, 0x2061, 0x5d40, 0x6114, 0x7808, 0xd0ec, 0x00c0, 0x158e,
+ 0x2061, 0x5d80, 0x6214, 0x0078, 0x158d, 0x2138, 0x1078, 0x1dff,
+ 0x2091, 0x8000, 0x6908, 0x6a18, 0x6b10, 0x77da, 0x2091, 0x8001,
+ 0x0078, 0x158c, 0x2110, 0xa294, 0x000f, 0xa282, 0x0010, 0x00c8,
+ 0x1587, 0x1078, 0x2933, 0xd3f4, 0x0040, 0x174f, 0xc2ad, 0x0078,
+ 0x158c, 0x2100, 0xc0bc, 0xa082, 0x0010, 0x00c8, 0x1587, 0xd1bc,
+ 0x00c0, 0x175f, 0x2011, 0x5d47, 0x2204, 0x0078, 0x1763, 0x2011,
+ 0x5d87, 0x2204, 0xc0bd, 0x007e, 0x2100, 0xc0bc, 0x2012, 0x1078,
+ 0x2890, 0x017f, 0x0078, 0x158e, 0x71c4, 0x2021, 0x5d48, 0x2404,
+ 0x70c6, 0x2019, 0x0000, 0x0078, 0x177b, 0x71c8, 0x2021, 0x5d88,
+ 0x2404, 0x70ca, 0xc3fd, 0x2011, 0x179a, 0x20a9, 0x0008, 0x2204,
+ 0xa106, 0x0040, 0x178a, 0x8210, 0x00f0, 0x177f, 0x71c4, 0x72c8,
+ 0x0078, 0x1586, 0xa292, 0x179a, 0x027e, 0x2122, 0x017f, 0x1078,
+ 0x28b1, 0x7808, 0xd0ec, 0x00c0, 0x1798, 0xd3fc, 0x0040, 0x1775,
+ 0x0078, 0x158f, 0x03e8, 0x00fa, 0x01f4, 0x02ee, 0x0064, 0x0019,
+ 0x0032, 0x004b, 0x2061, 0x5d40, 0x6124, 0x6228, 0x8214, 0x8214,
+ 0x8214, 0x70c4, 0x6026, 0x70c8, 0x8003, 0x8003, 0x8003, 0x602a,
+ 0x7808, 0xd0ec, 0x00c0, 0x17c8, 0x027e, 0x017e, 0x2061, 0x5d80,
+ 0x6124, 0x6228, 0x8214, 0x8214, 0x8214, 0x70d8, 0x6026, 0x70dc,
+ 0x8003, 0x8003, 0x8003, 0x602a, 0x71da, 0x72de, 0x017f, 0x027f,
+ 0x0078, 0x158d, 0x2061, 0x5d40, 0x612c, 0x70c4, 0x602e, 0x7808,
+ 0xd0ec, 0x00c0, 0x158e, 0x2061, 0x5d80, 0x622c, 0x70c8, 0x602e,
+ 0x0078, 0x158d, 0x7910, 0x0078, 0x158e, 0x71c4, 0xa184, 0xffcf,
+ 0x0040, 0x17e9, 0x7808, 0xd0ec, 0x00c0, 0x1587, 0x72c8, 0x0078,
+ 0x1586, 0x2011, 0x5d4d, 0x2204, 0x2112, 0x007e, 0x2019, 0x0000,
+ 0x1078, 0x2918, 0x7808, 0xd0ec, 0x0040, 0x17f9, 0x017f, 0x0078,
+ 0x158e, 0x71c8, 0xa184, 0xffcf, 0x0040, 0x1802, 0x2110, 0x71c4,
+ 0x0078, 0x1586, 0x2011, 0x5d8d, 0x2204, 0x2112, 0x007e, 0xc3fd,
+ 0x1078, 0x2918, 0x027f, 0x017f, 0x0078, 0x158d, 0x71c4, 0xa182,
+ 0x0010, 0x0048, 0x181a, 0x7808, 0xd0ec, 0x00c0, 0x1587, 0x72c8,
+ 0x0078, 0x1586, 0x2011, 0x5d4e, 0x2204, 0x007e, 0x2112, 0x2019,
+ 0x0000, 0x1078, 0x28f6, 0x7808, 0xd0ec, 0x0040, 0x182a, 0x017f,
+ 0x0078, 0x158e, 0x71c8, 0xa182, 0x0010, 0x0048, 0x1833, 0x2110,
+ 0x71c4, 0x0078, 0x1586, 0x2011, 0x5d8e, 0x2204, 0x007e, 0x2112,
+ 0xc3fd, 0x1078, 0x28f6, 0x027f, 0x017f, 0x0078, 0x158d, 0x71c4,
+ 0x72c8, 0xa184, 0xfffd, 0x00c0, 0x1586, 0xa284, 0xfffd, 0x00c0,
+ 0x1586, 0x2100, 0x7918, 0x781a, 0x2200, 0x7a1c, 0x781e, 0x0078,
+ 0x158d, 0x017e, 0xd1fc, 0x00c0, 0x1859, 0x2011, 0x61c0, 0x0078,
+ 0x185b, 0x2011, 0x6240, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003,
+ 0x8003, 0xa268, 0x2019, 0x0000, 0x72c8, 0x2091, 0x8000, 0x6800,
+ 0x007e, 0xa226, 0x0040, 0x1888, 0x6a02, 0xa484, 0x2000, 0x0040,
+ 0x1873, 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, 0x1879, 0xa39d,
+ 0x0008, 0xa484, 0x4000, 0x0040, 0x1888, 0x810f, 0xa284, 0x4000,
+ 0x0040, 0x1886, 0x1078, 0x2975, 0x0078, 0x1888, 0x1078, 0x2953,
+ 0x72cc, 0x6808, 0xa206, 0x0040, 0x18aa, 0xa2a4, 0x00ff, 0x780c,
+ 0xd0e4, 0x00c0, 0x189b, 0xa482, 0x0028, 0x0048, 0x18a7, 0x0040,
+ 0x18a7, 0x0078, 0x189f, 0xa482, 0x0043, 0x0048, 0x18a7, 0x027f,
+ 0x72ca, 0x017f, 0x71c6, 0x2091, 0x8001, 0x0078, 0x1588, 0x6a0a,
+ 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c, 0x017f,
+ 0x2091, 0x8001, 0x0078, 0x158c, 0x2138, 0x1078, 0x1dff, 0x2091,
+ 0x8000, 0x6a14, 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc,
+ 0x681e, 0x2708, 0x0078, 0x158c, 0x70c4, 0x2061, 0x5d40, 0x6114,
+ 0x6016, 0x7808, 0xd0ec, 0x00c0, 0x158e, 0x70c8, 0x2061, 0x5d80,
+ 0x6214, 0x6016, 0x0078, 0x158d, 0x72c8, 0x73cc, 0xa182, 0x0010,
+ 0x00c8, 0x1587, 0x1078, 0x2997, 0xd3f4, 0x0040, 0x18e0, 0xc2ad,
+ 0x0078, 0x158c, 0x2138, 0x1078, 0x1dff, 0x2091, 0x8000, 0x6a08,
+ 0xa295, 0x0002, 0x6a0a, 0x2091, 0x8001, 0x2708, 0x0078, 0x158d,
+ 0x2138, 0x1078, 0x1dff, 0x2091, 0x8000, 0x6a08, 0xa294, 0xfff9,
+ 0x6a0a, 0x6804, 0xa005, 0x0040, 0x18ff, 0x1078, 0x2772, 0x2091,
+ 0x8001, 0x2708, 0x0078, 0x158d, 0x2138, 0x1078, 0x1dff, 0x2091,
+ 0x8000, 0x6a08, 0xa295, 0x0004, 0x6a0a, 0x6804, 0xa005, 0x0040,
+ 0x1913, 0x1078, 0x2772, 0x2091, 0x8001, 0x2708, 0x0078, 0x158d,
+ 0x2138, 0x2041, 0x0001, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091,
+ 0x8000, 0x1078, 0x1e18, 0x2091, 0x8001, 0x2708, 0x6a08, 0x0078,
+ 0x158d, 0x2138, 0x780c, 0xd0e4, 0x00c0, 0x193d, 0xd7fc, 0x0040,
+ 0x1937, 0x1078, 0x1d64, 0x0040, 0x193d, 0x0078, 0x1591, 0x1078,
+ 0x1d58, 0x0040, 0x193d, 0x0078, 0x1591, 0x73c8, 0x72cc, 0x77c6,
+ 0x73ca, 0x72ce, 0x1078, 0x1e99, 0x00c0, 0x1967, 0x6818, 0xa005,
+ 0x0040, 0x1961, 0x2708, 0x077e, 0x1078, 0x29c0, 0x077f, 0x00c0,
+ 0x1961, 0x2001, 0x0015, 0xd7fc, 0x00c0, 0x195a, 0x2061, 0x5d40,
+ 0x0078, 0x195d, 0xc0fd, 0x2061, 0x5d80, 0x7822, 0x2091, 0x8001,
+ 0x007c, 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, 0x1591, 0x2091,
+ 0x8001, 0x0078, 0x158f, 0x2138, 0x780c, 0xd0e4, 0x00c0, 0x197f,
+ 0xd7fc, 0x0040, 0x1979, 0x1078, 0x1d64, 0x0040, 0x197f, 0x0078,
+ 0x1591, 0x1078, 0x1d58, 0x0040, 0x197f, 0x0078, 0x1591, 0x77c6,
+ 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091, 0x8000,
+ 0x1078, 0x1e18, 0x2009, 0x0016, 0xd7fc, 0x00c0, 0x1993, 0x2061,
+ 0x5d40, 0x0078, 0x1996, 0x2061, 0x5d80, 0xc1fd, 0x606f, 0x0003,
+ 0x6087, 0x0000, 0x677e, 0x608b, 0x000f, 0x7922, 0x61f4, 0xc1dc,
+ 0x61f6, 0x1078, 0x2772, 0x2091, 0x8001, 0x007c, 0x77c8, 0x77ca,
+ 0x2138, 0x77c6, 0x780c, 0xd0e4, 0x00c0, 0x19bd, 0xd7fc, 0x0040,
+ 0x19b7, 0x1078, 0x1d64, 0x0040, 0x19bd, 0x0078, 0x1591, 0x1078,
+ 0x1d58, 0x0040, 0x19bd, 0x0078, 0x1591, 0xa7bc, 0xff00, 0x2091,
+ 0x8000, 0x2009, 0x0017, 0xd7fc, 0x00c0, 0x19ca, 0x2061, 0x5d40,
+ 0x0078, 0x19cd, 0x2061, 0x5d80, 0xc1fd, 0x6087, 0x0000, 0x606f,
+ 0x0002, 0x677e, 0x608b, 0x000f, 0x7922, 0x61f4, 0xc1dc, 0x61f6,
+ 0x1078, 0x2772, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0010,
+ 0x70c8, 0xa005, 0x0040, 0x19e7, 0x60f4, 0xc0fd, 0x60f6, 0x1078,
+ 0x1e18, 0x70c8, 0x6836, 0x8738, 0xa784, 0x001f, 0x00c0, 0x19e7,
+ 0x2091, 0x8001, 0x007c, 0x2011, 0x0000, 0x7808, 0xd0ec, 0x00c0,
+ 0x1a0d, 0x72c8, 0x780c, 0xd0e4, 0x00c0, 0x1a0d, 0xd284, 0x0040,
+ 0x1a07, 0x1078, 0x1d64, 0x0040, 0x1a0d, 0x0078, 0x1591, 0x1078,
+ 0x1d58, 0x0040, 0x1a0d, 0x0078, 0x1591, 0x72ca, 0x78b0, 0xa084,
+ 0x0003, 0x00c0, 0x1a37, 0x2039, 0x0000, 0xd284, 0x0040, 0x1a19,
+ 0xc7fd, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x1078,
+ 0x1dff, 0x2091, 0x8000, 0x6808, 0xc0d4, 0xa80d, 0x690a, 0x2091,
+ 0x8001, 0x8738, 0xa784, 0x001f, 0x00c0, 0x1a1f, 0xa7bc, 0xff00,
+ 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1a1f, 0x2091,
+ 0x8000, 0x7808, 0xd0ec, 0x0040, 0x1a41, 0x2069, 0x0100, 0x0078,
+ 0x1a4b, 0x72c8, 0xd284, 0x00c0, 0x1a49, 0x2069, 0x0200, 0x0078,
+ 0x1a4b, 0x2069, 0x0100, 0x6808, 0xa084, 0xfffd, 0x680a, 0x6830,
+ 0xa084, 0x0040, 0x0040, 0x1a6e, 0x684b, 0x0004, 0x20a9, 0x0014,
+ 0x6848, 0xa084, 0x0004, 0x0040, 0x1a5f, 0x00f0, 0x1a58, 0x684b,
+ 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040, 0x1a6a,
+ 0x00f0, 0x1a63, 0x20a9, 0x00fa, 0x00f0, 0x1a6c, 0x2079, 0x5d00,
+ 0x2009, 0x0018, 0x7808, 0xd0ec, 0x00c0, 0x1a7a, 0x72c8, 0xd284,
+ 0x00c0, 0x1a7e, 0x2061, 0x5d40, 0x0078, 0x1a81, 0x2061, 0x5d80,
+ 0xc1fd, 0x7922, 0x606f, 0x0001, 0x608b, 0x000f, 0x60c7, 0x0000,
+ 0x60c8, 0x60d2, 0x60d6, 0x60f4, 0xd0b4, 0x0040, 0x1a9b, 0xc0b4,
+ 0x60f6, 0x0c7e, 0x60d8, 0xa065, 0x6008, 0xc0d4, 0x600a, 0x6018,
+ 0x8001, 0x601a, 0x0c7f, 0x60f4, 0xa084, 0x77ff, 0x60f6, 0x78b0,
+ 0xa085, 0x0002, 0x78b2, 0x681b, 0x0048, 0x2091, 0x8001, 0x007c,
+ 0xd7fc, 0x00c0, 0x1aaf, 0x2069, 0x5d40, 0x0078, 0x1ab1, 0x2069,
+ 0x5d80, 0x71c4, 0x71c6, 0x6912, 0x81ff, 0x00c0, 0x1ab9, 0x68c7,
+ 0x0001, 0x78b0, 0xa084, 0xfffd, 0x78b2, 0xa084, 0x0001, 0x00c0,
+ 0x1ac3, 0x1078, 0x1ef2, 0x007c, 0x75d8, 0x74dc, 0x75da, 0x74de,
+ 0x0078, 0x1acd, 0x2029, 0x0000, 0x2520, 0x71c4, 0x73c8, 0x72cc,
+ 0x71c6, 0x73ca, 0x72ce, 0x2079, 0x5d00, 0x7de2, 0x7cde, 0x7bda,
+ 0x7ad6, 0x1078, 0x1db6, 0x0040, 0x1bd0, 0x20a9, 0x0005, 0x20a1,
+ 0x5d12, 0x2091, 0x8000, 0x41a1, 0x2091, 0x8001, 0x2009, 0x0040,
+ 0x1078, 0x216d, 0x0040, 0x1af0, 0x1078, 0x1dd4, 0x0078, 0x1bd0,
+ 0x6004, 0xa08c, 0x00ff, 0xa18e, 0x0009, 0x00c0, 0x1afb, 0x007e,
+ 0x1078, 0x2670, 0x007f, 0xa084, 0xff00, 0x8007, 0x8009, 0x0040,
+ 0x1b6e, 0x0c7e, 0x2c68, 0x1078, 0x1db6, 0x0040, 0x1b41, 0x2c00,
+ 0x689e, 0x8109, 0x00c0, 0x1b02, 0x609f, 0x0000, 0x0c7f, 0x0c7e,
+ 0x7de0, 0x7cdc, 0x7bd8, 0x7ad4, 0xa290, 0x0040, 0xa399, 0x0000,
+ 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x7de2, 0x7cde, 0x7bda, 0x7ad6,
+ 0x2c68, 0x689c, 0xa065, 0x0040, 0x1b6d, 0x2009, 0x0040, 0x1078,
+ 0x216d, 0x00c0, 0x1b57, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0002,
+ 0x00c0, 0x1b41, 0x6004, 0xa084, 0x00ff, 0xa086, 0x000a, 0x00c0,
+ 0x1b3d, 0x017e, 0x1078, 0x266c, 0x017f, 0x2d00, 0x6002, 0x0078,
+ 0x1b10, 0x0c7f, 0x0c7e, 0x609c, 0x1078, 0x1e5c, 0x0c7f, 0x609f,
+ 0x0000, 0x1078, 0x1bd4, 0x2009, 0x000c, 0x6008, 0xa085, 0x0200,
+ 0x600a, 0x1078, 0x1d70, 0x1078, 0x1dd4, 0x0078, 0x1bd0, 0x0c7f,
+ 0x0c7e, 0x609c, 0x1078, 0x1e5c, 0x0c7f, 0x609f, 0x0000, 0x1078,
+ 0x1bd4, 0x2009, 0x000c, 0x6007, 0x0103, 0x601b, 0x0003, 0x1078,
+ 0x1d70, 0x1078, 0x1dd4, 0x0078, 0x1bd0, 0x0c7f, 0x780c, 0xd0e4,
+ 0x00c0, 0x1b93, 0x6114, 0xd1fc, 0x0040, 0x1b7c, 0x1078, 0x1d64,
+ 0x0040, 0x1b93, 0x0078, 0x1b80, 0x1078, 0x1d58, 0x0040, 0x1b93,
+ 0x2029, 0x0000, 0x2520, 0x2009, 0x0018, 0x73c8, 0x72cc, 0x6087,
+ 0x0103, 0x601b, 0x0021, 0x1078, 0x1d70, 0x1078, 0x1dd4, 0x2001,
+ 0x4007, 0x0078, 0x1591, 0x74c4, 0x73c8, 0x72cc, 0x6014, 0x2091,
+ 0x8000, 0x0e7e, 0x2009, 0x0012, 0xd0fc, 0x00c0, 0x1ba3, 0x2071,
+ 0x5d40, 0x0078, 0x1ba6, 0x2071, 0x5d80, 0xc1fd, 0x7922, 0x706f,
+ 0x0005, 0x71f4, 0xa18c, 0xf77f, 0x71f6, 0x7372, 0x7276, 0x747a,
+ 0x707e, 0x7083, 0x0000, 0x2c00, 0x7086, 0xa02e, 0x2530, 0x611c,
+ 0x61a2, 0xa184, 0x0060, 0x0040, 0x1bbf, 0x1078, 0x52aa, 0x0e7f,
+ 0x6596, 0x65a6, 0x669a, 0x66aa, 0x60af, 0x0000, 0x60b3, 0x0000,
+ 0x6714, 0x6023, 0x0000, 0x1078, 0x2772, 0x2091, 0x8001, 0x007c,
+ 0x70c3, 0x4005, 0x0078, 0x1592, 0x20a9, 0x0005, 0x2099, 0x5d12,
+ 0x2091, 0x8000, 0x530a, 0x2091, 0x8001, 0x2100, 0xa210, 0xa399,
+ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, 0x71c4, 0x70c7,
+ 0x0000, 0x7916, 0x0078, 0x158f, 0x71c4, 0x71c6, 0x2168, 0x0078,
+ 0x1bf3, 0x2069, 0x1000, 0x690c, 0xa016, 0x2d04, 0xa210, 0x8d68,
+ 0x8109, 0x00c0, 0x1bf5, 0xa285, 0x0000, 0x00c0, 0x1c03, 0x70c3,
+ 0x4000, 0x0078, 0x1c05, 0x70c3, 0x4003, 0x70ca, 0x0078, 0x1592,
+ 0x2011, 0x5d65, 0x2039, 0x0000, 0x7908, 0xd1ec, 0x00c0, 0x1c21,
+ 0x77c8, 0xd7fc, 0x0040, 0x1c16, 0x2011, 0x5da5, 0x220c, 0x70c4,
+ 0x8003, 0x0048, 0x1c21, 0x1078, 0x4690, 0xa184, 0x7fff, 0x0078,
+ 0x1c25, 0x1078, 0x4670, 0xa185, 0x8000, 0x2012, 0x2710, 0x0078,
+ 0x158d, 0x017e, 0x2100, 0xc1fc, 0x1078, 0x465f, 0x017f, 0xd1fc,
+ 0x00c0, 0x1c36, 0x2001, 0x5d65, 0x0078, 0x1c38, 0x2001, 0x5da5,
+ 0x2004, 0xa084, 0x8000, 0x6100, 0xa10d, 0x6204, 0x6308, 0x0078,
+ 0x158c, 0x0c7e, 0x0d7e, 0x0e7e, 0x0f7e, 0x2091, 0x8000, 0x60c4,
+ 0xd0fc, 0x00c0, 0x1c59, 0x2071, 0x5d40, 0x7808, 0xd0ec, 0x0040,
+ 0x1c55, 0x2079, 0x0100, 0x0078, 0x1c5d, 0x2079, 0x0200, 0x0078,
+ 0x1c5d, 0x2071, 0x5d80, 0x2079, 0x0100, 0x2061, 0x0010, 0x7098,
+ 0xa06d, 0x0040, 0x1cf5, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0007,
+ 0x0040, 0x1c6e, 0xa286, 0x000f, 0x00c0, 0x1cf5, 0x691c, 0xa184,
+ 0x0080, 0x00c0, 0x1cf5, 0x6824, 0xa18c, 0xff00, 0xa085, 0x0019,
+ 0x6826, 0x71a8, 0x81ff, 0x0040, 0x1c9f, 0x0d7e, 0x60c4, 0xd0fc,
+ 0x00c0, 0x1c8e, 0x7808, 0xd0ec, 0x0040, 0x1c8a, 0x2019, 0x0020,
+ 0x0078, 0x1c90, 0x2069, 0x0050, 0x0078, 0x1c90, 0x2069, 0x0020,
+ 0x6908, 0x6808, 0xa106, 0x00c0, 0x1c90, 0x690c, 0x680c, 0xa106,
+ 0x00c0, 0x1c95, 0xa184, 0x03ff, 0x00c0, 0x1c95, 0x0d7f, 0x78b8,
+ 0xa084, 0x801f, 0x00c0, 0x1c9f, 0x7848, 0xa085, 0x000c, 0x784a,
+ 0x71a8, 0x81ff, 0x0040, 0x1cd2, 0x70ab, 0x0000, 0x0d7e, 0x60c4,
+ 0xd0fc, 0x00c0, 0x1cbf, 0x7808, 0xd0ec, 0x0040, 0x1cbb, 0x2019,
+ 0x0020, 0x0078, 0x1cc1, 0x2069, 0x0050, 0x0078, 0x1cc1, 0x2069,
+ 0x0020, 0x6807, 0x0008, 0x6804, 0xa084, 0x0008, 0x00c0, 0x1cc3,
+ 0x6807, 0x0008, 0x6804, 0xa084, 0x0008, 0x00c0, 0x1cca, 0x6807,
+ 0x0002, 0x0d7f, 0x61c4, 0x62c8, 0x63cc, 0x61c6, 0x62ca, 0x63ce,
+ 0xc1fc, 0x0e7e, 0x2071, 0x5d00, 0x724e, 0x7352, 0xae80, 0x0013,
+ 0x0e7f, 0x1078, 0x5179, 0x78a3, 0x0000, 0x7858, 0xa084, 0xedff,
+ 0x785a, 0x70ac, 0xa080, 0x00d9, 0x781a, 0x0f7f, 0x0e7f, 0x0d7f,
+ 0x0c7f, 0x2091, 0x8001, 0x0078, 0x158f, 0x0f7f, 0x0e7f, 0x0d7f,
+ 0x0c7f, 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, 0x1591, 0x795c,
+ 0x71c6, 0x71c4, 0xa182, 0x0003, 0x00c8, 0x1587, 0x795e, 0x0078,
+ 0x158f, 0x795c, 0x71c6, 0x0078, 0x158f, 0x7900, 0x71c6, 0x71c4,
+ 0x7902, 0x0078, 0x158f, 0x7900, 0x71c6, 0x0078, 0x158f, 0x7904,
+ 0x70c4, 0x7806, 0x0078, 0x158e, 0x7804, 0x70c6, 0x0078, 0x158f,
+ 0xd1fc, 0x00c0, 0x1d27, 0x2011, 0x61c0, 0x0078, 0x1d29, 0x2011,
+ 0x6240, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa268,
+ 0x6a14, 0xd2b4, 0x0040, 0x1d38, 0x2011, 0x0001, 0x0078, 0x1d3a,
+ 0x2011, 0x0000, 0x6b0c, 0x0078, 0x158c, 0x017e, 0x780c, 0xd0f4,
+ 0x0040, 0x1d4a, 0x2001, 0x4007, 0x70db, 0x0000, 0xa18d, 0x0001,
+ 0x0078, 0x1d56, 0xd0fc, 0x0040, 0x1d55, 0x2001, 0x4007, 0x70db,
+ 0x0001, 0xa18d, 0x0001, 0x0078, 0x1d56, 0xa006, 0x017f, 0x007c,
+ 0x780c, 0xd0f4, 0x0040, 0x1d62, 0x2001, 0x4007, 0x70db, 0x0000,
+ 0x0078, 0x1d63, 0xa006, 0x007c, 0x780c, 0xd0fc, 0x0040, 0x1d6e,
+ 0x2001, 0x4007, 0x70db, 0x0001, 0x0078, 0x1d6f, 0xa006, 0x007c,
+ 0xac80, 0x0001, 0x1078, 0x1fd7, 0x007c, 0x7112, 0x7003, 0x0001,
+ 0x7007, 0x0001, 0x2099, 0x0030, 0x20a9, 0x0020, 0xac80, 0x0001,
+ 0x20a0, 0x7008, 0xd0fc, 0x0040, 0x1d81, 0x7007, 0x0002, 0xa08c,
+ 0x01e0, 0x00c0, 0x1db1, 0x53a5, 0x7888, 0xa005, 0x0040, 0x1db0,
+ 0x1078, 0x1db6, 0x0040, 0x1d9e, 0x2c00, 0x788e, 0x20a9, 0x0020,
+ 0xac80, 0x0001, 0x20a0, 0x53a5, 0x0078, 0x1db0, 0x788b, 0x0000,
+ 0x7218, 0x731c, 0x7420, 0x7524, 0xa292, 0x0040, 0xa39b, 0x0000,
+ 0xa4a3, 0x0000, 0xa5ab, 0x0000, 0x721a, 0x731e, 0x7422, 0x7526,
+ 0xa006, 0x7003, 0x0000, 0x7007, 0x0004, 0x007c, 0x2091, 0x8000,
+ 0x7840, 0xa065, 0x0040, 0x1dc0, 0x2c04, 0x7842, 0x2063, 0x0000,
+ 0x2091, 0x8001, 0x007c, 0x0f7e, 0x2079, 0x5d00, 0x7840, 0xa06d,
+ 0x0040, 0x1dd2, 0x2d04, 0x7842, 0x6803, 0x0000, 0x6807, 0x0000,
+ 0x680b, 0x0000, 0x0f7f, 0x007c, 0x2091, 0x8000, 0x0f7e, 0x2079,
+ 0x5d00, 0x7840, 0x2062, 0x2c00, 0xa005, 0x00c0, 0x1de1, 0x1078,
+ 0x2aef, 0x7842, 0x0f7f, 0x2091, 0x8001, 0x007c, 0x0f7e, 0x2079,
+ 0x5d00, 0x7840, 0x206a, 0x2d00, 0x7842, 0x0f7f, 0x007c, 0x2011,
+ 0xa900, 0x7a42, 0x7bc8, 0x8319, 0x0040, 0x1dfc, 0xa280, 0x0034,
+ 0x2012, 0x2010, 0x0078, 0x1df3, 0x2013, 0x0000, 0x007c, 0x017e,
+ 0x027e, 0xd7fc, 0x00c0, 0x1e08, 0x2011, 0x62c0, 0x0078, 0x1e0a,
+ 0x2011, 0x82c0, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x8003,
+ 0x8003, 0x8003, 0x8003, 0xa105, 0xa268, 0x027f, 0x017f, 0x007c,
+ 0x1078, 0x1dff, 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808, 0xa084,
+ 0xf9ef, 0xa80d, 0x690a, 0x0e7e, 0xd7fc, 0x00c0, 0x1e2d, 0x2009,
+ 0x5d55, 0x2071, 0x5d40, 0x0078, 0x1e31, 0x2009, 0x5d95, 0x2071,
+ 0x5d80, 0x210c, 0x6804, 0xa005, 0x0040, 0x1e41, 0xa116, 0x00c0,
+ 0x1e41, 0x2060, 0x6000, 0x6806, 0x017e, 0x200b, 0x0000, 0x0078,
+ 0x1e44, 0x2009, 0x0000, 0x017e, 0x6804, 0xa065, 0x0040, 0x1e53,
+ 0x6000, 0x6806, 0x1078, 0x1e6e, 0x1078, 0x21b9, 0x6810, 0x8001,
+ 0x6812, 0x00c0, 0x1e44, 0x017f, 0x6902, 0x6906, 0x2d00, 0x2060,
+ 0x1078, 0x2c7d, 0x0e7f, 0x007c, 0xa065, 0x0040, 0x1e6d, 0x2008,
+ 0x609c, 0xa005, 0x0040, 0x1e6a, 0x2062, 0x609f, 0x0000, 0xa065,
+ 0x0078, 0x1e60, 0x7840, 0x7942, 0x2062, 0x007c, 0x6007, 0x0103,
+ 0x608f, 0x0000, 0x20a9, 0x001c, 0xac80, 0x0005, 0x20a0, 0x2001,
+ 0x0000, 0x40a4, 0x6828, 0x601a, 0x682c, 0x6022, 0x007c, 0x0e7e,
+ 0xd7fc, 0x00c0, 0x1e89, 0x2071, 0x5d40, 0x2031, 0x5dc0, 0x0078,
+ 0x1e8d, 0x2071, 0x5d80, 0x2031, 0x5fc0, 0x7058, 0xa08c, 0x0200,
+ 0x00c0, 0x1e97, 0xa608, 0x2d0a, 0x8000, 0x705a, 0xa006, 0x0e7f,
+ 0x007c, 0x0f7e, 0xd7fc, 0x00c0, 0x1ea1, 0x2079, 0x5d40, 0x0078,
+ 0x1ea3, 0x2079, 0x5d80, 0x1078, 0x1dff, 0x2091, 0x8000, 0x6804,
+ 0x7806, 0xa065, 0x0040, 0x1ef0, 0x0078, 0x1eb4, 0x2c00, 0x7806,
+ 0x6000, 0xa065, 0x0040, 0x1ef0, 0x6010, 0xa306, 0x00c0, 0x1eae,
+ 0x600c, 0xa206, 0x00c0, 0x1eae, 0x2c28, 0x7854, 0xac06, 0x00c0,
+ 0x1ec3, 0x0078, 0x1eed, 0x6804, 0xac06, 0x00c0, 0x1ed1, 0x6000,
+ 0x2060, 0x6806, 0xa005, 0x00c0, 0x1ed1, 0x6803, 0x0000, 0x0078,
+ 0x1edb, 0x6400, 0x7804, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0,
+ 0x1edb, 0x2c00, 0x6802, 0x2560, 0x0f7f, 0x1078, 0x1e6e, 0x0f7e,
+ 0x601b, 0x0005, 0x6023, 0x0020, 0x0f7f, 0x1078, 0x21b9, 0x0f7e,
+ 0x6810, 0x8001, 0x1050, 0x2aef, 0x6812, 0xa085, 0xffff, 0xa005,
+ 0x0f7f, 0x007c, 0x077e, 0x2700, 0x2039, 0x0000, 0xd0fc, 0x0040,
+ 0x1efa, 0xc7fd, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008,
+ 0x2091, 0x8000, 0x1078, 0x1e18, 0x8738, 0xa784, 0x001f, 0x00c0,
+ 0x1f02, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00,
+ 0x00c0, 0x1f02, 0x2091, 0x8001, 0x077f, 0x007c, 0x2061, 0x0000,
+ 0x6018, 0xa084, 0x0001, 0x00c0, 0x1f37, 0x7808, 0xd08c, 0x0040,
+ 0x1f28, 0xc08c, 0x780a, 0xc7fc, 0x2069, 0x5d40, 0x0078, 0x1f2d,
+ 0xc08d, 0x780a, 0x2069, 0x5d80, 0xc7fd, 0x2091, 0x8000, 0x6818,
+ 0x681b, 0x0000, 0x2091, 0x8001, 0xa005, 0x00c0, 0x1f38, 0x007c,
+ 0xa08c, 0xfff0, 0x0040, 0x1f3e, 0x1078, 0x2aef, 0x0079, 0x1f40,
+ 0x1f50, 0x1f53, 0x1f59, 0x1f5d, 0x1f51, 0x1f61, 0x1f67, 0x1f51,
+ 0x1f51, 0x210c, 0x213d, 0x2141, 0x2147, 0x1f51, 0x1f51, 0x1f51,
+ 0x007c, 0x1078, 0x2aef, 0x1078, 0x1ef2, 0x2001, 0x8001, 0x0078,
+ 0x215c, 0x2001, 0x8003, 0x0078, 0x215c, 0x2001, 0x8004, 0x0078,
+ 0x215c, 0x1078, 0x1ef2, 0x2001, 0x8006, 0x0078, 0x215c, 0x2001,
+ 0x8007, 0x0078, 0x215c, 0x2030, 0x2138, 0xa782, 0x0021, 0x0048,
+ 0x1f73, 0x2009, 0x0020, 0x2600, 0x1078, 0x1f8d, 0x00c0, 0x1f8c,
+ 0xa7ba, 0x0020, 0x0048, 0x1f8b, 0x0040, 0x1f8b, 0x2708, 0xa6b0,
+ 0x0020, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9,
+ 0x0000, 0x0078, 0x1f6d, 0xa006, 0x007c, 0x81ff, 0x0040, 0x1fb2,
+ 0x2099, 0x0030, 0x20a0, 0x700c, 0xa084, 0x03ff, 0x0040, 0x1f9f,
+ 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x1f9a, 0x21a8,
+ 0x810b, 0x7112, 0x7003, 0x0001, 0x7007, 0x0001, 0x7008, 0x800b,
+ 0x00c8, 0x1fa6, 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x1fb2,
+ 0x53a5, 0xa006, 0x7003, 0x0000, 0x007c, 0x2030, 0x2138, 0xa782,
+ 0x0021, 0x0048, 0x1fbd, 0x2009, 0x0020, 0x2600, 0x1078, 0x1fd7,
+ 0x00c0, 0x1fd6, 0xa7ba, 0x0020, 0x0048, 0x1fd5, 0x0040, 0x1fd5,
+ 0x2708, 0xa6b0, 0x0020, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1,
+ 0x0000, 0xa5a9, 0x0000, 0x0078, 0x1fb7, 0xa006, 0x007c, 0x81ff,
+ 0x0040, 0x200f, 0x2098, 0x20a1, 0x0030, 0x700c, 0xa084, 0x03ff,
+ 0x0040, 0x1fe2, 0x21a8, 0x810b, 0x7112, 0x7018, 0x007e, 0x701c,
+ 0x007e, 0x7020, 0x007e, 0x7024, 0x007e, 0x721a, 0x731e, 0x7422,
+ 0x7526, 0x7003, 0x0000, 0x53a6, 0x7007, 0x0001, 0x7010, 0xa084,
+ 0xf000, 0x0040, 0x1fff, 0x7007, 0x0008, 0x0078, 0x2003, 0x7108,
+ 0x8103, 0x00c8, 0x1ff6, 0x007f, 0x7026, 0x007f, 0x7022, 0x007f,
+ 0x701e, 0x007f, 0x701a, 0x7007, 0x0002, 0xa184, 0x01e0, 0x7003,
+ 0x0000, 0x7007, 0x0004, 0x007c, 0x0e7e, 0x6914, 0xd1fc, 0x0040,
+ 0x201d, 0x2071, 0x5d80, 0x0078, 0x201f, 0x2071, 0x5d40, 0x2d08,
+ 0x70b8, 0x6802, 0xa005, 0x00c0, 0x2026, 0x71be, 0x71ba, 0x0e7f,
+ 0x007c, 0x0f7e, 0x6114, 0xd1fc, 0x0040, 0x2032, 0x2079, 0x5d80,
+ 0x0078, 0x2034, 0x2079, 0x5d40, 0x2c08, 0x78b8, 0x6002, 0xa005,
+ 0x00c0, 0x203b, 0x79be, 0x79ba, 0x0f7f, 0x007c, 0x2091, 0x8000,
+ 0x0f7e, 0x6114, 0xd1fc, 0x0040, 0x2049, 0x2079, 0x5d80, 0x0078,
+ 0x204b, 0x2079, 0x5d40, 0x6003, 0x0000, 0x2c08, 0x78bc, 0xa065,
+ 0x00c0, 0x2055, 0x79ba, 0x0078, 0x2056, 0x6102, 0x79be, 0x0f7f,
+ 0x2091, 0x8001, 0x1078, 0x27a5, 0x007c, 0x70b8, 0xa06d, 0x0040,
+ 0x2068, 0x6800, 0x70ba, 0xa005, 0x00c0, 0x2067, 0x70be, 0x8dff,
+ 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0xd3fc, 0x0040, 0x2073, 0x2079,
+ 0x5d80, 0x0078, 0x2075, 0x2079, 0x5d40, 0xaf80, 0x002e, 0x2060,
+ 0x6000, 0xa005, 0x0040, 0x209e, 0x2068, 0x6814, 0xa306, 0x00c0,
+ 0x2087, 0x6828, 0xa084, 0x00ff, 0xa406, 0x0040, 0x208a, 0x2d60,
+ 0x0078, 0x2078, 0x6800, 0xa005, 0x6002, 0x00c0, 0x2096, 0xaf80,
+ 0x002e, 0xac06, 0x0040, 0x2095, 0x2c00, 0x78be, 0x0d7e, 0x689c,
+ 0xa005, 0x0040, 0x209d, 0x1078, 0x1e5c, 0x007f, 0x0f7f, 0x0c7f,
+ 0x0d7f, 0xa005, 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0xd0fc, 0x0040,
+ 0x20ad, 0x2079, 0x5d80, 0x0078, 0x20af, 0x2079, 0x5d40, 0xaf80,
+ 0x002e, 0x2060, 0x6000, 0xa005, 0x0040, 0x20d4, 0x2068, 0x6814,
+ 0xa084, 0x00ff, 0xa306, 0x0040, 0x20c0, 0x2d60, 0x0078, 0x20b2,
+ 0x6800, 0xa005, 0x6002, 0x00c0, 0x20cc, 0xaf80, 0x002e, 0xac06,
+ 0x0040, 0x20cb, 0x2c00, 0x78be, 0x0d7e, 0x689c, 0xa005, 0x0040,
+ 0x20d3, 0x1078, 0x1e5c, 0x007f, 0x0f7f, 0x0c7f, 0x0d7f, 0xa005,
+ 0x007c, 0x0d7e, 0x0c7e, 0x0f7e, 0xd3fc, 0x0040, 0x20e3, 0x2079,
+ 0x5d80, 0x0078, 0x20e5, 0x2079, 0x5d40, 0xaf80, 0x002e, 0x2060,
+ 0x6000, 0xa06d, 0x0040, 0x2107, 0x6814, 0xa306, 0x0040, 0x20f3,
+ 0x2d60, 0x0078, 0x20e8, 0x6800, 0xa005, 0x6002, 0x00c0, 0x20ff,
+ 0xaf80, 0x002e, 0xac06, 0x0040, 0x20fe, 0x2c00, 0x78be, 0x0d7e,
+ 0x689c, 0xa005, 0x0040, 0x2106, 0x1078, 0x1e5c, 0x007f, 0x0f7f,
+ 0x0c7f, 0x0d7f, 0xa005, 0x007c, 0x2091, 0x8000, 0xd7fc, 0x00c0,
+ 0x2115, 0x2069, 0x5d40, 0x0078, 0x2117, 0x2069, 0x5d80, 0x6800,
+ 0xa086, 0x0000, 0x0040, 0x2121, 0x2091, 0x8001, 0x681b, 0x0009,
+ 0x007c, 0x687c, 0xd7fc, 0x00c0, 0x2127, 0x0078, 0x2128, 0xc0fd,
+ 0xa0bc, 0xff00, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010,
+ 0x1078, 0x1e18, 0x8738, 0xa784, 0x001f, 0x00c0, 0x2130, 0x2091,
+ 0x8001, 0x2001, 0x800a, 0x0078, 0x215c, 0x2001, 0x800c, 0x0078,
+ 0x215c, 0x1078, 0x1ef2, 0x2001, 0x800d, 0x0078, 0x215c, 0x780c,
+ 0xd0e4, 0x00c0, 0x215a, 0xd0ec, 0x0040, 0x2154, 0xd7fc, 0x0040,
+ 0x2154, 0x78f0, 0x0078, 0x2155, 0x78e8, 0x70c6, 0x2001, 0x800e,
+ 0x0078, 0x215c, 0x0078, 0x1f51, 0x70c2, 0xd7fc, 0x00c0, 0x2164,
+ 0x70db, 0x0000, 0x0078, 0x2166, 0x70db, 0x0001, 0x2061, 0x0000,
+ 0x601b, 0x0001, 0x2091, 0x4080, 0x007c, 0xac80, 0x0001, 0x81ff,
+ 0x0040, 0x2198, 0x2099, 0x0030, 0x20a0, 0x700c, 0xa084, 0x03ff,
+ 0x0040, 0x217a, 0x7018, 0x007e, 0x701c, 0x007e, 0x7020, 0x007e,
+ 0x7024, 0x007e, 0x7112, 0x81ac, 0x721a, 0x731e, 0x7422, 0x7526,
+ 0x7003, 0x0001, 0x7007, 0x0001, 0x7008, 0x800b, 0x00c8, 0x218c,
+ 0x7007, 0x0002, 0xa08c, 0x01e0, 0x00c0, 0x2198, 0x53a5, 0xa006,
+ 0x7003, 0x0000, 0x7007, 0x0004, 0x007f, 0x7026, 0x007f, 0x7022,
+ 0x007f, 0x701e, 0x007f, 0x701a, 0x007c, 0x2011, 0x0020, 0x2009,
+ 0x0010, 0x6b0a, 0x6c0e, 0x6803, 0xfd00, 0x6807, 0x0018, 0x6a1a,
+ 0x2d00, 0xa0e8, 0x0008, 0xa290, 0x0004, 0x8109, 0x00c0, 0x21a9,
+ 0x007c, 0x6004, 0x2c08, 0x2063, 0x0000, 0x7860, 0x8000, 0x7862,
+ 0x7864, 0xa005, 0x7966, 0x0040, 0x21c8, 0x2c02, 0x0078, 0x21c9,
+ 0x796a, 0x007c, 0x6807, 0x0103, 0x0c7e, 0x2061, 0x5d00, 0x2d08,
+ 0x206b, 0x0000, 0x6060, 0x8000, 0x6062, 0x6064, 0xa005, 0x6166,
+ 0x0040, 0x21dd, 0x2d02, 0x0078, 0x21de, 0x616a, 0x0c7f, 0x007c,
+ 0x2091, 0x8000, 0x7860, 0x8001, 0x7862, 0x2c04, 0x786a, 0xa005,
+ 0x00c0, 0x21eb, 0x7866, 0x2091, 0x8001, 0x609c, 0xa005, 0x0040,
+ 0x2208, 0x0c7e, 0x2060, 0x2008, 0x609c, 0xa005, 0x0040, 0x2200,
+ 0x2062, 0x609f, 0x0000, 0xa065, 0x609c, 0xa005, 0x00c0, 0x21f8,
+ 0x2091, 0x8000, 0x7840, 0x7942, 0x2062, 0x2091, 0x8001, 0x0c7f,
+ 0x2091, 0x8000, 0x7840, 0x2062, 0x609f, 0x0000, 0x2c00, 0xa005,
+ 0x00c0, 0x2214, 0x1078, 0x2aef, 0x7842, 0x2091, 0x8001, 0x007c,
+ 0x7868, 0xa065, 0x0040, 0x222a, 0x2091, 0x8000, 0x7860, 0x8001,
+ 0x7862, 0x2c04, 0x786a, 0xa005, 0x00c0, 0x2228, 0x7866, 0x8000,
+ 0x2091, 0x8001, 0x007c, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086,
+ 0x818e, 0x00c8, 0x2234, 0xa200, 0x00f0, 0x222f, 0x8086, 0x818e,
+ 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x225a, 0xa11a,
+ 0x00c8, 0x225a, 0x8213, 0x818d, 0x0048, 0x224d, 0xa11a, 0x00c8,
+ 0x224e, 0x00f0, 0x2242, 0x0078, 0x2252, 0xa11a, 0x2308, 0x8210,
+ 0x00f0, 0x2242, 0x007e, 0x3200, 0xa084, 0xf7ff, 0x2080, 0x007f,
+ 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, 0x0078, 0x2256,
+ 0x7d70, 0x70d0, 0xa506, 0x0040, 0x22dd, 0x1078, 0x1db6, 0x0040,
+ 0x22dd, 0x796c, 0x2500, 0x8000, 0xa112, 0x2009, 0x0040, 0x00c8,
+ 0x2274, 0xa006, 0x0078, 0x227c, 0x72d0, 0xa206, 0x0040, 0x227c,
+ 0x788b, 0x0001, 0x2009, 0x0080, 0x0c7e, 0x1078, 0x1d75, 0x0c7f,
+ 0x0040, 0x22c5, 0x1078, 0x1dd4, 0x788b, 0x0000, 0x7884, 0x8000,
+ 0x7886, 0xa086, 0x0002, 0x0040, 0x22a3, 0x8507, 0x8004, 0x8004,
+ 0x7978, 0xa108, 0x711a, 0x00c8, 0x22a1, 0x7974, 0xa189, 0x0000,
+ 0x711e, 0x7980, 0xa189, 0x0000, 0x7122, 0x797c, 0xa189, 0x0000,
+ 0x7126, 0x0078, 0x22dd, 0x6014, 0xd0fc, 0x00c0, 0x22ab, 0x2069,
+ 0x5d40, 0x0078, 0x22ad, 0x2069, 0x5d80, 0x2091, 0x8000, 0x681b,
+ 0x0002, 0x7888, 0xa005, 0x0040, 0x22bb, 0x788b, 0x0000, 0x788c,
+ 0x2060, 0x0078, 0x22a3, 0x7887, 0x0000, 0x78b0, 0xa085, 0x0003,
+ 0x78b2, 0x2091, 0x8001, 0x0078, 0x22dd, 0x7887, 0x0000, 0x1078,
+ 0x2641, 0x6004, 0xa084, 0x000f, 0x1078, 0x22de, 0x7888, 0xa005,
+ 0x0040, 0x22d9, 0x788c, 0x2060, 0x6004, 0xa084, 0x000f, 0x1078,
+ 0x22de, 0x788b, 0x0000, 0x0078, 0x2260, 0x007c, 0x0079, 0x22e0,
+ 0x22f0, 0x230e, 0x232e, 0x22f0, 0x234b, 0x22ff, 0x24b4, 0x24cb,
+ 0x22f0, 0x230c, 0x232c, 0x2392, 0x23fa, 0x2452, 0x2464, 0x24cb,
+ 0x2039, 0x0400, 0x78c0, 0xa705, 0x78c2, 0x6008, 0xa705, 0x600a,
+ 0x1078, 0x2545, 0x609c, 0x78be, 0x1078, 0x2629, 0x007c, 0x78c0,
+ 0xa084, 0x0100, 0x0040, 0x2306, 0x0078, 0x22f0, 0x601c, 0xa085,
+ 0x0080, 0x601e, 0x0078, 0x2315, 0x1078, 0x2670, 0x78c0, 0xa084,
+ 0x0100, 0x0040, 0x2315, 0x0078, 0x22f0, 0x78c3, 0x0000, 0x6004,
+ 0x8007, 0xa084, 0x00ff, 0x78b6, 0x8001, 0x0040, 0x2329, 0x1078,
+ 0x2545, 0x0040, 0x2329, 0x78c0, 0xa085, 0x0100, 0x78c2, 0x0078,
+ 0x232b, 0x0078, 0x2565, 0x007c, 0x1078, 0x266c, 0x78c0, 0xa08c,
+ 0x0e00, 0x00c0, 0x2337, 0xa084, 0x0100, 0x00c0, 0x2339, 0x0078,
+ 0x22f0, 0x1078, 0x2545, 0x00c0, 0x234a, 0x6104, 0xa18c, 0x00ff,
+ 0xa186, 0x0007, 0x0040, 0x2506, 0xa186, 0x000f, 0x0040, 0x2506,
+ 0x0078, 0x2565, 0x007c, 0x78c0, 0xa084, 0x0100, 0x0040, 0x2352,
+ 0x0078, 0x22f0, 0x78c3, 0x0000, 0x6714, 0x2011, 0x0001, 0x20a9,
+ 0x0001, 0x6018, 0xa084, 0x00ff, 0xa005, 0x0040, 0x2375, 0x2011,
+ 0x0001, 0xa7bc, 0xff00, 0x20a9, 0x0020, 0xa08e, 0x0001, 0x0040,
+ 0x2375, 0xa7bc, 0x8000, 0x2011, 0x0002, 0x20a9, 0x0100, 0xa08e,
+ 0x0002, 0x0040, 0x2375, 0x0078, 0x238f, 0x1078, 0x1dff, 0x2d00,
+ 0x2091, 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, 0x6808, 0xa084,
+ 0xffde, 0x680a, 0xade8, 0x0010, 0x2091, 0x8001, 0x00f0, 0x2378,
+ 0x8211, 0x0040, 0x238f, 0x20a9, 0x0100, 0x0078, 0x2378, 0x1078,
+ 0x1dd4, 0x007c, 0x6114, 0x1078, 0x268d, 0x6900, 0xa184, 0x0001,
+ 0x0040, 0x23ac, 0x6028, 0xa084, 0x00ff, 0x00c0, 0x2525, 0x6800,
+ 0xa084, 0x0001, 0x0040, 0x252d, 0x6803, 0x0000, 0x680b, 0x0000,
+ 0x6807, 0x0000, 0x0078, 0x2535, 0x2011, 0x0001, 0x6020, 0xd0f4,
+ 0x0040, 0x23b4, 0xa295, 0x0002, 0xd0c4, 0x0040, 0x23b9, 0xa295,
+ 0x0008, 0xd0cc, 0x0040, 0x23be, 0xa295, 0x0400, 0x601c, 0xa084,
+ 0x0002, 0x0040, 0x23c5, 0xa295, 0x0004, 0x602c, 0xa08c, 0x00ff,
+ 0xa182, 0x0002, 0x0048, 0x2531, 0xa182, 0x001b, 0x00c8, 0x2531,
+ 0x0040, 0x2531, 0x690e, 0x602c, 0x8007, 0xa08c, 0x00ff, 0xa182,
+ 0x0002, 0x0048, 0x2531, 0xa182, 0x001b, 0x00c8, 0x2531, 0x0040,
+ 0x2531, 0x6912, 0x6030, 0xa005, 0x00c0, 0x23e8, 0x2001, 0x001e,
+ 0x8000, 0x6816, 0x6028, 0xa084, 0x00ff, 0x0040, 0x252d, 0x6806,
+ 0x6028, 0x8007, 0xa084, 0x00ff, 0x0040, 0x252d, 0x680a, 0x6a02,
+ 0x0078, 0x2535, 0x6014, 0xd0fc, 0x00c0, 0x2402, 0x2001, 0x5d65,
+ 0x0078, 0x2404, 0x2001, 0x5da5, 0x2004, 0xa084, 0x8000, 0x0040,
+ 0x252d, 0x6114, 0x1078, 0x268d, 0x2091, 0x8000, 0x6a04, 0x6b08,
+ 0x6418, 0xa484, 0x0003, 0x0040, 0x2428, 0x6128, 0xa18c, 0x00ff,
+ 0x8001, 0x00c0, 0x2421, 0x2100, 0xa210, 0x0048, 0x244e, 0x0078,
+ 0x2428, 0x8001, 0x00c0, 0x244e, 0x2100, 0xa212, 0x0048, 0x244e,
+ 0xa484, 0x000c, 0x0040, 0x2442, 0x6128, 0x810f, 0xa18c, 0x00ff,
+ 0xa082, 0x0004, 0x00c0, 0x243a, 0x2100, 0xa318, 0x0048, 0x244e,
+ 0x0078, 0x2442, 0xa082, 0x0004, 0x00c0, 0x244e, 0x2100, 0xa31a,
+ 0x0048, 0x244e, 0x6030, 0xa005, 0x0040, 0x2448, 0x8000, 0x6816,
+ 0x6a06, 0x6b0a, 0x2091, 0x8001, 0x0078, 0x2535, 0x2091, 0x8001,
+ 0x0078, 0x2531, 0x6114, 0x1078, 0x268d, 0x2091, 0x8000, 0x6b08,
+ 0x8318, 0x0048, 0x2460, 0x6b0a, 0x2091, 0x8001, 0x0078, 0x2543,
+ 0x2091, 0x8001, 0x0078, 0x2531, 0x6024, 0x8007, 0xa084, 0x00ff,
+ 0x0040, 0x248a, 0xa086, 0x0080, 0x00c0, 0x24b2, 0x20a9, 0x0008,
+ 0x6014, 0xd0fc, 0x00c0, 0x2478, 0x2069, 0xa4e0, 0x0078, 0x247a,
+ 0x2069, 0xa5e0, 0x2091, 0x8000, 0x6800, 0xa084, 0xfcff, 0x6802,
+ 0xade8, 0x0008, 0x0070, 0x2486, 0x0078, 0x247c, 0x2091, 0x8001,
+ 0x0078, 0x2535, 0x6028, 0xa015, 0x0040, 0x24b2, 0x6114, 0x1078,
+ 0x268d, 0x0d7e, 0xade8, 0x0007, 0x2091, 0x8000, 0x6800, 0xa00d,
+ 0x0040, 0x24af, 0xa206, 0x0040, 0x24a0, 0x2168, 0x0078, 0x2496,
+ 0x0c7e, 0x2160, 0x6000, 0x6802, 0x1078, 0x1dd4, 0x0c7f, 0x0d7f,
+ 0x6808, 0x8000, 0x680a, 0x2091, 0x8001, 0x0078, 0x2543, 0x2091,
+ 0x8001, 0x0d7f, 0x0078, 0x252d, 0x6114, 0x1078, 0x268d, 0x6800,
+ 0xa084, 0x0001, 0x0040, 0x251d, 0x2091, 0x8000, 0x6a04, 0x8210,
+ 0x0048, 0x24c7, 0x6a06, 0x2091, 0x8001, 0x0078, 0x2543, 0x2091,
+ 0x8001, 0x0078, 0x2531, 0x6114, 0x1078, 0x268d, 0x60ca, 0x6900,
+ 0xa184, 0x0008, 0x0040, 0x24d8, 0x6020, 0xa085, 0x0100, 0x6022,
+ 0xa184, 0x0001, 0x0040, 0x252d, 0xa184, 0x0100, 0x00c0, 0x2519,
+ 0xa184, 0x0200, 0x00c0, 0x2515, 0x681c, 0xa005, 0x00c0, 0x2521,
+ 0x6004, 0xa084, 0x00ff, 0xa086, 0x000f, 0x00c0, 0x24f1, 0x1078,
+ 0x2670, 0x78c3, 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, 0x78b6,
+ 0x8001, 0x609f, 0x0000, 0x0040, 0x2506, 0x1078, 0x2545, 0x0040,
+ 0x2506, 0x78c0, 0xa085, 0x0100, 0x78c2, 0x007c, 0x78bb, 0x0000,
+ 0x78bf, 0x0000, 0x6024, 0xa084, 0xff00, 0x6026, 0x1078, 0x4482,
+ 0x00c0, 0x2513, 0x007c, 0x0078, 0x203e, 0x2009, 0x0017, 0x0078,
+ 0x2537, 0x2009, 0x000e, 0x0078, 0x2537, 0x2009, 0x0007, 0x0078,
+ 0x2537, 0x2009, 0x0035, 0x0078, 0x2537, 0x2009, 0x003e, 0x0078,
+ 0x2537, 0x2009, 0x0004, 0x0078, 0x2537, 0x2009, 0x0006, 0x0078,
+ 0x2537, 0x2009, 0x0016, 0x0078, 0x2537, 0x2009, 0x0001, 0x6024,
+ 0xa084, 0xff00, 0xa105, 0x6026, 0x2091, 0x8000, 0x1078, 0x21b9,
+ 0x2091, 0x8001, 0x007c, 0x0078, 0x1dd4, 0x609f, 0x0000, 0x78b8,
+ 0xa06d, 0x2c00, 0x78ba, 0x00c0, 0x2550, 0x78be, 0x0078, 0x2558,
+ 0x689e, 0x2d00, 0x6002, 0x78bc, 0xad06, 0x00c0, 0x2558, 0x6002,
+ 0x78b4, 0x8001, 0x78b6, 0x00c0, 0x2564, 0x78c0, 0xa084, 0xfeff,
+ 0x78c2, 0x78bc, 0x2060, 0xa006, 0x007c, 0x0e7e, 0xa02e, 0x2530,
+ 0x65ae, 0x65b2, 0x601c, 0x60a2, 0x2048, 0xa984, 0xe1ff, 0x601e,
+ 0xa984, 0x0060, 0x0040, 0x2576, 0x1078, 0x52aa, 0x6596, 0x65a6,
+ 0x669a, 0x66aa, 0x6714, 0x2071, 0x5d80, 0xd7fc, 0x00c0, 0x2582,
+ 0x2071, 0x5d40, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f, 0x0040,
+ 0x258d, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0x71e4, 0xa168,
+ 0x2700, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0x71e8,
+ 0xa100, 0x60c2, 0x2091, 0x8000, 0x7808, 0xd0f4, 0x00c0, 0x25a7,
+ 0x6e08, 0xd684, 0x0040, 0x25c1, 0xd9fc, 0x00c0, 0x25c1, 0x2091,
+ 0x8001, 0x1078, 0x1e6e, 0x2091, 0x8000, 0x1078, 0x21b9, 0x2091,
+ 0x8001, 0x78bb, 0x0000, 0x78bf, 0x0000, 0x780c, 0xd0e4, 0x00c0,
+ 0x2627, 0x7808, 0xd0f4, 0x0040, 0x2627, 0x601b, 0x0021, 0x0078,
+ 0x2627, 0x6024, 0xa096, 0x0001, 0x00c0, 0x25c8, 0x8000, 0x6026,
+ 0x6a10, 0x6814, 0xa202, 0x0048, 0x25d7, 0x0040, 0x25d7, 0x2091,
+ 0x8001, 0x2039, 0x0200, 0x1078, 0x2629, 0x0078, 0x2627, 0x2c08,
+ 0xd9fc, 0x0040, 0x25ff, 0x6800, 0xa065, 0x0040, 0x25ff, 0x6a04,
+ 0x7000, 0xa084, 0x0002, 0x0040, 0x25f5, 0x7054, 0xa206, 0x00c0,
+ 0x25f5, 0x6b04, 0x2160, 0x2304, 0x6002, 0xa005, 0x00c0, 0x25f1,
+ 0x6902, 0x2260, 0x6102, 0x0078, 0x260b, 0x2d00, 0x2060, 0x1078,
+ 0x2c7d, 0x6e08, 0x2160, 0x6202, 0x6906, 0x0078, 0x260b, 0x6800,
+ 0x6902, 0xa065, 0x0040, 0x2607, 0x6102, 0x0078, 0x2608, 0x6906,
+ 0x2160, 0x6003, 0x0000, 0x2160, 0xd9fc, 0x0040, 0x2616, 0xa6b4,
+ 0xffdc, 0x6e0a, 0x682b, 0x0000, 0x682f, 0x0000, 0x6810, 0x8000,
+ 0x6812, 0x2091, 0x8001, 0xd6b4, 0x0040, 0x2623, 0xa6b6, 0x0040,
+ 0x6e0a, 0x1078, 0x1e7f, 0x78bf, 0x0000, 0x78bb, 0x0000, 0x0e7f,
+ 0x007c, 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, 0x1078, 0x21b9,
+ 0x2091, 0x8001, 0x78bc, 0xa065, 0x0040, 0x263c, 0x609c, 0x78be,
+ 0x609f, 0x0000, 0x0078, 0x262c, 0x78bb, 0x0000, 0x78bf, 0x0000,
+ 0x007c, 0x796c, 0x7870, 0x7b88, 0xd384, 0x0040, 0x264b, 0x8000,
+ 0xa112, 0x0048, 0x2650, 0xc384, 0x8000, 0xa112, 0x00c8, 0x265d,
+ 0x7a78, 0x721a, 0x7a74, 0x721e, 0x7a80, 0x7222, 0x7a7c, 0x7226,
+ 0xa006, 0xd384, 0x0040, 0x265d, 0x8000, 0x7872, 0x70d2, 0x7814,
+ 0xa005, 0x0040, 0x266b, 0x8001, 0x7816, 0x00c0, 0x266b, 0x0068,
+ 0x266b, 0x2091, 0x4080, 0x007c, 0x2039, 0x2684, 0x0078, 0x2672,
+ 0x2039, 0x268a, 0x2704, 0xa005, 0x0040, 0x2683, 0xac00, 0x2068,
+ 0x6908, 0x6810, 0x6912, 0x680a, 0x690c, 0x6814, 0x6916, 0x680e,
+ 0x8738, 0x0078, 0x2672, 0x007c, 0x0003, 0x0009, 0x000f, 0x0015,
+ 0x001b, 0x0000, 0x0015, 0x001b, 0x0000, 0x0c7e, 0x6014, 0x1078,
+ 0x465f, 0x2c68, 0x0c7f, 0x007c, 0x78af, 0x0000, 0x2009, 0x5d01,
+ 0x2104, 0xd084, 0x0040, 0x26c3, 0x6004, 0xa086, 0x0103, 0x00c0,
+ 0x26c3, 0x6114, 0x6018, 0xa105, 0x00c0, 0x26c3, 0x0d7e, 0x2069,
+ 0x0000, 0x6818, 0xd084, 0x00c0, 0x26c2, 0x600c, 0x70c6, 0x6010,
+ 0x70ca, 0x70c3, 0x8020, 0x681b, 0x0001, 0x2091, 0x4080, 0x0d7f,
+ 0x1078, 0x21e0, 0x0068, 0x26f7, 0x7868, 0xa065, 0x00c0, 0x2696,
+ 0x0078, 0x26f7, 0x0d7f, 0x1078, 0x26fa, 0x0040, 0x26f2, 0x6204,
+ 0xa294, 0x00ff, 0xa296, 0x0003, 0x0040, 0x26d5, 0x6204, 0xa296,
+ 0x0110, 0x00c0, 0x26e3, 0x78af, 0x0001, 0x6204, 0xa294, 0xff00,
+ 0x8217, 0x8211, 0x0040, 0x26e3, 0x85ff, 0x00c0, 0x26f2, 0x8210,
+ 0xa202, 0x00c8, 0x26f2, 0x057e, 0x1078, 0x2709, 0x057f, 0x00c0,
+ 0x26f2, 0x8528, 0x78ac, 0xa005, 0x00c0, 0x26f2, 0x7868, 0xa065,
+ 0x00c0, 0x2696, 0x85ff, 0x0040, 0x26f9, 0x2091, 0x4080, 0x7894,
+ 0x70d6, 0x007c, 0x7b90, 0x7994, 0x70d4, 0xa102, 0x00c0, 0x2703,
+ 0x2300, 0xa005, 0x007c, 0x0048, 0x2707, 0xa302, 0x007c, 0x8002,
+ 0x007c, 0xa184, 0xff00, 0x0040, 0x2716, 0x810f, 0x810c, 0x810c,
+ 0x8004, 0x8004, 0x8007, 0xa100, 0x0078, 0x2719, 0x8107, 0x8004,
+ 0x8004, 0x7a9c, 0x7b98, 0x7ca4, 0x7da0, 0xa210, 0xa006, 0xa319,
+ 0xa421, 0xa529, 0x2009, 0x0020, 0x6004, 0xa086, 0x0103, 0x00c0,
+ 0x272f, 0x6028, 0xa005, 0x00c0, 0x272f, 0x2009, 0x000c, 0x1078,
+ 0x1d70, 0x0040, 0x2752, 0x78a8, 0x8000, 0x78aa, 0xa086, 0x0002,
+ 0x00c0, 0x2760, 0x6014, 0xd0fc, 0x00c0, 0x2742, 0x2069, 0x5d40,
+ 0x0078, 0x2744, 0x2069, 0x5d80, 0x2091, 0x8000, 0x681b, 0x0003,
+ 0x78ab, 0x0000, 0x78b0, 0xa085, 0x0300, 0x78b2, 0x2091, 0x8001,
+ 0x0078, 0x2760, 0x78ab, 0x0000, 0x1078, 0x21e0, 0x7990, 0x7894,
+ 0x8000, 0xa10a, 0x00c8, 0x275d, 0xa006, 0x7896, 0x70d6, 0xa006,
+ 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x2138, 0xd7fc, 0x00c0,
+ 0x276d, 0x2009, 0x5d5b, 0x0078, 0x276f, 0x2009, 0x5d9b, 0x2091,
+ 0x8000, 0x200a, 0x0f7e, 0xd7fc, 0x00c0, 0x2786, 0x2009, 0x5d40,
+ 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x0040, 0x2782, 0x2079, 0x0100,
+ 0x0078, 0x278a, 0x2079, 0x0200, 0x0078, 0x278a, 0x2009, 0x5d80,
+ 0x2079, 0x0100, 0x2104, 0xa086, 0x0000, 0x00c0, 0x27a3, 0xd7fc,
+ 0x00c0, 0x2796, 0x2009, 0x5d44, 0x0078, 0x2798, 0x2009, 0x5d84,
+ 0x2104, 0xa005, 0x00c0, 0x27a3, 0x7830, 0xa084, 0x00c0, 0x00c0,
+ 0x27a3, 0x781b, 0x004b, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x2c00,
+ 0xa005, 0x00c0, 0x27b0, 0xa188, 0x0005, 0x2104, 0x0078, 0x27b1,
+ 0x6014, 0xd0fc, 0x00c0, 0x27c4, 0x2071, 0x5d40, 0x2001, 0x5d02,
+ 0x2004, 0xd0ec, 0x0040, 0x27c0, 0x2079, 0x0100, 0x0078, 0x27c8,
+ 0x2079, 0x0200, 0x0078, 0x27c8, 0x2071, 0x5d80, 0x2079, 0x0100,
+ 0x2091, 0x8000, 0x7000, 0xa086, 0x0000, 0x00c0, 0x27fa, 0x0078,
+ 0x27ee, 0x2c00, 0xa005, 0x00c0, 0x27da, 0xa188, 0x0005, 0x2104,
+ 0x0078, 0x27db, 0x6014, 0xd0fc, 0x00c0, 0x27ec, 0x2001, 0x5d02,
+ 0x2004, 0xd0ec, 0x0040, 0x27e8, 0x2079, 0x0100, 0x0078, 0x27ee,
+ 0x2079, 0x0200, 0x0078, 0x27ee, 0x2079, 0x0100, 0x7830, 0xa084,
+ 0x00c0, 0x00c0, 0x27fa, 0x2c00, 0xa005, 0x00c0, 0x27f8, 0x2104,
+ 0x781b, 0x004d, 0x2091, 0x8001, 0x0e7f, 0x0f7f, 0x007c, 0x2009,
+ 0x0002, 0x2069, 0x5d00, 0x6808, 0xd0ec, 0x00c0, 0x2854, 0x2071,
+ 0x5d80, 0x2079, 0x0100, 0x2021, 0x5fbf, 0x784b, 0x000f, 0x0098,
+ 0x281b, 0x7838, 0x0078, 0x280d, 0x784b, 0x000f, 0x00a8, 0x281b,
+ 0x7838, 0x0078, 0x2814, 0x20a9, 0x0060, 0x789b, 0x0000, 0x78af,
+ 0x0000, 0x78af, 0x0000, 0x00f0, 0x281f, 0x70af, 0x009c, 0x2019,
+ 0x5afc, 0x1078, 0x286a, 0x7003, 0x0000, 0x017e, 0xd18c, 0x2009,
+ 0x0000, 0x0040, 0x2834, 0xc1bd, 0x1078, 0x2a41, 0x017f, 0x701c,
+ 0xa084, 0x000f, 0x007e, 0x680c, 0xd0e4, 0x007f, 0x00c0, 0x2844,
+ 0xa085, 0x6340, 0x0078, 0x2846, 0xa085, 0x62c0, 0x7806, 0x780f,
+ 0xb204, 0x7843, 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008, 0x7053,
+ 0x0008, 0x745e, 0x705b, 0x0000, 0x8109, 0x0040, 0x2869, 0x2071,
+ 0x5d40, 0x6808, 0xd0ec, 0x0040, 0x2863, 0x2079, 0x0100, 0x2021,
+ 0x5dbf, 0x0078, 0x280d, 0x2079, 0x0200, 0x2021, 0x5dbf, 0x0078,
+ 0x2814, 0x007c, 0x137e, 0x147e, 0x157e, 0x047e, 0xaf80, 0x002b,
+ 0x20a0, 0x2304, 0xa005, 0x789a, 0x0040, 0x288b, 0x8318, 0x2324,
+ 0x8318, 0x2398, 0x24a8, 0xa484, 0xff00, 0x0040, 0x2883, 0xa482,
+ 0x0100, 0x20a9, 0x0100, 0x2020, 0x53a6, 0xa005, 0x00c0, 0x287a,
+ 0x3318, 0x0078, 0x2871, 0x047f, 0x157f, 0x147f, 0x137f, 0x007c,
+ 0x017e, 0xd1bc, 0x00c0, 0x28a4, 0x007e, 0x2001, 0x5d02, 0x2004,
+ 0xd0ec, 0x007f, 0x0040, 0x28a0, 0x2011, 0x0101, 0x0078, 0x28a6,
+ 0x2011, 0x0201, 0x0078, 0x28a6, 0x2011, 0x0101, 0xa18c, 0x000f,
+ 0x2204, 0xa084, 0xfff0, 0xa105, 0x2012, 0x017f, 0x1078, 0x2a41,
+ 0x007c, 0xd3fc, 0x00c0, 0x28c4, 0x007e, 0x2001, 0x5d02, 0x2004,
+ 0xd0ec, 0x007f, 0x0040, 0x28c0, 0x2011, 0x0101, 0x0078, 0x28c6,
+ 0x2011, 0x0201, 0x0078, 0x28c6, 0x2011, 0x0101, 0x20a9, 0x0009,
+ 0x810b, 0x00f0, 0x28c8, 0xa18c, 0x0e00, 0x2204, 0xa084, 0xf1ff,
+ 0xa105, 0x2012, 0x007c, 0x2019, 0x0002, 0x2001, 0x5d02, 0x2004,
+ 0xd0ec, 0x0040, 0x28e0, 0x8319, 0x2009, 0x0101, 0x0078, 0x28e2,
+ 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, 0x00f0, 0x28e4, 0xa294,
+ 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205, 0x200a, 0x8319, 0x0040,
+ 0x28f5, 0x2009, 0x0201, 0x0078, 0x28e2, 0x007c, 0xd3fc, 0x00c0,
+ 0x2909, 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040,
+ 0x2905, 0x2011, 0x0101, 0x0078, 0x290b, 0x2011, 0x0201, 0x0078,
+ 0x290b, 0x2011, 0x0101, 0x20a9, 0x000c, 0x810b, 0x00f0, 0x290d,
+ 0xa18c, 0xf000, 0x2204, 0xa084, 0x0fff, 0xa105, 0x2012, 0x007c,
+ 0xd3fc, 0x00c0, 0x292b, 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec,
+ 0x007f, 0x0040, 0x2927, 0x2011, 0x0102, 0x0078, 0x292d, 0x2011,
+ 0x0202, 0x0078, 0x292d, 0x2011, 0x0102, 0x2204, 0xa084, 0xffcf,
+ 0xa105, 0x2012, 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x2947, 0x007e,
+ 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2943, 0x2061,
+ 0x0100, 0x0078, 0x2949, 0x2061, 0x0200, 0x0078, 0x2949, 0x2061,
+ 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0020, 0x609a, 0x62ac,
+ 0x63ac, 0x0c7f, 0x007c, 0x0c7e, 0xd1bc, 0x00c0, 0x2967, 0x007e,
+ 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2963, 0x2061,
+ 0x0100, 0x0078, 0x2969, 0x2061, 0x0200, 0x0078, 0x2969, 0x2061,
+ 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0022, 0x609a, 0x60a4,
+ 0xa084, 0xffdf, 0x60ae, 0x0c7f, 0x007c, 0x0c7e, 0xd1bc, 0x00c0,
+ 0x2989, 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040,
+ 0x2985, 0x2061, 0x0100, 0x0078, 0x298b, 0x2061, 0x0200, 0x0078,
+ 0x298b, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003, 0xa080, 0x0022,
+ 0x609a, 0x60a4, 0xa085, 0x0020, 0x60ae, 0x0c7f, 0x007c, 0x0c7e,
+ 0xd1bc, 0x00c0, 0x29ab, 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec,
+ 0x007f, 0x0040, 0x29a7, 0x2061, 0x0100, 0x0078, 0x29ad, 0x2061,
+ 0x0200, 0x0078, 0x29ad, 0x2061, 0x0100, 0xc1bc, 0x8103, 0x8003,
+ 0xa080, 0x0020, 0x609a, 0x60a4, 0xd2ac, 0x0040, 0x29b9, 0xc2ac,
+ 0xc3f5, 0x62ae, 0x2010, 0x60a4, 0x63ae, 0x2018, 0x0c7f, 0x007c,
+ 0x2091, 0x8000, 0x0c7e, 0x0e7e, 0x6818, 0xa005, 0x0040, 0x2a1f,
+ 0xd1fc, 0x00c0, 0x29cf, 0x2061, 0xa3c0, 0x0078, 0x29d1, 0x2061,
+ 0xa4d0, 0x1078, 0x2a27, 0x0040, 0x2a04, 0x20a9, 0x0101, 0xd1fc,
+ 0x00c0, 0x29de, 0x2061, 0xa2c0, 0x0078, 0x29e0, 0x2061, 0xa3d0,
+ 0x0c7e, 0x1078, 0x2a27, 0x0040, 0x29eb, 0x0c7f, 0x8c60, 0x00f0,
+ 0x29e0, 0x0078, 0x2a1f, 0x007f, 0xd1fc, 0x00c0, 0x29f5, 0x2071,
+ 0x5d40, 0xa082, 0xa2c0, 0x0078, 0x29f9, 0x2071, 0x5d80, 0xa082,
+ 0xa3d0, 0x7082, 0x717e, 0x2001, 0x0004, 0x706e, 0x708b, 0x000f,
+ 0x1078, 0x2765, 0x0078, 0x2a1b, 0x60cc, 0xa005, 0x00c0, 0x2a1f,
+ 0xd1fc, 0x00c0, 0x2a0f, 0x2071, 0x5d40, 0x0078, 0x2a11, 0x2071,
+ 0x5d80, 0x717e, 0x2c00, 0x7086, 0x2001, 0x0006, 0x706e, 0x708b,
+ 0x000f, 0x1078, 0x2765, 0x2001, 0x0000, 0x0078, 0x2a21, 0x2001,
+ 0x0001, 0x2091, 0x8001, 0xa005, 0x0e7f, 0x0c7f, 0x007c, 0x2c04,
+ 0xa005, 0x0040, 0x2a3e, 0x2060, 0x6010, 0xa306, 0x00c0, 0x2a3b,
+ 0x600c, 0xa206, 0x00c0, 0x2a3b, 0x6014, 0xa106, 0x00c0, 0x2a3b,
+ 0xa006, 0x0078, 0x2a40, 0x6000, 0x0078, 0x2a28, 0xa085, 0x0001,
+ 0x007c, 0x0f7e, 0x0e7e, 0x017e, 0xd1bc, 0x00c0, 0x2a59, 0x2079,
+ 0x5d40, 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040,
+ 0x2a55, 0x2071, 0x0100, 0x0078, 0x2a5d, 0x2071, 0x0200, 0x0078,
+ 0x2a5d, 0x2079, 0x5d80, 0x2071, 0x0100, 0x791c, 0xa18c, 0x000f,
+ 0x70ec, 0xa084, 0x0100, 0x007f, 0x0040, 0x2a80, 0x810b, 0x810b,
+ 0x810b, 0x810b, 0xd0bc, 0x00c0, 0x2a7d, 0x007e, 0x2001, 0x5d02,
+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x2a79, 0xa18d, 0x0f00, 0x0078,
+ 0x2a7f, 0xa18d, 0x0800, 0x0078, 0x2a7f, 0xa18d, 0x0f00, 0x2104,
+ 0x0e7f, 0x0f7f, 0x007c, 0x0e7e, 0x2001, 0x5d01, 0x2004, 0xd0ac,
+ 0x00c0, 0x2aed, 0x68e4, 0xa08c, 0x0020, 0x0040, 0x2aed, 0xa084,
+ 0x0006, 0x00c0, 0x2aed, 0x6014, 0xd0fc, 0x00c0, 0x2a9b, 0x2071,
+ 0x61c0, 0x0078, 0x2a9d, 0x2071, 0x6240, 0x8007, 0xa084, 0x000f,
+ 0x8003, 0x8003, 0x8003, 0xae70, 0x7004, 0xa084, 0x000a, 0x00c0,
+ 0x2aed, 0x7108, 0xa194, 0xff00, 0x0040, 0x2aed, 0xa18c, 0x00ff,
+ 0x2001, 0x000a, 0xa106, 0x0040, 0x2ad0, 0x2001, 0x000c, 0xa106,
+ 0x0040, 0x2ad4, 0x2001, 0x0012, 0xa106, 0x0040, 0x2ad8, 0x2001,
+ 0x0014, 0xa106, 0x0040, 0x2adc, 0x2001, 0x0019, 0xa106, 0x0040,
+ 0x2ae0, 0x2001, 0x0032, 0xa106, 0x0040, 0x2ae4, 0x0078, 0x2ae8,
+ 0x2009, 0x000c, 0x0078, 0x2aea, 0x2009, 0x0012, 0x0078, 0x2aea,
+ 0x2009, 0x0014, 0x0078, 0x2aea, 0x2009, 0x0019, 0x0078, 0x2aea,
+ 0x2009, 0x0020, 0x0078, 0x2aea, 0x2009, 0x003f, 0x0078, 0x2aea,
+ 0x2011, 0x0000, 0x2100, 0xa205, 0x700a, 0x0e7f, 0x007c, 0x0068,
+ 0x2aef, 0x2091, 0x8000, 0x2071, 0x0000, 0x007e, 0x7018, 0xd084,
+ 0x00c0, 0x2af6, 0x007f, 0x2071, 0x0010, 0x70ca, 0x007f, 0x70c6,
+ 0x70c3, 0x8002, 0x70db, 0x090a, 0x70df, 0x0000, 0x2071, 0x0000,
+ 0x701b, 0x0001, 0x2091, 0x4080, 0x0078, 0x2b0c, 0x7f3c, 0x7e58,
+ 0x7c30, 0x7d38, 0xa594, 0x003f, 0xa49c, 0x0003, 0xa484, 0x000f,
+ 0x0079, 0x2b1a, 0x2b2c, 0x2b2c, 0x2b2c, 0x2f9a, 0x43b8, 0x2b2a,
+ 0x2b54, 0x2b57, 0x2b2a, 0x2b2a, 0x2b2a, 0x2b2a, 0x2b2a, 0x2b2a,
+ 0x2b2a, 0x2b2a, 0x1078, 0x2aef, 0x8507, 0xa084, 0x001f, 0x0079,
+ 0x2b31, 0x2b5a, 0x2f9a, 0x31b6, 0x32d1, 0x32fc, 0x3587, 0x38a8,
+ 0x38f8, 0x394e, 0x39ca, 0x3aaf, 0x3b58, 0x2b54, 0x30b4, 0x3877,
+ 0x2b51, 0x47e9, 0x4809, 0x49cf, 0x49db, 0x4aba, 0x2b51, 0x2b51,
+ 0x4b95, 0x4b99, 0x47e7, 0x2b51, 0x493a, 0x2b51, 0x46b0, 0x2b57,
+ 0x2b51, 0x1078, 0x2aef, 0x007c, 0x781b, 0x004f, 0x007c, 0x781b,
+ 0x00d6, 0x007c, 0x724e, 0xa584, 0x0001, 0x00c0, 0x46c2, 0x0040,
+ 0x2b6d, 0x1078, 0x2aef, 0x7003, 0x0000, 0x7057, 0x0000, 0x704f,
+ 0x0000, 0x7047, 0x0000, 0x1078, 0x436b, 0x7068, 0xa06d, 0x0040,
+ 0x2b7a, 0x70f8, 0xa084, 0x0001, 0x716c, 0xa105, 0x00c0, 0x2b7a,
+ 0x0078, 0x2ce3, 0x706c, 0xa084, 0x0007, 0x0079, 0x2b7f, 0x2b87,
+ 0x2c02, 0x2c0b, 0x2c16, 0x2c21, 0x2cc9, 0x2c2c, 0x2c02, 0x7830,
+ 0xd0bc, 0x00c0, 0x2b53, 0x71f4, 0xd1b4, 0x00c0, 0x2be0, 0x70c4,
+ 0xa086, 0x0001, 0x0040, 0x2b53, 0x1078, 0x4351, 0x00c0, 0x2b53,
+ 0x70d4, 0xa06d, 0x6800, 0xa065, 0xa055, 0x789b, 0x0010, 0x6b0c,
+ 0x7baa, 0x6808, 0xa045, 0x6d10, 0x6804, 0xa06d, 0xa05d, 0xa886,
+ 0x0001, 0x0040, 0x2bae, 0x69bc, 0x7daa, 0x79aa, 0x68c0, 0xa04d,
+ 0x6e1c, 0x7830, 0xd0bc, 0x00c0, 0x2b53, 0x2001, 0x0010, 0x0078,
+ 0x2e49, 0x7068, 0xa005, 0x00c0, 0x2b53, 0x1078, 0x4351, 0x00c0,
+ 0x2b53, 0x0c7e, 0x0d7e, 0x70d4, 0xa06d, 0x6800, 0xa065, 0xa055,
+ 0x789b, 0x0010, 0x6b0c, 0x7baa, 0x6808, 0xa045, 0x6d10, 0x6804,
+ 0xa06d, 0xa05d, 0xa886, 0x0001, 0x0040, 0x2bd9, 0x69bc, 0x7daa,
+ 0x79aa, 0x68c0, 0xa04d, 0x6e1c, 0x2001, 0x0020, 0x0078, 0x2e49,
+ 0x1078, 0x433b, 0x00c0, 0x2b53, 0x70dc, 0xa06d, 0x6814, 0xc0fc,
+ 0x8007, 0x7882, 0x68b4, 0x785a, 0x781b, 0x004f, 0x7050, 0xc08d,
+ 0x780a, 0x68bc, 0x7042, 0x70f4, 0xc0b4, 0x70f6, 0x70d8, 0xa065,
+ 0x68c0, 0x7062, 0x7003, 0x0002, 0x2d00, 0x7056, 0xad80, 0x0009,
+ 0x7046, 0x007c, 0x1078, 0x433b, 0x00c0, 0x2c0a, 0x781b, 0x0048,
+ 0x7003, 0x0004, 0x007c, 0x1078, 0x433b, 0x00c0, 0x2c15, 0x2011,
+ 0x000c, 0x1078, 0x2c3c, 0x7003, 0x0004, 0x007c, 0x1078, 0x433b,
+ 0x00c0, 0x2c20, 0x2011, 0x0006, 0x1078, 0x2c3c, 0x7003, 0x0004,
+ 0x007c, 0x1078, 0x433b, 0x00c0, 0x2c2b, 0x2011, 0x000d, 0x1078,
+ 0x2c3c, 0x7003, 0x0004, 0x007c, 0x1078, 0x433b, 0x00c0, 0x2c3b,
+ 0x2011, 0x0006, 0x1078, 0x2c3c, 0x7084, 0x7087, 0x0000, 0x2068,
+ 0x7056, 0x7003, 0x0001, 0x007c, 0x717c, 0xc1fc, 0x8107, 0x7882,
+ 0x789b, 0x0010, 0xa286, 0x000c, 0x00c0, 0x2c4b, 0x7aaa, 0x2001,
+ 0x0001, 0x0078, 0x2c60, 0xa18c, 0x001f, 0xa18d, 0x00c0, 0x79aa,
+ 0xa286, 0x000d, 0x0040, 0x2c59, 0x7aaa, 0x2001, 0x0002, 0x0078,
+ 0x2c60, 0x78ab, 0x0020, 0x7180, 0x79aa, 0x7aaa, 0x2001, 0x0004,
+ 0x789b, 0x0060, 0x78aa, 0x785b, 0x0004, 0x781b, 0x00e6, 0x1078,
+ 0x436b, 0x708b, 0x000f, 0x70f4, 0xd0b4, 0x0040, 0x2c7c, 0xc0b4,
+ 0x70f6, 0x0c7e, 0x70d8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a,
+ 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, 0x7010, 0xa005, 0x00c0,
+ 0x2c8b, 0x70f4, 0xd0b4, 0x0040, 0x2c8c, 0x70d8, 0xac06, 0x00c0,
+ 0x2c8c, 0x1078, 0x2c6b, 0x007c, 0x017e, 0x71c4, 0xa186, 0x0001,
+ 0x0040, 0x2cbe, 0x0d7e, 0x027e, 0x2100, 0x2011, 0x0001, 0xa212,
+ 0x70d4, 0x2068, 0x6800, 0xac06, 0x0040, 0x2ca5, 0x8211, 0x0040,
+ 0x2cbc, 0x1078, 0x2cc0, 0x0078, 0x2c9a, 0x0c7e, 0x2100, 0x2011,
+ 0x0001, 0xa212, 0x70d4, 0x2068, 0x6800, 0x2060, 0x6008, 0xa084,
+ 0xfbef, 0x600a, 0x8211, 0x0040, 0x2cb9, 0x1078, 0x2cc0, 0x0078,
+ 0x2cac, 0x70c7, 0x0001, 0x0c7f, 0x027f, 0x0d7f, 0x017f, 0x007c,
+ 0xade8, 0x0005, 0x70cc, 0xad06, 0x00c0, 0x2cc8, 0x70c8, 0x2068,
+ 0x007c, 0x1078, 0x433b, 0x00c0, 0x2b53, 0x7084, 0x2068, 0x777c,
+ 0x1078, 0x41e3, 0x2c50, 0x1078, 0x443a, 0x789b, 0x0010, 0x6814,
+ 0xa084, 0x001f, 0xc0bd, 0x78aa, 0x6e1c, 0x2041, 0x0001, 0x2001,
+ 0x0004, 0x0078, 0x2e4f, 0x1078, 0x433b, 0x00c0, 0x2b53, 0x789b,
+ 0x0010, 0x7068, 0x2068, 0x6f14, 0x1078, 0x2c6b, 0x1078, 0x41e3,
+ 0x2c50, 0x1078, 0x443a, 0x6824, 0xa005, 0x0040, 0x2cff, 0xa082,
+ 0x0006, 0x0048, 0x2cfd, 0x0078, 0x2cff, 0x6827, 0x0005, 0x6b14,
+ 0xa39c, 0x001f, 0xa39d, 0x00c0, 0x2960, 0x6000, 0x2a60, 0xa084,
+ 0x8000, 0x0040, 0x2d0f, 0xa684, 0x0001, 0x0040, 0x2d11, 0xa39c,
+ 0xffbf, 0x7baa, 0x2031, 0x0020, 0x2041, 0x0001, 0x2001, 0x0003,
+ 0x0078, 0x2e4f, 0xc28d, 0x72f6, 0x72e0, 0xa200, 0xa015, 0x715c,
+ 0x8108, 0xa12a, 0x0048, 0x2d25, 0x71e0, 0x2164, 0x6504, 0x85ff,
+ 0x00c0, 0x2d40, 0x715e, 0x8421, 0x00c0, 0x2d20, 0x70f4, 0xd08c,
+ 0x0040, 0x2d38, 0x70f0, 0xa005, 0x00c0, 0x2d38, 0x70f3, 0x000a,
+ 0x704c, 0xa005, 0x0040, 0x46c2, 0x007c, 0x2200, 0x0078, 0x2d2a,
+ 0x70f4, 0xc08c, 0x70f6, 0x70f3, 0x0000, 0x6034, 0xa005, 0x00c0,
+ 0x2d3d, 0x6708, 0xa784, 0x073f, 0x0040, 0x2d6a, 0xd7d4, 0x00c0,
+ 0x2d3d, 0xa784, 0x0021, 0x00c0, 0x2d3d, 0xd78c, 0x0040, 0x2d5d,
+ 0xd794, 0x0040, 0x2d3d, 0xc794, 0x670a, 0xa784, 0x0218, 0x00c0,
+ 0x2d3d, 0xd7c4, 0x0040, 0x2d6a, 0x6018, 0xa005, 0x00c0, 0x2d3d,
+ 0xc7c4, 0x670a, 0x2568, 0x6823, 0x0000, 0x6e1c, 0xa684, 0x000e,
+ 0x6318, 0x0040, 0x2d7b, 0x601c, 0xa302, 0x0048, 0x2d7e, 0x0040,
+ 0x2d7e, 0x0078, 0x2d3d, 0x83ff, 0x00c0, 0x2d3d, 0x2d58, 0x2c50,
+ 0x715e, 0x68cf, 0x0000, 0xd7bc, 0x00c0, 0x2d88, 0x7024, 0x6022,
+ 0xc7bc, 0x670a, 0x68c0, 0xa065, 0xa04d, 0x6100, 0x2a60, 0x2041,
+ 0x0001, 0x6b14, 0xa39c, 0x001f, 0xa39d, 0x00c0, 0xd1fc, 0x0040,
+ 0x2d9c, 0xd684, 0x0040, 0x2d9e, 0xa39c, 0xffbf, 0xd6a4, 0x0040,
+ 0x2da3, 0xa39d, 0x0020, 0xa684, 0x000e, 0x00c0, 0x2df4, 0xc7a5,
+ 0x670a, 0x2c00, 0x68c6, 0x77c4, 0xa786, 0x0001, 0x00c0, 0x2dca,
+ 0x70f4, 0xd0b4, 0x00c0, 0x2dca, 0x7000, 0xa082, 0x0001, 0x00c8,
+ 0x2dca, 0x7010, 0xa005, 0x00c0, 0x2dca, 0x1078, 0x4351, 0x00c0,
+ 0x2dca, 0x7830, 0xd0bc, 0x00c0, 0x2dca, 0x789b, 0x0010, 0x7baa,
+ 0x0078, 0x2e47, 0x8739, 0x77c6, 0x2750, 0x77d0, 0xa7b0, 0x0005,
+ 0x70cc, 0xa606, 0x00c0, 0x2dd5, 0x76c8, 0x76d2, 0x2c3a, 0x8738,
+ 0x2d3a, 0x8738, 0x283a, 0x8738, 0x233a, 0x8738, 0x253a, 0x7830,
+ 0xd0bc, 0x0040, 0x2deb, 0x2091, 0x301d, 0x70f4, 0xa084, 0x303d,
+ 0x2091, 0x8000, 0x2090, 0xaad5, 0x0000, 0x0040, 0x2df3, 0x8421,
+ 0x2200, 0x00c0, 0x2d1f, 0x007c, 0xd1dc, 0x0040, 0x3de7, 0x2029,
+ 0x0020, 0xd69c, 0x00c0, 0x2e01, 0x8528, 0xd68c, 0x00c0, 0x2e01,
+ 0x8528, 0x8840, 0x6f14, 0x610c, 0x8108, 0xa18c, 0x00ff, 0x70ec,
+ 0xa160, 0x2c64, 0x8cff, 0x0040, 0x2e1f, 0x6014, 0xa706, 0x00c0,
+ 0x2e09, 0x60b8, 0x8001, 0x60ba, 0x00c0, 0x2e04, 0x2a60, 0x6008,
+ 0xc0c5, 0x600a, 0x2200, 0x8421, 0x00c0, 0x2d1f, 0x007c, 0x2a60,
+ 0x610e, 0x69be, 0x2c00, 0x68c6, 0x8840, 0x6008, 0xc0d5, 0x600a,
+ 0x77c4, 0xa786, 0x0001, 0x00c0, 0x2dca, 0x70f4, 0xd0b4, 0x00c0,
+ 0x2dca, 0x7000, 0xa082, 0x0001, 0x00c8, 0x2dca, 0x7010, 0xa005,
+ 0x00c0, 0x2dca, 0x1078, 0x4351, 0x00c0, 0x2dca, 0x7830, 0xd0bc,
+ 0x00c0, 0x2dca, 0x789b, 0x0010, 0x7baa, 0x7daa, 0x79aa, 0x2001,
+ 0x0002, 0x007e, 0x6018, 0x8000, 0x601a, 0x0078, 0x2e50, 0x007e,
+ 0x2960, 0x6104, 0x2a60, 0xa184, 0x0018, 0x0040, 0x2e6b, 0xa184,
+ 0x0010, 0x0040, 0x2e5f, 0x1078, 0x4002, 0x00c0, 0x2e8b, 0xd19c,
+ 0x0040, 0x2e6b, 0x69a0, 0xa184, 0x0600, 0x00c0, 0x2e6b, 0x1078,
+ 0x3ee1, 0x0078, 0x2e8b, 0x69a0, 0xa184, 0x1e00, 0x0040, 0x2e95,
+ 0xd1dc, 0x0040, 0x2e81, 0x0c7e, 0x2960, 0x6000, 0xc0ed, 0x6002,
+ 0x6104, 0xc1a5, 0x6106, 0x0c7f, 0x1078, 0x4002, 0x00c0, 0x2e8b,
+ 0x69a0, 0xd1cc, 0x0040, 0x2e88, 0x1078, 0x3f41, 0x0078, 0x2e8b,
+ 0xd1d4, 0x00c0, 0x2e67, 0x69a0, 0xd1e4, 0x0040, 0x2e95, 0x6914,
+ 0xa18c, 0xff00, 0x810f, 0x1078, 0x2953, 0x027f, 0xa68c, 0x00e0,
+ 0xa684, 0x0060, 0x0040, 0x2ea1, 0xa086, 0x0060, 0x00c0, 0x2ea1,
+ 0xc1f5, 0xa18d, 0x0104, 0x69b6, 0x789b, 0x0060, 0x2800, 0x78aa,
+ 0x6818, 0xc0fd, 0x681a, 0xd6bc, 0x0040, 0x2ebc, 0xc0fc, 0x708f,
+ 0x0000, 0xa08a, 0x000d, 0x0050, 0x2eba, 0xa08a, 0x000c, 0x718e,
+ 0x2001, 0x000c, 0x800c, 0x7192, 0x78aa, 0x3518, 0x3340, 0x3428,
+ 0x80ac, 0xaf80, 0x002b, 0x20a0, 0x789b, 0x0000, 0xad80, 0x000b,
+ 0x2098, 0x53a6, 0x23a8, 0x2898, 0x25a0, 0xa286, 0x0020, 0x00c0,
+ 0x2eef, 0x70f4, 0xc0b5, 0x70f6, 0x2c00, 0x70da, 0x2d00, 0x70de,
+ 0xa286, 0x0002, 0x0040, 0x2f1b, 0x70c4, 0x8000, 0x70c6, 0x74d4,
+ 0xa498, 0x0005, 0x70cc, 0xa306, 0x00c0, 0x2ee7, 0x73c8, 0x73d6,
+ 0xa286, 0x0010, 0x0040, 0x2b53, 0x0d7f, 0x0c7f, 0x007c, 0x7000,
+ 0xa005, 0x00c0, 0x2ed1, 0xa286, 0x0002, 0x00c0, 0x2f35, 0x1078,
+ 0x433b, 0x00c0, 0x2ed1, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x68b4,
+ 0x785a, 0x781b, 0x004f, 0x7050, 0xc08d, 0x780a, 0x127e, 0x0d7e,
+ 0x0c7e, 0x70f4, 0xa084, 0x2700, 0x2090, 0x0c7f, 0x0d7f, 0x127f,
+ 0x2900, 0x7062, 0x68bc, 0x7042, 0x7003, 0x0002, 0x2d00, 0x7056,
+ 0xad80, 0x0009, 0x7046, 0x7830, 0xd0bc, 0x0040, 0x2f27, 0x2091,
+ 0x301d, 0x70f4, 0xa084, 0x303d, 0x2091, 0x8000, 0x2090, 0x70c4,
+ 0xa005, 0x00c0, 0x2f2c, 0x007c, 0x8421, 0x0040, 0x2f2b, 0x7258,
+ 0x70e0, 0xa200, 0xa015, 0x0078, 0x2d1f, 0xa286, 0x0010, 0x00c0,
+ 0x2f60, 0x1078, 0x433b, 0x00c0, 0x2ed1, 0x6814, 0xc0fc, 0x8007,
+ 0x7882, 0x68b4, 0x785a, 0x781b, 0x004f, 0x7050, 0xc08d, 0x780a,
+ 0x70c4, 0x8000, 0x70c6, 0x74d4, 0xa490, 0x0005, 0x70cc, 0xa206,
+ 0x00c0, 0x2f53, 0x72c8, 0x72d6, 0x2900, 0x7062, 0x68bc, 0x7042,
+ 0x7003, 0x0002, 0x2d00, 0x7056, 0xad80, 0x0009, 0x7046, 0x007c,
+ 0x6bb4, 0xa39d, 0x2000, 0x7b5a, 0x6814, 0xc0fc, 0x8007, 0x7882,
+ 0x6b94, 0x7bd6, 0x7bde, 0x6e98, 0x7ed2, 0x7eda, 0x781b, 0x004f,
+ 0x2900, 0x7062, 0x7202, 0x7050, 0xc08d, 0x780a, 0x7200, 0x2300,
+ 0xa605, 0x0040, 0x2f8c, 0x70f4, 0xa084, 0x2700, 0xa086, 0x2300,
+ 0x00c0, 0x2f86, 0x2009, 0x0000, 0x0078, 0x2f88, 0x2009, 0x0001,
+ 0xa284, 0x000f, 0x1079, 0x2f90, 0xad80, 0x0009, 0x7046, 0x007c,
+ 0x2f98, 0x5514, 0x5514, 0x5501, 0x5514, 0x2f98, 0x2f98, 0x2f98,
+ 0x1078, 0x2aef, 0x1078, 0x433b, 0x7808, 0xa084, 0xfffc, 0x780a,
+ 0x0f7e, 0x2079, 0x5d00, 0x78b0, 0x0f7f, 0xd084, 0x0040, 0x2fc1,
+ 0x706c, 0xa086, 0x0001, 0x00c0, 0x2faf, 0x0078, 0x3087, 0x706c,
+ 0xa086, 0x0005, 0x00c0, 0x2fbf, 0x7084, 0x2068, 0x681b, 0x0004,
+ 0x6817, 0x0000, 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822, 0x706f,
+ 0x0000, 0x70c7, 0x0000, 0x70c8, 0x70d2, 0x70d6, 0x70f8, 0xc084,
+ 0x70fa, 0x1078, 0x2c6b, 0xa684, 0x5f00, 0x681e, 0x6a18, 0xd2fc,
+ 0x0040, 0x2fd4, 0x2011, 0x0004, 0x716c, 0xa186, 0x0001, 0x0040,
+ 0x2fe8, 0xa186, 0x0007, 0x00c0, 0x2fe1, 0x701b, 0x0005, 0x0078,
+ 0x2fe8, 0x701b, 0x0001, 0x70f4, 0xc0dd, 0x70f6, 0x0078, 0x2fe8,
+ 0x2001, 0x5d08, 0x2004, 0xa084, 0x00ff, 0xa086, 0x0018, 0x0040,
+ 0x2ff8, 0x7014, 0x7012, 0xa005, 0x00c0, 0x2ff8, 0x70c7, 0x0001,
+ 0x1078, 0x5218, 0x157e, 0x20a9, 0x0010, 0x2039, 0x0000, 0x1078,
+ 0x40f9, 0xa7b8, 0x0100, 0x00f0, 0x2fff, 0x157f, 0x7000, 0x0079,
+ 0x3009, 0x303a, 0x301c, 0x301c, 0x3011, 0x303a, 0x303a, 0x303a,
+ 0x303a, 0x7068, 0xa005, 0x0040, 0x303a, 0xad06, 0x00c0, 0x301c,
+ 0x6800, 0x706a, 0x0078, 0x302e, 0x6820, 0xd084, 0x00c0, 0x302a,
+ 0x6f14, 0x1078, 0x41e3, 0x6008, 0xc0d4, 0x600a, 0x1078, 0x3dbf,
+ 0x0078, 0x302e, 0x7064, 0x2060, 0x6800, 0x6002, 0x6a1a, 0x6817,
+ 0x0000, 0x682b, 0x0000, 0x6820, 0xa084, 0x00ff, 0xc09d, 0x6822,
+ 0x1078, 0x21ca, 0x2011, 0x0004, 0xb284, 0x0400, 0x00c0, 0x3044,
+ 0x2021, 0xa3c0, 0x0078, 0x3046, 0x2021, 0xa4d0, 0x1078, 0x3095,
+ 0xb284, 0x0400, 0x0040, 0x3050, 0x2021, 0x5d9a, 0x0078, 0x3052,
+ 0x2021, 0x5d5a, 0x1078, 0x3095, 0x157e, 0x20a9, 0x0101, 0xb284,
+ 0x0400, 0x00c0, 0x305f, 0x2021, 0xa2c0, 0x0078, 0x3061, 0x2021,
+ 0xa3d0, 0x1078, 0x3095, 0x8420, 0x00f0, 0x3061, 0xb284, 0x0300,
+ 0x0040, 0x306e, 0x2061, 0x62c0, 0x0078, 0x3070, 0x2061, 0x82c0,
+ 0x2021, 0x0002, 0x20a9, 0x0100, 0x6018, 0x6110, 0x81ff, 0x0040,
+ 0x307d, 0xa102, 0x0050, 0x307d, 0x6012, 0x601b, 0x0000, 0xace0,
+ 0x0010, 0x00f0, 0x3074, 0x8421, 0x00c0, 0x3072, 0x157f, 0x7094,
+ 0xa084, 0x8000, 0x0040, 0x308e, 0x1078, 0x44aa, 0x706f, 0x0000,
+ 0x7003, 0x0000, 0x7057, 0x0000, 0x007c, 0x047e, 0x2404, 0xa005,
+ 0x0040, 0x30b0, 0x2068, 0x6800, 0x007e, 0x6a1a, 0x6817, 0x0000,
+ 0x682b, 0x0000, 0x68b4, 0xa084, 0x5f00, 0x681e, 0x6820, 0xa084,
+ 0x00ff, 0xc09d, 0x6822, 0x1078, 0x21ca, 0x007f, 0x0078, 0x3097,
+ 0x047f, 0x2023, 0x0000, 0x007c, 0xa282, 0x0003, 0x0050, 0x30ba,
+ 0x1078, 0x2aef, 0x2300, 0x0079, 0x30bd, 0x30c0, 0x314b, 0x3168,
+ 0xa282, 0x0002, 0x0040, 0x30c6, 0x1078, 0x2aef, 0x706c, 0x706f,
+ 0x0000, 0x708b, 0x0000, 0x0079, 0x30cd, 0x30d5, 0x30d5, 0x30d7,
+ 0x3117, 0x3df3, 0x30d5, 0x3117, 0x30d5, 0x1078, 0x2aef, 0x777c,
+ 0x1078, 0x40f9, 0x777c, 0xa7bc, 0x8f00, 0x1078, 0x41e3, 0x6018,
+ 0xa005, 0x0040, 0x310e, 0xd7fc, 0x00c0, 0x30ea, 0x2021, 0xa3c0,
+ 0x0078, 0x30ec, 0x2021, 0xa4d0, 0x2009, 0x0005, 0x2011, 0x0010,
+ 0x1078, 0x3183, 0x0040, 0x310e, 0x157e, 0x20a9, 0x0101, 0xd7fc,
+ 0x00c0, 0x30fe, 0x2021, 0xa2c0, 0x0078, 0x3100, 0x2021, 0xa3d0,
+ 0x047e, 0x2009, 0x0005, 0x2011, 0x0010, 0x1078, 0x3183, 0x047f,
+ 0x0040, 0x310d, 0x8420, 0x00f0, 0x3100, 0x157f, 0x8738, 0xa784,
+ 0x001f, 0x00c0, 0x30dd, 0x0078, 0x2b63, 0x0078, 0x2b63, 0x777c,
+ 0x1078, 0x41e3, 0x6018, 0xa005, 0x0040, 0x3149, 0xd7fc, 0x00c0,
+ 0x3125, 0x2021, 0xa3c0, 0x0078, 0x3127, 0x2021, 0xa4d0, 0x2009,
+ 0x0005, 0x2011, 0x0020, 0x1078, 0x3183, 0x0040, 0x3149, 0x157e,
+ 0x20a9, 0x0101, 0xd7fc, 0x00c0, 0x3139, 0x2021, 0xa2c0, 0x0078,
+ 0x313b, 0x2021, 0xa3d0, 0x047e, 0x2009, 0x0005, 0x2011, 0x0020,
+ 0x1078, 0x3183, 0x047f, 0x0040, 0x3148, 0x8420, 0x00f0, 0x313b,
+ 0x157f, 0x0078, 0x2b63, 0x2200, 0x0079, 0x314e, 0x3151, 0x3153,
+ 0x3153, 0x1078, 0x2aef, 0x2009, 0x0012, 0x706c, 0xa086, 0x0002,
+ 0x0040, 0x315c, 0x2009, 0x000e, 0x6818, 0xd0fc, 0x0040, 0x3161,
+ 0x691a, 0x706f, 0x0000, 0x70f4, 0xc0dd, 0x70f6, 0x0078, 0x42dd,
+ 0x2200, 0x0079, 0x316b, 0x3170, 0x3153, 0x316e, 0x1078, 0x2aef,
+ 0x1078, 0x5218, 0x7000, 0xa086, 0x0002, 0x00c0, 0x3d6d, 0x1078,
+ 0x3dd4, 0x6008, 0xa084, 0xfbef, 0x600a, 0x1078, 0x3d5e, 0x0040,
+ 0x3d6d, 0x0078, 0x2b63, 0x2404, 0xa005, 0x0040, 0x31b2, 0x2068,
+ 0x2d04, 0x007e, 0x6814, 0xa706, 0x0040, 0x3192, 0x2d20, 0x007f,
+ 0x0078, 0x3184, 0x007f, 0x2022, 0x6817, 0x0000, 0x682b, 0x0000,
+ 0x68b4, 0xa084, 0x5f00, 0x681e, 0x691a, 0x6820, 0xa084, 0x00ff,
+ 0xa205, 0x6822, 0x682b, 0x0000, 0x1078, 0x21ca, 0x6010, 0x8001,
+ 0x6012, 0x6008, 0xa084, 0xf9ef, 0x600a, 0x1078, 0x2c8c, 0x1078,
+ 0x3dd4, 0x007c, 0xa085, 0x0001, 0x0078, 0x31b1, 0x2300, 0x0079,
+ 0x31b9, 0x31be, 0x31bc, 0x3264, 0x1078, 0x2aef, 0x78ec, 0xa084,
+ 0x0001, 0x00c0, 0x31d2, 0x7000, 0xa086, 0x0004, 0x00c0, 0x31ca,
+ 0x0078, 0x3209, 0x1078, 0x3dd4, 0x6008, 0xa084, 0xf9ef, 0x600a,
+ 0x0078, 0x3d6d, 0x78e4, 0xa005, 0x00d0, 0x3209, 0x3208, 0x007e,
+ 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x31e3, 0xa18c,
+ 0x0300, 0x0078, 0x31e5, 0xa18c, 0x0400, 0x0040, 0x31eb, 0x0018,
+ 0x2b53, 0x0078, 0x31ed, 0x0028, 0x2b53, 0x2008, 0xa084, 0x0030,
+ 0x00c0, 0x31f5, 0x781b, 0x004f, 0x007c, 0x78ec, 0xa084, 0x0003,
+ 0x0040, 0x31f2, 0x2100, 0xa084, 0x0007, 0x0079, 0x31ff, 0x3240,
+ 0x324a, 0x3233, 0x3207, 0x4330, 0x4330, 0x3207, 0x3257, 0x1078,
+ 0x2aef, 0x7000, 0xa086, 0x0004, 0x00c0, 0x3223, 0x706c, 0xa086,
+ 0x0002, 0x00c0, 0x3219, 0x2011, 0x0002, 0x2019, 0x0000, 0x0078,
+ 0x30b4, 0x706c, 0xa086, 0x0006, 0x0040, 0x3213, 0x706c, 0xa086,
+ 0x0004, 0x0040, 0x3213, 0x79e4, 0xa184, 0x0030, 0x0040, 0x322d,
+ 0x78ec, 0xa084, 0x0003, 0x00c0, 0x322f, 0x0078, 0x3877, 0x2001,
+ 0x0003, 0x0078, 0x359b, 0x6818, 0xd0fc, 0x0040, 0x3239, 0x681b,
+ 0x001d, 0x1078, 0x40c8, 0x782b, 0x3008, 0x781b, 0x0055, 0x007c,
+ 0x6818, 0xd0fc, 0x0040, 0x3246, 0x681b, 0x001d, 0x1078, 0x40c8,
+ 0x0078, 0x4305, 0x6818, 0xd0fc, 0x0040, 0x3250, 0x681b, 0x001d,
+ 0x1078, 0x40c8, 0x782b, 0x3008, 0x781b, 0x00d3, 0x007c, 0x6818,
+ 0xd0fc, 0x0040, 0x325d, 0x681b, 0x001d, 0x1078, 0x40c8, 0x782b,
+ 0x3008, 0x781b, 0x0093, 0x007c, 0xa584, 0x000f, 0x00c0, 0x3281,
+ 0x7000, 0x0079, 0x326b, 0x2b63, 0x3273, 0x3275, 0x3d6d, 0x3d6d,
+ 0x3d6d, 0x3273, 0x3273, 0x1078, 0x2aef, 0x1078, 0x3dd4, 0x6008,
+ 0xa084, 0xfbef, 0x600a, 0x1078, 0x3d5e, 0x0040, 0x3d6d, 0x0078,
+ 0x2b63, 0x78e4, 0xa005, 0x00d0, 0x3209, 0x3208, 0x007e, 0x2001,
+ 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x3292, 0xa18c, 0x0300,
+ 0x0078, 0x3294, 0xa18c, 0x0400, 0x0040, 0x329a, 0x0018, 0x3209,
+ 0x0078, 0x329c, 0x0028, 0x3209, 0x2008, 0xa084, 0x0030, 0x00c0,
+ 0x32a4, 0x781b, 0x004f, 0x007c, 0x78ec, 0xa084, 0x0003, 0x0040,
+ 0x32a1, 0x2100, 0xa184, 0x0007, 0x0079, 0x32ae, 0x32bf, 0x32c3,
+ 0x32b8, 0x32b6, 0x4330, 0x4330, 0x32b6, 0x4328, 0x1078, 0x2aef,
+ 0x1078, 0x40d0, 0x782b, 0x3008, 0x781b, 0x0055, 0x007c, 0x1078,
+ 0x40d0, 0x0078, 0x4305, 0x1078, 0x40d0, 0x782b, 0x3008, 0x781b,
+ 0x00d3, 0x007c, 0x1078, 0x40d0, 0x782b, 0x3008, 0x781b, 0x0093,
+ 0x007c, 0x2300, 0x0079, 0x32d4, 0x32d9, 0x32d7, 0x32db, 0x1078,
+ 0x2aef, 0x0078, 0x39ca, 0x681b, 0x0016, 0x78a3, 0x0000, 0x79e4,
+ 0xa184, 0x0030, 0x0040, 0x39ca, 0x78ec, 0xa084, 0x0003, 0x0040,
+ 0x39ca, 0xa184, 0x0100, 0x0040, 0x32df, 0xa184, 0x0007, 0x0079,
+ 0x32f1, 0x32f9, 0x32c3, 0x3233, 0x42dd, 0x4330, 0x4330, 0x42dd,
+ 0x4328, 0x1078, 0x42ed, 0x007c, 0xa282, 0x0005, 0x0050, 0x3302,
+ 0x1078, 0x2aef, 0x2300, 0x0079, 0x3305, 0x3308, 0x354d, 0x355a,
+ 0x2200, 0x0079, 0x330b, 0x3325, 0x3312, 0x3325, 0x3310, 0x3530,
+ 0x1078, 0x2aef, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa082,
+ 0x0020, 0x0048, 0x40a7, 0xa08a, 0x0004, 0x00c8, 0x40a7, 0x0079,
+ 0x3321, 0x40a7, 0x40a7, 0x40a7, 0x4051, 0x789b, 0x0018, 0x79a8,
+ 0xa184, 0x0080, 0x0040, 0x3336, 0x0078, 0x40a7, 0x7000, 0xa005,
+ 0x00c0, 0x332c, 0x2011, 0x0004, 0x0078, 0x3b6b, 0xa184, 0x00ff,
+ 0xa08a, 0x0010, 0x00c8, 0x40a7, 0x0079, 0x333e, 0x3350, 0x334e,
+ 0x3366, 0x336a, 0x342e, 0x40a7, 0x40a7, 0x3430, 0x40a7, 0x40a7,
+ 0x352c, 0x352c, 0x40a7, 0x40a7, 0x40a7, 0x352e, 0x1078, 0x2aef,
+ 0xa684, 0x1000, 0x0040, 0x335c, 0x2001, 0x0500, 0x8000, 0x8000,
+ 0x783a, 0x781b, 0x0091, 0x007c, 0x6818, 0xd0fc, 0x0040, 0x3364,
+ 0x681b, 0x001d, 0x0078, 0x3354, 0x0078, 0x42dd, 0x681b, 0x001d,
+ 0x0078, 0x40b5, 0x6920, 0x6922, 0xa684, 0x1800, 0x00c0, 0x33be,
+ 0x6820, 0xa084, 0x0001, 0x00c0, 0x33c4, 0x6818, 0xa086, 0x0008,
+ 0x00c0, 0x337c, 0x681b, 0x0000, 0xd6d4, 0x0040, 0x342b, 0xd6bc,
+ 0x0040, 0x33bb, 0x708f, 0x0000, 0x6818, 0xa084, 0x003f, 0xa08a,
+ 0x000d, 0x0050, 0x33bb, 0xa08a, 0x000c, 0x718e, 0x2001, 0x000c,
+ 0x800c, 0x7192, 0x789b, 0x0061, 0x78aa, 0x157e, 0x137e, 0x147e,
+ 0x017e, 0xb28c, 0x0300, 0x0040, 0x33ad, 0x007e, 0x2001, 0x5d02,
+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x33a9, 0x20a1, 0x012b, 0x0078,
+ 0x33af, 0x20a1, 0x022b, 0x0078, 0x33af, 0x20a1, 0x012b, 0x017f,
+ 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6,
+ 0x147f, 0x137f, 0x157f, 0x781b, 0x0057, 0x007c, 0xd6e4, 0x0040,
+ 0x33c4, 0x781b, 0x0064, 0x007c, 0xa684, 0x0060, 0x0040, 0x3428,
+ 0xd6dc, 0x0040, 0x3428, 0xd6fc, 0x00c0, 0x33d0, 0x0078, 0x33e9,
+ 0xc6fc, 0x7e5a, 0x6eb6, 0x789b, 0x0076, 0x7aac, 0x79ac, 0x78ac,
+ 0x801b, 0x00c8, 0x33dc, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291,
+ 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303,
+ 0x68ae, 0xd6f4, 0x0040, 0x33ef, 0xc6f4, 0x7e5a, 0x6eb6, 0x7000,
+ 0xa086, 0x0003, 0x00c0, 0x33fd, 0x007e, 0x1078, 0x5218, 0x1078,
+ 0x5514, 0x007f, 0x781b, 0x0063, 0x007c, 0xa006, 0x1078, 0x564d,
+ 0x6ab0, 0x69ac, 0x6c98, 0x6b94, 0x2200, 0xa105, 0x0040, 0x340c,
+ 0x2200, 0xa422, 0x2100, 0xa31b, 0x6caa, 0x7cd2, 0x7cda, 0x6ba6,
+ 0x7bd6, 0x7bde, 0x2300, 0xa405, 0x00c0, 0x341c, 0xc6f5, 0x7e5a,
+ 0x6eb6, 0x781b, 0x0063, 0x007c, 0x781b, 0x0063, 0x2200, 0xa115,
+ 0x00c0, 0x3425, 0x1078, 0x5514, 0x007c, 0x1078, 0x5568, 0x007c,
+ 0x781b, 0x0064, 0x007c, 0x781b, 0x0057, 0x007c, 0x1078, 0x2aef,
+ 0x0078, 0x3480, 0x6920, 0xd1c4, 0x0040, 0x3445, 0xc1c4, 0x6922,
+ 0x0c7e, 0x7060, 0x2060, 0x6000, 0xc0e4, 0x6002, 0x6004, 0xa084,
+ 0xfff5, 0x6006, 0x0c7f, 0x0078, 0x3474, 0xd1cc, 0x0040, 0x3474,
+ 0xc1cc, 0x6922, 0x0c7e, 0x7060, 0x2060, 0x6000, 0xc0ec, 0x6002,
+ 0x6004, 0xc0a4, 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xd19c, 0x0040,
+ 0x3474, 0x1078, 0x41df, 0x1078, 0x3ee1, 0x88ff, 0x0040, 0x3474,
+ 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xc695, 0x7e5a, 0xd6d4,
+ 0x00c0, 0x346f, 0x782b, 0x3008, 0x781b, 0x0055, 0x007c, 0x782b,
+ 0x3008, 0x781b, 0x0064, 0x007c, 0x7e58, 0xd6d4, 0x00c0, 0x347b,
+ 0x781b, 0x0057, 0x007c, 0x781b, 0x0064, 0x007c, 0x0078, 0x40ae,
+ 0x2019, 0x0000, 0x7990, 0xa18c, 0x0007, 0x00c0, 0x348e, 0x6820,
+ 0xa084, 0x0100, 0x0040, 0x347e, 0x2009, 0x0008, 0x789b, 0x0010,
+ 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, 0x00c0, 0x34c5, 0x2300,
+ 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040, 0x34bd, 0x0048, 0x34a2,
+ 0x0078, 0x34bf, 0xa380, 0x0002, 0xa102, 0x00c8, 0x34bd, 0x6920,
+ 0xa18c, 0xfcff, 0x6922, 0x0c7e, 0x7060, 0x2060, 0x6000, 0xa084,
+ 0xefef, 0x6002, 0x6004, 0xa084, 0xffe5, 0x6006, 0x0c7f, 0x7e58,
+ 0xa6b4, 0xfffb, 0x7e5a, 0x0078, 0x3475, 0x0078, 0x3432, 0x24a8,
+ 0x7aa8, 0x00f0, 0x34bf, 0x0078, 0x3490, 0xa284, 0x00f0, 0xa086,
+ 0x0020, 0x00c0, 0x351d, 0x8318, 0x8318, 0x2300, 0xa102, 0x0040,
+ 0x34d5, 0x0048, 0x34d5, 0x0078, 0x351a, 0xa286, 0x0023, 0x0040,
+ 0x347e, 0x681c, 0xa084, 0xfff1, 0x681e, 0x7e58, 0xa684, 0xfff1,
+ 0xc0a5, 0x2030, 0x7e5a, 0x6008, 0xc0a5, 0x600a, 0x0c7e, 0x7060,
+ 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xd1a4, 0x0040, 0x34f6,
+ 0x1078, 0x41df, 0x1078, 0x4002, 0x0078, 0x3504, 0x0c7e, 0x7060,
+ 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xd19c, 0x0040, 0x3474,
+ 0x1078, 0x41df, 0x1078, 0x3ee1, 0x88ff, 0x0040, 0x3474, 0x789b,
+ 0x0060, 0x2800, 0x78aa, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x3515,
+ 0x782b, 0x3008, 0x781b, 0x0055, 0x007c, 0x782b, 0x3008, 0x781b,
+ 0x0064, 0x007c, 0x7aa8, 0x0078, 0x3490, 0x8318, 0x2300, 0xa102,
+ 0x0040, 0x3526, 0x0048, 0x3526, 0x0078, 0x3490, 0xa284, 0x0080,
+ 0x00c0, 0x40b5, 0x0078, 0x40ae, 0x0078, 0x40b5, 0x0078, 0x40a7,
+ 0x7060, 0xa04d, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa08e,
+ 0x0001, 0x0040, 0x353d, 0x1078, 0x2aef, 0x7aa8, 0xa294, 0x00ff,
+ 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x40a7, 0x0079,
+ 0x3549, 0x40a7, 0x3e2d, 0x40a7, 0x3fa4, 0xa282, 0x0000, 0x00c0,
+ 0x3553, 0x1078, 0x2aef, 0x1078, 0x40c8, 0x782b, 0x3008, 0x781b,
+ 0x0064, 0x007c, 0xa282, 0x0003, 0x00c0, 0x3560, 0x1078, 0x2aef,
+ 0xd4fc, 0x00c0, 0x3580, 0x706c, 0xa005, 0x0040, 0x3569, 0x1078,
+ 0x2aef, 0x6f14, 0x777e, 0xa7bc, 0x8f00, 0x1078, 0x41e3, 0x6008,
+ 0xa085, 0x0021, 0x600a, 0x8738, 0xa784, 0x001f, 0x00c0, 0x356d,
+ 0x1078, 0x40cc, 0x706f, 0x0002, 0x701b, 0x0009, 0x0078, 0x3582,
+ 0x1078, 0x40d8, 0x782b, 0x3008, 0x781b, 0x0064, 0x007c, 0xa282,
+ 0x0004, 0x0050, 0x358d, 0x1078, 0x2aef, 0x2300, 0x0079, 0x3590,
+ 0x3593, 0x36c1, 0x36f2, 0xa286, 0x0003, 0x0040, 0x3599, 0x1078,
+ 0x2aef, 0x2001, 0x0000, 0x704a, 0x68cc, 0xa005, 0x0040, 0x35a2,
+ 0x7003, 0x0003, 0x68a0, 0xd0ec, 0x0040, 0x35a9, 0x6008, 0xc08d,
+ 0x600a, 0x7000, 0xa084, 0x000f, 0x0079, 0x35ae, 0x2b63, 0x35bb,
+ 0x35b8, 0x37d9, 0x385e, 0x2b63, 0x35b6, 0x35b6, 0x1078, 0x2aef,
+ 0x6008, 0xc0d4, 0x600a, 0xd6e4, 0x00c0, 0x35c4, 0x1078, 0x5218,
+ 0x2009, 0x0000, 0x0078, 0x3669, 0x7868, 0xa08c, 0x00ff, 0x0040,
+ 0x3603, 0xa186, 0x0008, 0x00c0, 0x35da, 0x6008, 0xc0a4, 0x600a,
+ 0x1078, 0x3d5e, 0x0040, 0x3603, 0x1078, 0x3dd4, 0x1078, 0x5218,
+ 0x0078, 0x35eb, 0xa186, 0x0028, 0x00c0, 0x3603, 0x6018, 0xa005,
+ 0x0040, 0x35cd, 0x8001, 0x0040, 0x35cd, 0x8001, 0x0040, 0x35cd,
+ 0x601e, 0x0078, 0x35cd, 0x6820, 0xd084, 0x0040, 0x2b63, 0xc084,
+ 0x6822, 0x1078, 0x2c7d, 0x7064, 0x0c7e, 0x2060, 0x6800, 0x6002,
+ 0x0c7f, 0x6004, 0x6802, 0xa005, 0x2d00, 0x00c0, 0x3600, 0x6002,
+ 0x6006, 0x0078, 0x2b63, 0x017e, 0x81ff, 0x00c0, 0x3622, 0x71f4,
+ 0xd1b4, 0x0040, 0x3622, 0x1078, 0x433b, 0x00c0, 0x3622, 0x0d7e,
+ 0x70dc, 0xa06d, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x68b4, 0x785a,
+ 0x781b, 0x004f, 0x7050, 0xc08d, 0x780a, 0xc1b4, 0x71f6, 0x7003,
+ 0x0030, 0x0d7f, 0x1078, 0x3708, 0x017f, 0x81ff, 0x0040, 0x3669,
+ 0xa684, 0x5f00, 0x681e, 0x682b, 0x0000, 0x6f14, 0xa186, 0x0002,
+ 0x00c0, 0x366a, 0x1078, 0x2c6b, 0x1078, 0x2c8c, 0x6820, 0xa084,
+ 0x0800, 0x00c0, 0x366a, 0x8717, 0xa294, 0x000f, 0x8213, 0x8213,
+ 0x8213, 0xb284, 0x0300, 0x0040, 0x3649, 0xa290, 0x61c0, 0x0078,
+ 0x364b, 0xa290, 0x6240, 0xa290, 0x0000, 0x221c, 0xd3c4, 0x00c0,
+ 0x3653, 0x0078, 0x3659, 0x8210, 0x2204, 0xa085, 0x0018, 0x2012,
+ 0x8211, 0xd3d4, 0x0040, 0x3664, 0x68a0, 0xd0c4, 0x00c0, 0x3664,
+ 0x1078, 0x378a, 0x0078, 0x2b63, 0x6008, 0xc08d, 0x600a, 0x0078,
+ 0x366a, 0x692a, 0x6916, 0x6818, 0xd0fc, 0x0040, 0x3671, 0x7048,
+ 0x681a, 0xa68c, 0x5f00, 0x691e, 0x6010, 0xa005, 0x0040, 0x367d,
+ 0x8001, 0x00d0, 0x367d, 0x1078, 0x2aef, 0x6012, 0x6018, 0xa005,
+ 0x0040, 0x3686, 0x8001, 0x601a, 0x00c0, 0x3689, 0x6008, 0xc0a4,
+ 0x600a, 0x6820, 0xd084, 0x00c0, 0x3695, 0x6800, 0xa005, 0x00c0,
+ 0x3692, 0x6002, 0x6006, 0x0078, 0x3699, 0x7064, 0x2060, 0x6800,
+ 0x6002, 0x2061, 0x5d00, 0x6807, 0x0103, 0x2d08, 0x206b, 0x0000,
+ 0x6060, 0x8000, 0x6062, 0x6064, 0xa005, 0x6166, 0x0040, 0x36ab,
+ 0x2d02, 0x0078, 0x36ac, 0x616a, 0x7000, 0xa086, 0x0030, 0x00c0,
+ 0x2b63, 0x7003, 0x0002, 0x70dc, 0xa06d, 0x68bc, 0x7042, 0x70d8,
+ 0xa065, 0x68c0, 0x7062, 0x2d00, 0x7056, 0xad80, 0x0009, 0x7046,
+ 0x007c, 0xa282, 0x0004, 0x0048, 0x36c7, 0x1078, 0x2aef, 0x2200,
+ 0x0079, 0x36ca, 0x36c5, 0x36ce, 0x36da, 0x36ce, 0x7000, 0xa086,
+ 0x0005, 0x0040, 0x36d7, 0x1078, 0x40c8, 0x782b, 0x3008, 0x781b,
+ 0x0064, 0x007c, 0x7890, 0x8007, 0x8001, 0xa084, 0x0007, 0xa080,
+ 0x0018, 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa186, 0x0003, 0x0040,
+ 0x36ef, 0xa186, 0x0000, 0x0040, 0x36ef, 0x0078, 0x40a7, 0x781b,
+ 0x0064, 0x007c, 0x6820, 0xc095, 0x6822, 0x82ff, 0x00c0, 0x36fc,
+ 0x1078, 0x40c8, 0x0078, 0x3703, 0x8211, 0x0040, 0x3701, 0x1078,
+ 0x2aef, 0x1078, 0x40d8, 0x782b, 0x3008, 0x781b, 0x0064, 0x007c,
+ 0xa684, 0x0060, 0x00c0, 0x3716, 0x2d00, 0xa005, 0x0040, 0x3789,
+ 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x3789, 0xd6dc, 0x00c0,
+ 0x372e, 0x68b4, 0xd0dc, 0x00c0, 0x372e, 0x6998, 0x6a94, 0x692e,
+ 0x6a32, 0x7048, 0xa005, 0x00c0, 0x372b, 0x2200, 0xa105, 0x0040,
+ 0x372d, 0x704b, 0x0015, 0x0078, 0x5218, 0x007c, 0xd6ac, 0x0040,
+ 0x3758, 0xd6f4, 0x0040, 0x373a, 0x682f, 0x0000, 0x6833, 0x0000,
+ 0x0078, 0x5218, 0x68b4, 0xa084, 0x4000, 0xa635, 0xd6f4, 0x00c0,
+ 0x3734, 0x7048, 0xa005, 0x00c0, 0x3747, 0x704b, 0x0015, 0xd6dc,
+ 0x00c0, 0x3752, 0x68b4, 0xd0dc, 0x0040, 0x3752, 0x69a8, 0x6aa4,
+ 0x0078, 0x3754, 0x79d8, 0x7adc, 0x692e, 0x6a32, 0x0078, 0x5218,
+ 0xd6f4, 0x0040, 0x3761, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078,
+ 0x5218, 0x68b4, 0xa084, 0x4800, 0xa635, 0xd6f4, 0x00c0, 0x375b,
+ 0x7048, 0xa005, 0x00c0, 0x376e, 0x704b, 0x0015, 0x79d8, 0x7adc,
+ 0x78d0, 0x80fb, 0x00c8, 0x3775, 0x8000, 0xa084, 0x003f, 0xa108,
+ 0xa291, 0x0000, 0x692e, 0x6a32, 0x2100, 0xa205, 0x00c0, 0x3782,
+ 0x0078, 0x5218, 0x7000, 0xa086, 0x0006, 0x0040, 0x3789, 0x0078,
+ 0x5218, 0x007c, 0x6008, 0xc0cd, 0xd3cc, 0x0040, 0x3790, 0xc08d,
+ 0x600a, 0x681b, 0x0006, 0x688f, 0x0000, 0x6893, 0x0000, 0x6a30,
+ 0x692c, 0x6a3e, 0x6942, 0x682f, 0x0003, 0x6833, 0x0000, 0x6837,
+ 0x0020, 0x6897, 0x0000, 0x689b, 0x0020, 0x68b3, 0x0000, 0x68af,
+ 0x0000, 0x7000, 0x0079, 0x37ac, 0x2b63, 0x37be, 0x37b6, 0x37b4,
+ 0x37b4, 0x37b4, 0x37b4, 0x37b4, 0x1078, 0x2aef, 0x6820, 0xd084,
+ 0x00c0, 0x37be, 0x1078, 0x3dbf, 0x0078, 0x37c4, 0x7064, 0x2c50,
+ 0x2060, 0x6800, 0x6002, 0x2a60, 0xb28c, 0x0300, 0x0040, 0x37cc,
+ 0x2021, 0x5d5a, 0x0078, 0x37ce, 0x2021, 0x5d9a, 0x2404, 0xa005,
+ 0x0040, 0x37d5, 0x2020, 0x0078, 0x37ce, 0x2d22, 0x206b, 0x0000,
+ 0x007c, 0x1078, 0x3dc6, 0x1078, 0x3dd4, 0x6008, 0xc0cc, 0x600a,
+ 0x789b, 0x000e, 0x6f14, 0x6817, 0x0002, 0xb28c, 0x0300, 0x0040,
+ 0x37ed, 0x2009, 0x0000, 0x0078, 0x37ef, 0x2009, 0x0001, 0x1078,
+ 0x5692, 0xd6dc, 0x0040, 0x37f7, 0x691c, 0xc1ed, 0x691e, 0x6818,
+ 0xd0fc, 0x0040, 0x3806, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x3804,
+ 0x681b, 0x001e, 0x0078, 0x3806, 0x681b, 0x0000, 0xb284, 0x0300,
+ 0x00c0, 0x380e, 0x2021, 0x5d9a, 0x0078, 0x3810, 0x2021, 0x5d5a,
+ 0x2404, 0xad06, 0x0040, 0x3815, 0x7464, 0x6800, 0x2022, 0x68cf,
+ 0x0000, 0x70f8, 0xc084, 0x70fa, 0x6a3c, 0x6940, 0x6a32, 0x692e,
+ 0x68c0, 0x2060, 0x6000, 0xd0a4, 0x0040, 0x385a, 0x2041, 0x0021,
+ 0x2049, 0x0005, 0x2051, 0x0020, 0x0d7e, 0x0f7e, 0x157e, 0x147e,
+ 0x2079, 0x5d00, 0x1078, 0x1e18, 0x147f, 0x157f, 0x0f7f, 0x70ec,
+ 0x2010, 0x2009, 0x0101, 0x027e, 0x2204, 0xa06d, 0x0040, 0x384a,
+ 0x6814, 0xa706, 0x0040, 0x3847, 0x6800, 0x0078, 0x383d, 0x6820,
+ 0xc0d5, 0x6822, 0x027f, 0x8210, 0x8109, 0x00c0, 0x383b, 0x0d7f,
+ 0x706f, 0x0003, 0x7087, 0x0000, 0x777e, 0x708b, 0x000f, 0x71f4,
+ 0xc1dc, 0x71f6, 0x1078, 0x21ca, 0x0078, 0x2b63, 0x1078, 0x3708,
+ 0x682b, 0x0000, 0x789b, 0x000e, 0x6f14, 0x1078, 0x4370, 0xa08c,
+ 0x00ff, 0x6916, 0x6818, 0xd0fc, 0x0040, 0x3870, 0x7048, 0x681a,
+ 0xa68c, 0x5f00, 0x691e, 0x706f, 0x0000, 0x0078, 0x2b63, 0x7000,
+ 0xa005, 0x00c0, 0x387d, 0x0078, 0x2b63, 0xa006, 0x1078, 0x5218,
+ 0x6817, 0x0000, 0x6920, 0xd1ac, 0x00c0, 0x3888, 0x681b, 0x0014,
+ 0xa68c, 0x5f00, 0x691e, 0x682b, 0x0000, 0x6820, 0xa084, 0x00ff,
+ 0x6822, 0x7000, 0x0079, 0x3894, 0x2b63, 0x38a1, 0x389e, 0x38a3,
+ 0x38a3, 0x38a3, 0x389c, 0x389c, 0x1078, 0x2aef, 0x6008, 0xc0d4,
+ 0x600a, 0x1078, 0x3dd4, 0x6008, 0xc0a4, 0x600a, 0x0078, 0x3d84,
+ 0x2300, 0x0079, 0x38ab, 0x38ae, 0x38b0, 0x38f6, 0x1078, 0x2aef,
+ 0x7000, 0xa00d, 0x0079, 0x38b4, 0x2b63, 0x38c4, 0x38be, 0x38e8,
+ 0x38c4, 0x38f3, 0x38bc, 0x38bc, 0x1078, 0x2aef, 0x6894, 0x78d6,
+ 0x78de, 0x6898, 0x78d2, 0x78da, 0xa684, 0x0060, 0xa086, 0x0060,
+ 0x00c0, 0x38e5, 0xc6ac, 0xc6f4, 0xc6ed, 0x7e5a, 0x681c, 0xc0ac,
+ 0x681e, 0xa186, 0x0002, 0x0040, 0x38d7, 0x1078, 0x5218, 0x1078,
+ 0x5514, 0x781b, 0x0064, 0x71f4, 0xd1b4, 0x00c0, 0x2b53, 0x70c4,
+ 0xa086, 0x0001, 0x00c0, 0x2bb9, 0x007c, 0xd6ec, 0x0040, 0x38cc,
+ 0x6818, 0xd0fc, 0x0040, 0x38f3, 0x681b, 0x0015, 0xd6f4, 0x0040,
+ 0x38f3, 0x681b, 0x0007, 0x1078, 0x42ed, 0x007c, 0x1078, 0x2aef,
+ 0x2300, 0x0079, 0x38fb, 0x38fe, 0x3900, 0x3941, 0x1078, 0x2aef,
+ 0x7000, 0xa00d, 0x0079, 0x3904, 0x2b63, 0x3914, 0x390e, 0x3938,
+ 0x3914, 0x393e, 0x390c, 0x390c, 0x1078, 0x2aef, 0x6894, 0x78d6,
+ 0x78de, 0x6898, 0x78d2, 0x78da, 0xa684, 0x0060, 0xa086, 0x0060,
+ 0x00c0, 0x3935, 0xa6b4, 0xbfbf, 0xc6ed, 0x7e5a, 0xa186, 0x0002,
+ 0x0040, 0x3924, 0x1078, 0x5218, 0x1078, 0x5514, 0x781b, 0x0064,
+ 0x681c, 0xc0b4, 0x681e, 0x71f4, 0xd1b4, 0x00c0, 0x2b53, 0x70c4,
+ 0xa086, 0x0001, 0x00c0, 0x2bb9, 0x007c, 0xd6ec, 0x0040, 0x391c,
+ 0x6818, 0xd0fc, 0x0040, 0x393e, 0x681b, 0x0007, 0x781b, 0x00d3,
+ 0x007c, 0x6820, 0xc095, 0x6822, 0x1078, 0x4276, 0xc6dd, 0x1078,
+ 0x40c8, 0x782b, 0x3008, 0x781b, 0x0064, 0x007c, 0x2300, 0x0079,
+ 0x3951, 0x3954, 0x3956, 0x3958, 0x1078, 0x2aef, 0x0078, 0x40b5,
+ 0xd6d4, 0x00c0, 0x397e, 0x79e4, 0xd1ac, 0x0040, 0x3966, 0x78ec,
+ 0xa084, 0x0003, 0x0040, 0x3966, 0x782b, 0x3009, 0x789b, 0x0060,
+ 0x78ab, 0x0000, 0xa684, 0xfffb, 0x785a, 0x79e4, 0xd1ac, 0x0040,
+ 0x3976, 0x78ec, 0xa084, 0x0003, 0x00c0, 0x397a, 0x2001, 0x0014,
+ 0x0078, 0x359b, 0xa184, 0x0007, 0x0079, 0x39b4, 0x7a90, 0xa294,
+ 0x0007, 0x789b, 0x0060, 0x79a8, 0x81ff, 0x0040, 0x39b2, 0x789b,
+ 0x0010, 0x7ba8, 0xa384, 0x0001, 0x00c0, 0x39a5, 0x7ba8, 0x7ba8,
+ 0xa386, 0x0001, 0x00c0, 0x3998, 0x2009, 0xfff7, 0x0078, 0x399e,
+ 0xa386, 0x0003, 0x00c0, 0x39a5, 0x2009, 0xffef, 0x0c7e, 0x7060,
+ 0x2060, 0x6004, 0xa104, 0x6006, 0x0c7f, 0x789b, 0x0060, 0x78ab,
+ 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b, 0x3009, 0x6920, 0xa18c,
+ 0xfcff, 0x6922, 0x0078, 0x42dd, 0x3240, 0x324a, 0x39be, 0x39c4,
+ 0x39bc, 0x39bc, 0x42dd, 0x42dd, 0x1078, 0x2aef, 0x6920, 0xa18c,
+ 0xfcff, 0x6922, 0x0078, 0x42e5, 0x6920, 0xa18c, 0xfcff, 0x6922,
+ 0x0078, 0x42dd, 0x79e4, 0xa184, 0x0030, 0x0040, 0x39d4, 0x78ec,
+ 0xa084, 0x0003, 0x00c0, 0x39fe, 0x7000, 0xa086, 0x0004, 0x00c0,
+ 0x39ee, 0x706c, 0xa086, 0x0002, 0x00c0, 0x39e4, 0x2011, 0x0002,
+ 0x2019, 0x0000, 0x0078, 0x30b4, 0x706c, 0xa086, 0x0006, 0x0040,
+ 0x39de, 0x706c, 0xa086, 0x0004, 0x0040, 0x39de, 0x7000, 0xa086,
+ 0x0000, 0x0040, 0x2b53, 0x6820, 0xd0ac, 0x00c0, 0x359b, 0x6818,
+ 0xc0fd, 0x681a, 0x2001, 0x0014, 0x0078, 0x359b, 0xa184, 0x0007,
+ 0x0079, 0x3a02, 0x42dd, 0x42dd, 0x3a0a, 0x42dd, 0x4330, 0x4330,
+ 0x42dd, 0x42dd, 0xd6bc, 0x0040, 0x3a4e, 0x718c, 0x81ff, 0x0040,
+ 0x3a4e, 0xa182, 0x000d, 0x00d0, 0x3a19, 0x708f, 0x0000, 0x0078,
+ 0x3a1e, 0xa182, 0x000c, 0x708e, 0x2009, 0x000c, 0x789b, 0x0061,
+ 0x79aa, 0x157e, 0x137e, 0x147e, 0x7090, 0x8114, 0xa210, 0x7292,
+ 0xa080, 0x000b, 0xad00, 0x2098, 0x017e, 0xb28c, 0x0300, 0x0040,
+ 0x3a41, 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040,
+ 0x3a3d, 0x20a1, 0x012b, 0x0078, 0x3a43, 0x20a1, 0x022b, 0x0078,
+ 0x3a43, 0x20a1, 0x012b, 0x017f, 0x789b, 0x0000, 0x8108, 0x81ac,
+ 0x53a6, 0x147f, 0x137f, 0x157f, 0x0078, 0x42e5, 0xd6d4, 0x00c0,
+ 0x3aa1, 0x6820, 0xd084, 0x0040, 0x42e5, 0xa68c, 0x0060, 0xa684,
+ 0x0060, 0x0040, 0x3a60, 0xa086, 0x0060, 0x00c0, 0x3a60, 0xc1f5,
+ 0xc194, 0x795a, 0x69b6, 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b,
+ 0x0061, 0x6818, 0xc0fd, 0x681a, 0x78aa, 0x8008, 0x810c, 0x0040,
+ 0x3ded, 0xa18c, 0x00f8, 0x00c0, 0x3ded, 0x157e, 0x137e, 0x147e,
+ 0x017e, 0xb28c, 0x0300, 0x0040, 0x3a8d, 0x007e, 0x2001, 0x5d02,
+ 0x2004, 0xd0ec, 0x007f, 0x0040, 0x3a89, 0x20a1, 0x012b, 0x0078,
+ 0x3a8f, 0x20a1, 0x022b, 0x0078, 0x3a8f, 0x20a1, 0x012b, 0x017f,
+ 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6,
+ 0x147f, 0x137f, 0x157f, 0x6814, 0xc0fc, 0x8007, 0x7882, 0x0078,
+ 0x42e5, 0x6818, 0xd0fc, 0x0040, 0x3aa7, 0x681b, 0x0008, 0x6820,
+ 0xc0ad, 0x6822, 0x1078, 0x40d0, 0x781b, 0x00c8, 0x007c, 0x2300,
+ 0x0079, 0x3ab2, 0x3ab7, 0x3b56, 0x3ab5, 0x1078, 0x2aef, 0x7000,
+ 0xa084, 0x000f, 0x0079, 0x3abc, 0x2b63, 0x3b04, 0x3ac6, 0x3acf,
+ 0x3ac4, 0x2b63, 0x3ac4, 0x3ac4, 0x1078, 0x2aef, 0x681c, 0xd0ec,
+ 0x0040, 0x3ae0, 0x6008, 0xc08d, 0x600a, 0x0078, 0x3ae0, 0x68cc,
+ 0xa005, 0x00c0, 0x3b04, 0x6920, 0xa18d, 0x0001, 0x6922, 0x68cf,
+ 0x0001, 0x70f8, 0xc085, 0x70fa, 0x6800, 0x706a, 0x0078, 0x3af1,
+ 0x6920, 0xc185, 0x6922, 0x6800, 0x6006, 0xa005, 0x00c0, 0x3ae9,
+ 0x6002, 0x6008, 0xc0d4, 0x600a, 0x681c, 0xa084, 0x000e, 0x00c0,
+ 0x3afb, 0x2009, 0xa4d0, 0xb284, 0x0300, 0x0040, 0x3b00, 0x2009,
+ 0xa3c0, 0x0078, 0x3b00, 0x702c, 0x68ba, 0x7140, 0x70ec, 0xa108,
+ 0x2104, 0x6802, 0x2d0a, 0x7166, 0x6eb6, 0xa684, 0x0060, 0x0040,
+ 0x3b54, 0xd6dc, 0x00c0, 0x3b17, 0xa684, 0x7fff, 0x68b6, 0x6894,
+ 0x68a6, 0x6898, 0x68aa, 0x1078, 0x5218, 0x0078, 0x3b54, 0xd6ac,
+ 0x0040, 0x3b2a, 0x68cc, 0xa005, 0x0040, 0x3b22, 0x1078, 0x5692,
+ 0x0078, 0x3b24, 0x1078, 0x5218, 0x79d8, 0x7adc, 0x69aa, 0x6aa6,
+ 0x0078, 0x3b30, 0x1078, 0x41f7, 0x69aa, 0x6aa6, 0x1078, 0x5218,
+ 0xd6fc, 0x0040, 0x3b54, 0xa684, 0x7fff, 0x68b6, 0x789b, 0x0076,
+ 0x1078, 0x4370, 0x2010, 0x1078, 0x4370, 0x2008, 0xd6ac, 0x00c0,
+ 0x3b4c, 0x1078, 0x4370, 0x801b, 0x00c8, 0x3b47, 0x8000, 0xa084,
+ 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302, 0x68b2,
+ 0x6b94, 0x2200, 0xa303, 0x68ae, 0x0078, 0x2b63, 0x0078, 0x40b5,
+ 0x7047, 0x0000, 0xa282, 0x0006, 0x0050, 0x3b60, 0x1078, 0x2aef,
+ 0x7000, 0xa086, 0x0007, 0x1040, 0x444f, 0x2300, 0x0079, 0x3b68,
+ 0x3b6b, 0x3ba2, 0x3bc3, 0x2200, 0x0079, 0x3b6e, 0x3ba0, 0x40b5,
+ 0x3b74, 0x3ba0, 0x3be6, 0x3c59, 0x7003, 0x0005, 0xb284, 0x0300,
+ 0x0040, 0x3b7e, 0x2001, 0xa6e0, 0x0078, 0x3b80, 0x2001, 0xa714,
+ 0x2068, 0x7056, 0x157e, 0x20a9, 0x0034, 0x2003, 0x0000, 0x8000,
+ 0x00f0, 0x3b85, 0x157f, 0xad80, 0x0009, 0x7046, 0xb284, 0x0300,
+ 0x0040, 0x3b96, 0x6817, 0x0000, 0x0078, 0x3b98, 0x6817, 0x8000,
+ 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x0078, 0x40a7,
+ 0x1078, 0x2aef, 0x2200, 0xa086, 0x0003, 0x0040, 0x3be6, 0x7003,
+ 0x0005, 0xb284, 0x0300, 0x0040, 0x3bb1, 0x2001, 0xa6e0, 0x0078,
+ 0x3bb3, 0x2001, 0xa714, 0x2068, 0x7056, 0xad80, 0x0009, 0x7046,
+ 0x2200, 0x0079, 0x3bbb, 0x40b5, 0x3bc1, 0x3bc1, 0x3be6, 0x3bc1,
+ 0x40b5, 0x1078, 0x2aef, 0x7003, 0x0005, 0xb284, 0x0300, 0x0040,
+ 0x3bcd, 0x2001, 0xa6e0, 0x0078, 0x3bcf, 0x2001, 0xa714, 0x2068,
+ 0x7056, 0xad80, 0x0009, 0x7046, 0x2200, 0x0079, 0x3bd7, 0x3bdf,
+ 0x3bdd, 0x3bdd, 0x3bdf, 0x3bdd, 0x3bdf, 0x1078, 0x2aef, 0x1078,
+ 0x40d8, 0x782b, 0x3008, 0x781b, 0x0064, 0x007c, 0x7000, 0xa086,
+ 0x0002, 0x00c0, 0x3bf8, 0x70f4, 0xc0b5, 0x70f6, 0x2c00, 0x70da,
+ 0x2d00, 0x70de, 0x0078, 0x3bfd, 0x1078, 0x5218, 0x0078, 0x3bfd,
+ 0x7000, 0xa086, 0x0003, 0x0040, 0x3bf4, 0x7003, 0x0001, 0x7a80,
+ 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484, 0x001f, 0xa215,
+ 0x2069, 0xa3c0, 0xb284, 0x0300, 0x00c0, 0x3c11, 0xc2fd, 0x2069,
+ 0xa4d0, 0x2d04, 0x2d08, 0x7166, 0xa06d, 0x0040, 0x3c1e, 0x6814,
+ 0xa206, 0x0040, 0x3c3e, 0x6800, 0x0078, 0x3c12, 0x7003, 0x0005,
+ 0xd2fc, 0x00c0, 0x3c27, 0x2001, 0xa6e0, 0x0078, 0x3c29, 0x2001,
+ 0xa714, 0x2068, 0x7056, 0x157e, 0x20a9, 0x0034, 0x2003, 0x0000,
+ 0x8000, 0x00f0, 0x3c2e, 0x157f, 0xad80, 0x0009, 0x7046, 0x6a16,
+ 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a,
+ 0x6920, 0xa184, 0x0c00, 0x0040, 0x3ce3, 0x706c, 0xa086, 0x0006,
+ 0x00c0, 0x3c50, 0x707c, 0xa206, 0x00c0, 0x3c50, 0x706e, 0x7086,
+ 0x681b, 0x0005, 0xc1ad, 0xc1d4, 0x6922, 0x1078, 0x40d0, 0x0078,
+ 0x3ce3, 0x7200, 0xa286, 0x0002, 0x00c0, 0x3c6b, 0x70f4, 0xc0b5,
+ 0x70f6, 0x2c00, 0x70da, 0x2d00, 0x70de, 0x0078, 0x3c6f, 0x1078,
+ 0x5218, 0x0078, 0x3c6f, 0xa286, 0x0003, 0x0040, 0x3c67, 0x7003,
+ 0x0001, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484,
+ 0x001f, 0xa215, 0xb284, 0x0300, 0x00c0, 0x3c7f, 0xc2fd, 0x79a8,
+ 0x79a8, 0xa18c, 0x00ff, 0x2118, 0x70ec, 0xa168, 0x2d04, 0x2d08,
+ 0x7166, 0xa06d, 0x0040, 0x3c93, 0x6814, 0xa206, 0x0040, 0x3cbc,
+ 0x6800, 0x0078, 0x3c87, 0x7003, 0x0005, 0xb284, 0x0300, 0x0040,
+ 0x3c9d, 0x2001, 0xa6e0, 0x0078, 0x3c9f, 0x2001, 0xa714, 0x2068,
+ 0x7056, 0x157e, 0x20a9, 0x0034, 0x2003, 0x0000, 0x8000, 0x00f0,
+ 0x3ca4, 0x157f, 0xad80, 0x0009, 0x7046, 0xb284, 0x0300, 0x0040,
+ 0x3cb4, 0xc2fc, 0x0078, 0x3cb5, 0xc2fd, 0x6a16, 0x68b7, 0x0700,
+ 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x6920, 0xa184, 0x0c00,
+ 0x0040, 0x3ce3, 0xd0dc, 0x0040, 0x3cd8, 0x706c, 0xa086, 0x0004,
+ 0x00c0, 0x3cd4, 0x707c, 0xa206, 0x00c0, 0x3cd4, 0x7080, 0xa306,
+ 0x00c0, 0x3cd4, 0x706e, 0x7086, 0x1078, 0x40d4, 0x0078, 0x3ce3,
+ 0x681b, 0x0005, 0xc1ad, 0xc1d4, 0x6922, 0x1078, 0x40d0, 0x7087,
+ 0x0000, 0x0078, 0x3ce3, 0x68c0, 0x7062, 0xa684, 0x0060, 0x0040,
+ 0x3d27, 0x6b98, 0x6c94, 0x69ac, 0x68b0, 0xa105, 0x00c0, 0x3d0d,
+ 0x7bd2, 0x7bda, 0x7cd6, 0x7cde, 0xa6b4, 0xb7ff, 0xa684, 0x0060,
+ 0xa086, 0x0060, 0x0040, 0x3d2b, 0x68cc, 0xa005, 0x0040, 0x3d08,
+ 0x7003, 0x0003, 0x682b, 0x0000, 0x1078, 0x5501, 0x0078, 0x3d0a,
+ 0x1078, 0x5514, 0xc6ed, 0x0078, 0x3d2b, 0x68b0, 0xa31a, 0x2100,
+ 0xa423, 0x2400, 0xa305, 0x0040, 0x3d2b, 0x7bd2, 0x7bda, 0x7cd6,
+ 0x7cde, 0xc6f4, 0x68cc, 0xa005, 0x0040, 0x3d24, 0x7003, 0x0003,
+ 0x1078, 0x5501, 0x0078, 0x3d2b, 0x68b0, 0x1078, 0x5568, 0x2019,
+ 0x0000, 0x2021, 0x0000, 0x7e5a, 0x2009, 0x0064, 0xa684, 0x0004,
+ 0x0040, 0x3d4b, 0x78e4, 0xa084, 0x0030, 0x0040, 0x3d43, 0x78ec,
+ 0xa084, 0x0003, 0x0040, 0x3d43, 0x782b, 0x3008, 0x2019, 0x0000,
+ 0x2320, 0x0078, 0x3d4b, 0x0f7e, 0x2079, 0x5d00, 0x1078, 0x5218,
+ 0x0f7f, 0x0040, 0x2b63, 0x791a, 0x2d00, 0x7056, 0x68c4, 0x2060,
+ 0x2300, 0xa405, 0x0040, 0x2b53, 0x71f4, 0xd1b4, 0x00c0, 0x2b53,
+ 0x70c4, 0xa086, 0x0001, 0x00c0, 0x2bb9, 0x007c, 0x6020, 0xa005,
+ 0x0040, 0x3d6c, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, 0x600a,
+ 0x700b, 0x0100, 0x7028, 0x6026, 0x007c, 0xa006, 0x1078, 0x5218,
+ 0x7000, 0xa086, 0x0002, 0x0040, 0x3d7a, 0x706c, 0xa086, 0x0005,
+ 0x00c0, 0x3d84, 0x682b, 0x0000, 0x6817, 0x0000, 0x681b, 0x0001,
+ 0x6823, 0x0040, 0x681f, 0x0100, 0x7000, 0xa084, 0x000f, 0x0079,
+ 0x3d89, 0x2b63, 0x3d99, 0x3d93, 0x3dbb, 0x3da3, 0x3da1, 0x3d91,
+ 0x3d91, 0x1078, 0x2aef, 0x1078, 0x3dc6, 0x1078, 0x3dbf, 0x0078,
+ 0x3d9f, 0x1078, 0x3dc6, 0x7064, 0x2060, 0x6800, 0x6002, 0x1078,
+ 0x21ca, 0x0078, 0x2b63, 0x706c, 0x706f, 0x0000, 0x708b, 0x0000,
+ 0x0079, 0x3daa, 0x3db7, 0x3db7, 0x3db2, 0x3db2, 0x3db2, 0x3db7,
+ 0x3db2, 0x3db7, 0x77f4, 0xc7dd, 0x77f6, 0x0079, 0x30cd, 0x706f,
+ 0x0000, 0x0078, 0x2b63, 0x681b, 0x0000, 0x0078, 0x37d9, 0x6800,
+ 0xa005, 0x00c0, 0x3dc4, 0x6002, 0x6006, 0x007c, 0x6010, 0xa005,
+ 0x0040, 0x3dcf, 0x8001, 0x00d0, 0x3dcf, 0x1078, 0x2aef, 0x6012,
+ 0x6008, 0xc0a4, 0x600a, 0x007c, 0x6018, 0xa005, 0x0040, 0x3dda,
+ 0x8001, 0x601a, 0x007c, 0x1078, 0x436b, 0x681b, 0x0018, 0x0078,
+ 0x3e19, 0x1078, 0x436b, 0x681b, 0x0019, 0x0078, 0x3e19, 0x1078,
+ 0x436b, 0x681b, 0x001a, 0x0078, 0x3e19, 0x1078, 0x436b, 0x681b,
+ 0x0003, 0x0078, 0x3e19, 0x777c, 0x1078, 0x41e3, 0x7180, 0xa18c,
+ 0x00ff, 0xd7fc, 0x00c0, 0x3e00, 0xa1e8, 0xa2c0, 0x0078, 0x3e02,
+ 0xa1e8, 0xa3d0, 0x2d04, 0x2d08, 0x2068, 0xa005, 0x00c0, 0x3e0b,
+ 0x7086, 0x0078, 0x2b63, 0x6814, 0x727c, 0xa206, 0x0040, 0x3e13,
+ 0x6800, 0x0078, 0x3e03, 0x6800, 0x200a, 0x681b, 0x0005, 0x7087,
+ 0x0000, 0x1078, 0x3dc6, 0x6820, 0xd084, 0x00c0, 0x3e21, 0x1078,
+ 0x3dbf, 0x1078, 0x3dd4, 0x681f, 0x0000, 0x6823, 0x0020, 0x682b,
+ 0x0000, 0x1078, 0x21ca, 0x0078, 0x2b63, 0xa282, 0x0003, 0x00c0,
+ 0x40a7, 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, 0x00ff, 0x6920,
+ 0xc1bd, 0x6922, 0xd1c4, 0x0040, 0x3e8b, 0xc1c4, 0x6922, 0xa4a4,
+ 0x00ff, 0x0040, 0x3e78, 0xa482, 0x000c, 0x0048, 0x3e4b, 0x0040,
+ 0x3e4b, 0x2021, 0x000c, 0x2500, 0xa086, 0x000a, 0x0040, 0x3e52,
+ 0x852b, 0x852b, 0x1078, 0x416f, 0x0040, 0x3e5a, 0x1078, 0x3f5c,
+ 0x0078, 0x3e81, 0x1078, 0x414b, 0x0c7e, 0x2960, 0x6004, 0xa084,
+ 0xfff5, 0x6006, 0x1078, 0x3f8d, 0x0c7f, 0x6920, 0xc1c5, 0x6922,
+ 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x3e73, 0x782b, 0x3008,
+ 0x781b, 0x0055, 0x007c, 0x782b, 0x3008, 0x781b, 0x0064, 0x007c,
+ 0x0c7e, 0x2960, 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x3f8d,
+ 0x0c7f, 0x7e58, 0xd6d4, 0x00c0, 0x3e88, 0x781b, 0x0057, 0x007c,
+ 0x781b, 0x0064, 0x007c, 0x0c7e, 0x7060, 0x2060, 0x6100, 0xd1e4,
+ 0x0040, 0x3ed4, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c,
+ 0x0048, 0x3e9e, 0x0040, 0x3e9e, 0x2011, 0x000c, 0x2400, 0xa202,
+ 0x00c8, 0x3ea3, 0x2220, 0x6208, 0xa294, 0x00ff, 0x2001, 0x5d03,
+ 0x2004, 0xd0e4, 0x00c0, 0x3eb8, 0x78ec, 0xd0e4, 0x0040, 0x3eb8,
+ 0xa282, 0x000a, 0x00c8, 0x3ebe, 0x2011, 0x000a, 0x0078, 0x3ebe,
+ 0xa282, 0x000c, 0x00c8, 0x3ebe, 0x2011, 0x000c, 0x2200, 0xa502,
+ 0x00c8, 0x3ec3, 0x2228, 0x1078, 0x414f, 0x2500, 0xa086, 0x000a,
+ 0x0040, 0x3ecc, 0x852b, 0x852b, 0x1078, 0x416f, 0x0040, 0x3ed4,
+ 0x1078, 0x3f5c, 0x0078, 0x3ed8, 0x1078, 0x414b, 0x1078, 0x3f8d,
+ 0x7858, 0xc095, 0x785a, 0x0c7f, 0x782b, 0x3008, 0x781b, 0x0064,
+ 0x007c, 0x0c7e, 0x2960, 0x6000, 0xd0e4, 0x00c0, 0x3ef8, 0x6010,
+ 0xa084, 0x000f, 0x00c0, 0x3ef2, 0x6104, 0xa18c, 0xfff5, 0x6106,
+ 0x0c7f, 0x007c, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078, 0x3f23,
+ 0x68a0, 0xd0cc, 0x00c0, 0x3ef2, 0x6208, 0xa294, 0x00ff, 0x2001,
+ 0x5d03, 0x2004, 0xd0e4, 0x00c0, 0x3f11, 0x78ec, 0xd0e4, 0x0040,
+ 0x3f11, 0xa282, 0x000a, 0x00c0, 0x3f11, 0x2011, 0x000a, 0x0078,
+ 0x3f17, 0xa282, 0x000c, 0x00c8, 0x3f17, 0x2011, 0x000c, 0x6308,
+ 0x831f, 0xa39c, 0x00ff, 0xa382, 0x000c, 0x0048, 0x3f23, 0x0040,
+ 0x3f23, 0x2019, 0x000c, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab,
+ 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xc0c5, 0x6822,
+ 0x70f4, 0xd0b4, 0x0040, 0x3f3f, 0xc0b4, 0x70f6, 0x70d8, 0xa065,
+ 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f,
+ 0x007c, 0x0c7e, 0x2960, 0x6104, 0xa18c, 0xfff5, 0x6106, 0x2011,
+ 0x0032, 0x2019, 0x0000, 0x0078, 0x3f4d, 0x78ab, 0x0001, 0x78ab,
+ 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820,
+ 0xc0c5, 0x6822, 0x0c7f, 0x007c, 0x0c7e, 0x7160, 0x2160, 0x1078,
+ 0x3f63, 0x0c7f, 0x007c, 0x2018, 0xd0ac, 0x0040, 0x3f68, 0xc0ac,
+ 0x2008, 0xa084, 0xfff0, 0xa425, 0x7c86, 0x6018, 0x789a, 0x7cae,
+ 0x6412, 0x78a4, 0xa084, 0xfff0, 0xa18c, 0x000f, 0xa105, 0xc0f4,
+ 0xd3ac, 0x0040, 0x3f7c, 0xc0f5, 0x78a6, 0x6016, 0x788a, 0xa4a4,
+ 0x000f, 0x8427, 0x8204, 0x8004, 0xa084, 0x00ff, 0xa405, 0x600e,
+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x007c, 0x0c7e, 0x7060, 0x2060,
+ 0x1078, 0x3f94, 0x0c7f, 0x007c, 0x6018, 0x789a, 0x78a4, 0xa084,
+ 0xfff0, 0x78a6, 0x6012, 0x7884, 0xa084, 0xfff0, 0x7886, 0x600c,
+ 0xa084, 0x00ff, 0x600e, 0x007c, 0xa282, 0x0002, 0x00c0, 0x40a7,
+ 0x7aa8, 0x6920, 0xc1bd, 0x6922, 0xd1cc, 0x0040, 0x3fe3, 0xc1cc,
+ 0x6922, 0xa294, 0x00ff, 0xa282, 0x0002, 0x00c8, 0x40a7, 0x1078,
+ 0x4036, 0x1078, 0x3f8d, 0xa980, 0x0001, 0x200c, 0x1078, 0x41df,
+ 0x1078, 0x3ee1, 0x88ff, 0x0040, 0x3fd9, 0x789b, 0x0060, 0x2800,
+ 0x78aa, 0x7e58, 0xc695, 0x7e5a, 0xd6d4, 0x00c0, 0x3fd4, 0x782b,
+ 0x3008, 0x781b, 0x0055, 0x007c, 0x782b, 0x3008, 0x781b, 0x0064,
+ 0x007c, 0x7e58, 0xd6d4, 0x00c0, 0x3fe0, 0x781b, 0x0057, 0x007c,
+ 0x781b, 0x0064, 0x007c, 0xa282, 0x0002, 0x00c8, 0x3feb, 0xa284,
+ 0x0001, 0x0040, 0x3ff4, 0x7160, 0xa188, 0x0000, 0x210c, 0xd1ec,
+ 0x00c0, 0x3ff4, 0x2011, 0x0000, 0x1078, 0x412c, 0x1078, 0x4036,
+ 0x1078, 0x3f8d, 0x7858, 0xc095, 0x785a, 0x782b, 0x3008, 0x781b,
+ 0x0064, 0x007c, 0x0c7e, 0x027e, 0x2960, 0x6000, 0x2011, 0x0001,
+ 0xd0ec, 0x00c0, 0x4017, 0x6014, 0xa084, 0x0040, 0x00c0, 0x4015,
+ 0xc1a4, 0x6106, 0xa006, 0x0078, 0x4033, 0x2011, 0x0000, 0x78ab,
+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004,
+ 0x70f4, 0xd0b4, 0x0040, 0x402f, 0xc0b4, 0x70f6, 0x70d8, 0xa065,
+ 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x6820,
+ 0xa085, 0x0200, 0x6822, 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7060,
+ 0x2060, 0x1078, 0x403d, 0x0c7f, 0x007c, 0x82ff, 0x0040, 0x4042,
+ 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, 0x78a4, 0xa084,
+ 0xffbf, 0xa205, 0x78a6, 0x788a, 0x6016, 0x6004, 0xc0a4, 0x6006,
+ 0x007c, 0x007e, 0x7000, 0xa086, 0x0003, 0x0040, 0x405a, 0x007f,
+ 0x0078, 0x405d, 0x007f, 0x0078, 0x40a4, 0xd6ac, 0x0040, 0x40a4,
+ 0x7888, 0xa084, 0x0040, 0x0040, 0x40a4, 0x7bb8, 0xa384, 0x003f,
+ 0x831b, 0x00c8, 0x406c, 0x8000, 0xa005, 0x0040, 0x4081, 0x831b,
+ 0x00c8, 0x4075, 0x8001, 0x0040, 0x40a1, 0xd6f4, 0x0040, 0x4081,
+ 0x78b8, 0x801b, 0x00c8, 0x407d, 0x8000, 0xa084, 0x003f, 0x00c0,
+ 0x40a1, 0xc6f4, 0x7e5a, 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108,
+ 0x00c8, 0x408c, 0xa291, 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade,
+ 0x1078, 0x564d, 0x781b, 0x0063, 0xb284, 0x0300, 0x0040, 0x409c,
+ 0x2001, 0x0000, 0x0078, 0x409e, 0x2001, 0x0001, 0x1078, 0x5482,
+ 0x007c, 0x781b, 0x0063, 0x007c, 0x781b, 0x0064, 0x007c, 0x1078,
+ 0x40dc, 0x782b, 0x3008, 0x781b, 0x0064, 0x007c, 0x1078, 0x40c8,
+ 0x782b, 0x3008, 0x781b, 0x0064, 0x007c, 0x6827, 0x0002, 0x1078,
+ 0x40d0, 0x78e4, 0xa084, 0x0030, 0x0040, 0x2b63, 0x78ec, 0xa084,
+ 0x0003, 0x0040, 0x2b63, 0x782b, 0x3008, 0x781b, 0x0064, 0x007c,
+ 0x2001, 0x0005, 0x0078, 0x40de, 0x2001, 0x000c, 0x0078, 0x40de,
+ 0x2001, 0x0006, 0x0078, 0x40de, 0x2001, 0x000d, 0x0078, 0x40de,
+ 0x2001, 0x0009, 0x0078, 0x40de, 0x2001, 0x0007, 0x789b, 0x0010,
+ 0x78aa, 0x789b, 0x0060, 0x78ab, 0x0001, 0xc695, 0x7e5a, 0x70f4,
+ 0xd0b4, 0x0040, 0x40f8, 0xc0b4, 0x70f6, 0x0c7e, 0x70d8, 0xa065,
+ 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f,
+ 0x007c, 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703,
+ 0x017e, 0xb28c, 0x0300, 0x0040, 0x4109, 0xa0e0, 0x61c0, 0x0078,
+ 0x410b, 0xa0e0, 0x6240, 0x017f, 0xa7b8, 0x0020, 0x7f9a, 0x79a4,
+ 0xa184, 0x000f, 0x0040, 0x411b, 0xa184, 0xfff0, 0x78a6, 0x6012,
+ 0x6004, 0xc09d, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184,
+ 0x0040, 0x0040, 0x412a, 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004,
+ 0xc0a5, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001,
+ 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab,
+ 0x0004, 0x70f4, 0xd0b4, 0x0040, 0x414a, 0xc0b4, 0x70f6, 0x0c7e,
+ 0x70d8, 0xa065, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018, 0x8001,
+ 0x601a, 0x0c7f, 0x007c, 0x2021, 0x0000, 0x2029, 0x0032, 0x789b,
+ 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa,
+ 0x7caa, 0x789b, 0x0060, 0x78ab, 0x0005, 0x70f4, 0xd0b4, 0x0040,
+ 0x416e, 0xc0b4, 0x70f6, 0x0c7e, 0x70d8, 0xa065, 0x6008, 0xa084,
+ 0xfbef, 0x600a, 0x6018, 0x8001, 0x601a, 0x0c7f, 0x007c, 0x157e,
+ 0x2001, 0x5d03, 0x2004, 0xd0e4, 0x00c0, 0x41a2, 0x2009, 0x41d6,
+ 0x20a9, 0x0009, 0x2510, 0xa582, 0x000a, 0x0040, 0x419d, 0x0048,
+ 0x419d, 0x8108, 0x95a9, 0xa582, 0x0030, 0x0040, 0x41b8, 0x0048,
+ 0x41b8, 0x8108, 0x95a9, 0x2019, 0x000a, 0x2011, 0x0064, 0x2200,
+ 0xa502, 0x0040, 0x41b8, 0x0048, 0x41b8, 0x8108, 0x2300, 0xa210,
+ 0x00f0, 0x418f, 0x157f, 0x0078, 0x41b6, 0x2510, 0x8213, 0x8213,
+ 0x0078, 0x41b8, 0x2009, 0x41c8, 0x2019, 0x0011, 0x20a9, 0x000e,
+ 0x2011, 0x0032, 0x2200, 0xa502, 0x0040, 0x41b8, 0x0048, 0x41b8,
+ 0x8108, 0x2300, 0xa210, 0x00f0, 0x41aa, 0x157f, 0xa006, 0x007c,
+ 0x157f, 0xa582, 0x0064, 0x00c8, 0x41c5, 0x7808, 0xa085, 0x0070,
+ 0x780a, 0x7050, 0xa085, 0x0070, 0x7052, 0x2104, 0xa005, 0x007c,
+ 0x1209, 0x3002, 0x3202, 0x4203, 0x4403, 0x5404, 0x5604, 0x6605,
+ 0x6805, 0x7806, 0x7a06, 0x0c07, 0x0c07, 0x0e07, 0x10e1, 0x330a,
+ 0x5805, 0x5a05, 0x6a06, 0x6c06, 0x7c07, 0x7e07, 0x0e00, 0x789b,
+ 0x0010, 0xa046, 0x007c, 0xa784, 0x0f00, 0x800b, 0xa784, 0x001f,
+ 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xd7fc, 0x0040, 0x41f4,
+ 0xa0e0, 0x82c0, 0x0078, 0x41f6, 0xa0e0, 0x62c0, 0x007c, 0x79d8,
+ 0x7adc, 0x78d0, 0x801b, 0x00c8, 0x41fe, 0x8000, 0xa084, 0x003f,
+ 0xa108, 0xa291, 0x0000, 0x007c, 0x0e7e, 0x0f7e, 0xd084, 0x0040,
+ 0x4211, 0x2079, 0x0100, 0x2009, 0x5d80, 0x2071, 0x5d80, 0x0078,
+ 0x4221, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x0040, 0x421b, 0x2079,
+ 0x0100, 0x0078, 0x421d, 0x2079, 0x0200, 0x2009, 0x5d40, 0x2071,
+ 0x5d40, 0x2091, 0x8000, 0x2104, 0xa084, 0x000f, 0x0079, 0x4228,
+ 0x426b, 0x4232, 0x4232, 0x4232, 0x4232, 0x4232, 0x4230, 0x4270,
+ 0x1078, 0x2aef, 0x784b, 0x0004, 0x7848, 0xa084, 0x0004, 0x00c0,
+ 0x4234, 0x784b, 0x0008, 0x7848, 0xa084, 0x0008, 0x00c0, 0x423b,
+ 0x68b4, 0xc0f5, 0x68b6, 0x7858, 0xc0f5, 0x785a, 0x7830, 0xd0bc,
+ 0x00c0, 0x426b, 0x3200, 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec,
+ 0x007f, 0x0040, 0x4257, 0xa084, 0x0300, 0x0078, 0x4259, 0xa084,
+ 0x0400, 0x0040, 0x425f, 0x0018, 0x426b, 0x0078, 0x4261, 0x0028,
+ 0x426b, 0x681c, 0xd0ac, 0x00c0, 0x4269, 0x1078, 0x42ed, 0x0078,
+ 0x426b, 0x781b, 0x00d3, 0x2091, 0x8001, 0x0f7f, 0x0e7f, 0x007c,
+ 0x70ab, 0x0000, 0x1078, 0x4541, 0x0078, 0x426b, 0x0c7e, 0x2001,
+ 0x5d01, 0x2004, 0xd0ac, 0x00c0, 0x42db, 0x6814, 0x8007, 0xa084,
+ 0x000f, 0x8003, 0x8003, 0x8003, 0xb28c, 0x0300, 0x0040, 0x428c,
+ 0xa0e0, 0x61c0, 0x0078, 0x428e, 0xa0e0, 0x6240, 0x6004, 0xa084,
+ 0x000a, 0x00c0, 0x42db, 0x6108, 0xa194, 0xff00, 0x0040, 0x42db,
+ 0xa18c, 0x00ff, 0x2001, 0x000a, 0xa106, 0x0040, 0x42ba, 0x2001,
+ 0x000c, 0xa106, 0x0040, 0x42be, 0x2001, 0x0012, 0xa106, 0x0040,
+ 0x42c2, 0x2001, 0x0014, 0xa106, 0x0040, 0x42c6, 0x2001, 0x0019,
+ 0xa106, 0x0040, 0x42ca, 0x2001, 0x0032, 0xa106, 0x0040, 0x42ce,
+ 0x0078, 0x42d2, 0x2009, 0x000c, 0x0078, 0x42d4, 0x2009, 0x0012,
+ 0x0078, 0x42d4, 0x2009, 0x0014, 0x0078, 0x42d4, 0x2009, 0x0019,
+ 0x0078, 0x42d4, 0x2009, 0x0020, 0x0078, 0x42d4, 0x2009, 0x003f,
+ 0x0078, 0x42d4, 0x2011, 0x0000, 0x2100, 0xa205, 0x600a, 0x6004,
+ 0xa085, 0x0002, 0x6006, 0x0c7f, 0x007c, 0x781b, 0x0064, 0x007c,
+ 0x782b, 0x3008, 0x781b, 0x0064, 0x007c, 0x781b, 0x0057, 0x007c,
+ 0x782b, 0x3008, 0x781b, 0x0055, 0x007c, 0x2009, 0x5d17, 0x210c,
+ 0xa186, 0x0000, 0x0040, 0x42ff, 0xa186, 0x0001, 0x0040, 0x4302,
+ 0x701b, 0x000b, 0x706f, 0x0001, 0x781b, 0x0048, 0x007c, 0x781b,
+ 0x00cd, 0x007c, 0x701b, 0x000a, 0x007c, 0x2009, 0x5d17, 0x210c,
+ 0xa186, 0x0000, 0x0040, 0x431b, 0xa186, 0x0001, 0x0040, 0x4318,
+ 0x701b, 0x000b, 0x706f, 0x0001, 0x781b, 0x0048, 0x0078, 0x2b53,
+ 0x701b, 0x000a, 0x007c, 0x782b, 0x3008, 0x781b, 0x00cd, 0x007c,
+ 0x781b, 0x00d3, 0x007c, 0x782b, 0x3008, 0x781b, 0x00d3, 0x007c,
+ 0x781b, 0x0093, 0x007c, 0x782b, 0x3008, 0x781b, 0x0093, 0x007c,
+ 0x6818, 0xd0fc, 0x0040, 0x4336, 0x681b, 0x001d, 0x706f, 0x0001,
+ 0x781b, 0x0048, 0x007c, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x4350,
+ 0x7808, 0xa084, 0xfffc, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x78ec, 0xa084, 0x0021, 0x0040, 0x4350, 0x7050, 0xc08d, 0x780a,
+ 0x007c, 0x7830, 0xa084, 0x0080, 0x00c0, 0x436a, 0x78ec, 0xa084,
+ 0x0002, 0x00c0, 0x436a, 0x7808, 0xc08c, 0x780a, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x78ec, 0xa084, 0x0002, 0x0040, 0x436a, 0x7808,
+ 0xc08d, 0x780a, 0x007c, 0x7050, 0xc08d, 0x7052, 0x780a, 0x007c,
+ 0x7830, 0xa084, 0x0040, 0x00c0, 0x4370, 0x3200, 0x007e, 0x2001,
+ 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x4382, 0xa084, 0x0300,
+ 0x0078, 0x4384, 0xa084, 0x0400, 0x0040, 0x438a, 0x0098, 0x438e,
+ 0x0078, 0x438c, 0x00a8, 0x438e, 0x78ac, 0x007c, 0x7808, 0xa084,
+ 0xfffd, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec, 0xa084,
+ 0x0021, 0x0040, 0x43b2, 0x3200, 0x007e, 0x2001, 0x5d02, 0x2004,
+ 0xd0ec, 0x007f, 0x0040, 0x43a8, 0xa084, 0x0300, 0x0078, 0x43aa,
+ 0xa084, 0x0400, 0x0040, 0x43b0, 0x0098, 0x43ac, 0x0078, 0x43b2,
+ 0x00a8, 0x43b0, 0x78ac, 0x007e, 0x7050, 0x780a, 0x007f, 0x007c,
+ 0x78ec, 0xa084, 0x0002, 0x00c0, 0x5202, 0xa784, 0x007d, 0x00c0,
+ 0x43c4, 0x2700, 0x1078, 0x2aef, 0xa784, 0x0001, 0x00c0, 0x3877,
+ 0xa784, 0x0070, 0x0040, 0x43d4, 0x0c7e, 0x2d60, 0x2f68, 0x1078,
+ 0x2a83, 0x2d78, 0x2c68, 0x0c7f, 0xa784, 0x0008, 0x0040, 0x43e1,
+ 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x2b63, 0x0078,
+ 0x42dd, 0xa784, 0x0004, 0x0040, 0x4410, 0x78b8, 0xa084, 0x4001,
+ 0x0040, 0x4410, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040,
+ 0x2b63, 0x78e4, 0xa084, 0x0007, 0xa086, 0x0001, 0x00c0, 0x4410,
+ 0x78c0, 0xa085, 0x4800, 0x2030, 0x7e5a, 0x781b, 0x00d3, 0x007c,
+ 0x784b, 0x0008, 0x6818, 0xd0fc, 0x0040, 0x440d, 0x681b, 0x0015,
+ 0xd6f4, 0x0040, 0x440d, 0x681b, 0x0007, 0x1078, 0x42ed, 0x007c,
+ 0x681b, 0x0003, 0x7858, 0xa084, 0x5f00, 0x681e, 0x682f, 0x0000,
+ 0x6833, 0x0000, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040,
+ 0x3209, 0x3200, 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f,
+ 0x0040, 0x442e, 0xa084, 0x0300, 0x0078, 0x4430, 0xa084, 0x0400,
+ 0x0040, 0x4436, 0x0018, 0x2b53, 0x0078, 0x4438, 0x0028, 0x2b53,
+ 0x0078, 0x40ae, 0x6b14, 0x8307, 0xa084, 0x000f, 0x8003, 0x8003,
+ 0x8003, 0xd3fc, 0x0040, 0x4448, 0xa080, 0x6240, 0x0078, 0x444a,
+ 0xa080, 0x61c0, 0x2060, 0x2048, 0x7062, 0x2a60, 0x007c, 0x7000,
+ 0x0079, 0x4452, 0x445a, 0x445a, 0x445b, 0x4463, 0x445a, 0x445a,
+ 0x445a, 0x4466, 0x007c, 0x6008, 0xa084, 0xfbef, 0x600a, 0x6018,
+ 0x8001, 0x601a, 0x007c, 0x1078, 0x5218, 0x007c, 0x7098, 0xa005,
+ 0x0040, 0x4481, 0x2068, 0xb284, 0x0300, 0x0040, 0x4473, 0x2009,
+ 0x0000, 0x0078, 0x4475, 0x2009, 0x0001, 0x017e, 0x1078, 0x2014,
+ 0x017f, 0x017e, 0x1078, 0x519e, 0x017f, 0x1078, 0x519f, 0x709b,
+ 0x0000, 0x007c, 0x0e7e, 0x2091, 0x8000, 0x6014, 0xd0fc, 0x00c0,
+ 0x448d, 0x2071, 0x5d40, 0x0078, 0x448f, 0x2071, 0x5d80, 0x7000,
+ 0xa086, 0x0007, 0x00c0, 0x44a0, 0x6110, 0x70b4, 0xa106, 0x00c0,
+ 0x44a0, 0x0e7f, 0x1078, 0x2029, 0x1078, 0x44a6, 0xa006, 0x007c,
+ 0x2091, 0x8001, 0x0e7f, 0xa085, 0x0001, 0x007c, 0x0f7e, 0x0e7e,
+ 0x0078, 0x27d1, 0x785b, 0x0000, 0x70a7, 0x000e, 0x2009, 0x0100,
+ 0x017e, 0x7098, 0xa06d, 0x0040, 0x44b9, 0x709b, 0x0000, 0x0078,
+ 0x44bf, 0x70ab, 0x0000, 0x1078, 0x205d, 0x0040, 0x44c5, 0x70a4,
+ 0x6826, 0x1078, 0x45eb, 0x0078, 0x44b9, 0x017f, 0x077e, 0x157e,
+ 0x0c7e, 0x0d7e, 0x20a9, 0x0020, 0x3238, 0xa7bc, 0x0300, 0x0040,
+ 0x44d6, 0x2061, 0xa4e0, 0xc7fc, 0x0078, 0x44d9, 0x2061, 0xa5e0,
+ 0xc7fd, 0x6000, 0xa105, 0x6002, 0x601c, 0xa06d, 0x0040, 0x44e9,
+ 0x6800, 0x601e, 0x1078, 0x1de6, 0x6008, 0x8000, 0x600a, 0x0078,
+ 0x44dc, 0x6018, 0xa06d, 0x0040, 0x44f3, 0x6800, 0x601a, 0x1078,
+ 0x1de6, 0x0078, 0x44e9, 0xace0, 0x0008, 0x0070, 0x44f9, 0x0078,
+ 0x44d9, 0x7094, 0xa084, 0x8000, 0x0040, 0x4500, 0x1078, 0x4670,
+ 0x0d7f, 0x0c7f, 0x157f, 0x077f, 0x007c, 0x6804, 0xa084, 0x000f,
+ 0x0079, 0x450a, 0x451a, 0x451a, 0x451a, 0x451a, 0x451a, 0x451a,
+ 0x451c, 0x452e, 0x451a, 0x451a, 0x451a, 0x451a, 0x451a, 0x453c,
+ 0x451a, 0x451c, 0x1078, 0x2aef, 0x007e, 0x7830, 0xd0b4, 0x0040,
+ 0x4527, 0x784b, 0x0004, 0x7848, 0xd094, 0x00c0, 0x4523, 0x007f,
+ 0x1078, 0x5010, 0x1078, 0x1de6, 0x0078, 0x4540, 0x6827, 0x000b,
+ 0x007e, 0x7830, 0xd0b4, 0x0040, 0x453b, 0x784b, 0x0004, 0x7848,
+ 0xd094, 0x00c0, 0x4537, 0x007f, 0x1078, 0x5010, 0x1078, 0x45eb,
+ 0x007c, 0x0f7e, 0x6814, 0xd0fc, 0x00c0, 0x4558, 0x2001, 0x5d02,
+ 0x2004, 0xd0ec, 0x0040, 0x4552, 0x2079, 0x0100, 0x0098, 0x4573,
+ 0x0078, 0x455c, 0x2079, 0x0200, 0x00a8, 0x4573, 0x0078, 0x455c,
+ 0x2079, 0x0100, 0x0098, 0x4573, 0x7830, 0xa084, 0x00c0, 0x00c0,
+ 0x4573, 0x0d7e, 0x1078, 0x51a8, 0x2d00, 0x682e, 0x2009, 0x0004,
+ 0x2001, 0x0000, 0x6827, 0x0084, 0x1078, 0x515f, 0x1078, 0x45eb,
+ 0x0d7f, 0x0078, 0x45b9, 0x7948, 0xa185, 0x4000, 0x784a, 0x6814,
+ 0xd0fc, 0x00c0, 0x4589, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x0040,
+ 0x4585, 0x0098, 0x458e, 0x0078, 0x458b, 0x00a8, 0x458e, 0x0078,
+ 0x458b, 0x0098, 0x458e, 0x794a, 0x0078, 0x4561, 0x7828, 0xa086,
+ 0x1834, 0x00c0, 0x4597, 0xa185, 0x0004, 0x0078, 0x459e, 0x7828,
+ 0xa086, 0x1814, 0x00c0, 0x458b, 0xa185, 0x000c, 0x784a, 0x789b,
+ 0x000e, 0x78ab, 0x0002, 0x7858, 0xa084, 0x00ff, 0xa085, 0x0400,
+ 0x785a, 0x70ac, 0xa080, 0x0091, 0x781a, 0x6827, 0x0284, 0x682c,
+ 0x6836, 0x6830, 0x683a, 0x2009, 0x0004, 0x2001, 0x0000, 0x1078,
+ 0x515f, 0x0f7f, 0x007c, 0x0d7e, 0x6b14, 0x1078, 0x20d9, 0x0040,
+ 0x45c8, 0x2068, 0x6827, 0x0002, 0x1078, 0x45eb, 0x0078, 0x45bd,
+ 0x0d7f, 0x007c, 0x0d7e, 0x6b14, 0x6c28, 0xa4a4, 0x00ff, 0x1078,
+ 0x2069, 0x0040, 0x45d8, 0x2068, 0x6827, 0x0002, 0x1078, 0x45eb,
+ 0x0d7f, 0x007c, 0x0d7e, 0x6814, 0xa09c, 0x00ff, 0x1078, 0x20a3,
+ 0x0040, 0x45e9, 0x2068, 0x6827, 0x0002, 0x1078, 0x45eb, 0x0078,
+ 0x45de, 0x0d7f, 0x007c, 0x0c7e, 0x6914, 0x6814, 0x1078, 0x465f,
+ 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0006, 0x0040, 0x4607, 0xa186,
+ 0x000d, 0x0040, 0x4626, 0xa186, 0x0017, 0x00c0, 0x4603, 0x1078,
+ 0x1de6, 0x0c7f, 0x007c, 0x1078, 0x21cc, 0x0c7f, 0x007c, 0x6004,
+ 0x8001, 0x0048, 0x4624, 0x6006, 0x2009, 0x0000, 0xa684, 0x0001,
+ 0x00c0, 0x4614, 0xa18d, 0x8000, 0xa684, 0x0004, 0x0040, 0x461a,
+ 0xa18d, 0x0002, 0x691e, 0x6823, 0x0000, 0x711c, 0x810f, 0x6818,
+ 0xa105, 0x681a, 0x0078, 0x4603, 0x1078, 0x2aef, 0x6018, 0xa005,
+ 0x00c0, 0x4635, 0x6008, 0x8001, 0x0048, 0x4635, 0x600a, 0x601c,
+ 0x6802, 0x2d00, 0x601e, 0x0078, 0x464d, 0xac88, 0x0006, 0x2104,
+ 0xa005, 0x0040, 0x463e, 0x2008, 0x0078, 0x4637, 0x6802, 0x2d0a,
+ 0x6008, 0x8001, 0x0048, 0x464b, 0x600a, 0x6018, 0x2068, 0x6800,
+ 0x601a, 0x0078, 0x462f, 0x0c7f, 0x007c, 0x157e, 0x137e, 0x147e,
+ 0x0c7e, 0x0d7e, 0x1078, 0x1dc3, 0x2da0, 0x137f, 0x20a9, 0x0034,
+ 0x53a3, 0x0c7f, 0x147f, 0x137f, 0x157f, 0x0078, 0x4603, 0xd0fc,
+ 0x00c0, 0x4666, 0x2061, 0xa4e0, 0x0078, 0x4668, 0x2061, 0xa5e0,
+ 0xa184, 0x001f, 0x8003, 0x8003, 0x8003, 0xac00, 0x2060, 0x007c,
+ 0xd7fc, 0x00c0, 0x4683, 0x2019, 0x5d54, 0x2001, 0x5d02, 0x2004,
+ 0xd0ec, 0x0040, 0x467f, 0x2021, 0x0102, 0x0078, 0x4687, 0x2021,
+ 0x0202, 0x0078, 0x4687, 0x2019, 0x5d94, 0x2021, 0x0102, 0x2304,
+ 0xa085, 0x0001, 0x201a, 0x2404, 0xa085, 0x0001, 0x2022, 0x007c,
+ 0xd7fc, 0x00c0, 0x46a3, 0x2019, 0x5d54, 0x2001, 0x5d02, 0x2004,
+ 0xd0ec, 0x0040, 0x469f, 0x2021, 0x0102, 0x0078, 0x46a7, 0x2021,
+ 0x0202, 0x0078, 0x46a7, 0x2019, 0x5d94, 0x2021, 0x0102, 0x2304,
+ 0xa084, 0xfffe, 0x201a, 0x2404, 0xa084, 0xfffe, 0x2022, 0x007c,
+ 0x7990, 0xa18c, 0xfff8, 0x7992, 0x70ac, 0xa080, 0x00d7, 0x781a,
+ 0x0078, 0x2b53, 0x709b, 0x0000, 0x7003, 0x0000, 0x704f, 0x0001,
+ 0x7047, 0x0000, 0x1078, 0x205d, 0x0040, 0x46e7, 0x70f3, 0x0000,
+ 0x68c8, 0x2060, 0x6100, 0xa184, 0x0300, 0x0040, 0x46db, 0x6827,
+ 0x000e, 0xa084, 0x0200, 0x0040, 0x46d7, 0x6827, 0x0017, 0x1078,
+ 0x45eb, 0x0078, 0x46ba, 0x7000, 0xa086, 0x0007, 0x00c0, 0x473f,
+ 0x2d00, 0x709a, 0xad80, 0x000f, 0x7046, 0x0078, 0x46f2, 0x7010,
+ 0xa005, 0x00c0, 0x46f0, 0x704c, 0xa086, 0x0001, 0x0040, 0x2b6d,
+ 0x0078, 0x2b53, 0x2031, 0x0000, 0x691c, 0xa184, 0x0002, 0x0040,
+ 0x46fb, 0xa6b5, 0x0004, 0xa184, 0x00c0, 0x8003, 0x8003, 0x8007,
+ 0xa080, 0x47e3, 0x2004, 0xa635, 0x1078, 0x2c6b, 0x6820, 0xa084,
+ 0x0400, 0x0040, 0x4715, 0x789b, 0x0018, 0x78ab, 0x0003, 0x789b,
+ 0x0081, 0x78ab, 0x0001, 0xa6b5, 0x1000, 0x6820, 0xa084, 0x8000,
+ 0x0040, 0x4721, 0xa6b5, 0x0400, 0x789b, 0x000e, 0x6824, 0x8007,
+ 0x78aa, 0xa684, 0x0200, 0x0040, 0x473b, 0x682c, 0x78d2, 0x6830,
+ 0x78d6, 0xa684, 0x0100, 0x0040, 0x4739, 0x682c, 0xa084, 0x0001,
+ 0x0040, 0x4739, 0x7888, 0xa084, 0x0040, 0x0040, 0x4739, 0xa6b5,
+ 0x8000, 0x1078, 0x518e, 0x7e5a, 0x6eb6, 0x0078, 0x51c7, 0x1078,
+ 0x433b, 0x00c0, 0x47dd, 0x2011, 0x0001, 0x2031, 0x1000, 0x1078,
+ 0x2c6b, 0x789b, 0x0018, 0x6814, 0xa084, 0x001f, 0xa085, 0x0080,
+ 0x78aa, 0x691c, 0xa184, 0x0002, 0x0040, 0x475e, 0xa6b5, 0x0004,
+ 0x78ab, 0x0020, 0x6828, 0x78aa, 0xa290, 0x0002, 0x6820, 0xa084,
+ 0x8000, 0x0040, 0x476c, 0xa6b5, 0x0400, 0x789b, 0x000e, 0x6824,
+ 0x8007, 0x78aa, 0x0078, 0x477a, 0x681c, 0xa084, 0x8000, 0x00c0,
+ 0x477a, 0xa6b5, 0x0800, 0x6820, 0xa084, 0x0100, 0x0040, 0x477a,
+ 0xa6b5, 0x4000, 0x681c, 0xa084, 0x00c0, 0x8003, 0x8003, 0x8007,
+ 0xa080, 0x47e3, 0x2004, 0xa635, 0xa684, 0x0100, 0x0040, 0x4794,
+ 0x682c, 0xa084, 0x0001, 0x0040, 0x4794, 0x7888, 0xa084, 0x0040,
+ 0x0040, 0x4794, 0xa6b5, 0x8000, 0x789b, 0x007e, 0x7eae, 0x6eb6,
+ 0x6814, 0xc0fc, 0x8007, 0x78aa, 0x7882, 0x7aaa, 0x7830, 0xa084,
+ 0x00c0, 0x00c0, 0x47dd, 0x6914, 0xd1fc, 0x00c0, 0x47b5, 0x2001,
+ 0x5d02, 0x2004, 0xd0ec, 0x0040, 0x47b1, 0x0018, 0x47dd, 0x0078,
+ 0x47b7, 0x0028, 0x47dd, 0x0078, 0x47b7, 0x0018, 0x47dd, 0x127e,
+ 0x0d7e, 0x0c7e, 0x70f4, 0xa084, 0x2700, 0x2090, 0x0c7f, 0x0d7f,
+ 0x127f, 0x70ac, 0xa080, 0x00dc, 0x781a, 0x1078, 0x436b, 0xa684,
+ 0x0200, 0x0040, 0x47d1, 0x682c, 0x78d2, 0x6830, 0x78d6, 0x1078,
+ 0x518e, 0x2d00, 0x709a, 0x7056, 0x6810, 0x70b6, 0x7003, 0x0007,
+ 0xad80, 0x000f, 0x7046, 0x0078, 0x2b53, 0x1078, 0x2014, 0x1078,
+ 0x436b, 0x0078, 0x2b53, 0x0000, 0x0300, 0x0200, 0x0000, 0x1078,
+ 0x2aef, 0x2300, 0x0079, 0x47ec, 0x47ef, 0x47ef, 0x47f1, 0x1078,
+ 0x2aef, 0x1078, 0x519f, 0x6924, 0xa184, 0x00ff, 0xa086, 0x000a,
+ 0x0040, 0x4803, 0xa184, 0xff00, 0xa085, 0x000a, 0x6826, 0x1078,
+ 0x2014, 0x0078, 0x46ba, 0x2001, 0x000a, 0x1078, 0x512e, 0x0078,
+ 0x46ba, 0xa282, 0x0005, 0x0050, 0x480f, 0x1078, 0x2aef, 0x7000,
+ 0xa084, 0x000f, 0x10c0, 0x444f, 0x1078, 0x1dc3, 0x00c0, 0x482e,
+ 0xa684, 0x0004, 0x0040, 0x4820, 0x2001, 0x2800, 0x0078, 0x4822,
+ 0x2001, 0x0800, 0x71ac, 0xa188, 0x0091, 0x789b, 0x000e, 0x78aa,
+ 0x2031, 0x0400, 0x7e5a, 0x791a, 0x0078, 0x2b53, 0x6807, 0x0106,
+ 0x680b, 0x0000, 0x689f, 0x0000, 0x6827, 0x0000, 0xa386, 0x0002,
+ 0x00c0, 0x484f, 0xa286, 0x0002, 0x00c0, 0x484f, 0x78a0, 0xa005,
+ 0x00c0, 0x484f, 0xa484, 0x8000, 0x00c0, 0x484f, 0x78e4, 0xa084,
+ 0x0008, 0x0040, 0x484f, 0xa6b5, 0x0008, 0x2019, 0x0000, 0x1078,
+ 0x4c49, 0x2d00, 0x709a, 0x7056, 0x7003, 0x0007, 0x7047, 0x0000,
+ 0x6824, 0xa084, 0x0080, 0x0040, 0x4861, 0x1078, 0x4d06, 0x0078,
+ 0x2b53, 0x2300, 0x0079, 0x4864, 0x4867, 0x48e8, 0x4907, 0x2200,
+ 0x0079, 0x486a, 0x486f, 0x487f, 0x48a5, 0x48b1, 0x48d4, 0x2029,
+ 0x0001, 0xa026, 0x2011, 0x0000, 0x1078, 0x4e2b, 0x0079, 0x4878,
+ 0x487d, 0x2b53, 0x46ba, 0x487d, 0x487d, 0x1078, 0x2aef, 0x7990,
+ 0xa18c, 0x0007, 0x00c0, 0x4886, 0x2009, 0x0008, 0x2011, 0x0001,
+ 0xa684, 0x0004, 0x0040, 0x488e, 0x2011, 0x0003, 0x2220, 0xa12a,
+ 0x2011, 0x0001, 0x1078, 0x4e2b, 0x0079, 0x4896, 0x489b, 0x2b53,
+ 0x46ba, 0x48a3, 0x489d, 0x0078, 0x51cd, 0x70a3, 0x48a1, 0x0078,
+ 0x2b53, 0x0078, 0x489b, 0x1078, 0x2aef, 0xa684, 0x0010, 0x0040,
+ 0x48af, 0x1078, 0x4cd5, 0x0040, 0x48af, 0x0078, 0x2b53, 0x0078,
+ 0x4d43, 0x6000, 0xa084, 0x0002, 0x0040, 0x48ce, 0x70ac, 0xa080,
+ 0x00cc, 0x781a, 0x0d7e, 0x1078, 0x51a8, 0x2d00, 0x682e, 0x6827,
+ 0x0000, 0x1078, 0x45eb, 0x0d7f, 0x1078, 0x1de6, 0x7003, 0x0000,
+ 0x7047, 0x0000, 0x7057, 0x0000, 0x0078, 0x46ba, 0xa684, 0x0004,
+ 0x00c0, 0x48d4, 0x0078, 0x51cd, 0x6000, 0xa084, 0x0004, 0x00c0,
+ 0x48e6, 0x6000, 0xa084, 0x0001, 0x0040, 0x48e6, 0x70a3, 0x48e6,
+ 0x2001, 0x0007, 0x1078, 0x5126, 0x0078, 0x51d3, 0x0078, 0x51cd,
+ 0x2200, 0x0079, 0x48eb, 0x48f0, 0x48f0, 0x48f0, 0x48f2, 0x48f0,
+ 0x1078, 0x2aef, 0x709f, 0x48f6, 0x0078, 0x51db, 0x2011, 0x0018,
+ 0x1078, 0x4e25, 0x0079, 0x48fc, 0x4901, 0x2b53, 0x46ba, 0x4903,
+ 0x4905, 0x1078, 0x2aef, 0x1078, 0x2aef, 0x1078, 0x2aef, 0x2200,
+ 0x0079, 0x490a, 0x490f, 0x4911, 0x4911, 0x490f, 0x490f, 0x1078,
+ 0x2aef, 0x78e4, 0xa084, 0x0008, 0x0040, 0x4926, 0x709f, 0x491a,
+ 0x0078, 0x51db, 0x2011, 0x0004, 0x1078, 0x4e25, 0x0079, 0x4920,
+ 0x4926, 0x2b53, 0x46ba, 0x4926, 0x4930, 0x4934, 0x70a3, 0x492e,
+ 0x2001, 0x0003, 0x1078, 0x5126, 0x0078, 0x51d3, 0x0078, 0x51cd,
+ 0x70a3, 0x4926, 0x0078, 0x2b53, 0x70a3, 0x4938, 0x0078, 0x2b53,
+ 0x0078, 0x492e, 0xa282, 0x0003, 0x0050, 0x4940, 0x1078, 0x2aef,
+ 0xa386, 0x0002, 0x00c0, 0x4959, 0xa286, 0x0002, 0x00c0, 0x495f,
+ 0x78a0, 0xa005, 0x00c0, 0x495f, 0xa484, 0x8000, 0x00c0, 0x495f,
+ 0x78e4, 0xa084, 0x0008, 0x0040, 0x4959, 0xa6b5, 0x0008, 0x2019,
+ 0x0000, 0xa684, 0x0008, 0x0040, 0x495f, 0x1078, 0x4cb2, 0x6810,
+ 0x70b6, 0x7003, 0x0007, 0x2300, 0x0079, 0x4966, 0x4969, 0x4996,
+ 0x499e, 0x2200, 0x0079, 0x496c, 0x4971, 0x496f, 0x498a, 0x1078,
+ 0x2aef, 0x7990, 0xa1ac, 0x0007, 0xa026, 0x2011, 0x0001, 0x1078,
+ 0x4e2b, 0x0079, 0x497b, 0x4980, 0x2b53, 0x46ba, 0x4988, 0x4982,
+ 0x0078, 0x51cd, 0x70a3, 0x4986, 0x0078, 0x2b53, 0x0078, 0x4980,
+ 0x1078, 0x2aef, 0xa684, 0x0010, 0x0040, 0x4994, 0x1078, 0x4cd5,
+ 0x0040, 0x4994, 0x0078, 0x2b53, 0x0078, 0x4d43, 0x2200, 0x0079,
+ 0x4999, 0x499c, 0x499c, 0x499c, 0x1078, 0x2aef, 0x2200, 0x0079,
+ 0x49a1, 0x49a4, 0x49a6, 0x49a6, 0x1078, 0x2aef, 0x78e4, 0xa084,
+ 0x0008, 0x0040, 0x49bb, 0x709f, 0x49af, 0x0078, 0x51db, 0x2011,
+ 0x0004, 0x1078, 0x4e25, 0x0079, 0x49b5, 0x49bb, 0x2b53, 0x46ba,
+ 0x49bb, 0x49c5, 0x49c9, 0x70a3, 0x49c3, 0x2001, 0x0003, 0x1078,
+ 0x5126, 0x0078, 0x51d3, 0x0078, 0x51cd, 0x70a3, 0x49bb, 0x0078,
+ 0x2b53, 0x70a3, 0x49cd, 0x0078, 0x2b53, 0x0078, 0x49c3, 0x2300,
+ 0x0079, 0x49d2, 0x49d7, 0x49d9, 0x49d5, 0x1078, 0x2aef, 0x709c,
+ 0x007a, 0x709c, 0x007a, 0xa282, 0x0002, 0x0050, 0x49e1, 0x1078,
+ 0x2aef, 0xa684, 0x0200, 0x0040, 0x49eb, 0x1078, 0x519e, 0x1078,
+ 0x4e0d, 0x1078, 0x519f, 0x2300, 0x0079, 0x49ee, 0x49f1, 0x4a1f,
+ 0x4a85, 0xa286, 0x0001, 0x0040, 0x49f7, 0x1078, 0x2aef, 0xa684,
+ 0x0200, 0x0040, 0x49ff, 0x1078, 0x519e, 0x1078, 0x519f, 0x6924,
+ 0xa184, 0x00ff, 0xa086, 0x000a, 0x00c0, 0x4a09, 0xa184, 0xff00,
+ 0x6826, 0x2001, 0x0001, 0x1078, 0x512e, 0x78b8, 0xa084, 0xc001,
+ 0x0040, 0x4a1b, 0x7848, 0xa085, 0x0008, 0x784a, 0x7848, 0xa084,
+ 0x0008, 0x00c0, 0x4a16, 0x7003, 0x0000, 0x0078, 0x46ba, 0x2200,
+ 0x0079, 0x4a22, 0x4a24, 0x4a55, 0x709f, 0x4a28, 0x0078, 0x51db,
+ 0x2011, 0x000d, 0x1078, 0x4e25, 0x0079, 0x4a2e, 0x4a35, 0x2b53,
+ 0x46ba, 0x4a3d, 0x4a45, 0x4a4b, 0x4a4d, 0xa6b4, 0x00ff, 0xa6b5,
+ 0x0400, 0x6eb6, 0x7e5a, 0x0078, 0x51c7, 0xa6b4, 0x00ff, 0xa6b5,
+ 0x0400, 0x6eb6, 0x7e5a, 0x0078, 0x51c7, 0x70a3, 0x4a49, 0x0078,
+ 0x2b53, 0x0078, 0x4a35, 0x1078, 0x2aef, 0x70a3, 0x4a51, 0x0078,
+ 0x2b53, 0x1078, 0x51e1, 0x0078, 0x2b53, 0x709f, 0x4a59, 0x0078,
+ 0x51db, 0x2011, 0x0012, 0x1078, 0x4e25, 0x0079, 0x4a5f, 0x4a65,
+ 0x2b53, 0x46ba, 0x4a71, 0x4a79, 0x4a7f, 0xa6b4, 0x00ff, 0xa6b5,
+ 0x0400, 0x6eb6, 0x7e5a, 0x70ac, 0xa080, 0x00a5, 0x781a, 0x0078,
+ 0x2b53, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x0078,
+ 0x51c7, 0x70a3, 0x4a7d, 0x0078, 0x2b53, 0x0078, 0x4a65, 0x70a3,
+ 0x4a83, 0x0078, 0x2b53, 0x0078, 0x4a71, 0xa286, 0x0001, 0x0040,
+ 0x4a8b, 0x1078, 0x2aef, 0x709f, 0x4a8f, 0x0078, 0x51db, 0x2011,
+ 0x0015, 0x1078, 0x4e25, 0x0079, 0x4a95, 0x4a9a, 0x2b53, 0x46ba,
+ 0x4aa8, 0x4ab4, 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a,
+ 0x783b, 0x1301, 0x70ac, 0xa080, 0x00b5, 0x781a, 0x0078, 0x2b53,
+ 0xa6b4, 0x00ff, 0xa6b5, 0x0400, 0x6eb6, 0x7e5a, 0x70ac, 0xa080,
+ 0x00a5, 0x781a, 0x0078, 0x2b53, 0x70a3, 0x4ab8, 0x0078, 0x2b53,
+ 0x0078, 0x4a9a, 0xa282, 0x0003, 0x0050, 0x4ac0, 0x1078, 0x2aef,
+ 0x2300, 0x0079, 0x4ac3, 0x4ac6, 0x4b07, 0x4b60, 0xa286, 0x0001,
+ 0x0040, 0x4acc, 0x1078, 0x2aef, 0x6804, 0xa084, 0x00ff, 0xa086,
+ 0x0006, 0x00c0, 0x4ad9, 0x1078, 0x45eb, 0x7003, 0x0000, 0x0078,
+ 0x46ba, 0x683b, 0x0000, 0x6837, 0x0000, 0xa684, 0x0200, 0x0040,
+ 0x4ae7, 0x1078, 0x519e, 0x1078, 0x4e0d, 0x1078, 0x519f, 0x6924,
+ 0xa184, 0x00ff, 0xa086, 0x000a, 0x00c0, 0x4af1, 0xa184, 0xff00,
+ 0x6826, 0x2001, 0x0001, 0x1078, 0x512e, 0x78b8, 0xa084, 0xc001,
+ 0x0040, 0x4b03, 0x7848, 0xa085, 0x0008, 0x784a, 0x7848, 0xa084,
+ 0x0008, 0x00c0, 0x4afe, 0x7003, 0x0000, 0x0078, 0x46ba, 0x2200,
+ 0x0079, 0x4b0a, 0x4b0c, 0x4b3b, 0x709f, 0x4b10, 0x0078, 0x51db,
+ 0x2011, 0x000d, 0x1078, 0x4e25, 0x0079, 0x4b16, 0x4b1b, 0x2b53,
+ 0x46ba, 0x4b23, 0x4b2b, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6,
+ 0x7e5a, 0x0078, 0x51c7, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6,
+ 0x7e5a, 0x0078, 0x51c7, 0x70a3, 0x4b2f, 0x0078, 0x2b53, 0x0078,
+ 0x4b1b, 0x1078, 0x2aef, 0x70a3, 0x4b37, 0x0078, 0x2b53, 0x1078,
+ 0x51e1, 0x0078, 0x2b53, 0x709f, 0x4b3f, 0x0078, 0x51db, 0x2011,
+ 0x0005, 0x1078, 0x4e25, 0x0079, 0x4b45, 0x4b4a, 0x2b53, 0x46ba,
+ 0x4b52, 0x4b5a, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a,
+ 0x0078, 0x51c7, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6, 0x7e5a,
+ 0x0078, 0x51c7, 0x70a3, 0x4b5e, 0x0078, 0x2b53, 0x0078, 0x4b4a,
+ 0xa286, 0x0001, 0x0040, 0x4b66, 0x1078, 0x2aef, 0x709f, 0x4b6a,
+ 0x0078, 0x51db, 0x2011, 0x0006, 0x1078, 0x4e25, 0x0079, 0x4b70,
+ 0x4b75, 0x2b53, 0x46ba, 0x4b7b, 0x4b85, 0xa6b5, 0x0800, 0x6eb6,
+ 0x7e5a, 0x0078, 0x51c7, 0xa6b4, 0x00ff, 0xa6b5, 0x0800, 0x6eb6,
+ 0xa6b5, 0x4000, 0x7e5a, 0x0078, 0x51c7, 0x70a3, 0x4b89, 0x0078,
+ 0x2b53, 0x0078, 0x4b75, 0x2300, 0x0079, 0x4b8e, 0x4b93, 0x4b91,
+ 0x4b91, 0x1078, 0x2aef, 0x1078, 0x2aef, 0x2300, 0x71a0, 0xa005,
+ 0x017a, 0x6810, 0x70b6, 0xa282, 0x0003, 0x0050, 0x4ba1, 0x1078,
+ 0x2aef, 0x2300, 0x0079, 0x4ba4, 0x4ba7, 0x4bb5, 0x4bd7, 0xa684,
+ 0x0200, 0x0040, 0x4baf, 0x1078, 0x519e, 0x1078, 0x519f, 0x2001,
+ 0x0001, 0x1078, 0x512e, 0x0078, 0x2b53, 0xa286, 0x0002, 0x0040,
+ 0x4bbe, 0x82ff, 0x0040, 0x4bbe, 0x1078, 0x2aef, 0x709f, 0x4bc2,
+ 0x0078, 0x51db, 0x2011, 0x0018, 0x1078, 0x4e25, 0x0079, 0x4bc8,
+ 0x4bcd, 0x2b53, 0x46ba, 0x4bcf, 0x4bd1, 0x0078, 0x51c7, 0x0078,
+ 0x51c7, 0x70a3, 0x4bd5, 0x0078, 0x2b53, 0x0078, 0x4bcd, 0x2200,
+ 0x0079, 0x4bda, 0x4bdc, 0x4bf5, 0x709f, 0x4be0, 0x0078, 0x51db,
+ 0x2011, 0x0017, 0x1078, 0x4e25, 0x0079, 0x4be6, 0x4beb, 0x2b53,
+ 0x46ba, 0x4bed, 0x4bef, 0x0078, 0x51c7, 0x0078, 0x51c7, 0x70a3,
+ 0x4bf3, 0x0078, 0x2b53, 0x0078, 0x4beb, 0xa484, 0x8000, 0x00c0,
+ 0x4c37, 0xa684, 0x0100, 0x0040, 0x4c03, 0x1078, 0x519e, 0x1078,
+ 0x4e0d, 0x0078, 0x5202, 0x78d8, 0x78d2, 0x78dc, 0x78d6, 0xa6b4,
+ 0xefff, 0x7e5a, 0x709f, 0x4c0e, 0x0078, 0x51db, 0x2011, 0x000d,
+ 0x1078, 0x4e25, 0x0079, 0x4c14, 0x4c19, 0x2b53, 0x46ba, 0x4c19,
+ 0x4c27, 0xa684, 0x0100, 0x0040, 0x4c25, 0x1078, 0x5154, 0x682c,
+ 0x78d2, 0x6830, 0x78d6, 0x1078, 0x518e, 0x0078, 0x51c7, 0x70a3,
+ 0x4c2b, 0x0078, 0x2b53, 0x0078, 0x4c19, 0x1078, 0x2aef, 0x70a3,
+ 0x4c33, 0x0078, 0x2b53, 0x1078, 0x51e1, 0x0078, 0x2b53, 0x1078,
+ 0x519f, 0x70a3, 0x4c41, 0x2001, 0x0003, 0x1078, 0x5126, 0x0078,
+ 0x51d3, 0x1078, 0x518e, 0x682c, 0x78d2, 0x6830, 0x78d6, 0x0078,
+ 0x51c7, 0x70b0, 0x6812, 0x70b6, 0x8000, 0x70b2, 0x681b, 0x0000,
+ 0xa684, 0x0008, 0x0040, 0x4c6c, 0x157e, 0x137e, 0x147e, 0x7890,
+ 0x8004, 0x8004, 0x8004, 0x8004, 0xa084, 0x000f, 0x681a, 0x80ac,
+ 0x789b, 0x0000, 0xaf80, 0x002b, 0x2098, 0xad80, 0x000b, 0x20a0,
+ 0x53a5, 0x147f, 0x137f, 0x157f, 0xa6c4, 0x0f00, 0xa684, 0x0002,
+ 0x00c0, 0x4c7b, 0x692c, 0x810d, 0x810d, 0x810d, 0xa184, 0x0007,
+ 0x2008, 0x0078, 0x4c8a, 0x789b, 0x0010, 0x79ac, 0xa184, 0x0020,
+ 0x0040, 0x4c8a, 0x017e, 0x2009, 0x0005, 0x2001, 0x3d00, 0x1078,
+ 0x515f, 0x017f, 0xa184, 0x001f, 0xa805, 0x017e, 0x3208, 0xa18c,
+ 0x0300, 0x0040, 0x4c96, 0xc0fc, 0x0078, 0x4c97, 0xc0fd, 0x017f,
+ 0x6816, 0x1078, 0x465f, 0x68ca, 0xa684, 0x0004, 0x0040, 0x4ca6,
+ 0xa18c, 0xff00, 0x78a8, 0xa084, 0x00ff, 0xa105, 0x682a, 0xa6b4,
+ 0x00ff, 0x6000, 0xa084, 0x0008, 0x0040, 0x4cb0, 0xa6b5, 0x4000,
+ 0x6eb6, 0x007c, 0x157e, 0x137e, 0x147e, 0x6918, 0x7890, 0x8004,
+ 0x8004, 0x8004, 0x8004, 0xa084, 0x000f, 0x007e, 0xa100, 0x681a,
+ 0x007f, 0x8000, 0x8004, 0x0040, 0x4cd1, 0x20a8, 0x8104, 0xa080,
+ 0x000b, 0xad00, 0x20a0, 0x789b, 0x0000, 0xaf80, 0x002b, 0x2098,
+ 0x53a5, 0x147f, 0x137f, 0x157f, 0x007c, 0x682c, 0xa084, 0x0020,
+ 0x00c0, 0x4cdd, 0x620c, 0x0078, 0x4cde, 0x6210, 0x6b18, 0x2300,
+ 0xa202, 0x0040, 0x4cfe, 0x2018, 0xa382, 0x000e, 0x0048, 0x4cee,
+ 0x0040, 0x4cee, 0x2019, 0x000e, 0x0078, 0x4cf2, 0x7858, 0xa084,
+ 0xffef, 0x785a, 0x783b, 0x1b01, 0x7893, 0x0000, 0x7ba2, 0x70ac,
+ 0xa080, 0x008e, 0x781a, 0xa085, 0x0001, 0x007c, 0x7858, 0xa084,
+ 0xffef, 0x785a, 0x7893, 0x0000, 0xa006, 0x007c, 0x6904, 0xa18c,
+ 0x00ff, 0xa196, 0x0007, 0x0040, 0x4d13, 0xa196, 0x000f, 0x0040,
+ 0x4d13, 0x6807, 0x0117, 0x6914, 0x6814, 0x1078, 0x465f, 0x6100,
+ 0x8104, 0x00c8, 0x4d2f, 0x601c, 0xa005, 0x0040, 0x4d23, 0x2001,
+ 0x0800, 0x0078, 0x4d31, 0x0d7e, 0x6824, 0x007e, 0x1078, 0x51a8,
+ 0x007f, 0x6826, 0x2d00, 0x682e, 0x1078, 0x45eb, 0x0d7f, 0x2001,
+ 0x0200, 0x6826, 0x8007, 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085,
+ 0x8000, 0x6822, 0x2031, 0x0400, 0x6eb6, 0x7e5a, 0x71ac, 0xa188,
+ 0x0091, 0x791a, 0x007c, 0x1078, 0x2c6b, 0x6814, 0x2040, 0xa684,
+ 0x0002, 0x00c0, 0x4d59, 0x692c, 0x810d, 0x810d, 0x810d, 0xa184,
+ 0x0007, 0x2008, 0xa805, 0x6816, 0x1078, 0x465f, 0x68ca, 0x0078,
+ 0x4d5d, 0x6914, 0x6814, 0x1078, 0x465f, 0x6100, 0x8104, 0x00c8,
+ 0x4dba, 0xa184, 0x0300, 0x0040, 0x4d69, 0x6807, 0x0117, 0x0078,
+ 0x4d87, 0x6004, 0xa005, 0x00c0, 0x4d90, 0x6807, 0x0117, 0x601c,
+ 0xa005, 0x00c0, 0x4d7d, 0x0d7e, 0x1078, 0x51a8, 0x6827, 0x0034,
+ 0x2d00, 0x682e, 0x1078, 0x45eb, 0x0d7f, 0xa684, 0x0004, 0x0040,
+ 0x4d87, 0x2031, 0x0400, 0x2001, 0x2800, 0x0078, 0x4d8b, 0x2031,
+ 0x0400, 0x2001, 0x0800, 0x71ac, 0xa188, 0x0091, 0x0078, 0x4de8,
+ 0x6018, 0xa005, 0x00c0, 0x4d7d, 0x601c, 0xa005, 0x00c0, 0x4d7d,
+ 0x689f, 0x0000, 0x6827, 0x003d, 0xa684, 0x0001, 0x0040, 0x4df6,
+ 0xd694, 0x00c0, 0x4db3, 0x6100, 0xd1d4, 0x0040, 0x4db3, 0x692c,
+ 0x81ff, 0x0040, 0x4df6, 0xa186, 0x0003, 0x0040, 0x4df6, 0xa186,
+ 0x0012, 0x0040, 0x4df6, 0xa6b5, 0x0800, 0x71ac, 0xa188, 0x00ae,
+ 0x0078, 0x4df1, 0x6807, 0x0117, 0x2031, 0x0400, 0x692c, 0xa18c,
+ 0x00ff, 0xa186, 0x0012, 0x00c0, 0x4dcb, 0x2001, 0x4e03, 0x2009,
+ 0x0001, 0x0078, 0x4ddc, 0xa186, 0x0003, 0x00c0, 0x4dd5, 0x2001,
+ 0x4e04, 0x2009, 0x0012, 0x0078, 0x4ddc, 0x2001, 0x0200, 0x71ac,
+ 0xa188, 0x0091, 0x0078, 0x4de8, 0x1078, 0x5179, 0x78a3, 0x0000,
+ 0x681c, 0xa085, 0x0040, 0x681e, 0x71ac, 0xa188, 0x00d9, 0xa006,
+ 0x6826, 0x8007, 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000,
+ 0x6822, 0x6eb6, 0x7e5a, 0x791a, 0x0078, 0x2b53, 0x6eb6, 0x1078,
+ 0x45eb, 0x6810, 0x70b6, 0x7003, 0x0007, 0x709b, 0x0000, 0x7057,
+ 0x0000, 0x0078, 0x2b53, 0x0023, 0x0070, 0x0005, 0x0000, 0x0a00,
+ 0x0000, 0x0000, 0x0025, 0x0000, 0x0000, 0x683b, 0x0000, 0x6837,
+ 0x0000, 0xa684, 0x0200, 0x0040, 0x4e24, 0x78b8, 0xa08c, 0x001f,
+ 0xa084, 0x8000, 0x0040, 0x4e1d, 0x8108, 0x78d8, 0xa100, 0x6836,
+ 0x78dc, 0xa081, 0x0000, 0x683a, 0x007c, 0x7990, 0x810f, 0xa5ac,
+ 0x0007, 0x2021, 0x0000, 0xa480, 0x0010, 0x789a, 0x79a8, 0xa18c,
+ 0x00ff, 0xa184, 0x0080, 0x00c0, 0x4e53, 0xa182, 0x0020, 0x00c8,
+ 0x4e71, 0xa182, 0x0012, 0x00c8, 0x5116, 0x2100, 0x1079, 0x4e41,
+ 0x007c, 0x5116, 0x5028, 0x5116, 0x5116, 0x4e7e, 0x4e81, 0x4ebb,
+ 0x4ef9, 0x4f2b, 0x4f2e, 0x5116, 0x5116, 0x4edc, 0x4f52, 0x4f8c,
+ 0x5116, 0x5116, 0x4fb3, 0xa184, 0x0020, 0x00c0, 0x4fe7, 0xa18c,
+ 0x001f, 0x6814, 0xa084, 0x001f, 0xa106, 0x0040, 0x4e6e, 0x70ac,
+ 0xa080, 0x00cc, 0x781a, 0x2001, 0x0014, 0x1078, 0x512e, 0x1078,
+ 0x519f, 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x2001, 0x0000,
+ 0x007c, 0xa182, 0x0024, 0x00c8, 0x5116, 0xa184, 0x0003, 0x1079,
+ 0x4e41, 0x007c, 0x5116, 0x5116, 0x5116, 0x5116, 0x1078, 0x5116,
+ 0x007c, 0x2200, 0x0079, 0x4e84, 0x4fb6, 0x4fb6, 0x4ea8, 0x4ea8,
+ 0x4ea8, 0x4ea8, 0x4ea8, 0x4ea8, 0x4ea8, 0x4ea8, 0x4ea6, 0x4ea8,
+ 0x4e9d, 0x4ea8, 0x4ea8, 0x4ea8, 0x4ea8, 0x4ea8, 0x4eb0, 0x4eb3,
+ 0x4fb6, 0x4eb3, 0x4ea8, 0x4ea8, 0x4ea8, 0x0c7e, 0x077e, 0x6f14,
+ 0x1078, 0x40f9, 0x077f, 0x0c7f, 0x0078, 0x4ea8, 0x1078, 0x50b2,
+ 0x6827, 0x02b3, 0x2009, 0x000b, 0x2001, 0x4800, 0x0078, 0x4fea,
+ 0x1078, 0x5109, 0x007c, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001,
+ 0x4800, 0x0078, 0x4fd2, 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086,
+ 0x0006, 0x00c0, 0x4ec5, 0x6807, 0x0117, 0x6827, 0x0002, 0x1078,
+ 0x51a8, 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078,
+ 0x45bb, 0x1078, 0x5010, 0x2b68, 0x1078, 0x45eb, 0x0d7f, 0x1078,
+ 0x45eb, 0x2001, 0x0002, 0x007c, 0x1078, 0x5010, 0x2001, 0x0017,
+ 0x1078, 0x512e, 0x709b, 0x0000, 0x6914, 0xd1fc, 0x0040, 0x4eec,
+ 0x2009, 0x5d86, 0x0078, 0x4eee, 0x2009, 0x5d46, 0x200b, 0x0006,
+ 0x70a7, 0x0017, 0x2009, 0x0200, 0x1078, 0x44b0, 0x2001, 0x0001,
+ 0x007c, 0x2200, 0x0079, 0x4efc, 0x4fb6, 0x4fe7, 0x4fe7, 0x4fe7,
+ 0x4f1d, 0x4ff7, 0x4f23, 0x4ff7, 0x4ff7, 0x4ffa, 0x4ffa, 0x4fff,
+ 0x4fff, 0x4f15, 0x4f15, 0x4fe7, 0x4fe7, 0x4ff7, 0x4fe7, 0x4f23,
+ 0x4fb6, 0x4f23, 0x4f23, 0x4f23, 0x4f23, 0x6827, 0x0084, 0x2009,
+ 0x000b, 0x2001, 0x4300, 0x0078, 0x5009, 0x2009, 0x000b, 0x2001,
+ 0x4300, 0x0078, 0x4fea, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001,
+ 0x4300, 0x0078, 0x4fd2, 0x2001, 0x0000, 0x007c, 0x2200, 0x0079,
+ 0x4f31, 0x4fb6, 0x4f4a, 0x4f4a, 0x4f4a, 0x4f4a, 0x4ff7, 0x4ff7,
+ 0x4ff7, 0x4ff7, 0x4ff7, 0x4ff7, 0x4ff7, 0x4ff7, 0x4f4a, 0x4f4a,
+ 0x4f4a, 0x4f4a, 0x4ff7, 0x4f4a, 0x4f4a, 0x4ff7, 0x4ff7, 0x4ff7,
+ 0x4ff7, 0x4fb6, 0x6827, 0x0093, 0x2009, 0x000b, 0x2001, 0x4300,
+ 0x0078, 0x4fd2, 0xa684, 0x0004, 0x00c0, 0x4f66, 0x6804, 0xa084,
+ 0x00ff, 0xa086, 0x0006, 0x00c0, 0x5116, 0x1078, 0x5010, 0x6807,
+ 0x0117, 0x1078, 0x45eb, 0x2001, 0x0002, 0x007c, 0x6000, 0xa084,
+ 0x0004, 0x0040, 0x5116, 0x2d58, 0x6804, 0xa084, 0x00ff, 0xa086,
+ 0x0006, 0x00c0, 0x4f75, 0x6807, 0x0117, 0x6827, 0x0002, 0x1078,
+ 0x51a8, 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078,
+ 0x45ca, 0x1078, 0x5010, 0x2b68, 0x1078, 0x45eb, 0x0d7f, 0x1078,
+ 0x45eb, 0x2001, 0x0002, 0x007c, 0x6000, 0xa084, 0x0004, 0x0040,
+ 0x5116, 0x2d58, 0x6a04, 0xa294, 0x00ff, 0xa286, 0x0006, 0x00c0,
+ 0x4f9b, 0x6807, 0x0117, 0x6827, 0x0002, 0x2d58, 0x1078, 0x51a8,
+ 0x6827, 0x0036, 0x6932, 0x2d00, 0x682e, 0x0d7e, 0x1078, 0x45da,
+ 0x1078, 0x5010, 0x2b68, 0x1078, 0x45eb, 0x0d7f, 0x1078, 0x45eb,
+ 0x2001, 0x0002, 0x007c, 0x1078, 0x5116, 0x007c, 0x70ac, 0xa080,
+ 0x00cc, 0x781a, 0x2001, 0x0001, 0x1078, 0x512e, 0x1078, 0x519f,
+ 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x1078, 0x515f, 0x1078,
+ 0x519e, 0x1078, 0x4e0d, 0x1078, 0x4d06, 0x1078, 0x519f, 0x2001,
+ 0x0001, 0x007c, 0x1078, 0x515f, 0x1078, 0x519e, 0x1078, 0x4e0d,
+ 0x70ac, 0xa080, 0x00cc, 0x781a, 0x2001, 0x0013, 0x1078, 0x512e,
+ 0x1078, 0x519f, 0x7003, 0x0000, 0x2001, 0x0002, 0x007c, 0x1078,
+ 0x5116, 0x007c, 0x1078, 0x515f, 0x1078, 0x519e, 0x1078, 0x4e0d,
+ 0x1078, 0x4d06, 0x1078, 0x519f, 0x2001, 0x0001, 0x007c, 0x2001,
+ 0x0003, 0x007c, 0x1078, 0x50b2, 0x2001, 0x0000, 0x007c, 0x0c7e,
+ 0x077e, 0x6f14, 0x1078, 0x40f9, 0x077f, 0x0c7f, 0x2001, 0x0000,
+ 0x007c, 0x1078, 0x515f, 0x1078, 0x5116, 0x2001, 0x0006, 0x007c,
+ 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x501b, 0xa186,
+ 0x000f, 0x00c0, 0x501f, 0x1078, 0x519e, 0x1078, 0x4e0d, 0x70ac,
+ 0xa080, 0x00cc, 0x781a, 0x1078, 0x519f, 0x7003, 0x0000, 0x007c,
+ 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004,
+ 0x00c8, 0x5116, 0x1079, 0x5035, 0x007c, 0x5116, 0x5039, 0x5116,
+ 0x50b9, 0xa282, 0x0003, 0x0040, 0x5040, 0x1078, 0x5116, 0x007c,
+ 0x0c7e, 0x7da8, 0xa5ac, 0x00ff, 0x7ca8, 0xa4a4, 0x00ff, 0x1078,
+ 0x50a0, 0x6200, 0xd2e4, 0x0040, 0x508f, 0x6208, 0x8217, 0xa294,
+ 0x00ff, 0xa282, 0x000c, 0x0048, 0x5059, 0x0040, 0x5059, 0x2011,
+ 0x000c, 0x2400, 0xa202, 0x00c8, 0x505e, 0x2220, 0x6208, 0xa294,
+ 0x00ff, 0x2001, 0x5d03, 0x2004, 0xd0e4, 0x00c0, 0x5073, 0x78ec,
+ 0xd0e4, 0x0040, 0x5073, 0xa282, 0x000a, 0x00c8, 0x5079, 0x2011,
+ 0x000a, 0x0078, 0x5079, 0xa282, 0x000c, 0x00c8, 0x5079, 0x2011,
+ 0x000c, 0x2200, 0xa502, 0x00c8, 0x507e, 0x2228, 0x1078, 0x50fa,
+ 0x2500, 0xa086, 0x000a, 0x0040, 0x5087, 0x852b, 0x852b, 0x1078,
+ 0x416f, 0x0040, 0x508f, 0x1078, 0x3f63, 0x0078, 0x5093, 0x1078,
+ 0x50f6, 0x1078, 0x3f94, 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700,
+ 0x70ac, 0xa080, 0x00b9, 0x781a, 0x2001, 0x0004, 0x0c7f, 0x007c,
+ 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0x6914,
+ 0xd1fc, 0x00c0, 0x50af, 0xa0e0, 0x61c0, 0x0078, 0x50b1, 0xa0e0,
+ 0x6240, 0x007c, 0x0c7e, 0x1078, 0x50a0, 0x1078, 0x3f94, 0x0c7f,
+ 0x007c, 0xa282, 0x0002, 0x00c0, 0x5116, 0x0c7e, 0x1078, 0x50a0,
+ 0x7aa8, 0xa294, 0x00ff, 0xa284, 0xfffe, 0x0040, 0x50cb, 0x2011,
+ 0x0001, 0x0078, 0x50cf, 0xa284, 0x0001, 0x0040, 0x50d5, 0x6100,
+ 0xd1ec, 0x00c0, 0x50d5, 0x2011, 0x0000, 0x1078, 0x50e8, 0x1078,
+ 0x403d, 0x1078, 0x3f94, 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700,
+ 0x70ac, 0xa080, 0x00b9, 0x781a, 0x2001, 0x0004, 0x0c7f, 0x007c,
+ 0x789b, 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003,
+ 0x7aaa, 0x789b, 0x0081, 0x78ab, 0x0004, 0x007c, 0x2021, 0x0000,
+ 0x2029, 0x0032, 0x789b, 0x0018, 0x78ab, 0x0001, 0x78ab, 0x0003,
+ 0x78ab, 0x0001, 0x7daa, 0x7caa, 0x789b, 0x0081, 0x78ab, 0x0005,
+ 0x007c, 0x2001, 0x0003, 0x1078, 0x5126, 0x783b, 0x1700, 0x70ac,
+ 0xa080, 0x00b9, 0x781a, 0x2001, 0x0005, 0x007c, 0x2001, 0x0007,
+ 0x1078, 0x5126, 0xa6b5, 0x1000, 0x7e5a, 0x783b, 0x1700, 0x70ac,
+ 0xa080, 0x00b9, 0x781a, 0x2001, 0x0004, 0x007c, 0x789b, 0x0018,
+ 0x78aa, 0x789b, 0x0081, 0x78ab, 0x0001, 0x007c, 0x6904, 0xa18c,
+ 0x00ff, 0xa196, 0x0007, 0x0040, 0x513c, 0xa196, 0x000f, 0x0040,
+ 0x513c, 0x1078, 0x1de6, 0x007c, 0x6924, 0xa194, 0x003f, 0x00c0,
+ 0x5145, 0xa18c, 0xffc0, 0xa105, 0x6826, 0x1078, 0x45eb, 0x691c,
+ 0xa184, 0x0100, 0x0040, 0x5153, 0x6914, 0x2100, 0x1078, 0x465f,
+ 0x6204, 0x8210, 0x6206, 0x007c, 0x692c, 0x6834, 0x682e, 0xa112,
+ 0x6930, 0x6838, 0x6832, 0xa11b, 0xa200, 0xa301, 0x007c, 0x0c7e,
+ 0xade0, 0x0018, 0x6003, 0x0070, 0x6106, 0x600b, 0x0000, 0x600f,
+ 0x0a00, 0x6013, 0x0000, 0x6017, 0x0000, 0x8007, 0x601a, 0x601f,
+ 0x0000, 0x6023, 0x0000, 0x0c7f, 0x6824, 0xa085, 0x0080, 0x6826,
+ 0x007c, 0x157e, 0x137e, 0x147e, 0x2098, 0xaf80, 0x002d, 0x20a0,
+ 0x81ac, 0x0040, 0x5184, 0x53a6, 0xa184, 0x0001, 0x0040, 0x518a,
+ 0x3304, 0x78be, 0x147f, 0x137f, 0x157f, 0x007c, 0x70a8, 0xa005,
+ 0x10c0, 0x2aef, 0x70ab, 0x8000, 0x6814, 0xd0fc, 0x0040, 0x519b,
+ 0xc185, 0x0078, 0x519c, 0xc184, 0x0078, 0x5514, 0x007c, 0x71a8,
+ 0x81ff, 0x0040, 0x51a7, 0x70ab, 0x0000, 0x1078, 0x5218, 0x007c,
+ 0x0c7e, 0x0d7e, 0x1078, 0x1dc3, 0x0c7f, 0x157e, 0x137e, 0x147e,
+ 0x2da0, 0x2c98, 0x20a9, 0x0034, 0x53a3, 0x147f, 0x137f, 0x157f,
+ 0x6807, 0x010d, 0x680b, 0x0000, 0x701c, 0x8007, 0x681a, 0x6823,
+ 0x0000, 0x681f, 0x0000, 0x689f, 0x0000, 0x0c7f, 0x007c, 0x70ac,
+ 0xa080, 0x0091, 0x781a, 0x0078, 0x2b53, 0x70ac, 0xa080, 0x0081,
+ 0x781a, 0x0078, 0x2b53, 0x783b, 0x1700, 0x70ac, 0xa080, 0x00b9,
+ 0x781a, 0x0078, 0x2b53, 0x70ac, 0xa080, 0x00c2, 0x781a, 0x0078,
+ 0x2b53, 0x6904, 0xa18c, 0x00ff, 0xa196, 0x0007, 0x0040, 0x51ee,
+ 0xa196, 0x000f, 0x0040, 0x51ee, 0x6807, 0x0117, 0x2001, 0x0200,
+ 0x6826, 0x8007, 0x789b, 0x000e, 0x78aa, 0x6820, 0xa085, 0x8000,
+ 0x6822, 0x2031, 0x0400, 0x6eb6, 0x7e5a, 0x71ac, 0xa188, 0x0091,
+ 0x791a, 0x007c, 0x1078, 0x519f, 0x7848, 0xa085, 0x000c, 0x784a,
+ 0x70ac, 0xa080, 0x00cc, 0x781a, 0x2009, 0x000b, 0x2001, 0x4400,
+ 0x1078, 0x515f, 0x2001, 0x0013, 0x1078, 0x512e, 0x0078, 0x46ba,
+ 0x127e, 0x70f4, 0xa084, 0x4600, 0x8004, 0x2090, 0x7204, 0x700c,
+ 0xa215, 0x7008, 0xc09c, 0xa205, 0x00c0, 0x522d, 0x7007, 0x0004,
+ 0x7003, 0x0000, 0x127f, 0x2000, 0x007c, 0x7000, 0xd084, 0x0040,
+ 0x525b, 0x2001, 0x5d03, 0x2004, 0xd0ec, 0x00c0, 0x5287, 0xd0e4,
+ 0x00c0, 0x5241, 0x2001, 0x04fd, 0x2004, 0xa082, 0x0003, 0x00c8,
+ 0x5287, 0x0e7e, 0x2071, 0x0010, 0x2009, 0x0007, 0x7008, 0xa084,
+ 0x3000, 0x00c0, 0x5244, 0x8109, 0x00c0, 0x5246, 0x0e7f, 0x2009,
+ 0x0007, 0x7008, 0xa084, 0x3000, 0x00c0, 0x5241, 0x8109, 0x00c0,
+ 0x5251, 0x0078, 0x5287, 0x7108, 0xd1fc, 0x0040, 0x5266, 0x1078,
+ 0x53b4, 0x8aff, 0x0040, 0x521e, 0x0078, 0x525b, 0x700c, 0xa08c,
+ 0x03ff, 0x0040, 0x528c, 0x7004, 0xd084, 0x0040, 0x527e, 0x7014,
+ 0xa005, 0x00c0, 0x527a, 0x7010, 0xa005, 0x0040, 0x527e, 0xa102,
+ 0x00c8, 0x525b, 0x7007, 0x0010, 0x0078, 0x5287, 0x8aff, 0x0040,
+ 0x528c, 0x1078, 0x5608, 0x00c0, 0x5281, 0x0040, 0x525b, 0x1078,
+ 0x533a, 0x127f, 0x2000, 0x007c, 0x7204, 0x700c, 0xa215, 0x7108,
+ 0xc19c, 0x8103, 0x00c8, 0x52a0, 0xa205, 0x00c0, 0x5287, 0x1078,
+ 0x53b4, 0x7003, 0x0000, 0x7007, 0x0004, 0x127f, 0x2000, 0x007c,
+ 0xa205, 0x00c0, 0x5287, 0x7003, 0x0000, 0x7007, 0x0004, 0x127f,
+ 0x2000, 0x007c, 0x017e, 0x6104, 0xa18c, 0x00ff, 0xa186, 0x0007,
+ 0x0040, 0x52b6, 0xa18e, 0x000f, 0x00c0, 0x52b9, 0x6040, 0x0078,
+ 0x52ba, 0x6428, 0x017f, 0x84ff, 0x0040, 0x52e4, 0x2c70, 0x7004,
+ 0xa0bc, 0x000f, 0xa7b8, 0x52f4, 0x273c, 0x87fb, 0x00c0, 0x52d2,
+ 0x0048, 0x52cc, 0x1078, 0x2aef, 0x609c, 0xa075, 0x0040, 0x52e4,
+ 0x0078, 0x52bf, 0x2704, 0xae68, 0x6808, 0xa630, 0x680c, 0xa529,
+ 0x8421, 0x0040, 0x52e4, 0x8738, 0x2704, 0xa005, 0x00c0, 0x52d3,
+ 0x709c, 0xa075, 0x00c0, 0x52bf, 0x007c, 0x0000, 0x0005, 0x0009,
+ 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000, 0x0003, 0x0009,
+ 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x52e9, 0x52e6, 0x0000,
+ 0x0000, 0x8000, 0x0000, 0x52e9, 0x0000, 0x52f1, 0x52ee, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x52f1, 0x0000, 0x52ec, 0x52ec, 0x0000,
+ 0x0000, 0x8000, 0x0000, 0x52ec, 0x0000, 0x52f2, 0x52f2, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x52f2, 0x2079, 0x5d00, 0x2071, 0x0010,
+ 0x7007, 0x000a, 0x7007, 0x0002, 0x7003, 0x0000, 0x7808, 0xd0ec,
+ 0x0040, 0x5328, 0x2009, 0x0001, 0x2071, 0x0020, 0x0078, 0x532c,
+ 0x2009, 0x0002, 0x2071, 0x0050, 0x7007, 0x000a, 0x7007, 0x0002,
+ 0x7003, 0x0000, 0x8109, 0x0040, 0x5339, 0x2071, 0x0020, 0x0078,
+ 0x532c, 0x007c, 0x2019, 0x0000, 0x7004, 0x8004, 0x00c8, 0x539d,
+ 0x7007, 0x0012, 0x7108, 0x7008, 0xa106, 0x00c0, 0x5342, 0xa184,
+ 0x01e0, 0x0040, 0x534d, 0x1078, 0x2aef, 0x7808, 0xd0ec, 0x0040,
+ 0x5367, 0x2001, 0x04fd, 0x2004, 0xa086, 0x0003, 0x00c0, 0x536b,
+ 0xa184, 0x4000, 0x0040, 0x536f, 0xa382, 0x0003, 0x00c8, 0x536f,
+ 0xa184, 0x0004, 0x0040, 0x5342, 0x8318, 0x0078, 0x5342, 0x780c,
+ 0xd0ec, 0x00c0, 0x536f, 0xa184, 0x4000, 0x00c0, 0x5342, 0xa19c,
+ 0x300c, 0xa386, 0x2004, 0x0040, 0x537d, 0xa386, 0x0008, 0x0040,
+ 0x5388, 0xa386, 0x200c, 0x00c0, 0x5342, 0x7200, 0x8204, 0x0048,
+ 0x5388, 0x730c, 0xa384, 0x03ff, 0x0040, 0x5388, 0x1078, 0x2aef,
+ 0x7007, 0x0012, 0x7000, 0xd084, 0x00c0, 0x539d, 0x7008, 0xa084,
+ 0x01e0, 0x00c0, 0x539d, 0x7310, 0x7014, 0xa305, 0x0040, 0x539d,
+ 0x710c, 0xa184, 0x03ff, 0x00c0, 0x533a, 0x7007, 0x0012, 0x7007,
+ 0x0008, 0x7004, 0xd09c, 0x00c0, 0x53a1, 0x7007, 0x0012, 0x7108,
+ 0xd1fc, 0x00c0, 0x53a5, 0x7003, 0x0000, 0x007c, 0x157e, 0x7108,
+ 0x1078, 0x53b4, 0x157f, 0x007c, 0x7204, 0x7500, 0xa184, 0x01e0,
+ 0x00c0, 0x53eb, 0x7108, 0xa184, 0x01e0, 0x00c0, 0x53eb, 0xa184,
+ 0x0007, 0x0079, 0x53c3, 0x53cd, 0x53de, 0x53cb, 0x53de, 0x53cb,
+ 0x5430, 0x53cb, 0x542e, 0x1078, 0x2aef, 0x7004, 0xa084, 0x0010,
+ 0xc08d, 0x7006, 0x8aff, 0x00c0, 0x53d9, 0x2049, 0x0000, 0x0078,
+ 0x53dd, 0x1078, 0x5608, 0x00c0, 0x53d9, 0x007c, 0x7004, 0xa084,
+ 0x0010, 0xc08d, 0x7006, 0x8aff, 0x0040, 0x53ea, 0x1078, 0x5608,
+ 0x00c0, 0x53e6, 0x007c, 0x7007, 0x0012, 0x7108, 0x00e0, 0x53ee,
+ 0x2091, 0x6000, 0x00e0, 0x53f2, 0x2091, 0x6000, 0x7007, 0x0012,
+ 0x7007, 0x0008, 0x7004, 0xd09c, 0x00c0, 0x53fa, 0x7007, 0x0012,
+ 0x7108, 0xd1fc, 0x00c0, 0x53fe, 0x7003, 0x0000, 0x7000, 0xa005,
+ 0x00c0, 0x5412, 0x7004, 0xa005, 0x00c0, 0x5412, 0x700c, 0xa005,
+ 0x0040, 0x5414, 0x0078, 0x53f6, 0x2049, 0x0000, 0xb284, 0x0100,
+ 0x0040, 0x541e, 0x2001, 0x0000, 0x0078, 0x5420, 0x2001, 0x0001,
+ 0x1078, 0x4204, 0x6818, 0xa084, 0x8000, 0x0040, 0x5429, 0x681b,
+ 0x0002, 0x007c, 0x1078, 0x2aef, 0x1078, 0x2aef, 0x1078, 0x546d,
+ 0x7210, 0x7114, 0x700c, 0xa09c, 0x03ff, 0x2800, 0xa300, 0xa211,
+ 0xa189, 0x0000, 0x1078, 0x546d, 0x2704, 0x2c58, 0xac60, 0x6308,
+ 0x2200, 0xa322, 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0040,
+ 0x5453, 0x00c8, 0x5453, 0x8412, 0x8210, 0x830a, 0xa189, 0x0000,
+ 0x2b60, 0x0078, 0x543a, 0x2b60, 0x8a07, 0x007e, 0x6004, 0xa084,
+ 0x0008, 0x0040, 0x545f, 0xa7ba, 0x52ee, 0x0078, 0x5461, 0xa7ba,
+ 0x52e6, 0x007f, 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92, 0x6b8e,
+ 0x7007, 0x0012, 0x1078, 0x533a, 0x007c, 0x8a50, 0x8739, 0x2704,
+ 0xa004, 0x00c0, 0x5481, 0x6000, 0xa064, 0x00c0, 0x5478, 0x2d60,
+ 0x6004, 0xa084, 0x000f, 0xa080, 0x5304, 0x203c, 0x87fb, 0x1040,
+ 0x2aef, 0x007c, 0x127e, 0x0d7e, 0x70f4, 0xa084, 0x4600, 0x8004,
+ 0x2090, 0x0d7f, 0x6884, 0x2060, 0x6888, 0x6b8c, 0x6c90, 0x8057,
+ 0xaad4, 0x00ff, 0xa084, 0x00ff, 0x007e, 0x6804, 0xa084, 0x0008,
+ 0x007f, 0x0040, 0x549f, 0xa0b8, 0x52ee, 0x0078, 0x54a1, 0xa0b8,
+ 0x52e6, 0xb284, 0x0100, 0x0040, 0x54a8, 0x7e18, 0x0078, 0x54a9,
+ 0x7e1c, 0xa6b5, 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007,
+ 0x0040, 0x54b6, 0xa18e, 0x000f, 0x00c0, 0x54be, 0x681c, 0xa084,
+ 0x0040, 0x0040, 0x54c3, 0xc685, 0x0078, 0x54c3, 0x681c, 0xd0b4,
+ 0x0040, 0x54c3, 0xc685, 0x700c, 0xa084, 0x03ff, 0x0040, 0x54ce,
+ 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, 0x54ca, 0x2400, 0xa305,
+ 0x00c0, 0x54d4, 0x0078, 0x54fa, 0x2c58, 0x2704, 0x6104, 0xac60,
+ 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, 0xa184, 0x0008,
+ 0x0040, 0x54ea, 0x6010, 0xa081, 0x0000, 0x7022, 0x6014, 0xa081,
+ 0x0000, 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, 0x620c, 0x2300,
+ 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078, 0x562e,
+ 0x0078, 0x54fc, 0x1078, 0x5608, 0x00c0, 0x54fa, 0x127f, 0x2000,
+ 0x007c, 0x127e, 0x0d7e, 0x70f4, 0xa084, 0x4600, 0x8004, 0x2090,
+ 0x0d7f, 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, 0x550b, 0x7003,
+ 0x0008, 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x70f4, 0xa084,
+ 0x4600, 0x8004, 0x2090, 0x0d7f, 0x700c, 0xa084, 0x03ff, 0x0040,
+ 0x5527, 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, 0x5523, 0x6814,
+ 0xd0fc, 0x0040, 0x552e, 0x7e1c, 0x0078, 0x552f, 0x7e18, 0xa6b5,
+ 0x000c, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x553c,
+ 0xa18e, 0x000f, 0x00c0, 0x5546, 0x681c, 0xa084, 0x0040, 0x0040,
+ 0x5542, 0xc685, 0x6840, 0x2050, 0x0078, 0x554d, 0x681c, 0xd0ac,
+ 0x00c0, 0x554b, 0xc685, 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc,
+ 0x000f, 0xa7b8, 0x52f4, 0x273c, 0x87fb, 0x00c0, 0x5561, 0x0048,
+ 0x555b, 0x1078, 0x2aef, 0x689c, 0xa065, 0x0040, 0x5565, 0x0078,
+ 0x554e, 0x1078, 0x5608, 0x00c0, 0x5561, 0x127f, 0x2000, 0x007c,
+ 0x127e, 0x007e, 0x017e, 0x0d7e, 0x70f4, 0xa084, 0x4600, 0x8004,
+ 0x2090, 0xb284, 0x0100, 0x0040, 0x5578, 0x7e18, 0x0078, 0x5579,
+ 0x7e1c, 0x0d7f, 0x037f, 0x047f, 0xa6b5, 0x000c, 0x6904, 0xa18c,
+ 0x00ff, 0xa186, 0x0007, 0x0040, 0x5589, 0xa18e, 0x000f, 0x00c0,
+ 0x5591, 0x681c, 0xa084, 0x0040, 0x0040, 0x5596, 0xc685, 0x0078,
+ 0x5596, 0x681c, 0xd0b4, 0x0040, 0x5596, 0xc685, 0x2049, 0x5568,
+ 0x017e, 0x6904, 0xa18c, 0x00ff, 0xa186, 0x0007, 0x0040, 0x55a4,
+ 0xa18e, 0x000f, 0x00c0, 0x55a7, 0x6840, 0x0078, 0x55a8, 0x6828,
+ 0x017f, 0xa055, 0x0040, 0x5605, 0x2d70, 0x2e60, 0x7004, 0xa0bc,
+ 0x000f, 0xa7b8, 0x52f4, 0x273c, 0x87fb, 0x00c0, 0x55c2, 0x0048,
+ 0x55bb, 0x1078, 0x2aef, 0x709c, 0xa075, 0x2060, 0x0040, 0x5605,
+ 0x0078, 0x55ae, 0x2704, 0xae68, 0x6808, 0xa422, 0x680c, 0xa31b,
+ 0x0048, 0x55db, 0x8a51, 0x00c0, 0x55cf, 0x1078, 0x2aef, 0x8738,
+ 0x2704, 0xa005, 0x00c0, 0x55c3, 0x709c, 0xa075, 0x2060, 0x0040,
+ 0x5605, 0x0078, 0x55ae, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000,
+ 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x00c8, 0x55ea,
+ 0x1078, 0x2aef, 0x017e, 0x3208, 0xa18c, 0x0100, 0x0040, 0x5600,
+ 0x007e, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x007f, 0x0040, 0x55fc,
+ 0x2071, 0x0020, 0x0078, 0x5602, 0x2071, 0x0050, 0x0078, 0x5602,
+ 0x2071, 0x0020, 0x017f, 0x0078, 0x54c3, 0x127f, 0x2000, 0x007c,
+ 0x7008, 0xa084, 0x0003, 0xa086, 0x0003, 0x00c0, 0x5610, 0x007c,
+ 0x2704, 0xac08, 0x2104, 0x701a, 0x8108, 0x2104, 0x701e, 0x8108,
+ 0x2104, 0x7012, 0x8108, 0x2104, 0x7016, 0x6004, 0xa084, 0x0008,
+ 0x0040, 0x5628, 0x8108, 0x2104, 0x7022, 0x8108, 0x2104, 0x7026,
+ 0x7602, 0x7004, 0xa084, 0x0010, 0xc085, 0x7006, 0x8738, 0x2704,
+ 0xa005, 0x00c0, 0x5641, 0x609c, 0xa005, 0x0040, 0x564a, 0x2060,
+ 0x6004, 0xa084, 0x000f, 0xa080, 0x52f4, 0x203c, 0x87fb, 0x1040,
+ 0x2aef, 0x8a51, 0x0040, 0x5649, 0x7008, 0xa084, 0x0003, 0xa086,
+ 0x0003, 0x007c, 0x2051, 0x0000, 0x007c, 0x127e, 0x007e, 0x0d7e,
+ 0x70f4, 0xa084, 0x4600, 0x8004, 0x2090, 0x0d7f, 0x087f, 0x7108,
+ 0xa184, 0x0003, 0x00c0, 0x5672, 0x017e, 0x6904, 0xa18c, 0x00ff,
+ 0xa186, 0x0007, 0x0040, 0x5668, 0xa18e, 0x000f, 0x00c0, 0x566b,
+ 0x6840, 0x0078, 0x566c, 0x6828, 0x017f, 0xa005, 0x0040, 0x5682,
+ 0x0078, 0x522d, 0x7108, 0xd1fc, 0x0040, 0x567a, 0x1078, 0x53b4,
+ 0x0078, 0x5657, 0x7007, 0x0010, 0x7108, 0xd1fc, 0x0040, 0x567c,
+ 0x1078, 0x53b4, 0x7008, 0xa086, 0x0008, 0x00c0, 0x5657, 0x7000,
+ 0xa005, 0x00c0, 0x5657, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f,
+ 0x2000, 0x007c, 0x127e, 0x147e, 0x137e, 0x157e, 0x0c7e, 0x0d7e,
+ 0x70f4, 0xa084, 0x4600, 0x8004, 0x2090, 0x0d7f, 0x2049, 0x5692,
+ 0x69b0, 0xad80, 0x0011, 0xa100, 0x20a0, 0xb284, 0x0100, 0x0040,
+ 0x56b7, 0x2001, 0x5d02, 0x2004, 0xd0ec, 0x0040, 0x56b3, 0x2099,
+ 0x0031, 0x0078, 0x56b9, 0x2099, 0x0032, 0x0078, 0x56b9, 0x2099,
+ 0x0031, 0x700c, 0xa084, 0x03ff, 0x0040, 0x56d7, 0x6928, 0xa100,
+ 0x682a, 0x7007, 0x0008, 0x7007, 0x0002, 0x7003, 0x0001, 0x0040,
+ 0x56cc, 0x8000, 0x80ac, 0x53a5, 0x700c, 0xa084, 0x03ff, 0x0040,
+ 0x56d7, 0x7007, 0x0004, 0x7004, 0xd094, 0x00c0, 0x56d3, 0x0c7f,
+ 0x2049, 0x0000, 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, 0x127f,
+ 0x2000, 0x007c, 0x2091, 0x6000, 0x2091, 0x8000, 0x78b0, 0xa005,
+ 0x00c0, 0x56f9, 0x7970, 0x70d0, 0xa106, 0x00c0, 0x56f9, 0x7814,
+ 0xa005, 0x0040, 0x56f9, 0x7817, 0x0000, 0x0068, 0x56f9, 0x2091,
+ 0x4080, 0x7828, 0x8001, 0x782a, 0x00c0, 0x5781, 0x782c, 0x782a,
+ 0x7808, 0xd0ec, 0x00c0, 0x577a, 0x2061, 0x82c0, 0x2069, 0x5d80,
+ 0xc7fd, 0x68f0, 0xa005, 0x0040, 0x5714, 0x8001, 0x68f2, 0xa005,
+ 0x00c0, 0x5714, 0x1078, 0x592b, 0x6800, 0xa084, 0x000f, 0x0040,
+ 0x5729, 0xa086, 0x0001, 0x0040, 0x5729, 0x6844, 0xa00d, 0x0040,
+ 0x5729, 0x2104, 0xa005, 0x0040, 0x5729, 0x8001, 0x200a, 0x0040,
+ 0x5889, 0x6810, 0xa005, 0x0040, 0x574d, 0x8001, 0x6812, 0x00c0,
+ 0x574d, 0x68c7, 0x0001, 0xd7fc, 0x00c0, 0x5742, 0x7808, 0xd0ec,
+ 0x0040, 0x573e, 0x2009, 0x0102, 0x0078, 0x5744, 0x2009, 0x0202,
+ 0x0078, 0x5744, 0x2009, 0x0102, 0x6850, 0xc08d, 0x200a, 0x686c,
+ 0xa005, 0x0040, 0x574d, 0x1078, 0x2772, 0x6888, 0xa005, 0x0040,
+ 0x575a, 0x8001, 0x688a, 0x00c0, 0x575a, 0x686f, 0x0000, 0x68f4,
+ 0xc0dd, 0x68f6, 0x68f4, 0xd0fc, 0x0040, 0x5777, 0xc0fc, 0x68f6,
+ 0x20a9, 0x0200, 0x6034, 0xa005, 0x0040, 0x5773, 0x8001, 0x6036,
+ 0x68f4, 0xc0fd, 0x68f6, 0x00c0, 0x5773, 0x6010, 0xa005, 0x0040,
+ 0x5773, 0x1078, 0x2772, 0xace0, 0x0010, 0x00f0, 0x5762, 0xd7fc,
+ 0x0040, 0x5781, 0x2061, 0x62c0, 0x2069, 0x5d40, 0xc7fc, 0x0078,
+ 0x5709, 0x1078, 0x57aa, 0x7830, 0x8001, 0x7832, 0x00c0, 0x57a3,
+ 0x7834, 0x7832, 0x2061, 0x62c0, 0x2069, 0x5d40, 0xc7fc, 0x6808,
+ 0xa005, 0x0040, 0x5795, 0x1078, 0x57e9, 0xd7fc, 0x00c0, 0x57a3,
+ 0x7808, 0xd0ec, 0x00c0, 0x57a3, 0x2061, 0x82c0, 0x2069, 0x5d80,
+ 0xc7fd, 0x0078, 0x578f, 0x780c, 0xd0e4, 0x00c0, 0x57a7, 0x2091,
+ 0x8001, 0x007c, 0x7838, 0x8001, 0x783a, 0x00c0, 0x57e8, 0x783c,
+ 0x783a, 0x2091, 0x8000, 0x2061, 0x62c0, 0x2069, 0x5d40, 0xc7fc,
+ 0x680c, 0xa005, 0x00c0, 0x57be, 0x2001, 0x0101, 0x8001, 0x680e,
+ 0xd7fc, 0x00c0, 0x57c7, 0xa080, 0xa2c0, 0x0078, 0x57c9, 0xa080,
+ 0xa3d0, 0x2040, 0x2004, 0xa065, 0x0040, 0x57da, 0x6024, 0xa005,
+ 0x0040, 0x57d6, 0x8001, 0x6026, 0x0040, 0x5831, 0x6000, 0x2c40,
+ 0x0078, 0x57cb, 0xd7fc, 0x00c0, 0x57e8, 0x7808, 0xd0ec, 0x00c0,
+ 0x57e8, 0x2061, 0x82c0, 0x2069, 0x5d80, 0xc7fd, 0x0078, 0x57b8,
+ 0x007c, 0x2009, 0x0000, 0x20a9, 0x0200, 0x6008, 0xd09c, 0x0040,
+ 0x5820, 0x6024, 0xa005, 0x0040, 0x57f9, 0x8001, 0x6026, 0x0078,
+ 0x581e, 0x6008, 0xc09c, 0xd084, 0x00c0, 0x5801, 0xd0ac, 0x0040,
+ 0x5818, 0x600a, 0x6004, 0xa06d, 0x0040, 0x5820, 0x0c7e, 0x017e,
+ 0x6010, 0x8001, 0x6012, 0x1078, 0x3dbf, 0x2d00, 0x2c68, 0x2060,
+ 0x1078, 0x1e6e, 0x1078, 0x21b9, 0x017f, 0x0c7f, 0x0078, 0x5820,
+ 0xc0bd, 0x600a, 0xa18d, 0x0001, 0x0078, 0x5820, 0xa18d, 0x0100,
+ 0xace0, 0x0010, 0x00f0, 0x57ed, 0xa184, 0x0001, 0x0040, 0x582f,
+ 0xa18c, 0xfffe, 0x690a, 0x1078, 0x2772, 0x0078, 0x5830, 0x690a,
+ 0x007c, 0x6800, 0xa005, 0x0040, 0x5839, 0x6854, 0xac06, 0x0040,
+ 0x5889, 0x686c, 0xa005, 0x0040, 0x5841, 0x6027, 0x0001, 0x0078,
+ 0x5888, 0x2c00, 0x6886, 0x6017, 0x0000, 0x602b, 0x0000, 0x601b,
+ 0x0006, 0x60b4, 0xa084, 0x5f00, 0x601e, 0x6020, 0xa084, 0x00ff,
+ 0xa085, 0x0060, 0x6022, 0x6000, 0x2042, 0x6714, 0x6f7e, 0x1078,
+ 0x1dff, 0x6818, 0xa005, 0x0040, 0x585f, 0x8001, 0x681a, 0x6808,
+ 0xc0a4, 0x680a, 0x6810, 0x8001, 0x00d0, 0x5868, 0x1078, 0x2aef,
+ 0x6812, 0x602f, 0x0000, 0x6033, 0x0000, 0x2c68, 0x1078, 0x21ca,
+ 0xd7fc, 0x00c0, 0x5877, 0x2069, 0x5d40, 0x0078, 0x5879, 0x2069,
+ 0x5d80, 0x690c, 0xa184, 0x0100, 0x2001, 0x0006, 0x00c0, 0x5885,
+ 0x6887, 0x0000, 0x6982, 0x2001, 0x0004, 0x2708, 0x1078, 0x2765,
+ 0x007c, 0x0d7e, 0x0e7e, 0x2d70, 0xd7fc, 0x00c0, 0x589b, 0x7808,
+ 0xd0ec, 0x0040, 0x5897, 0x2069, 0x0100, 0x0078, 0x589d, 0x2069,
+ 0x0200, 0x0078, 0x589d, 0x2069, 0x0100, 0x7000, 0xa084, 0x000f,
+ 0x0040, 0x58e7, 0xa086, 0x0007, 0x00c0, 0x58af, 0x0f7e, 0x2d78,
+ 0x7054, 0x2068, 0x1078, 0x4505, 0x0f7f, 0x0078, 0x58e7, 0x7054,
+ 0x2060, 0x1078, 0x2a83, 0x601b, 0x0006, 0x6858, 0xa084, 0x5f00,
+ 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0048, 0x6022, 0x602f,
+ 0x0000, 0x6033, 0x0000, 0x6808, 0xa084, 0xfffd, 0x680a, 0x6830,
+ 0xd0b4, 0x0040, 0x58e3, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848,
+ 0xd094, 0x0040, 0x58d5, 0x00f0, 0x58cf, 0x684b, 0x0009, 0x20a9,
+ 0x0014, 0x6848, 0xd084, 0x0040, 0x58df, 0x00f0, 0x58d9, 0x20a9,
+ 0x00fa, 0x00f0, 0x58e1, 0x681b, 0x0048, 0x706f, 0x0007, 0x0e7f,
+ 0x0d7f, 0x007c, 0x2079, 0x5d00, 0x1078, 0x591e, 0x1078, 0x5904,
+ 0x1078, 0x5911, 0x2009, 0x0002, 0x2069, 0x5d80, 0x680b, 0x0000,
+ 0x680f, 0x0000, 0x6813, 0x0000, 0x8109, 0x0040, 0x5903, 0x2069,
+ 0x5d40, 0x0078, 0x58f6, 0x007c, 0x7808, 0xd0ec, 0x0040, 0x590c,
+ 0x2019, 0x00cc, 0x0078, 0x590e, 0x2019, 0x007b, 0x7b32, 0x7b36,
+ 0x007c, 0x780c, 0xd0e4, 0x00c0, 0x5919, 0x2019, 0x0040, 0x0078,
+ 0x591b, 0x2019, 0x0026, 0x7b3a, 0x7b3e, 0x007c, 0x780c, 0xd0e4,
+ 0x00c0, 0x5926, 0x2019, 0x3f94, 0x0078, 0x5928, 0x2019, 0x2626,
+ 0x7b2a, 0x7b2e, 0x007c, 0x6958, 0xa185, 0x0000, 0x0040, 0x593d,
+ 0x0c7e, 0x6ae0, 0x2264, 0x6008, 0xc0b5, 0x600a, 0x8210, 0x8109,
+ 0x00c0, 0x5932, 0x685b, 0x0000, 0x0c7f, 0x007c, 0x70ec, 0xd0dc,
+ 0x00c0, 0x594c, 0xd0d4, 0x0040, 0x5947, 0x0078, 0x596b, 0xd0e4,
+ 0x0040, 0x5973, 0x0078, 0x596b, 0x7808, 0xd0ec, 0x0040, 0x5957,
+ 0xc0f5, 0x780a, 0xd0ec, 0x0040, 0x5971, 0x0078, 0x596d, 0xae8e,
+ 0x0100, 0x0040, 0x5963, 0x780c, 0xc0f5, 0x780e, 0xd0d4, 0x00c0,
+ 0x5971, 0x0078, 0x596d, 0x780c, 0xc0fd, 0x780e, 0xd0d4, 0x00c0,
+ 0x5971, 0x0078, 0x596d, 0x70a0, 0x70a2, 0x7804, 0xd08c, 0x0040,
+ 0x5973, 0x681b, 0x000c, 0x007c, 0x0020, 0x002b, 0x0000, 0x0020,
+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020,
+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020,
+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020,
+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0014,
+ 0x0014, 0x9849, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014,
+ 0x0014, 0x0080, 0x000f, 0x0000, 0x0201, 0x0604, 0x0c08, 0x2120,
+ 0x4022, 0xf880, 0x0018, 0x300b, 0xa201, 0x0014, 0xa200, 0x0014,
+ 0xa200, 0x0214, 0x0000, 0x006c, 0x0002, 0x0014, 0x98d6, 0x009e,
+ 0x009c, 0xa202, 0x3806, 0x8839, 0x20c3, 0x0864, 0x9889, 0x28c1,
+ 0x9cb6, 0xa203, 0x300c, 0x2846, 0x8161, 0x846a, 0x8300, 0x1856,
+ 0x883a, 0x9864, 0x28f2, 0x9c95, 0x9857, 0x300c, 0x28e1, 0x9c95,
+ 0x2822, 0xa207, 0x64a4, 0x2001, 0x987d, 0xa206, 0x64c0, 0x67a0,
+ 0x6fc0, 0x7942, 0x8020, 0xa4a1, 0x1814, 0x883b, 0x7824, 0x68c1,
+ 0x7864, 0x883e, 0x987b, 0x8576, 0x8677, 0x80df, 0x94a1, 0x206b,
+ 0x28c1, 0x9cb6, 0x2044, 0x2103, 0x20a2, 0x2081, 0x9864, 0xa209,
+ 0x2901, 0x9891, 0x0014, 0xa205, 0xa300, 0x1872, 0x879a, 0x883c,
+ 0x1fe2, 0xc601, 0xa20a, 0x856e, 0x0704, 0x9c95, 0x0014, 0xa204,
+ 0xa300, 0x3009, 0x19e2, 0xf868, 0x8176, 0x86eb, 0x85eb, 0x872e,
+ 0x87a9, 0x883f, 0x08e6, 0x9895, 0xf881, 0x9890, 0xc801, 0x0014,
+ 0xf8c1, 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfb02, 0x1de2, 0x0014,
+ 0x8532, 0xf241, 0x0014, 0x1de2, 0x84a8, 0xd7a0, 0x1fe6, 0x0014,
+ 0xa208, 0x6043, 0x8008, 0x1dc1, 0x0016, 0x8300, 0x8160, 0x842a,
+ 0xf041, 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011, 0x20d5,
+ 0x8822, 0x0016, 0x3008, 0x8000, 0x2847, 0x1011, 0x98c9, 0x8000,
+ 0xa000, 0x2802, 0x1011, 0x98cf, 0x9864, 0x283e, 0x1011, 0x98d3,
+ 0xa20b, 0x0017, 0x300c, 0xa300, 0x1de2, 0xdb81, 0x0014, 0x0210,
+ 0x98e0, 0x0014, 0x26e0, 0x873a, 0xfb02, 0x19f2, 0x1fe2, 0x0014,
+ 0xa20d, 0x3806, 0x0210, 0x9cbb, 0x0704, 0x0000, 0x006c, 0x0002,
+ 0x984f, 0x0014, 0x009e, 0x009f, 0x0017, 0x60ff, 0x300c, 0x8720,
+ 0xa211, 0x9ccf, 0x8772, 0x8837, 0x2101, 0x987a, 0x10d2, 0x78e2,
+ 0x9cd2, 0x9859, 0xd984, 0xf0e2, 0xf0a1, 0x98cc, 0x0014, 0x8831,
+ 0xd166, 0x8830, 0x800f, 0x9401, 0xb520, 0xc802, 0x8820, 0x987a,
+ 0x2301, 0x987a, 0x10d2, 0x78e4, 0x9cd2, 0x8821, 0x8820, 0x9859,
+ 0xf123, 0xf142, 0xf101, 0x98c5, 0x10d2, 0x70f6, 0x8832, 0x8203,
+ 0x870c, 0xd99e, 0x6001, 0x0014, 0x6845, 0x0214, 0xa21b, 0x9ccf,
+ 0x2001, 0x98c4, 0x8201, 0x1852, 0xd184, 0xd163, 0x8834, 0x8001,
+ 0x988d, 0x3027, 0x84a8, 0x1a56, 0x8833, 0x0014, 0xa218, 0x6981,
+ 0x9cbb, 0x692a, 0x6902, 0x1834, 0x989d, 0x1a14, 0x8010, 0x8592,
+ 0x8026, 0x84b9, 0x7021, 0x0014, 0xa300, 0x69e1, 0x9ca9, 0x694b,
+ 0xa213, 0x1462, 0xa213, 0x8000, 0x16e1, 0x98b5, 0x8023, 0x16e1,
+ 0x8001, 0x10f1, 0x0016, 0x6969, 0xa214, 0x61c2, 0x8002, 0x14e1,
+ 0x8004, 0x16e1, 0x0101, 0x300a, 0x8827, 0x0014, 0x9cbb, 0x0014,
+ 0xa300, 0x8181, 0x842a, 0x84a8, 0x1ce6, 0x882c, 0x0016, 0xa212,
+ 0x9ccf, 0x10d2, 0x70e4, 0x0004, 0x8007, 0x9424, 0xcc1a, 0x9cd2,
+ 0x98c4, 0x8827, 0x300a, 0x0013, 0x8000, 0x84a4, 0x0016, 0x11c2,
+ 0x211e, 0x870e, 0xa21d, 0x0014, 0x878e, 0x0016, 0xa21c, 0x1035,
+ 0x9891, 0xa210, 0xa000, 0x8010, 0x8592, 0x853b, 0xd044, 0x8022,
+ 0x3807, 0x84bb, 0x98e9, 0x8021, 0x3807, 0x84b9, 0x300c, 0x817e,
+ 0x872b, 0x8772, 0x9891, 0x0000, 0x0020, 0x002b, 0x0000, 0x0020,
+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020,
+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020,
+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020,
+ 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0014,
+ 0x0014, 0x9849, 0x0014, 0x0014, 0x98eb, 0x98d6, 0x0014, 0x0014,
+ 0x0014, 0x0080, 0x013f, 0x0000, 0x0201, 0x0604, 0x0c08, 0x2120,
+ 0x4022, 0xf880, 0x0018, 0x300b, 0xa201, 0x0014, 0xa200, 0x0014,
+ 0xa200, 0x0214, 0xa202, 0x3806, 0x8839, 0x20c3, 0x0864, 0xa834,
+ 0x28c1, 0x9cb6, 0xa203, 0x300c, 0x2846, 0x8161, 0x846a, 0x8300,
+ 0x1856, 0x883a, 0xa804, 0x28f2, 0x9c95, 0xa8f4, 0x300c, 0x28e1,
+ 0x9c95, 0x2822, 0xa207, 0x64a4, 0x2001, 0xa812, 0xa206, 0x64c0,
+ 0x67a0, 0x6fc0, 0x7942, 0x8020, 0xa4a1, 0x1814, 0x883b, 0x7824,
+ 0x68c1, 0x7864, 0x883e, 0xa802, 0x8576, 0x8677, 0x80df, 0x94a1,
+ 0x206b, 0x28c1, 0x9cb6, 0x2044, 0x2103, 0x20a2, 0x2081, 0xa8df,
+ 0xa209, 0x2901, 0xa809, 0x0014, 0xa205, 0xa300, 0x1872, 0x879a,
+ 0x883c, 0x1fe2, 0xc601, 0xa20a, 0x856e, 0x0704, 0x9c95, 0x0014,
+ 0xa204, 0xa300, 0x3009, 0x19e2, 0xf868, 0x8176, 0x86eb, 0x85eb,
+ 0x872e, 0x87a9, 0x883f, 0x08e6, 0xa8f3, 0xf881, 0xa8ec, 0xc801,
+ 0x0014, 0xf8c1, 0x0016, 0x85b2, 0x80f0, 0x9532, 0xfb02, 0x1de2,
+ 0x0014, 0x8532, 0xf241, 0x0014, 0x1de2, 0x84a8, 0xd7a0, 0x1fe6,
+ 0x0014, 0xa208, 0x6043, 0x8008, 0x1dc1, 0x0016, 0x8300, 0x8160,
+ 0x842a, 0xf041, 0x3008, 0x84a8, 0x11d6, 0x7042, 0x20dd, 0x0011,
+ 0x20d5, 0x8822, 0x0016, 0x3008, 0x8000, 0x2847, 0x1011, 0xa8fc,
+ 0x8000, 0xa000, 0x2802, 0x1011, 0xa8fd, 0xa891, 0x283e, 0x1011,
+ 0xa8fd, 0xa20b, 0x0017, 0x300c, 0xa300, 0x1de2, 0xdb81, 0x0014,
+ 0x0210, 0xa801, 0x0014, 0x26e0, 0x873a, 0xfb02, 0x19f2, 0x1fe2,
+ 0x0014, 0xa20d, 0x3806, 0x0210, 0x9cbb, 0x0704, 0x0017, 0x60ff,
+ 0x300c, 0x8720, 0xa211, 0x9d6b, 0x8772, 0x8837, 0x2101, 0xa821,
+ 0x10d2, 0x78e2, 0x9d6e, 0xa8fc, 0xd984, 0xf0e2, 0xf0a1, 0xa86b,
+ 0x0014, 0x8831, 0xd166, 0x8830, 0x800f, 0x9401, 0xb520, 0xc802,
+ 0x8820, 0xa80f, 0x2301, 0xa80d, 0x10d2, 0x78e4, 0x9d6e, 0x8821,
+ 0x8820, 0xa8e6, 0xf123, 0xf142, 0xf101, 0xa84e, 0x10d2, 0x70f6,
+ 0x8832, 0x8203, 0x870c, 0xd99e, 0x6001, 0x0014, 0x6845, 0x0214,
+ 0xa21b, 0x9d6b, 0x2001, 0xa83f, 0x8201, 0x1852, 0xd184, 0xd163,
+ 0x8834, 0x8001, 0xa801, 0x3027, 0x84a8, 0x1a56, 0x8833, 0x0014,
+ 0xa218, 0x6981, 0x9d57, 0x692a, 0x6902, 0x1834, 0xa805, 0x1a14,
+ 0x8010, 0x8592, 0x8026, 0x84b9, 0x7021, 0x0014, 0xa300, 0x69e1,
+ 0x9d45, 0x694b, 0xa213, 0x1462, 0xa213, 0x8000, 0x16e1, 0xa80c,
+ 0x8023, 0x16e1, 0x8001, 0x10f1, 0x0016, 0x6969, 0xa214, 0x61c2,
+ 0x8002, 0x14e1, 0x8004, 0x16e1, 0x0101, 0x300a, 0x8827, 0x0014,
+ 0x9d57, 0x0014, 0xa300, 0x8181, 0x842a, 0x84a8, 0x1ce6, 0x882c,
+ 0x0016, 0xa212, 0x9d6b, 0x10d2, 0x70e4, 0x0004, 0x8007, 0x9424,
+ 0xcc1a, 0x9d6e, 0xa8f8, 0x8827, 0x300a, 0x0013, 0x8000, 0x84a4,
+ 0x0016, 0x11c2, 0x211e, 0x870e, 0xa21d, 0x0014, 0x878e, 0x0016,
+ 0xa21c, 0x1035, 0xa8b5, 0xa210, 0x3807, 0x300c, 0x817e, 0x872b,
+ 0x8772, 0xa8ae, 0x0000, 0xc972
+};
diff --git a/sys/modules/accf_data/Makefile b/sys/modules/accf_data/Makefile
new file mode 100644
index 000000000000..9f3a64ef5213
--- /dev/null
+++ b/sys/modules/accf_data/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netinet
+KMOD = accf_data
+SRCS = accf_data.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/accf_http/Makefile b/sys/modules/accf_http/Makefile
new file mode 100644
index 000000000000..2b76ac6478ae
--- /dev/null
+++ b/sys/modules/accf_http/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../netinet
+KMOD = accf_http
+SRCS = accf_http.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/ispfw/Makefile b/sys/modules/ispfw/Makefile
new file mode 100644
index 000000000000..a6a4e8865631
--- /dev/null
+++ b/sys/modules/ispfw/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../dev/ispfw
+KMOD = ispfw
+SRCS = ispfw.c
+
+.include <bsd.kmod.mk>
diff --git a/sys/modules/wx/Makefile b/sys/modules/wx/Makefile
new file mode 100644
index 000000000000..921ec6497bec
--- /dev/null
+++ b/sys/modules/wx/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../pci
+KMOD = if_wx
+SRCS = if_wx.c opt_bdg.h device_if.h bus_if.h pci_if.h
+
+.include <bsd.kmod.mk>
diff --git a/sys/netinet/accf_data.c b/sys/netinet/accf_data.c
new file mode 100644
index 000000000000..776047ce2dce
--- /dev/null
+++ b/sys/netinet/accf_data.c
@@ -0,0 +1,80 @@
+/*-
+ * Copyright (c) 2000 Alfred Perlstein <alfred@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#define ACCEPT_FILTER_MOD
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/sysproto.h>
+#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <sys/malloc.h>
+#include <sys/unistd.h>
+#include <sys/file.h>
+#include <sys/fcntl.h>
+#include <sys/protosw.h>
+#include <sys/socket.h>
+#include <sys/socketvar.h>
+#include <sys/stat.h>
+#include <sys/mbuf.h>
+#include <sys/resource.h>
+#include <sys/sysent.h>
+#include <sys/resourcevar.h>
+
+/* accept filter that holds a socket until data arrives */
+
+static void sohasdata(struct socket *so, void *arg, int waitflag);
+
+static struct accept_filter accf_data_filter = {
+ "dataready",
+ sohasdata,
+ NULL,
+ NULL
+};
+
+static moduledata_t accf_data_mod = {
+ "accf_data",
+ accept_filt_generic_mod_event,
+ &accf_data_filter
+};
+
+DECLARE_MODULE(accf_data, accf_data_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
+
+static void
+sohasdata(struct socket *so, void *arg, int waitflag)
+{
+
+ if (!soreadable(so)) {
+ return;
+ }
+
+ so->so_upcall = NULL;
+ so->so_rcv.sb_flags &= ~SB_UPCALL;
+ soisconnected(so);
+ return;
+}
diff --git a/sys/netinet/accf_http.c b/sys/netinet/accf_http.c
new file mode 100644
index 000000000000..09a4e9fd6172
--- /dev/null
+++ b/sys/netinet/accf_http.c
@@ -0,0 +1,183 @@
+/*-
+ * Copyright (c) 2000 Alfred Perlstein <alfred@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#define ACCEPT_FILTER_MOD
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/sysproto.h>
+#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <sys/malloc.h>
+#include <sys/unistd.h>
+#include <sys/file.h>
+#include <sys/fcntl.h>
+#include <sys/protosw.h>
+#include <sys/socket.h>
+#include <sys/socketvar.h>
+#include <sys/stat.h>
+#include <sys/mbuf.h>
+#include <sys/resource.h>
+#include <sys/sysent.h>
+#include <sys/resourcevar.h>
+
+/*
+ * XXX: doesn't work with 0.9 requests, make a seperate filter
+ * based on this one if you want to decode those.
+ */
+
+/* check for GET */
+static void sohashttpget(struct socket *so, void *arg, int waitflag);
+/* check for end of HTTP request */
+static void soishttpconnected(struct socket *so, void *arg, int waitflag);
+static char sbindex(struct mbuf **mp, int *begin, int end);
+
+static struct accept_filter accf_http_filter = {
+ "httpready",
+ sohashttpget,
+ NULL,
+ NULL
+};
+
+static moduledata_t accf_http_mod = {
+ "accf_http",
+ accept_filt_generic_mod_event,
+ &accf_http_filter
+};
+
+DECLARE_MODULE(accf_http, accf_http_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
+
+
+static char
+sbindex(struct mbuf **mp, int *begin, int end)
+{
+ struct mbuf *m = *mp;
+ int diff = end - *begin + 1;
+
+ while (m->m_len < diff) {
+ *begin += m->m_len;
+ diff -= m->m_len;
+ if (m->m_next) {
+ m = m->m_next;
+ } else if (m->m_nextpkt) {
+ m = m->m_nextpkt;
+ } else {
+ /* only happens if end > data in socket buffer */
+ panic("sbindex: not enough data");
+ }
+ }
+ *mp = m;
+ return *(mtod(m, char *) + diff - 1);
+}
+
+static void
+sohashttpget(struct socket *so, void *arg, int waitflag)
+{
+
+ if ((so->so_state & SS_CANTRCVMORE) == 0) {
+ struct mbuf *m;
+
+ if (so->so_rcv.sb_cc < 6)
+ return;
+ m = so->so_rcv.sb_mb;
+ if (bcmp(mtod(m, char *), "GET ", 4) == 0) {
+ soishttpconnected(so, arg, waitflag);
+ return;
+ }
+ }
+
+ so->so_upcall = NULL;
+ so->so_rcv.sb_flags &= ~SB_UPCALL;
+ soisconnected(so);
+ return;
+}
+
+static void
+soishttpconnected(struct socket *so, void *arg, int waitflag)
+{
+ char a, b, c;
+ struct mbuf *y, *z;
+
+ if ((so->so_state & SS_CANTRCVMORE) == 0) {
+ /* seek to end and keep track of next to last mbuf */
+ y = so->so_rcv.sb_mb;
+ while (y->m_nextpkt)
+ y = y->m_nextpkt;
+ z = y;
+ while (y->m_next) {
+ z = y;
+ y = y->m_next;
+ }
+
+ if (z->m_len + y->m_len > 2) {
+ int index = y->m_len - 1;
+
+ c = *(mtod(y, char *) + index--);
+ switch (index) {
+ case -1:
+ y = z;
+ index = y->m_len - 1;
+ b = *(mtod(y, char *) + index--);
+ break;
+ case 0:
+ b = *(mtod(y, char *) + index--);
+ y = z;
+ index = y->m_len - 1;
+ break;
+ default:
+ b = *(mtod(y, char *) + index--);
+ break;
+ }
+ a = *(mtod(y, char *) + index--);
+ } else {
+ int begin = 0;
+ int end = so->so_rcv.sb_cc - 3;
+
+ y = so->so_rcv.sb_mb;
+ a = sbindex(&y, &begin, end++);
+ b = sbindex(&y, &begin, end++);
+ c = sbindex(&y, &begin, end++);
+ }
+
+ if (c == '\n' && (b == '\n' || (b == '\r' && a == '\n'))) {
+ /* we have all request headers */
+ goto done;
+ } else {
+ /* still need more data */
+ so->so_upcall = soishttpconnected;
+ so->so_rcv.sb_flags |= SB_UPCALL;
+ return;
+ }
+ }
+
+done:
+ so->so_upcall = NULL;
+ so->so_rcv.sb_flags &= ~SB_UPCALL;
+ soisconnected(so);
+ return;
+}
diff --git a/usr.bin/doscmd/cp437-8x16.pcf.gz.uu b/usr.bin/doscmd/cp437-8x16.pcf.gz.uu
new file mode 100644
index 000000000000..8071221ca567
--- /dev/null
+++ b/usr.bin/doscmd/cp437-8x16.pcf.gz.uu
@@ -0,0 +1,113 @@
+$FreeBSD$
+
+begin 644 cp437-8x16.pcf.gz
+M'XL("#J#2SD``V-P-#,W+3AX,38N<&-F`.V=?9Q51WG'?T`"A,204*,(")'$
+MF*").V=W[^X2A!O>`I@`(<0@6MFPA"3D#4D:"&QVSRZ[[.6EOF#K"ZTV4FTM
+MVMIB:UMLVB.QUJ)M+6UM)-5::DV+-K%4:Z2I]#=GGMD[]^QYO9?V'WGR^<X]
+M<^]YGIDS\SSSMI>;41N[-E\$8!0937Y`/BC7H_GF!K[NX^L%DA]_(?!]_2KW
+M3%X(O#@6N,SY_+(W`U?*YY<QF;P2*$M^/`U=NPKP)?_DQ4#36TP%;'E?O<M\
+M-@$B3Y*+(>],TA?WD%?K"Q:%6?:B35^,@REMU!(FR_3%&B;OU!>/,>G3]XP/
+MS>XC*U<L7;YZW>U+UR["G8N6WKQD-58MNGW%+7>L7KIBN7.Y;HV;>2O6K%MB
+M[KY]Y4T+EBZ_&2NQ;LVM\Q<N7K1PW=+EBU=@T8;['KU[PY5;[WOTWBNW/;A^
+MPT9F6FYHN0&+5RQ?C:[-+<UMU[=O4R7<=L=-"]?=N73AZB7A\X\*!;@$ILV-
+MC.=_ETC>O=:YLV=_=%;?6_M^DN@R,,JO5/8-G$_.)^>3\\E/86+FEW#2D]E"
+MST>!O%<F/@ED4BP3GP1::0SSQ"?!&#-(EXE/`CWX<OXK$Y\$!)P;R\0GP5@S
+M/96)3X)Q9BHJ$Y\$!)R,R\0GP45FRBL3GP03S#Q8)CX)])S(B:),?!+H2>-E
+MS!.?!`27,D]\$A!,9)[X))B(<.(N$Y\$>A*_G'GBD^!R,]V6B4\"/?7^#//$
+M)P'!RYDG/@D(KF">^"0@>`7SQ"<!P2N9)SX)""8S3WP2$+R*>>*3@&`*\\0G
+M`<%4YHE/`H)IS!.?!-/,JJ!,?!+H%<)TYHE/`H(9S!.?!$0O5,K$)P'!:Y@G
+M/@D(9C)/?!(07,4\\4E`<#7SQ"<!P6N9)SX)"*YAGO@D('@=\\0G`<&US!.?
+M!`37,4]\$EQG%C=EXI-`+W1>SSSQ24#P!N:)3P*"ZYDG/@D(;F">^"0@>"/S
+MQ"<!01/SQ"<!@6*>^"0@\)@G/@D(FIDG/@D(6I@G/@D(6IDG/@D(2LP3GP1$
+MK]'*Q">!7J^U,T]\$A!T,$]\$A#,9I[X)""XD7GBDX!@#O/$)P'!FY@G/@D(
+MYC)/?!(0S&.>^"289_P_7*S:0>`<20_,4O/C\JIYBGS(R?=DZ'-9AV?E5?,T
+M><[)I^E;T4W>&T$W@PZ5\3GTQ\N]<^O0U>$\1WC.8;+S61Y]VQ;VF?/J)]5E
+M<LI]9Q/0]7X:(_L@2ISH,C>2^<+&E+K'V=1E:K]Y"E4?>CJC_&UD,]%[GUL0
+M#H,Z=&N8GM(.MLXNMNW</DB2E\A7Y/62"#(-A3NU)/D)^:+SZO(=F#[0F\`Q
+M*39L'9]%U0?G2#ZM_J/$[CBIIYXF>N75UGL,AI</(Z1,.F':7_=#M^AWH]HO
+MG7)?6MVM[T]VZ$&V#VN)]IT+(M=QHMO]68=ODF=BB!,]1G0A7/J$8T5)\EUR
+MK=]KDOS<C.>(2G0L2Y(\[9<V?B;I1TG33R)O'[JV='OURFM>/2LZYL:*_EC)
+M%Y4Q#FGM'B=Z66CGH9+D\XJ=?^P<9.>AO'5PYSP[=^6=OQH1=[ZQ?>WZ3)K_
+MN+%Z=0-U**&VW>/R<?76V!A>`-/G.M\IW(5J[&;%P0*YU_JM]<4NL9,D=MRP
+MX\5#")=^-?/70PFZ[EPS-J6,-''K&X>-R21Q[XG#VLXC=NX]B^J\7$3<<2>K
+MOXK8*_(,6HJ.&WGJD"5E&)^-^E_:_*TE.F_=+T3GL;3ZZ<^GH[:]HO-`DMCX
+M2ZJ[_BRM/5U]S1SGNA/9<Z\NLUWT]+,VHSK_6+:EZ/>B=LZ85[!\W7;V6:U^
+M5X0T_5[4/G]2/">);3^WK"+E1^_O0>WSZ_JDK;^MQ/EYD1A.T\^*W4Z,]#UW
+M7.O,68>>A.LLB2LO6I\D<=O?ZN2=?^-L['#0\Y"=$Y/$KEO<,:07(WTH2;2_
+MN^N`N1BYCI^7HF_G"3M_NRQ`^AY4RPRI>](>HB3W)$FOW+<8X1%@Z.OZ=:R\
+MMQ'IXU>:OF5BBG[<\^N^L^VN/WM[BGZTG^+Z+JW_HFN^.-+:7X^M<>N&O/MW
+MO3=V^VJZX/;I/2GZNFW')I"G_W3;;$5U_>W.G7G:KTOJ][#HZ[Y[I(!^W'A=
+M9/R.B[]H.Z3Y7UKY]\OSZ'MTGV[.67XT'M/ZSRW?[L/M&)KG^7N$M:C/?[/:
+M/JO\-#V[]DK;P\6UN47[TU;$[W^B^B74[AMM/V3Y7]+96=[VL^.-WB-%Y[P%
+MR%[_S4'RWL62=7[JGH/I,SO]_'I-F.?\:@Z2]SZ6N/*C\^;_A[CGIN[^[ER)
+M'G?U\VK?R;-_U:+;W(XST7';'1/RB!T+W#5`5ORUH[:?[!X@;_WCRG?W!'G6
+M_[I,_2<S.]86&7]=>2BF[LVHCK]Q<ZG;_B6Q$6W_M/'775].0_'QLQ/5]?5F
+MU.X=7-SQ):G^26N`M/HGU3EO_5W1?^:S:P"7O/%](]+/LK,D:2[.&S])Y;MK
+M@C1?S/*_K+WTC:CZ7SW^'SV/SW/VKL=A.Q;.P\BYXP&8,2*/Q#U[D?$CKNV+
+MG)\GK0'2YO^HOEUS6(K,3TGK&'LFH/LC:R^EVRMZ?IHV_V]&;:Q>BI'Q&[?N
+MM!+W=XXB?_^(EA>MCZU3DMCSWD8E;A^>U79:DO;/[M[9KJ?CXJ@Y<EW$_Z/G
+MPT7G3_>9M=2S_G#K7U3?/;>I1]_6W9ZOUE-_*[8?W;G0[;NL-2A0W_K%'1N*
+MZD?;KY[RW;FQZ/K#?F9M%-6/UK^HOFV[/&=H48GZ3E']Z-FB/8?2>7>^SSK_
+M<,7ZJIXS]9@_57@L1:<;M6ON7HP</QY)T$WRWZ+[;RM%]9/\-Z^^UK7?5P&*
+MCY_1\NM9?W1%KK/F[^DQNEEG4$G/W^6\UJ/OQE=TS1@]BXB3/'LOO7=(.W^.
+MKM-Z(J]IY>NUD.TC?7V57.]`;?\EK;_T6N.92#E)W^/0<1A=AT3'@*+S3W3^
+MKF?\=<LO&C]1_7K\WUU_%=E_N7JZCEEGN'%BSQLTW?)>D;\;1;\[H*7H]XS<
+MOP^ZWR6P<V^1_:.6Z-]#QQ2LC];OC)`D[EI5US.Z=]#]XYXK=A?0UWVN^_!Q
+MT4NJ2]*^(?J=F#RBYTW=EU/E]8&<>E9</6LG22H(O_)=]^LA<D<#KY\CSS?P
+MFG5FTP@S&M3+H_]`"@]G?)[E%[UUZC=:?UWOSISU;Y2DYVZD?%O_/.O=-#MY
+M]+/\IQ&IUW\M+]99?TO2]\/SRMES4/^L>[+*SY*LYV^DWGGJG^9_W\OX/$U/
+MSWTOY7C^.+'?@:^W_!?$3KW^8_5>J+-\^_QYZI]6?I[ZISU_GOJGQ5V]Y5L:
+M;?\\_I]EIY&Y(8__9L5?/5(D?M-$U[^1Y\_3?FGC5J/C;Z/S5Y[V2_IW27E)
+MDSSZ$QOD^PU2[[.EB=W33G6P?Y-+DNB_MYJ*ZIF%I3E1N_:<,KIO++*'C'[W
+M/TJ6KB[?/4^[!/G^_N2*>^;IDO;W'RM9?W?-:@/;=_6,-_;,*/IOX?+\^R$M
+M:6?/6=\?C_N;5;3OMJ;H;T/M=V>[$?\WU#RBG]/]MV!YSV("F'V#J_]7DL_J
+MNW94?2UZ]F[]L3VC_#S?`<R2WAS7:6+]+.[?7F2-26[_=6+DN6)6/Z1]=SM+
+MWYZA/H/L.:<(1>/?;;.>F/?RB'LFF>?ORG'GA^="BM8[R4:6Z'DP[OMV^GLX
+M]KET["?%SU04GRM<N51L6+_3/Q-1[]IG;@K_%R*_C^17?%+9(\E0I1(FO<SN
+M]L.D?U=E5T_X8R)]0Y6A7O/;(D.\N6]H6(U)G]$8JNPUB?ZTU[F%[_4Q&3!J
+MU83O#?789-?P%6L0)KI^K$%X\]['^5Y8QKY^6U-^,,`/PEO"A*4-]>B:]O0/
+M5G;J(@>[=PY6^GU'0\K-E5"WTDM3%:VV6R=#3_1)-<);=N<V9>J7[^;^:C:Q
+MNGTC+.\>OMJWS=?U9L7W;=5M.JQ6<R4W#^VL6M%&=]88'8HD.X>3J+V^A)M-
+M3=F23IVWV4ZN/NK>X<3-4J/2%_G`N@^O=CEJ^X:3H5HK$?/FO9TU93AN*[=4
+M*GO[PZO^72-T34%:;8>NP0[[WJY>FQC=_N%&-)[=5_OS/&P27E63(9,,ZNR0
+MR?;+>R;;;9)!DPP.[*SH*TE,5EL>[#;F==)ODVXF0P/VYB'S@;[J'JY0=_73
+MT%ZHME.24&/0_86A0?-!]3U>#?!JP-ZRHZ8KJN/+[N$^"KM68JL:3';<&.H)
+M1Y6^8??V96RJ1N-NGS78$]8E=)5>T\[LE,?9NH-/,!EX0O>E]G9VU*#I,AE:
+MY/>19(6R>:S^+OAHKM<NP(4<T<=A/"["!%S,$?YE'.TGXC)<CDD<YU^.*_`*
+MO)*SU*LPA7/`-+R:.Z$9N!*OP4Q<A:OQ6ER#U^%:7(=9>#W>@.MQ`][(V4G!
+MXWZH!:V<:=HX,W5@-N?I.7@31_IY*.,FS,<"+,0B+,;-6(*E6(8WXQ;<BN58
+M@96X#:MP.U;C#KP%=V(-WHJU>!O>CI_%.[".JZ>[L)[KO0VXFRO?>W`O[L,F
+MW,\=_X-<$3S,U<X[L06/X%'\'![CNGH;'L=V[."J^0FN.GKAHP_]V(D!#&(7
+MAE#!;NS!7NS#S^-=>#?>@_=B/]Z'7\`OXOWX`#Z(#^$`?@F_C`_C(_@5/(F/
+MXB!^%1_#Q_%K^'5\`K^!0_@D/H7?Q&_AT_AM_`X.XS/X7?P>/HO?QQ_@#W$$
+MG\,?X2G\,?Z$*^G/XRB>QA?PI_@B_@Q?PI_C&+Z,K^`O\)=<4W\5?XWC^!O\
+M+?X.7\/?<]7V=9S@>OL?\`U\$_^(;^&?<!+_C&_C7_`=/(=_Q;_A%+Z+[^'?
+M\3Q>X(KA/W`:_XD?X(?X+_P(+^+'.(/_QDOX'_PD]`+[>UG?.L]YSO-3B_N[
+M>79/J7\63N]+])F7_KT*_3-E>K]A]QGZ>P3ZAUAO@_D]HG4PYP\/DD=AOA?2
+M3W:3]Y`/D(_`_';6I\AGR!'R>?(EF#.$KY%OD&^3[Y+3Y,=2MW'D4G(%F4:N
+M(K.((NUD'EE,;B6KR=O(>G(?V4RVDAXR.,K\]NW[R`'R4?()\FGR6?(4^0+Y
+M,CE.OBYM]!QYGOR0O$3&L-$FD,OU;^&2&>0:<CUI(3>2^60I64GN).\@=Y,'
+MR"-D.^DC%?)N\G[R8?(Q\DERF!PA1\DQ<IR<("?)*7*:G"&CQ[`N9!*90F:2
+M6<0CL\E\LHRL(FO)>K*);"';23_90_:3`^0@.40.DR/D*#E&CI,3Y"0Y14Z3
+M,V3T!2R?3")3R$PRBWAD-IE/EI%59"U93S:1+60[Z2=[R'YR@!PDA\AA<H0<
+M)<?(<7*"G"2GR&ERAHR^D.63260*F4EF$8_,)O/),K**K"7KR2:RA6PG_60/
+MV4\.D(/D$#E,CI"CY!@Y3DZ0D^04.4W.D-$,F@ED$IE"9I)9Q".SR7RRC*PB
+M:\EZLHEL(=M)/]E#]I,#Y"`Y1`Z3(^0H.4:.DQ/D)#E%3I,S9/0XED\FD2ED
+M)IE%/#*;S"?+R"JREJPGF\@6LIWTDSUD/^FZ]ZXM36&JPM0+T^8P;0G3UC`M
+MA6E;F+:':8?1$F6CK8RZ,OK*&%#&@C(FE+&AC!%EK'C&BB=U,%8\8\4S5CQC
+MQ3-6/&/%,U8\8Z796&DV5IKE48R59F.EV5AI-E::C95F8Z796&DQ5EJ,E19C
+MI45:Q%AI,59:C)468Z7%6&DQ5EJ-E59CI=58:3566J5AC9568Z756&DU5EJ-
+ME9*Q4C)62L9*R5@I&2LEZ1]CI62LE(R5DK'29JRT&2MMQDJ;L=)FK+09*VW2
+MS<9*F['29JRT&ROMQDJ[L=)NK+0;*^W&2KNQTB[>8JRT&RL=QDJ'L=)AK'08
+M*QW&2H>QTF&L=!@K'>)TUNO$[9K$[YK$\9K$\YK$]9K$]YK$^9K$^YK$_9K$
+MWK`;BSWKR-:3K2M;7[;.;+W9NK/XLQ*'5IZ-"[$G/JW$J95XM1*W5N+72AQ;
+MB6<K<6TEOJV:;:")/7%O)?ZMQ,&5>+@2%U?BXTJ<7(F7*W%SU6(C5^R)IRMQ
+M=26^KL39E7B[$G=7XN]*'%Z)QZM6.Q2(/7%Z)5ZOQ.V5^+T2QU?B^4I<7XGO
+M*W%^5;)CB]@3_U<2`$HB0$D(*(D!)4&@)`J4A(&2.%!M=K`2>Q(*2F)!23`H
+MB08EX:`D'I0$A)*(4!(2JMV.?F)/HD))6"B)"R6!H20RE(2&DMA0$AQ*HD-U
+MV.'4CJ<RH$I\>!(?GL2')_'A27QX$A^>Q(<G\>%)?'C*#M!B3^+#D_CP)#X\
+MB0]/XL.3^/`D/CP[WML!?WC$%WMVS+>#OAWU[;!OQWT[\$M\>!(?GL2'UVRG
+M$+$G\>%)?'@2'Y[$AR?QX4E\>!(?GL2')_'AM=@Y2>Q)?'@2'Y[$AR?QX4E\
+A>!(?GL2')_'A27QXK7:2:Y7SZW/Q_Q#X7P&*JEP88@``
+`
+end
diff --git a/usr.bin/doscmd/fonts.dir b/usr.bin/doscmd/fonts.dir
new file mode 100644
index 000000000000..e23f58c1e4eb
--- /dev/null
+++ b/usr.bin/doscmd/fonts.dir
@@ -0,0 +1,2 @@
+1
+cp437-8x16.pcf.gz vga